Version Description
- Improvement: The scan will alert for plugins that have not been updated in 2+ years or have been removed from the wordpress.org directory. It will also indicate if there is a known vulnerability.
- Improvement: Added a self-check to the scan to detect if it has stalled.
- Improvement: If WordPress auto-updates while a scan is running, the scan will self-abort and reschedule itself to try again later.
- Improvement: IP-based filtering in Live Traffic can now use wildcards.
- Improvement: Updated the bundled GeoIP database.
- Improvement: Added an anti-crawler feature to the lockout page to avoid crawlers erroneously following the unlock link.
- Improvement: The live traffic "Group By" options now dynamically show the results in a more useful format depending on the option selected.
- Improvement: Improved the unknown core files check to include all extra files in core locations regardless of whether or not the "Scan images, binary, and other files as if they were executable" option is on.
- Improvement: Better wording for the whitelisting IP range error message.
- Fix: Addressed a performance issue on databases with tens of thousands of tables when trying to load the diagnostics page.
- Fix: All dashboard and activity report email times are now displayed in the time zone configured for the WordPress installation.
Download this release
Release Info
Developer | wfryan |
Plugin | ![]() |
Version | 6.3.11 |
Comparing to | |
See all releases |
Code changes from version 6.3.10 to 6.3.11
- css/main.css +1 -1
- js/admin.js +8 -0
- js/admin.liveTraffic.js +33 -4
- lib/GeoIP.dat +0 -0
- lib/GeoIPv6.dat +0 -0
- lib/dashboard/widget_networkattacks.php +3 -45
- lib/email_newIssues.php +17 -5
- lib/menu_activity.php +31 -2
- lib/menu_dashboard.php +2 -2
- lib/menu_options.php +1 -1
- lib/menu_scan.php +117 -2
- lib/menu_scan_scan.php +4 -0
- lib/menu_tools_diagnostic.php +10 -2
- lib/wfActivityReport.php +2 -2
- lib/wfIssues.php +28 -0
- lib/wfLog.php +22 -5
- lib/wfScan.php +17 -0
- lib/wfScanEngine.php +248 -35
- lib/wfUnlockMsg.php +11 -2
- lib/wfUpdateCheck.php +191 -26
- lib/wfUtils.php +79 -13
- lib/wordfenceClass.php +89 -5
- lib/wordfenceConstants.php +1 -0
- lib/wordfenceHash.php +29 -22
- lib/wordfenceScanner.php +0 -2
- readme.txt +14 -1
- vendor/wordfence/wf-waf/src/lib/waf.php +12 -0
- vendor/wordfence/wf-waf/src/views/503-lockout.php +12 -3
- vendor/wordfence/wf-waf/src/views/503.php +17 -8
- views/reports/activity-report-email-inline.php +4 -4
- views/reports/activity-report-email.php +2 -2
- wordfence.php +2 -2
css/main.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}@-ms-viewport{width:device-width}.wf-visible-xs{display:none !important}.wf-visible-sm{display:none !important}.wf-visible-md{display:none !important}.wf-visible-lg{display:none !important}.wf-visible-xs-block,.wf-visible-xs-inline,.wf-visible-xs-inline-block,.wf-visible-sm-block,.wf-visible-sm-inline,.wf-visible-sm-inline-block,.wf-visible-md-block,.wf-visible-md-inline,.wf-visible-md-inline-block,.wf-visible-lg-block,.wf-visible-lg-inline,.wf-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wf-visible-xs{display:block !important}table.wf-visible-xs{display:table !important}tr.wf-visible-xs{display:table-row !important}th.wf-visible-xs,td.wf-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wf-visible-xs-block{display:block !important}}@media (max-width: 767px){.wf-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wf-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm{display:block !important}table.wf-visible-sm{display:table !important}tr.wf-visible-sm{display:table-row !important}th.wf-visible-sm,td.wf-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md{display:block !important}table.wf-visible-md{display:table !important}tr.wf-visible-md{display:table-row !important}th.wf-visible-md,td.wf-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wf-visible-lg{display:block !important}table.wf-visible-lg{display:table !important}tr.wf-visible-lg{display:table-row !important}th.wf-visible-lg,td.wf-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wf-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wf-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wf-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wf-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wf-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-hidden-md{display:none !important}}@media (min-width: 1200px){.wf-hidden-lg{display:none !important}}.wf-visible-print{display:none !important}@media print{.wf-visible-print{display:block !important}table.wf-visible-print{display:table !important}tr.wf-visible-print{display:table-row !important}th.wf-visible-print,td.wf-visible-print{display:table-cell !important}}.wf-visible-print-block{display:none !important}@media print{.wf-visible-print-block{display:block !important}}.wf-visible-print-inline{display:none !important}@media print{.wf-visible-print-inline{display:inline !important}}.wf-visible-print-inline-block{display:none !important}@media print{.wf-visible-print-inline-block{display:inline-block !important}}@media print{.wf-hidden-print{display:none !important}}.wf-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container:before,.wf-container:after{content:" ";display:table}.wf-container:after{clear:both}@media (min-width: 768px){.wf-container{width:750px}}@media (min-width: 992px){.wf-container{width:970px}}@media (min-width: 1200px){.wf-container{width:1170px}}.wf-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container-fluid:before,.wf-container-fluid:after{content:" ";display:table}.wf-container-fluid:after{clear:both}.wf-row{margin-left:-15px;margin-right:-15px}.wf-row:before,.wf-row:after{content:" ";display:table}.wf-row:after{clear:both}.wf-col-xs-1,.wf-col-sm-1,.wf-col-md-1,.wf-col-lg-1,.wf-col-xs-2,.wf-col-sm-2,.wf-col-md-2,.wf-col-lg-2,.wf-col-xs-3,.wf-col-sm-3,.wf-col-md-3,.wf-col-lg-3,.wf-col-xs-4,.wf-col-sm-4,.wf-col-md-4,.wf-col-lg-4,.wf-col-xs-5,.wf-col-sm-5,.wf-col-md-5,.wf-col-lg-5,.wf-col-xs-6,.wf-col-sm-6,.wf-col-md-6,.wf-col-lg-6,.wf-col-xs-7,.wf-col-sm-7,.wf-col-md-7,.wf-col-lg-7,.wf-col-xs-8,.wf-col-sm-8,.wf-col-md-8,.wf-col-lg-8,.wf-col-xs-9,.wf-col-sm-9,.wf-col-md-9,.wf-col-lg-9,.wf-col-xs-10,.wf-col-sm-10,.wf-col-md-10,.wf-col-lg-10,.wf-col-xs-11,.wf-col-sm-11,.wf-col-md-11,.wf-col-lg-11,.wf-col-xs-12,.wf-col-sm-12,.wf-col-md-12,.wf-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wf-col-xs-1,.wf-col-xs-2,.wf-col-xs-3,.wf-col-xs-4,.wf-col-xs-5,.wf-col-xs-6,.wf-col-xs-7,.wf-col-xs-8,.wf-col-xs-9,.wf-col-xs-10,.wf-col-xs-11,.wf-col-xs-12{float:left}.wf-col-xs-1{width:8.33333%}.wf-col-xs-2{width:16.66667%}.wf-col-xs-3{width:25%}.wf-col-xs-4{width:33.33333%}.wf-col-xs-5{width:41.66667%}.wf-col-xs-6{width:50%}.wf-col-xs-7{width:58.33333%}.wf-col-xs-8{width:66.66667%}.wf-col-xs-9{width:75%}.wf-col-xs-10{width:83.33333%}.wf-col-xs-11{width:91.66667%}.wf-col-xs-12{width:100%}.wf-col-xs-pull-0{right:auto}.wf-col-xs-pull-1{right:8.33333%}.wf-col-xs-pull-2{right:16.66667%}.wf-col-xs-pull-3{right:25%}.wf-col-xs-pull-4{right:33.33333%}.wf-col-xs-pull-5{right:41.66667%}.wf-col-xs-pull-6{right:50%}.wf-col-xs-pull-7{right:58.33333%}.wf-col-xs-pull-8{right:66.66667%}.wf-col-xs-pull-9{right:75%}.wf-col-xs-pull-10{right:83.33333%}.wf-col-xs-pull-11{right:91.66667%}.wf-col-xs-pull-12{right:100%}.wf-col-xs-push-0{left:auto}.wf-col-xs-push-1{left:8.33333%}.wf-col-xs-push-2{left:16.66667%}.wf-col-xs-push-3{left:25%}.wf-col-xs-push-4{left:33.33333%}.wf-col-xs-push-5{left:41.66667%}.wf-col-xs-push-6{left:50%}.wf-col-xs-push-7{left:58.33333%}.wf-col-xs-push-8{left:66.66667%}.wf-col-xs-push-9{left:75%}.wf-col-xs-push-10{left:83.33333%}.wf-col-xs-push-11{left:91.66667%}.wf-col-xs-push-12{left:100%}.wf-col-xs-offset-0{margin-left:0%}.wf-col-xs-offset-1{margin-left:8.33333%}.wf-col-xs-offset-2{margin-left:16.66667%}.wf-col-xs-offset-3{margin-left:25%}.wf-col-xs-offset-4{margin-left:33.33333%}.wf-col-xs-offset-5{margin-left:41.66667%}.wf-col-xs-offset-6{margin-left:50%}.wf-col-xs-offset-7{margin-left:58.33333%}.wf-col-xs-offset-8{margin-left:66.66667%}.wf-col-xs-offset-9{margin-left:75%}.wf-col-xs-offset-10{margin-left:83.33333%}.wf-col-xs-offset-11{margin-left:91.66667%}.wf-col-xs-offset-12{margin-left:100%}.wf-col-xs-half-padding-left{padding-left:8px}.wf-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wf-col-sm-1,.wf-col-sm-2,.wf-col-sm-3,.wf-col-sm-4,.wf-col-sm-5,.wf-col-sm-6,.wf-col-sm-7,.wf-col-sm-8,.wf-col-sm-9,.wf-col-sm-10,.wf-col-sm-11,.wf-col-sm-12{float:left}.wf-col-sm-1{width:8.33333%}.wf-col-sm-2{width:16.66667%}.wf-col-sm-3{width:25%}.wf-col-sm-4{width:33.33333%}.wf-col-sm-5{width:41.66667%}.wf-col-sm-6{width:50%}.wf-col-sm-7{width:58.33333%}.wf-col-sm-8{width:66.66667%}.wf-col-sm-9{width:75%}.wf-col-sm-10{width:83.33333%}.wf-col-sm-11{width:91.66667%}.wf-col-sm-12{width:100%}.wf-col-sm-pull-0{right:auto}.wf-col-sm-pull-1{right:8.33333%}.wf-col-sm-pull-2{right:16.66667%}.wf-col-sm-pull-3{right:25%}.wf-col-sm-pull-4{right:33.33333%}.wf-col-sm-pull-5{right:41.66667%}.wf-col-sm-pull-6{right:50%}.wf-col-sm-pull-7{right:58.33333%}.wf-col-sm-pull-8{right:66.66667%}.wf-col-sm-pull-9{right:75%}.wf-col-sm-pull-10{right:83.33333%}.wf-col-sm-pull-11{right:91.66667%}.wf-col-sm-pull-12{right:100%}.wf-col-sm-push-0{left:auto}.wf-col-sm-push-1{left:8.33333%}.wf-col-sm-push-2{left:16.66667%}.wf-col-sm-push-3{left:25%}.wf-col-sm-push-4{left:33.33333%}.wf-col-sm-push-5{left:41.66667%}.wf-col-sm-push-6{left:50%}.wf-col-sm-push-7{left:58.33333%}.wf-col-sm-push-8{left:66.66667%}.wf-col-sm-push-9{left:75%}.wf-col-sm-push-10{left:83.33333%}.wf-col-sm-push-11{left:91.66667%}.wf-col-sm-push-12{left:100%}.wf-col-sm-offset-0{margin-left:0%}.wf-col-sm-offset-1{margin-left:8.33333%}.wf-col-sm-offset-2{margin-left:16.66667%}.wf-col-sm-offset-3{margin-left:25%}.wf-col-sm-offset-4{margin-left:33.33333%}.wf-col-sm-offset-5{margin-left:41.66667%}.wf-col-sm-offset-6{margin-left:50%}.wf-col-sm-offset-7{margin-left:58.33333%}.wf-col-sm-offset-8{margin-left:66.66667%}.wf-col-sm-offset-9{margin-left:75%}.wf-col-sm-offset-10{margin-left:83.33333%}.wf-col-sm-offset-11{margin-left:91.66667%}.wf-col-sm-offset-12{margin-left:100%}.wf-col-sm-half-padding-left{padding-left:8px}.wf-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wf-col-md-1,.wf-col-md-2,.wf-col-md-3,.wf-col-md-4,.wf-col-md-5,.wf-col-md-6,.wf-col-md-7,.wf-col-md-8,.wf-col-md-9,.wf-col-md-10,.wf-col-md-11,.wf-col-md-12{float:left}.wf-col-md-1{width:8.33333%}.wf-col-md-2{width:16.66667%}.wf-col-md-3{width:25%}.wf-col-md-4{width:33.33333%}.wf-col-md-5{width:41.66667%}.wf-col-md-6{width:50%}.wf-col-md-7{width:58.33333%}.wf-col-md-8{width:66.66667%}.wf-col-md-9{width:75%}.wf-col-md-10{width:83.33333%}.wf-col-md-11{width:91.66667%}.wf-col-md-12{width:100%}.wf-col-md-pull-0{right:auto}.wf-col-md-pull-1{right:8.33333%}.wf-col-md-pull-2{right:16.66667%}.wf-col-md-pull-3{right:25%}.wf-col-md-pull-4{right:33.33333%}.wf-col-md-pull-5{right:41.66667%}.wf-col-md-pull-6{right:50%}.wf-col-md-pull-7{right:58.33333%}.wf-col-md-pull-8{right:66.66667%}.wf-col-md-pull-9{right:75%}.wf-col-md-pull-10{right:83.33333%}.wf-col-md-pull-11{right:91.66667%}.wf-col-md-pull-12{right:100%}.wf-col-md-push-0{left:auto}.wf-col-md-push-1{left:8.33333%}.wf-col-md-push-2{left:16.66667%}.wf-col-md-push-3{left:25%}.wf-col-md-push-4{left:33.33333%}.wf-col-md-push-5{left:41.66667%}.wf-col-md-push-6{left:50%}.wf-col-md-push-7{left:58.33333%}.wf-col-md-push-8{left:66.66667%}.wf-col-md-push-9{left:75%}.wf-col-md-push-10{left:83.33333%}.wf-col-md-push-11{left:91.66667%}.wf-col-md-push-12{left:100%}.wf-col-md-offset-0{margin-left:0%}.wf-col-md-offset-1{margin-left:8.33333%}.wf-col-md-offset-2{margin-left:16.66667%}.wf-col-md-offset-3{margin-left:25%}.wf-col-md-offset-4{margin-left:33.33333%}.wf-col-md-offset-5{margin-left:41.66667%}.wf-col-md-offset-6{margin-left:50%}.wf-col-md-offset-7{margin-left:58.33333%}.wf-col-md-offset-8{margin-left:66.66667%}.wf-col-md-offset-9{margin-left:75%}.wf-col-md-offset-10{margin-left:83.33333%}.wf-col-md-offset-11{margin-left:91.66667%}.wf-col-md-offset-12{margin-left:100%}.wf-col-md-half-padding-left{padding-left:8px}.wf-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wf-col-lg-1,.wf-col-lg-2,.wf-col-lg-3,.wf-col-lg-4,.wf-col-lg-5,.wf-col-lg-6,.wf-col-lg-7,.wf-col-lg-8,.wf-col-lg-9,.wf-col-lg-10,.wf-col-lg-11,.wf-col-lg-12{float:left}.wf-col-lg-1{width:8.33333%}.wf-col-lg-2{width:16.66667%}.wf-col-lg-3{width:25%}.wf-col-lg-4{width:33.33333%}.wf-col-lg-5{width:41.66667%}.wf-col-lg-6{width:50%}.wf-col-lg-7{width:58.33333%}.wf-col-lg-8{width:66.66667%}.wf-col-lg-9{width:75%}.wf-col-lg-10{width:83.33333%}.wf-col-lg-11{width:91.66667%}.wf-col-lg-12{width:100%}.wf-col-lg-pull-0{right:auto}.wf-col-lg-pull-1{right:8.33333%}.wf-col-lg-pull-2{right:16.66667%}.wf-col-lg-pull-3{right:25%}.wf-col-lg-pull-4{right:33.33333%}.wf-col-lg-pull-5{right:41.66667%}.wf-col-lg-pull-6{right:50%}.wf-col-lg-pull-7{right:58.33333%}.wf-col-lg-pull-8{right:66.66667%}.wf-col-lg-pull-9{right:75%}.wf-col-lg-pull-10{right:83.33333%}.wf-col-lg-pull-11{right:91.66667%}.wf-col-lg-pull-12{right:100%}.wf-col-lg-push-0{left:auto}.wf-col-lg-push-1{left:8.33333%}.wf-col-lg-push-2{left:16.66667%}.wf-col-lg-push-3{left:25%}.wf-col-lg-push-4{left:33.33333%}.wf-col-lg-push-5{left:41.66667%}.wf-col-lg-push-6{left:50%}.wf-col-lg-push-7{left:58.33333%}.wf-col-lg-push-8{left:66.66667%}.wf-col-lg-push-9{left:75%}.wf-col-lg-push-10{left:83.33333%}.wf-col-lg-push-11{left:91.66667%}.wf-col-lg-push-12{left:100%}.wf-col-lg-offset-0{margin-left:0%}.wf-col-lg-offset-1{margin-left:8.33333%}.wf-col-lg-offset-2{margin-left:16.66667%}.wf-col-lg-offset-3{margin-left:25%}.wf-col-lg-offset-4{margin-left:33.33333%}.wf-col-lg-offset-5{margin-left:41.66667%}.wf-col-lg-offset-6{margin-left:50%}.wf-col-lg-offset-7{margin-left:58.33333%}.wf-col-lg-offset-8{margin-left:66.66667%}.wf-col-lg-offset-9{margin-left:75%}.wf-col-lg-offset-10{margin-left:83.33333%}.wf-col-lg-offset-11{margin-left:91.66667%}.wf-col-lg-offset-12{margin-left:100%}.wf-col-lg-half-padding-left{padding-left:8px}.wf-col-lg-half-padding-right{padding-right:7px}}.wrap.wordfence{direction:ltr}@media (min-width: 768px){.wrap.wordfence{max-width:750px}}@media (min-width: 992px){.wrap.wordfence{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence{max-width:1170px}}.wrap.wordfence>.wf-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence h3{font-size:1.15em}a{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}.wordfence-icon32{width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:7px 5px 0 0;float:left}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}div.wordfence-lock-icon{background-image:url(../images/wordfence-logo-32x32.png)}a.wfhelp{background-image:url(../images/help.png);width:12px;height:12px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../images/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../images/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../images/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../images/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}img.wfFlag{vertical-align:middle;margin:-3px 4px 0 0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle}.wf-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wf-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:2px 8px 2px 24px;z-index:100000;position:fixed;right:2px;bottom:2px;border:1px solid #000;background-color:#F00;color:#FFF;font-size:12px;font-weight:bold;font-family:Arial;text-align:center;background-image:url("../images/icons/ajaxRed16.gif");background-position:2px 2px;background-repeat:no-repeat}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:Trebuchet, Arial, sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wf-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wf-striped-table th,.wf-striped-table td{padding:6px 4px;border:1px solid #ccc}.wf-striped-table thead th,.wf-striped-table thead td,.wf-striped-table tfoot th,.wf-striped-table tfoot td,.wf-striped-table tbody.thead th,.wf-striped-table tbody.thead td{background-color:#222;color:#fff;font-weight:bold;border-color:#474747;text-align:left}.wf-striped-table tbody tr.even td,.wf-striped-table tbody tr:nth-child(2n) td{background-color:#eee}.wf-striped-table tbody tr td,.wf-striped-table tbody tr.odd td{background-color:#fff}.wf-striped-table tbody tr:hover>td{background-color:#fffbd8}.wf-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wf-striped-table td.error{color:#d0514c;font-weight:bold}.wf-striped-table td.error:before{content:"\2718"}.wf-striped-table td.success{color:#008c10;font-weight:bold;max-width:20%}.wf-striped-table td.success:before{content:"\2713"}.wf-striped-table td.success:before,.wf-striped-table td.error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wf-striped-table td.inactive{font-weight:bold;color:#666666}.wordfence-waiting{line-height:32px}.wordfence-waiting img{vertical-align:middle}pre.wf-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wf-center{text-align:center}#wfConfigForm{max-width:1035px}.wf-hidden{display:none !important}.wf-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-card .wf-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wf-card .wf-card-inner .wf-card-content{max-width:75%}.wf-card .wf-card-inner .wf-card-content .wf-card-title{font-size:1.125rem;width:100%}.wf-card .wf-card-inner .wf-card-content .wf-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wf-card .wf-card-inner .wf-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-card .wf-card-inner .wf-card-action .wf-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox.checked{background-position:right center}.wf-card .wf-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wf-card .wf-card-extra{padding:1rem}}.wf-card.active .wf-card-extra{display:block}.wf-card.wf-card-left .wf-card-content{margin-left:48px}.wf-card.wf-card-left .wf-card-action{right:auto;left:0px}.wf-card.disabled .wf-card-content .wf-card-title{color:#aaaaaa}.wf-card.disabled .wf-card-content .wf-card-subtitle{color:#8ea6be}.wf-add-top{margin-top:20px !important}.wf-add-top-small{margin-top:10px !important}.wf-add-bottom{margin-bottom:20px !important}.wf-add-bottom-small{margin-bottom:10px !important}.wf-center{text-align:center}.wf-right{text-align:right}.wf-scroll-x::-webkit-scrollbar,.wf-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wf-scroll-x::-webkit-scrollbar-thumb,.wf-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wf-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wf-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.select2-container{min-width:240px}@media (min-width: 768px){.select2-container{min-width:280px}}@media (min-width: 992px){.select2-container{min-width:320px}}.wf-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wf-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wf-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-page-title h2{padding:0 !important}.wf-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wf-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wf-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}#wf-notices{margin-top:15px}#wf-notices .wf-admin-notice{margin-left:0px;margin-right:0px}.wf-success-text,.wf-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wf-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wf-notice-text{color:#6d798c}.wf-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wf-success-text{color:#11967a}.wf-premium-callout{border:1px solid #00709e;background-color:#ffffff;padding:16px;margin:20px 0 0}.wf-premium-callout h3{margin:0 0 8px;color:#11967a}.wf-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wf-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wf-premium-callout .center{text-align:center;margin:0}.wf-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}#wfLiveTrafficOverlayAnchor::after{position:absolute;z-index:3002;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused #wfLiveTrafficOverlayAnchor::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wordfenceLiveActivityDisabled{background:#fff;border-left:4px solid #ffb900;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:12px;padding:1px 13px}#wfLiveTrafficDisabledMessage{display:none;position:fixed;z-index:3003;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wfLiveTrafficDisabledMessage h2{background-color:#FFF;overflow:hidden;border:1px solid #CCC;max-width:350px;margin:0 auto;padding:15px;font-size:2.0em}#wfLiveTrafficDisabledMessage h2 small{font-size:0.5em;font-weight:normal;margin-top:20px}.wordfenceLiveActivityPaused #wfLiveTrafficDisabledMessage{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-live-activity{position:relative;margin:20px 0 10px 0;padding:0.75rem;box-sizing:border-box;background:#FFFCEF;box-shadow:0 0 0 1px rgba(153,155,135,0.5),0 1px 2px #e8f3e0}.wf-live-activity .wf-live-activity-inner{width:100%;box-sizing:border-box;position:relative}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:flex-start}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-title{color:#888888;font-size:0.85rem;font-weight:bold;padding-right:0.5rem}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-message{font-size:0.80rem;color:#000000}.wf-live-activity .wf-live-activity-inner .wf-live-activity-state{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background:rgba(255,252,239,0.9);display:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:center;z-index:3001;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused .wf-live-activity .wf-live-activity-inner .wf-live-activity-state{display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:opacity 0.5s;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}.wordfence .wordfenceScanButton{margin:20px 0 20px 0}.wordfence .wordfenceScanButton input.button-wf-grey{background:#EFEFEF url(../images/button-grad-grey.png) repeat-x scroll left top;border-color:#EFEFEF}.wordfence .wordfenceScanButton table td{vertical-align:top}.wordfence .wordfenceScanButton .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709E;height:44px;line-height:44px;padding:0px 20px}table.wfSummaryParent{font-family:sans-serif;font-size:14px;color:#000;z-index:9}table.wfSummaryParent td{vertical-align:top;padding:0;margin:0}table.wfSummaryParent table.wfSummaryChild th{font-weight:bold;text-align:right;font-family:Georgia,Times New Roman,Times,serif;color:#000;padding:5px 10px 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSummaryChild td{font-weight:normal;text-align:left;padding:5px 0 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSC1 td{width:300px;padding:0 25px 10px 0}table.wfSummaryParent table.wfSC2 th{width:80px}table.wfSummaryParent table.wfSC2 td{width:100px}table.wfSummaryParent table.wfSC3 th{width:80px}table.wfSummaryParent table.wfSC3 td{width:250px}table.wfSummaryParent th.wfHead{font-size:22px;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;color:#555;font-weight:bold;text-align:left;padding:20px 0 20px 0;-webkit-font-smoothing:antialiased}.wf-issues-table{table-layout:fixed;width:100%}div.wfIssue{width:100%}div.wfIssue table.wfIssue td{padding:2px;margin:0;border-width:0;text-align:left;width:100%}div.wfIssue table.wfIssue th{padding:2px;margin:0;font-weight:bold;text-align:left;color:#777;white-space:nowrap}div.wfIssue table.wfIssueLinks td{border-width:0;text-align:left;padding-right:10px}div.wfIssue h2{margin:0 0 5px 0;padding:0;font-size:0.9rem}@media (min-width: 768px){div.wfIssue h2{font-size:1.05rem}}.wfIssueOptions{border-top:1px solid #CCC;padding:10px}.wfIssueOptions h3{font-size:0.8rem;margin:0}@media (min-width: 768px){.wfIssueOptions h3{display:inline-block}}.wfIssueOptions ul{margin-bottom:0;padding-left:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfIssueOptions ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}.wfIssueOptions ul>li>a{position:relative;display:block;padding:8px 12px/2}.wfIssueOptions ul>li>a:hover,.wfIssueOptions ul>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfIssueOptions a{margin-left:10px}.wfIssueOptions strong{float:left;display:block;width:60px}.wfIssueOptions p{margin:6px 0px 0px}.wfProbSev1,.wfProbSev2,.wfAjaxLight128,.wfResolved{width:128px;height:128px;border:0;margin:0 auto;background-repeat:no-repeat;background-position:0 0;text-decoration:none;display:block}.wfProbSev1{background-image:url(../images/icons/error128.png)}.wfProbSev2{background-image:url(../images/icons/warning128.png)}.wfResolved{background-image:url(../images/icons/tick128.png)}.wfIssuesContainer{width:100%;display:none}.wfIssuesContainer p{max-width:550px}.wfALogTime{color:#999}.wfALogMailLink,.wfALogViewLink{display:block;position:absolute;padding:0 0 0 18px;margin:0;right:10px;top:0;background-repeat:no-repeat;font-weight:normal}.wfALogMailLink{background-image:url(../images/icons/email_go.png)}.wfALogViewLink{background-image:url(../images/icons/magnifier.png)}#wfActivity{position:relative}.consoleHead{position:relative;padding:0 0 0 3px;font-weight:bold;width:100%}.consoleHeadText{margin-bottom:4px;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;color:#555;font-weight:bold;-webkit-font-smoothing:antialiased}.consoleFooter{position:relative}.consoleOuter{width:100%}.consoleInner{height:116px;overflow:auto;z-index:1}.bevelDiv1{border:1px solid #EFEFEF}.bevelDiv2{border:1px solid #AAA}.bevelDiv3{background-color:#ffffed;padding:5px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.wfSecure{color:#0A0;font-weight:bold}.wfSummaryLine{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfSummaryLine{-webkit-flex-direction:row;flex-direction:row}}.wfSummaryLine .wfSummaryDate{padding-left:3px}.wfSummaryLine .wfSummaryMsg{padding-left:3px;-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfSummaryLoading{width:16px;height:11px;background-image:url("../images/icons/ajaxScan.gif")}.wfSummaryBad,.wfSummaryErr{color:#930000}.wfSummaryOK{color:#11967a}.wfSummaryIgnored{color:#a87302}.wfClear{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}.wfSummaryFinal{-webkit-font-smoothing:antialiased;font-weight:bold;color:#555}.wfStartScanButton{text-align:center}.wordfenceScanHelp{border:1px solid #CCC;padding:4px}.wf-scan-no-issues{font-size:1.25rem;color:#11967a}.wf-scan-severity{position:relative;width:10px}@media (min-width: 768px){.wf-scan-severity{width:144px}}.wf-scan-severity-1,.wf-scan-severity-2{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.wf-scan-severity-1{background-color:#c10000}.wf-scan-severity-2{background-color:#ffd10a}.scan-schedule{border-collapse:collapse;border-spacing:0}.scan-schedule tr:first-of-type th{padding-top:0}.scan-schedule td{padding:0}.scan-schedule th{padding:1.5rem 0.5rem 0.75rem 0;font-size:1rem;text-align:left}@media (min-width: 768px){.scan-schedule th{padding:0 0.5rem 0 0;font-size:0.8125rem;text-align:center}}.next-scan{font-size:1em;display:block;position:relative;width:7em;height:7em;background-color:#fff;border-radius:0.6em;box-shadow:0 1px 0 rgba(189,189,189,0.6);overflow:hidden}.next-scan *{display:block;width:100%;font-size:1em;font-weight:bold;font-style:normal;text-align:center}.next-scan strong{position:absolute;top:0;padding:0.4em 0;color:#fff;background-color:#00709E;box-shadow:0 2px 0 #00709E}.next-scan em{position:absolute;bottom:0.3em;color:#00709E}.next-scan span{width:100%;font-size:2.8em;padding-top:1.15em;color:#2f2f2f}.schedule-times-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;margin-top:1rem}@media (min-width: 768px){.schedule-times-wrapper{margin-top:0.25rem}}.schedule-times-wrapper:first-of-type{margin-top:0}@media (min-width: 768px){.schedule-times-wrapper:first-of-type{margin-top:1rem}}.schedule-times-wrapper>*{-webkit-flex-grow:1;flex-grow:1;min-width:0}.schedule-times-wrapper>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:initial;padding-right:0.25rem}.schedule-times{margin-bottom:0;margin-top:0;padding-left:0;list-style:none;clear:both}.schedule-times>li{float:left;position:relative;display:block;margin:0px 0px 2px 0px}.schedule-times>li.disabled>a{color:#777}.schedule-times>li.disabled>a:hover,.schedule-times>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.schedule-times>li>a{text-decoration:none;border:1px solid #e2e2e2;border-radius:4px;position:relative;display:block;padding:8px 12px}.schedule-times>li>a:hover,.schedule-times>li>a:focus{text-decoration:none;background-color:#e2e2e2}.schedule-times>li+li{margin-left:2px}.schedule-times>li.active>a,.schedule-times>li.active>a:hover,.schedule-times>li.active>a:focus{color:#fff;background-color:#00709e;border-color:#00709e}.schedule-times>li.text-only{position:relative;display:block;padding:8px 12px}.schedule-times>li>a>img{max-width:none}#wf-lt-listings .wfActEvent{padding-left:15px;border-left:5px solid #cccccc}#wf-lt-listings .wfActEvent.wfHuman{border-left:5px solid #16bc9b}#wf-lt-listings .wfActEvent.wfActionBlocked{border-left:5px solid #d03935}#wf-lt-listings .wfActEvent.wfNotice{border-left:5px solid #c10000}#wf-lt-listings .wfActEvent.wfWarning,#wf-lt-listings .wfActEvent.wf404{border-left:5px solid #ffd10a}#wf-lt-listings .wfActEvent:hover{background-color:#fff9e9 !important}.wfActEvent.wf-live-traffic-filter{padding-left:0;padding-right:0;display:-webkit-flex;display:flex;-webkit-align-items:baseline;align-items:baseline;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfActEvent.wf-live-traffic-filter{-webkit-flex-direction:row;flex-direction:row}}.wfActEvent.wf-live-traffic-filter h2{margin:0;padding-bottom:0.5rem}@media (min-width: 768px){.wfActEvent.wf-live-traffic-filter h2{padding-bottom:0;padding-right:0.5rem}}#wf-lt-advanced-filters{padding-left:0;padding-right:0;overflow:hidden}.wf-live-traffic-filter-detail{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-live-traffic-filter-detail{-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail *{-webkit-flex-grow:1;flex-grow:1}}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-remove{margin-left:0.5rem;font-size:1.5rem;color:#333}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0.25rem 0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:0.75rem !important}@media (min-width: 768px){.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:1rem !important}}.wf-filtered-traffic{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-filtered-traffic>*{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;padding:10px 20px;border-bottom:1px solid #CCC;width:100%;box-sizing:border-box}.wf-filtered-traffic>*>*:first-child{-webkit-flex-grow:1;flex-grow:1}.wf-filtered-traffic .wf-filtered-traffic-hits{font-size:1.75rem;color:#999999;margin-top:10px}#wf-live-traffic{position:relative;overflow:visible}#wf-live-traffic-legend{white-space:nowrap;background-color:#fff;border:1px solid #cccccc;padding:12px}#wf-live-traffic-legend.sticky{position:fixed;top:10px;right:auto;left:10px;z-index:2000}@media (min-width: 768px){#wf-live-traffic-legend.sticky{top:42px;left:182px}}#wf-live-traffic-legend-placeholder{display:none;padding:12px}#wf-live-traffic-legend-placeholder.sticky{display:block}#wf-live-traffic-legend ul{margin:0;padding:0}#wf-live-traffic-legend ul:before,#wf-live-traffic-legend ul:after{content:" ";display:table}#wf-live-traffic-legend ul:after{clear:both}#wf-live-traffic-legend ul li{margin:0;padding:0;position:relative;float:left;font-size:11.5px}@media (min-width: 768px){#wf-live-traffic-legend ul li{font-size:13px}}#wf-live-traffic-legend ul li+li{margin-left:8px}#wf-live-traffic-legend ul li:before{content:'';display:block;float:left;margin:3px 6px 0 0;width:12px;height:12px;background-color:#CCCCCC}#wf-live-traffic-legend ul li.wfHuman:before{background-color:#16bc9b}#wf-live-traffic-legend ul li.wfNotice:before{background-color:#ffd10a}#wf-live-traffic-legend ul li.wfBlocked:before{background-color:#d03935}.wfTimeAgo{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-weight:bold;font-style:italic}.wfActEvent{border-bottom:1px solid #CCC;padding:10px 20px;overflow:auto}.wf-pad-small{margin:8px 0}#wf-lt-listings{margin:0 0 0}#wf-lt-listings a{cursor:pointer;text-decoration:underline}#wf-lt-listings a.button,#wf-lt-listings a.wf-btn{text-decoration:none}.wfActionBlocked{background-color:#fff6f6}[class*="span"]{float:left;min-height:1px;margin-left:30px}.highlighted{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-moz-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-webkit-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-moz-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@-webkit-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}.highlighted{-webkit-animation-name:highlighted;animation-name:highlighted}.highlighted.wfActionBlocked{-webkit-animation-name:highlightedBlocked;animation-name:highlightedBlocked}#wf-lt-preset-filters{min-width:250px}#wf-lt-advanced-filters>table{width:100%}#wf-lt-advanced-filters>table>tr>td{vertical-align:top}.wf-lt-url{white-space:nowrap}table.block-ranges-table{border-collapse:collapse;margin:10px 0 0}table.block-ranges-table tr td{border:1px solid #CCC;border-width:1px 0;padding:10px 0 12px 0}#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:0.9rem}@media (min-width: 768px){#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:1.0rem}}@media (min-width: 992px){#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:1.125rem}}.wafStatus-enabled,.wafStatus-learning-mode,.wafStatus-disabled,.wafStatus-enabled.select2-container--default .select2-selection--single .select2-selection__rendered,.wafStatus-learning-mode.select2-container--default .select2-selection--single .select2-selection__rendered,.wafStatus-disabled.select2-container--default .select2-selection--single .select2-selection__rendered{color:#ffffff}#waf-config-form .waf-config-label{font-size:1.3em}#waf-config-form .select2-container--default .select2-selection--single{padding:4px;text-shadow:0 0 3px #000000;font-weight:bold;border-radius:3px}#waf-config-form .select2-container .select2-selection--single{height:auto}.wafStatus-enabled.select2-container--default .select2-selection--single{background-color:#11967a;border-color:#073a2f}.wafStatus-learning-mode.select2-container--default .select2-selection--single{background-color:#ffd10a;border-color:#a38400}.wafStatus-disabled.select2-container--default .select2-selection--single,.wafStatus-disabled.select2-container--default.select2-container--disabled .select2-selection--single,.wafStatus-learning-mode.select2-container--default.select2-container--disabled .select2-selection--single,.wafStatus-enabled.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#c10000;border-color:#5b0000}#waf-config-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;top:0}.wafStatus-enabled.select2-container--default .select2-selection--single .select2-selection__arrow b,.wafStatus-learning-mode.select2-container--default .select2-selection--single .select2-selection__arrow b,.wafStatus-disabled.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#ffffff transparent transparent}.wafStatus-enabled.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b,.wafStatus-learning-mode.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b,.wafStatus-disabled.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #ffffff}.wafStatus-description{display:none;max-width:500px;font-style:italic;font-size:14px;line-height:1.3}.whitelist-table-container{overflow-x:auto}table.whitelist-table .whitelist-edit{display:none}table.whitelist-table .edit-mode .whitelist-display{display:none}table.whitelist-table .edit-mode .whitelist-edit{display:block}table.whitelist-table .edit-mode span.whitelist-edit,table.whitelist-table .edit-mode input.whitelist-edit{display:inline}.wf-bulk-action{margin:12px 0}tr.wf-table-filters input{max-width:120px}#wordfenceRightRail img{max-width:100%}#wordfenceRightRail ul{list-style-type:none;margin:0;margin-top:15px}#wordfenceRightRail .center{text-align:center}#wordfenceRightRail .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wordfenceRightRail img{width:100%}.wordfenceRightRailLiveTraffic,.wordfenceRightRailOptions,.wordfenceRightRailDiagnostics{margin-left:1055px}.wordfenceRightRailBlockedIPs,.wordfenceRightRailWAF,.wordfenceRightRailCountryBlocking,.wordfenceRightRailScanSchedule{margin-left:950px}.wordfenceRightRail ul{list-style-type:none;margin:0}.wordfenceRightRail .center{text-align:center}.wordfenceRightRail .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wordfenceWrap.wordfence-community{min-height:760px}#wfTwoFactorQRCodeTable{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfTwoFactorQRCodeTable{width:256px;height:256px}}#wfTwoFactorRecoveryCodes{list-style-type:none}#wfTwoFactorRecoveryCodes li{font-family:monospace;text-align:center}#wfTwoFactorDownload .dashicons{line-height:26px}.wf-twofactor-delete{font-size:1.5rem}.wf-twofactor-delete a{text-decoration:none;color:#333}.wf-table.wf-table-twofactor>tbody>tr>td{vertical-align:middle}.wf-form-twofactor{max-width:400px}.wf-form-twofactor .wf-radio label{padding-left:0}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wf-plain{font-weight:normal}label.wf-control-label.wf-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.wf-form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wf-form-control::-moz-placeholder{color:#999;opacity:1}.wf-form-control:-ms-input-placeholder{color:#999}.wf-form-control::-webkit-input-placeholder{color:#999}.wf-form-control::-ms-expand{border:0;background-color:transparent}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{background-color:#e2e2e2;opacity:1}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{cursor:not-allowed;pointer-events:none}textarea.wf-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wf-form-control,input[type="time"].wf-form-control,input[type="datetime-local"].wf-form-control,input[type="month"].wf-form-control{line-height:34px}input[type="date"].wf-input-sm,.wf-input-group-sm input[type="date"],input[type="time"].wf-input-sm,.wf-input-group-sm input[type="time"],input[type="datetime-local"].wf-input-sm,.wf-input-group-sm input[type="datetime-local"],input[type="month"].wf-input-sm,.wf-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wf-input-lg,.wf-input-group-lg input[type="date"],input[type="time"].wf-input-lg,.wf-input-group-lg input[type="time"],input[type="datetime-local"].wf-input-lg,.wf-input-group-lg input[type="datetime-local"],input[type="month"].wf-input-lg,.wf-input-group-lg input[type="month"]{line-height:46px}}.wf-form-group{margin-bottom:8px}.wf-form-group.wf-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wf-form-group.wf-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wf-form-group.wf-focus label{margin-left:-4px}.wf-radio,.wf-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wf-radio label,.wf-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wf-radio input[type="radio"],.wf-radio-inline input[type="radio"],.wf-checkbox input[type="checkbox"],.wf-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wf-radio-offset{padding-left:29px}@media (min-width: 768px){.wf-radio-offset{padding-left:20px}}.wf-radio+.wf-radio,.wf-checkbox+.wf-checkbox{margin-top:-5px}.wf-radio-inline,.wf-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wf-radio-inline+.wf-radio-inline,.wf-checkbox-inline+.wf-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wf-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wf-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wf-radio-inline.wf-disabled,fieldset[disabled] .wf-radio-inline,.wf-checkbox-inline.wf-disabled,fieldset[disabled] .wf-checkbox-inline{cursor:not-allowed}.wf-radio.wf-disabled label,fieldset[disabled] .wf-radio label,.wf-checkbox.wf-disabled label,fieldset[disabled] .wf-checkbox label{cursor:not-allowed;pointer-events:none}.wf-form-control-static{padding-top:7px;padding-bottom:7px;margin:0;line-height:1}.wf-form-control-static.wf-input-lg,.wf-form-control-static.wf-input-sm{padding-left:0;padding-right:0}.wf-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wf-input-sm{height:30px;line-height:30px}textarea.wf-input-sm,select[multiple].wf-input-sm{height:auto}.wf-form-group-sm .wf-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-form-group-sm select.wf-form-control{height:30px;line-height:30px}.wf-form-group-sm textarea.wf-form-control,.wf-form-group-sm select[multiple].wf-form-control{height:auto}.wf-form-group-sm .wf-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wf-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wf-input-lg{height:46px;line-height:46px}textarea.wf-input-lg,select[multiple].wf-input-lg{height:auto}.wf-form-group-lg .wf-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-form-group-lg select.wf-form-control{height:46px;line-height:46px}.wf-form-group-lg textarea.wf-form-control,.wf-form-group-lg select[multiple].wf-form-control{height:auto}.wf-form-group-lg .wf-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wf-has-feedback{position:relative}.wf-has-feedback .wf-form-control{padding-right:42.5px}.wf-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.wf-input-lg+.wf-form-control-feedback,.wf-input-group-lg+.wf-form-control-feedback,.wf-form-group-lg .wf-form-control+.wf-form-control-feedback{width:46px;height:46px;line-height:46px}.wf-input-sm+.wf-form-control-feedback,.wf-input-group-sm+.wf-form-control-feedback,.wf-form-group-sm .wf-form-control+.wf-form-control-feedback{width:30px;height:30px;line-height:30px}.wf-has-success .wf-help-block,.wf-has-success .wf-control-label,.wf-has-success .wf-radio,.wf-has-success .wf-checkbox,.wf-has-success .wf-radio-inline,.wf-has-success .wf-checkbox-inline,.wf-has-success.wf-radio label,.wf-has-success.wf-checkbox label,.wf-has-success.wf-radio-inline label,.wf-has-success.wf-checkbox-inline label{color:#3c763d}.wf-has-success .wf-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-success .wf-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wf-has-success .wf-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wf-has-success .wf-form-control-feedback{color:#3c763d}.wf-has-warning .wf-help-block,.wf-has-warning .wf-control-label,.wf-has-warning .wf-radio,.wf-has-warning .wf-checkbox,.wf-has-warning .wf-radio-inline,.wf-has-warning .wf-checkbox-inline,.wf-has-warning.wf-radio label,.wf-has-warning.wf-checkbox label,.wf-has-warning.wf-radio-inline label,.wf-has-warning.wf-checkbox-inline label{color:#8a6d3b}.wf-has-warning .wf-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-warning .wf-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wf-has-warning .wf-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wf-has-warning .wf-form-control-feedback{color:#8a6d3b}.wf-has-error .wf-help-block,.wf-has-error .wf-control-label,.wf-has-error .wf-radio,.wf-has-error .wf-checkbox,.wf-has-error .wf-radio-inline,.wf-has-error .wf-checkbox-inline,.wf-has-error.wf-radio label,.wf-has-error.wf-checkbox label,.wf-has-error.wf-radio-inline label,.wf-has-error.wf-checkbox-inline label{color:#a94442}.wf-has-error .wf-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-error .wf-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wf-has-error .wf-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wf-has-error .wf-form-control-feedback{color:#a94442}.wf-has-feedback label ~ .wf-form-control-feedback{top:25px}.wf-has-feedback label.wf-sr-only ~ .wf-form-control-feedback{top:0}.wf-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wf-form-inline .wf-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-form-control{display:inline-block;width:auto;vertical-align:middle}.wf-form-inline .wf-form-control-static{display:inline-block}.wf-form-inline .wf-input-group{display:inline-table;vertical-align:middle}.wf-form-inline .wf-input-group .wf-input-group-addon,.wf-form-inline .wf-input-group .wf-input-group-btn,.wf-form-inline .wf-input-group .wf-form-control{width:auto}.wf-form-inline .wf-input-group>.wf-form-control{width:100%}.wf-form-inline .wf-control-label{margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio,.wf-form-inline .wf-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio label,.wf-form-inline .wf-checkbox label{padding-left:0}.wf-form-inline .wf-radio input[type="radio"],.wf-form-inline .wf-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wf-form-inline .wf-has-feedback .wf-form-control-feedback{top:0}}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox,.wf-form-horizontal .wf-radio-inline,.wf-form-horizontal .wf-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox{min-height:27px}.wf-form-horizontal .wf-form-group{margin-left:-15px;margin-right:-15px}.wf-form-horizontal .wf-form-group:before,.wf-form-horizontal .wf-form-group:after{content:" ";display:table}.wf-form-horizontal .wf-form-group:after{clear:both}@media (min-width: 768px){.wf-form-horizontal .wf-control-label{text-align:right;margin-bottom:0;padding-top:7px}}.wf-form-horizontal .wf-has-feedback .wf-form-control-feedback{right:15px}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-lg .wf-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-sm .wf-control-label{padding-top:6px;font-size:12px}}.wf-dashboard-item{position:relative;margin:0 auto 1rem;padding:0 1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-dashboard-item .wf-dashboard-item-inner{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content{max-width:75%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-title{font-size:0.75rem;width:100%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text{width:auto}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-success{color:#11967a}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning a{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox.checked{background-position:right center}.wf-dashboard-item .wf-dashboard-item-extra{display:none;margin:0 -1rem;padding:0 1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list{margin:0 -1rem;padding:0;list-style:none}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification{border-left:4px solid #f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification{border-left:4px solid #ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #eeeeee;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #eeeeee}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:center}@media (min-width: 1200px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:left}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-enabled .fa{color:#11967a}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-disabled .fa{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-premium{color:#9f9fa0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss a{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-count{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-dashboard-item.active .wf-dashboard-item-extra{display:block}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-content{margin-left:48px}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-action{right:auto;left:0px}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-title{color:#aaaaaa}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-subtitle{color:#8ea6be}.wf-notifications-empty{font-size:0.9rem;color:#9f9fa0}.wf-dashboard-graph-wrapper{width:100%}.wf-dashboard-badge{display:inline-block;min-width:10px;padding:3px 7px;margin-left:0.5rem;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#fcb214;border-radius:10px}.wf-dashboard-badge:empty{display:none}.wf-btn .wf-dashboard-badge{position:relative;top:-1px}.wf-btn-xs .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge{top:0;padding:1px 5px}.wf-list-group-item.active>.wf-dashboard-badge,.wf-nav-pills>.active>a>.wf-dashboard-badge{color:#00709e;background-color:#fff}.wf-list-group-item>.wf-dashboard-badge{float:right}.wf-list-group-item>.wf-dashboard-badge+.wf-dashboard-badge{margin-right:5px}.wf-nav-pills>li>a>.wf-dashboard-badge{margin-left:3px}.wf-dashboard-toggle-btns{text-align:center}.wf-dashboard-toggle-btns .wf-pagination{margin:1rem 1rem 0.5rem 1rem}.wf-dashboard-show-more{position:relative;font-size:14px;color:#959595;text-align:center;line-height:1rem;background:#ffffff;width:60%;margin:20px auto 0 auto}.wf-dashboard-show-more:before{display:inline-block;content:"";position:absolute;height:1px;background:#dddddd;top:50%;width:100%;left:0;right:0}.wf-dashboard-show-more a{display:inline-block;position:relative;padding:0 10px;background-color:#ffffff}.wf-ips,.wf-recent-logins,.wf-countries{max-height:30rem;overflow-y:hidden;margin-bottom:20px}.wf-ips .wf-table,.wf-recent-logins .wf-table,.wf-countries .wf-table{margin-bottom:0}.wf-dashboard-last-updated{font-style:italic;font-size:0.6rem;text-align:center;padding-bottom:1rem;margin:0}table.wf-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wf-table td,table.wf-table th{padding:0}.wf-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wf-table th{text-align:left}.wf-table{width:100%;max-width:100%;margin-bottom:20px}.wf-table>thead>tr>th,.wf-table>thead>tr>td,.wf-table>tbody>tr>th,.wf-table>tbody>tr>td,.wf-table>tfoot>tr>th,.wf-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wf-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wf-table>caption+thead>tr:first-child>th,.wf-table>caption+thead>tr:first-child>td,.wf-table>colgroup+thead>tr:first-child>th,.wf-table>colgroup+thead>tr:first-child>td,.wf-table>thead:first-child>tr:first-child>th,.wf-table>thead:first-child>tr:first-child>td{border-top:0}.wf-table>tbody+tbody{border-top:2px solid #ddd}.wf-table .wf-table{background-color:#fff}.wf-table-condensed>thead>tr>th,.wf-table-condensed>thead>tr>td,.wf-table-condensed>tbody>tr>th,.wf-table-condensed>tbody>tr>td,.wf-table-condensed>tfoot>tr>th,.wf-table-condensed>tfoot>tr>td{padding:5px}.wf-table-bordered{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td,.wf-table-bordered>tbody>tr>th,.wf-table-bordered>tbody>tr>td,.wf-table-bordered>tfoot>tr>th,.wf-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td{border-bottom-width:2px}.wf-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wf-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wf-table col[class*="col-"]{position:static;float:none;display:table-column}table.wf-table td[class*="col-"],table.wf-table th[class*="col-"]{position:static;float:none;display:table-cell}.wf-table>thead>tr>td.active,.wf-table>thead>tr>th.active,.wf-table>thead>tr.active>td,.wf-table>thead>tr.active>th,.wf-table>tbody>tr>td.active,.wf-table>tbody>tr>th.active,.wf-table>tbody>tr.active>td,.wf-table>tbody>tr.active>th,.wf-table>tfoot>tr>td.active,.wf-table>tfoot>tr>th.active,.wf-table>tfoot>tr.active>td,.wf-table>tfoot>tr.active>th{background-color:#f5f5f5}.wf-table-hover>tbody>tr>td.active:hover,.wf-table-hover>tbody>tr>th.active:hover,.wf-table-hover>tbody>tr.active:hover>td,.wf-table-hover>tbody>tr:hover>.active,.wf-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wf-table>thead>tr>td.success,.wf-table>thead>tr>th.success,.wf-table>thead>tr.success>td,.wf-table>thead>tr.success>th,.wf-table>tbody>tr>td.success,.wf-table>tbody>tr>th.success,.wf-table>tbody>tr.success>td,.wf-table>tbody>tr.success>th,.wf-table>tfoot>tr>td.success,.wf-table>tfoot>tr>th.success,.wf-table>tfoot>tr.success>td,.wf-table>tfoot>tr.success>th{background-color:#dff0d8}.wf-table-hover>tbody>tr>td.success:hover,.wf-table-hover>tbody>tr>th.success:hover,.wf-table-hover>tbody>tr.success:hover>td,.wf-table-hover>tbody>tr:hover>.success,.wf-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wf-table>thead>tr>td.info,.wf-table>thead>tr>th.info,.wf-table>thead>tr.info>td,.wf-table>thead>tr.info>th,.wf-table>tbody>tr>td.info,.wf-table>tbody>tr>th.info,.wf-table>tbody>tr.info>td,.wf-table>tbody>tr.info>th,.wf-table>tfoot>tr>td.info,.wf-table>tfoot>tr>th.info,.wf-table>tfoot>tr.info>td,.wf-table>tfoot>tr.info>th{background-color:#d9edf7}.wf-table-hover>tbody>tr>td.info:hover,.wf-table-hover>tbody>tr>th.info:hover,.wf-table-hover>tbody>tr.info:hover>td,.wf-table-hover>tbody>tr:hover>.info,.wf-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wf-table>thead>tr>td.warning,.wf-table>thead>tr>th.warning,.wf-table>thead>tr.warning>td,.wf-table>thead>tr.warning>th,.wf-table>tbody>tr>td.warning,.wf-table>tbody>tr>th.warning,.wf-table>tbody>tr.warning>td,.wf-table>tbody>tr.warning>th,.wf-table>tfoot>tr>td.warning,.wf-table>tfoot>tr>th.warning,.wf-table>tfoot>tr.warning>td,.wf-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wf-table-hover>tbody>tr>td.warning:hover,.wf-table-hover>tbody>tr>th.warning:hover,.wf-table-hover>tbody>tr.warning:hover>td,.wf-table-hover>tbody>tr:hover>.warning,.wf-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wf-table>thead>tr>td.danger,.wf-table>thead>tr>th.danger,.wf-table>thead>tr.danger>td,.wf-table>thead>tr.danger>th,.wf-table>tbody>tr>td.danger,.wf-table>tbody>tr>th.danger,.wf-table>tbody>tr.danger>td,.wf-table>tbody>tr.danger>th,.wf-table>tfoot>tr>td.danger,.wf-table>tfoot>tr>th.danger,.wf-table>tfoot>tr.danger>td,.wf-table>tfoot>tr.danger>th{background-color:#f2dede}.wf-table-hover>tbody>tr>td.danger:hover,.wf-table-hover>tbody>tr>th.danger:hover,.wf-table-hover>tbody>tr.danger:hover>td,.wf-table-hover>tbody>tr:hover>.danger,.wf-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wf-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wf-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wf-table-responsive>.wf-table{margin-bottom:0}.wf-table-responsive>.wf-table>thead>tr>th,.wf-table-responsive>.wf-table>thead>tr>td,.wf-table-responsive>.wf-table>tbody>tr>th,.wf-table-responsive>.wf-table>tbody>tr>td,.wf-table-responsive>.wf-table>tfoot>tr>th,.wf-table-responsive>.wf-table>tfoot>tr>td{white-space:nowrap}.wf-table-responsive>.wf-table-bordered{border:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:first-child{border-left:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:last-child{border-right:0}.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>td,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wf-nav{margin-bottom:0;padding-left:0;list-style:none}.wf-nav:before,.wf-nav:after{content:" ";display:table}.wf-nav:after{clear:both}.wf-nav>li{position:relative;display:block}.wf-nav>li>a{position:relative;display:block;padding:8px 12px}.wf-nav>li>a:hover,.wf-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wf-nav>li.wf-disabled>a{color:#777}.wf-nav>li.wf-disabled>a:hover,.wf-nav>li.wf-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wf-nav>li>a>img{max-width:none}.wf-nav-tabs{border-bottom:1px solid #ddd}.wf-nav-tabs>li{float:left;margin-bottom:-1px}.wf-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wf-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #ddd}.wf-nav-tabs>li.wf-active>a,.wf-nav-tabs>li.wf-active>a:hover,.wf-nav-tabs>li.wf-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wf-nav-pills>li{float:left}.wf-nav-pills>li>a{border-radius:4px}.wf-nav-pills>li+li{margin-left:2px}.wf-nav-pills>li.wf-active>a,.wf-nav-pills>li.wf-active>a:hover,.wf-nav-pills>li.wf-active>a:focus{color:#fff;background-color:#00709e}.wf-nav-stacked>li{float:none}.wf-nav-stacked>li+li{margin-top:2px;margin-left:0}.wf-nav-justified,.wf-nav-tabs.wf-nav-justified{width:100%}.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{float:none}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{text-align:center;margin-bottom:5px}.wf-nav-justified>.wf-dropdown .wf-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{display:table-cell;width:1%}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-bottom:0}}.wf-nav-tabs-justified,.wf-nav-tabs.wf-nav-justified{border-bottom:0}.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-right:0;border-radius:4px}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border-bottom-color:#fff}}.wf-tab-content>.wf-tab-pane{display:none}.wf-tab-content>.wf-active{display:block}.wf-nav-tabs .wf-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wf-navbar-brand:hover,.wf-navbar-brand:focus{text-decoration:none}.wf-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wf-navbar-brand,.navbar>.container-fluid .wf-navbar-brand{margin-left:-8px}}.wf-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wf-dropup,.wf-dropdown{position:relative}.wf-dropdown-toggle:focus{outline:0}.wf-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wf-dropdown-menu .wf-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wf-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wf-dropdown-menu>li>a:hover,.wf-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wf-dropdown-menu>.wf-active>a,.wf-dropdown-menu>.wf-active>a:hover,.wf-dropdown-menu>.wf-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wf-dropdown-menu>.wf-disabled>a,.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{color:#777}.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wf-open>.wf-dropdown-menu{display:block}.wf-open>a{outline:0}.wf-dropdown-menu-right{left:auto;right:0}.wf-dropdown-menu-left{left:0;right:auto}.wf-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wf-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wf-pull-right>.wf-dropdown-menu{right:0;left:auto}.wf-dropup .wf-caret,.wf-navbar-fixed-bottom .wf-dropdown .wf-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wf-dropup .wf-dropdown-menu,.wf-navbar-fixed-bottom .wf-dropdown .wf-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wf-navbar-right .wf-dropdown-menu{right:0;left:auto}.wf-navbar-right .wf-dropdown-menu-left{left:0;right:auto}}.wf-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wf-blocked-countries{margin-bottom:0;margin-top:0;padding-left:0;list-style:none;margin-left:-6px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-blocked-countries>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;margin:0px 0px 2px 6px;text-align:center;border:1px solid #e2e2e2;border-radius:4px;padding:8px 12px;background-color:#ffffff;-webkit-flex-basis:38%;flex-basis:38%}@media (min-width: 768px){.wf-blocked-countries>li{-webkit-flex-basis:20%;flex-basis:20%}}@media (min-width: 992px){.wf-blocked-countries>li{-webkit-flex-basis:15%;flex-basis:15%}}@media (min-width: 1200px){.wf-blocked-countries>li{-webkit-flex-basis:10%;flex-basis:10%}}.wf-blocked-countries>li:hover,.wf-blocked-countries>li:focus{text-decoration:none;background-color:#e2e2e2}.wf-blocked-countries>li.disabled>a{color:#777}.wf-blocked-countries>li.disabled>a:hover,.wf-blocked-countries>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-blocked-countries>li>a{text-decoration:none;position:relative;display:block}.wf-blocked-countries>li.active,.wf-blocked-countries>li.active:hover,.wf-blocked-countries>li.active:focus{background-color:#00709e;border-color:#00709e}.wf-blocked-countries>li.active>a,.wf-blocked-countries>li.active:hover>a,.wf-blocked-countries>li.active:focus>a{color:#fff}.wf-blocked-countries>li.text-only{position:relative;display:block;padding:8px 12px}.wf-blocked-countries>li>a>img{max-width:none}.wf-blocked-countries-section{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-title{font-size:1.1rem;padding-right:0.5rem}.wf-blocked-countries-section-spacer{-webkit-flex-basis:30px;flex-basis:30px;height:1px;background:#aaa}.wf-blocked-countries-section-options{margin-bottom:0;margin-top:0;padding-left:0.5rem;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-options li{padding:0;margin:0;color:#777}.wf-blocked-countries-section-options li a{padding:2px 4px;text-decoration:none;color:#777}.wf-blocked-countries-section-options li a.active-section{background-color:#777;color:#e2e2e2}table.wf-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wf-dataTable>thead th,table.wf-dataTable>tfoot th{font-weight:bold}table.wf-dataTable>thead th,table.wf-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wf-dataTable>thead th:active,table.wf-dataTable>thead td:active{outline:none}table.wf-dataTable>tfoot th,table.wf-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc,table.wf-dataTable>thead .sorting_asc_disabled,table.wf-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wf-dataTable>thead .sorting{background-image:url(../images/sort_both.png)}table.wf-dataTable>thead .sorting_asc{background-image:url(../images/sort_asc.png)}table.wf-dataTable>thead .sorting_desc{background-image:url(../images/sort_desc.png)}table.wf-dataTable>thead .sorting_asc_disabled{background-image:url(../images/sort_asc_disabled.png)}table.wf-dataTable>thead .sorting_desc_disabled{background-image:url(../images/sort_desc_disabled.png)}table.wf-dataTable>tbody>tr{background-color:#ffffff}table.wf-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wf-dataTable>tbody>tr>th,table.wf-dataTable>tbody>tr>td{padding:5px 8px}table.wf-dataTable.row-border>tbody>tr>th,table.wf-dataTable.row-border>tbody>tr>td,table.wf-dataTable.display>tbody>tr>th,table.wf-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wf-dataTable.row-border>tbody>tr:first-child>th,table.wf-dataTable.row-border>tbody>tr:first-child>td,table.wf-dataTable.display>tbody>tr:first-child>th,table.wf-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.cell-border>tbody>tr>th,table.wf-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr>th:first-child,table.wf-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr:first-child>th,table.wf-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.stripe>tbody>tr.odd,table.wf-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wf-dataTable.stripe>tbody>tr.odd.selected,table.wf-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wf-dataTable.hover>tbody>tr:hover,table.wf-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wf-dataTable.hover>tbody>tr:hover.selected,table.wf-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wf-dataTable.order-column>tbody>tr>.sorting_1,table.wf-dataTable.order-column>tbody>tr>.sorting_2,table.wf-dataTable.order-column>tbody>tr>.sorting_3,table.wf-dataTable.display tbody>tr>.sorting_1,table.wf-dataTable.display>tbody>tr>.sorting_2,table.wf-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wf-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wf-dataTable.display>tbody>tr.selected>.sorting_1,table.wf-dataTable.display>tbody>tr.selected>.sorting_2,table.wf-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.odd>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wf-dataTable.display>tbody>tr.odd>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wf-dataTable.display>tbody>tr.odd>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wf-dataTable.display>tbody>tr.even>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wf-dataTable.display>tbody>tr.even>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wf-dataTable.display>tbody>tr.even>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wf-dataTable.display>tbody>tr:hover>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wf-dataTable.display>tbody>tr:hover>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wf-dataTable.display>tbody>tr:hover>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wf-dataTable.no-footer{border-bottom:1px solid #111}table.wf-dataTable.nowrap th,table.wf-dataTable.nowrap td{white-space:nowrap}table.wf-dataTable.compact thead th,table.wf-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wf-dataTable.compact tfoot th,table.wf-dataTable.compact tfoot td{padding:4px}table.wf-dataTable.compact>tbody>tr>th,table.wf-dataTable.compact>tbody>tr>td{padding:4px}table.wf-dataTable th.dt-left,table.wf-dataTable td.dt-left{text-align:left}table.wf-dataTable th.dt-center,table.wf-dataTable td.dt-center,table.wf-dataTable td.dataTables_empty{text-align:center}table.wf-dataTable th.dt-right,table.wf-dataTable td.dt-right{text-align:right}table.wf-dataTable th.dt-justify,table.wf-dataTable td.dt-justify{text-align:justify}table.wf-dataTable th.dt-nowrap,table.wf-dataTable td.dt-nowrap{white-space:nowrap}table.wf-dataTable thead th.dt-head-left,table.wf-dataTable thead td.dt-head-left,table.wf-dataTable tfoot th.dt-head-left,table.wf-dataTable tfoot td.dt-head-left{text-align:left}table.wf-dataTable thead th.dt-head-center,table.wf-dataTable thead td.dt-head-center,table.wf-dataTable tfoot th.dt-head-center,table.wf-dataTable tfoot td.dt-head-center{text-align:center}table.wf-dataTable thead th.dt-head-right,table.wf-dataTable thead td.dt-head-right,table.wf-dataTable tfoot th.dt-head-right,table.wf-dataTable tfoot td.dt-head-right{text-align:right}table.wf-dataTable thead th.dt-head-justify,table.wf-dataTable thead td.dt-head-justify,table.wf-dataTable tfoot th.dt-head-justify,table.wf-dataTable tfoot td.dt-head-justify{text-align:justify}table.wf-dataTable thead th.dt-head-nowrap,table.wf-dataTable thead td.dt-head-nowrap,table.wf-dataTable tfoot th.dt-head-nowrap,table.wf-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wf-dataTable>tbody>tr>th.dt-body-left,table.wf-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wf-dataTable>tbody>tr>th.dt-body-center,table.wf-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wf-dataTable>tbody>tr>th.dt-body-right,table.wf-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wf-dataTable>tbody>tr>th.dt-body-justify,table.wf-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wf-dataTable>tbody>tr>th.dt-body-nowrap,table.wf-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wf-dataTable table.dataTable,table.wf-dataTable th,table.wf-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wf-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wf-dataTables_wrapper .dataTables_length{float:left}.wf-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wf-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wf-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wf-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wf-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wf-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wf-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter,.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_processing,.wf-dataTables_wrapper .dataTables_paginate{color:#333}.wf-dataTables_wrapper .dataTables_scroll{clear:both}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wf-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wf-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wf-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wf-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
|
1 |
+
.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}@-ms-viewport{width:device-width}.wf-visible-xs{display:none !important}.wf-visible-sm{display:none !important}.wf-visible-md{display:none !important}.wf-visible-lg{display:none !important}.wf-visible-xs-block,.wf-visible-xs-inline,.wf-visible-xs-inline-block,.wf-visible-sm-block,.wf-visible-sm-inline,.wf-visible-sm-inline-block,.wf-visible-md-block,.wf-visible-md-inline,.wf-visible-md-inline-block,.wf-visible-lg-block,.wf-visible-lg-inline,.wf-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wf-visible-xs{display:block !important}table.wf-visible-xs{display:table !important}tr.wf-visible-xs{display:table-row !important}th.wf-visible-xs,td.wf-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wf-visible-xs-block{display:block !important}}@media (max-width: 767px){.wf-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wf-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm{display:block !important}table.wf-visible-sm{display:table !important}tr.wf-visible-sm{display:table-row !important}th.wf-visible-sm,td.wf-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md{display:block !important}table.wf-visible-md{display:table !important}tr.wf-visible-md{display:table-row !important}th.wf-visible-md,td.wf-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wf-visible-lg{display:block !important}table.wf-visible-lg{display:table !important}tr.wf-visible-lg{display:table-row !important}th.wf-visible-lg,td.wf-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wf-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wf-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wf-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wf-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wf-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-hidden-md{display:none !important}}@media (min-width: 1200px){.wf-hidden-lg{display:none !important}}.wf-visible-print{display:none !important}@media print{.wf-visible-print{display:block !important}table.wf-visible-print{display:table !important}tr.wf-visible-print{display:table-row !important}th.wf-visible-print,td.wf-visible-print{display:table-cell !important}}.wf-visible-print-block{display:none !important}@media print{.wf-visible-print-block{display:block !important}}.wf-visible-print-inline{display:none !important}@media print{.wf-visible-print-inline{display:inline !important}}.wf-visible-print-inline-block{display:none !important}@media print{.wf-visible-print-inline-block{display:inline-block !important}}@media print{.wf-hidden-print{display:none !important}}.wf-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container:before,.wf-container:after{content:" ";display:table}.wf-container:after{clear:both}@media (min-width: 768px){.wf-container{width:750px}}@media (min-width: 992px){.wf-container{width:970px}}@media (min-width: 1200px){.wf-container{width:1170px}}.wf-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container-fluid:before,.wf-container-fluid:after{content:" ";display:table}.wf-container-fluid:after{clear:both}.wf-row{margin-left:-15px;margin-right:-15px}.wf-row:before,.wf-row:after{content:" ";display:table}.wf-row:after{clear:both}.wf-col-xs-1,.wf-col-sm-1,.wf-col-md-1,.wf-col-lg-1,.wf-col-xs-2,.wf-col-sm-2,.wf-col-md-2,.wf-col-lg-2,.wf-col-xs-3,.wf-col-sm-3,.wf-col-md-3,.wf-col-lg-3,.wf-col-xs-4,.wf-col-sm-4,.wf-col-md-4,.wf-col-lg-4,.wf-col-xs-5,.wf-col-sm-5,.wf-col-md-5,.wf-col-lg-5,.wf-col-xs-6,.wf-col-sm-6,.wf-col-md-6,.wf-col-lg-6,.wf-col-xs-7,.wf-col-sm-7,.wf-col-md-7,.wf-col-lg-7,.wf-col-xs-8,.wf-col-sm-8,.wf-col-md-8,.wf-col-lg-8,.wf-col-xs-9,.wf-col-sm-9,.wf-col-md-9,.wf-col-lg-9,.wf-col-xs-10,.wf-col-sm-10,.wf-col-md-10,.wf-col-lg-10,.wf-col-xs-11,.wf-col-sm-11,.wf-col-md-11,.wf-col-lg-11,.wf-col-xs-12,.wf-col-sm-12,.wf-col-md-12,.wf-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wf-col-xs-1,.wf-col-xs-2,.wf-col-xs-3,.wf-col-xs-4,.wf-col-xs-5,.wf-col-xs-6,.wf-col-xs-7,.wf-col-xs-8,.wf-col-xs-9,.wf-col-xs-10,.wf-col-xs-11,.wf-col-xs-12{float:left}.wf-col-xs-1{width:8.33333%}.wf-col-xs-2{width:16.66667%}.wf-col-xs-3{width:25%}.wf-col-xs-4{width:33.33333%}.wf-col-xs-5{width:41.66667%}.wf-col-xs-6{width:50%}.wf-col-xs-7{width:58.33333%}.wf-col-xs-8{width:66.66667%}.wf-col-xs-9{width:75%}.wf-col-xs-10{width:83.33333%}.wf-col-xs-11{width:91.66667%}.wf-col-xs-12{width:100%}.wf-col-xs-pull-0{right:auto}.wf-col-xs-pull-1{right:8.33333%}.wf-col-xs-pull-2{right:16.66667%}.wf-col-xs-pull-3{right:25%}.wf-col-xs-pull-4{right:33.33333%}.wf-col-xs-pull-5{right:41.66667%}.wf-col-xs-pull-6{right:50%}.wf-col-xs-pull-7{right:58.33333%}.wf-col-xs-pull-8{right:66.66667%}.wf-col-xs-pull-9{right:75%}.wf-col-xs-pull-10{right:83.33333%}.wf-col-xs-pull-11{right:91.66667%}.wf-col-xs-pull-12{right:100%}.wf-col-xs-push-0{left:auto}.wf-col-xs-push-1{left:8.33333%}.wf-col-xs-push-2{left:16.66667%}.wf-col-xs-push-3{left:25%}.wf-col-xs-push-4{left:33.33333%}.wf-col-xs-push-5{left:41.66667%}.wf-col-xs-push-6{left:50%}.wf-col-xs-push-7{left:58.33333%}.wf-col-xs-push-8{left:66.66667%}.wf-col-xs-push-9{left:75%}.wf-col-xs-push-10{left:83.33333%}.wf-col-xs-push-11{left:91.66667%}.wf-col-xs-push-12{left:100%}.wf-col-xs-offset-0{margin-left:0%}.wf-col-xs-offset-1{margin-left:8.33333%}.wf-col-xs-offset-2{margin-left:16.66667%}.wf-col-xs-offset-3{margin-left:25%}.wf-col-xs-offset-4{margin-left:33.33333%}.wf-col-xs-offset-5{margin-left:41.66667%}.wf-col-xs-offset-6{margin-left:50%}.wf-col-xs-offset-7{margin-left:58.33333%}.wf-col-xs-offset-8{margin-left:66.66667%}.wf-col-xs-offset-9{margin-left:75%}.wf-col-xs-offset-10{margin-left:83.33333%}.wf-col-xs-offset-11{margin-left:91.66667%}.wf-col-xs-offset-12{margin-left:100%}.wf-col-xs-half-padding-left{padding-left:8px}.wf-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wf-col-sm-1,.wf-col-sm-2,.wf-col-sm-3,.wf-col-sm-4,.wf-col-sm-5,.wf-col-sm-6,.wf-col-sm-7,.wf-col-sm-8,.wf-col-sm-9,.wf-col-sm-10,.wf-col-sm-11,.wf-col-sm-12{float:left}.wf-col-sm-1{width:8.33333%}.wf-col-sm-2{width:16.66667%}.wf-col-sm-3{width:25%}.wf-col-sm-4{width:33.33333%}.wf-col-sm-5{width:41.66667%}.wf-col-sm-6{width:50%}.wf-col-sm-7{width:58.33333%}.wf-col-sm-8{width:66.66667%}.wf-col-sm-9{width:75%}.wf-col-sm-10{width:83.33333%}.wf-col-sm-11{width:91.66667%}.wf-col-sm-12{width:100%}.wf-col-sm-pull-0{right:auto}.wf-col-sm-pull-1{right:8.33333%}.wf-col-sm-pull-2{right:16.66667%}.wf-col-sm-pull-3{right:25%}.wf-col-sm-pull-4{right:33.33333%}.wf-col-sm-pull-5{right:41.66667%}.wf-col-sm-pull-6{right:50%}.wf-col-sm-pull-7{right:58.33333%}.wf-col-sm-pull-8{right:66.66667%}.wf-col-sm-pull-9{right:75%}.wf-col-sm-pull-10{right:83.33333%}.wf-col-sm-pull-11{right:91.66667%}.wf-col-sm-pull-12{right:100%}.wf-col-sm-push-0{left:auto}.wf-col-sm-push-1{left:8.33333%}.wf-col-sm-push-2{left:16.66667%}.wf-col-sm-push-3{left:25%}.wf-col-sm-push-4{left:33.33333%}.wf-col-sm-push-5{left:41.66667%}.wf-col-sm-push-6{left:50%}.wf-col-sm-push-7{left:58.33333%}.wf-col-sm-push-8{left:66.66667%}.wf-col-sm-push-9{left:75%}.wf-col-sm-push-10{left:83.33333%}.wf-col-sm-push-11{left:91.66667%}.wf-col-sm-push-12{left:100%}.wf-col-sm-offset-0{margin-left:0%}.wf-col-sm-offset-1{margin-left:8.33333%}.wf-col-sm-offset-2{margin-left:16.66667%}.wf-col-sm-offset-3{margin-left:25%}.wf-col-sm-offset-4{margin-left:33.33333%}.wf-col-sm-offset-5{margin-left:41.66667%}.wf-col-sm-offset-6{margin-left:50%}.wf-col-sm-offset-7{margin-left:58.33333%}.wf-col-sm-offset-8{margin-left:66.66667%}.wf-col-sm-offset-9{margin-left:75%}.wf-col-sm-offset-10{margin-left:83.33333%}.wf-col-sm-offset-11{margin-left:91.66667%}.wf-col-sm-offset-12{margin-left:100%}.wf-col-sm-half-padding-left{padding-left:8px}.wf-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wf-col-md-1,.wf-col-md-2,.wf-col-md-3,.wf-col-md-4,.wf-col-md-5,.wf-col-md-6,.wf-col-md-7,.wf-col-md-8,.wf-col-md-9,.wf-col-md-10,.wf-col-md-11,.wf-col-md-12{float:left}.wf-col-md-1{width:8.33333%}.wf-col-md-2{width:16.66667%}.wf-col-md-3{width:25%}.wf-col-md-4{width:33.33333%}.wf-col-md-5{width:41.66667%}.wf-col-md-6{width:50%}.wf-col-md-7{width:58.33333%}.wf-col-md-8{width:66.66667%}.wf-col-md-9{width:75%}.wf-col-md-10{width:83.33333%}.wf-col-md-11{width:91.66667%}.wf-col-md-12{width:100%}.wf-col-md-pull-0{right:auto}.wf-col-md-pull-1{right:8.33333%}.wf-col-md-pull-2{right:16.66667%}.wf-col-md-pull-3{right:25%}.wf-col-md-pull-4{right:33.33333%}.wf-col-md-pull-5{right:41.66667%}.wf-col-md-pull-6{right:50%}.wf-col-md-pull-7{right:58.33333%}.wf-col-md-pull-8{right:66.66667%}.wf-col-md-pull-9{right:75%}.wf-col-md-pull-10{right:83.33333%}.wf-col-md-pull-11{right:91.66667%}.wf-col-md-pull-12{right:100%}.wf-col-md-push-0{left:auto}.wf-col-md-push-1{left:8.33333%}.wf-col-md-push-2{left:16.66667%}.wf-col-md-push-3{left:25%}.wf-col-md-push-4{left:33.33333%}.wf-col-md-push-5{left:41.66667%}.wf-col-md-push-6{left:50%}.wf-col-md-push-7{left:58.33333%}.wf-col-md-push-8{left:66.66667%}.wf-col-md-push-9{left:75%}.wf-col-md-push-10{left:83.33333%}.wf-col-md-push-11{left:91.66667%}.wf-col-md-push-12{left:100%}.wf-col-md-offset-0{margin-left:0%}.wf-col-md-offset-1{margin-left:8.33333%}.wf-col-md-offset-2{margin-left:16.66667%}.wf-col-md-offset-3{margin-left:25%}.wf-col-md-offset-4{margin-left:33.33333%}.wf-col-md-offset-5{margin-left:41.66667%}.wf-col-md-offset-6{margin-left:50%}.wf-col-md-offset-7{margin-left:58.33333%}.wf-col-md-offset-8{margin-left:66.66667%}.wf-col-md-offset-9{margin-left:75%}.wf-col-md-offset-10{margin-left:83.33333%}.wf-col-md-offset-11{margin-left:91.66667%}.wf-col-md-offset-12{margin-left:100%}.wf-col-md-half-padding-left{padding-left:8px}.wf-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wf-col-lg-1,.wf-col-lg-2,.wf-col-lg-3,.wf-col-lg-4,.wf-col-lg-5,.wf-col-lg-6,.wf-col-lg-7,.wf-col-lg-8,.wf-col-lg-9,.wf-col-lg-10,.wf-col-lg-11,.wf-col-lg-12{float:left}.wf-col-lg-1{width:8.33333%}.wf-col-lg-2{width:16.66667%}.wf-col-lg-3{width:25%}.wf-col-lg-4{width:33.33333%}.wf-col-lg-5{width:41.66667%}.wf-col-lg-6{width:50%}.wf-col-lg-7{width:58.33333%}.wf-col-lg-8{width:66.66667%}.wf-col-lg-9{width:75%}.wf-col-lg-10{width:83.33333%}.wf-col-lg-11{width:91.66667%}.wf-col-lg-12{width:100%}.wf-col-lg-pull-0{right:auto}.wf-col-lg-pull-1{right:8.33333%}.wf-col-lg-pull-2{right:16.66667%}.wf-col-lg-pull-3{right:25%}.wf-col-lg-pull-4{right:33.33333%}.wf-col-lg-pull-5{right:41.66667%}.wf-col-lg-pull-6{right:50%}.wf-col-lg-pull-7{right:58.33333%}.wf-col-lg-pull-8{right:66.66667%}.wf-col-lg-pull-9{right:75%}.wf-col-lg-pull-10{right:83.33333%}.wf-col-lg-pull-11{right:91.66667%}.wf-col-lg-pull-12{right:100%}.wf-col-lg-push-0{left:auto}.wf-col-lg-push-1{left:8.33333%}.wf-col-lg-push-2{left:16.66667%}.wf-col-lg-push-3{left:25%}.wf-col-lg-push-4{left:33.33333%}.wf-col-lg-push-5{left:41.66667%}.wf-col-lg-push-6{left:50%}.wf-col-lg-push-7{left:58.33333%}.wf-col-lg-push-8{left:66.66667%}.wf-col-lg-push-9{left:75%}.wf-col-lg-push-10{left:83.33333%}.wf-col-lg-push-11{left:91.66667%}.wf-col-lg-push-12{left:100%}.wf-col-lg-offset-0{margin-left:0%}.wf-col-lg-offset-1{margin-left:8.33333%}.wf-col-lg-offset-2{margin-left:16.66667%}.wf-col-lg-offset-3{margin-left:25%}.wf-col-lg-offset-4{margin-left:33.33333%}.wf-col-lg-offset-5{margin-left:41.66667%}.wf-col-lg-offset-6{margin-left:50%}.wf-col-lg-offset-7{margin-left:58.33333%}.wf-col-lg-offset-8{margin-left:66.66667%}.wf-col-lg-offset-9{margin-left:75%}.wf-col-lg-offset-10{margin-left:83.33333%}.wf-col-lg-offset-11{margin-left:91.66667%}.wf-col-lg-offset-12{margin-left:100%}.wf-col-lg-half-padding-left{padding-left:8px}.wf-col-lg-half-padding-right{padding-right:7px}}.wrap.wordfence{direction:ltr}@media (min-width: 768px){.wrap.wordfence{max-width:750px}}@media (min-width: 992px){.wrap.wordfence{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence{max-width:1170px}}.wrap.wordfence>.wf-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence h3{font-size:1.15em}a{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}.wordfence-icon32{width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:7px 5px 0 0;float:left}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}div.wordfence-lock-icon{background-image:url(../images/wordfence-logo-32x32.png)}a.wfhelp{background-image:url(../images/help.png);width:12px;height:12px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../images/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../images/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../images/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../images/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}img.wfFlag{vertical-align:middle;margin:-3px 4px 0 0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle}.wf-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wf-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:2px 8px 2px 24px;z-index:100000;position:fixed;right:2px;bottom:2px;border:1px solid #000;background-color:#F00;color:#FFF;font-size:12px;font-weight:bold;font-family:Arial;text-align:center;background-image:url("../images/icons/ajaxRed16.gif");background-position:2px 2px;background-repeat:no-repeat}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:Trebuchet, Arial, sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wf-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wf-striped-table th,.wf-striped-table td{padding:6px 4px;border:1px solid #ccc}.wf-striped-table thead th,.wf-striped-table thead td,.wf-striped-table tfoot th,.wf-striped-table tfoot td,.wf-striped-table tbody.thead th,.wf-striped-table tbody.thead td{background-color:#222;color:#fff;font-weight:bold;border-color:#474747;text-align:left}.wf-striped-table tbody tr.even td,.wf-striped-table tbody tr:nth-child(2n) td{background-color:#eee}.wf-striped-table tbody tr td,.wf-striped-table tbody tr.odd td{background-color:#fff}.wf-striped-table tbody tr:hover>td{background-color:#fffbd8}.wf-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wf-striped-table td.error{color:#d0514c;font-weight:bold}.wf-striped-table td.error:before{content:"\2718"}.wf-striped-table td.success{color:#008c10;font-weight:bold;max-width:20%}.wf-striped-table td.success:before{content:"\2713"}.wf-striped-table td.success:before,.wf-striped-table td.error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wf-striped-table td.inactive{font-weight:bold;color:#666666}.wordfence-waiting{line-height:32px}.wordfence-waiting img{vertical-align:middle}pre.wf-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wf-center{text-align:center}#wfConfigForm{max-width:1035px}.wf-hidden{display:none !important}.wf-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-card .wf-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wf-card .wf-card-inner .wf-card-content{max-width:75%}.wf-card .wf-card-inner .wf-card-content .wf-card-title{font-size:1.125rem;width:100%}.wf-card .wf-card-inner .wf-card-content .wf-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wf-card .wf-card-inner .wf-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-card .wf-card-inner .wf-card-action .wf-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox.checked{background-position:right center}.wf-card .wf-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wf-card .wf-card-extra{padding:1rem}}.wf-card.active .wf-card-extra{display:block}.wf-card.wf-card-left .wf-card-content{margin-left:48px}.wf-card.wf-card-left .wf-card-action{right:auto;left:0px}.wf-card.disabled .wf-card-content .wf-card-title{color:#aaaaaa}.wf-card.disabled .wf-card-content .wf-card-subtitle{color:#8ea6be}.wf-add-top{margin-top:20px !important}.wf-add-top-small{margin-top:10px !important}.wf-add-bottom{margin-bottom:20px !important}.wf-add-bottom-small{margin-bottom:10px !important}.wf-center{text-align:center}.wf-right{text-align:right}.wf-scroll-x::-webkit-scrollbar,.wf-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wf-scroll-x::-webkit-scrollbar-thumb,.wf-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wf-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wf-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.select2-container{min-width:240px}@media (min-width: 768px){.select2-container{min-width:280px}}@media (min-width: 992px){.select2-container{min-width:320px}}.wf-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wf-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wf-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-page-title h2{padding:0 !important}.wf-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wf-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wf-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}#wf-notices{margin-top:15px}#wf-notices .wf-admin-notice{margin-left:0px;margin-right:0px}.wf-success-text,.wf-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wf-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wf-notice-text{color:#6d798c}.wf-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wf-success-text{color:#11967a}.wf-premium-callout{border:1px solid #00709e;background-color:#ffffff;padding:16px;margin:20px 0 0}.wf-premium-callout h3{margin:0 0 8px;color:#11967a}.wf-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wf-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wf-premium-callout .center{text-align:center;margin:0}.wf-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}#wfLiveTrafficOverlayAnchor::after{position:absolute;z-index:3002;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused #wfLiveTrafficOverlayAnchor::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wordfenceLiveActivityDisabled{background:#fff;border-left:4px solid #ffb900;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:12px;padding:1px 13px}#wfLiveTrafficDisabledMessage{display:none;position:fixed;z-index:3003;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wfLiveTrafficDisabledMessage h2{background-color:#FFF;overflow:hidden;border:1px solid #CCC;max-width:350px;margin:0 auto;padding:15px;font-size:2.0em}#wfLiveTrafficDisabledMessage h2 small{font-size:0.5em;font-weight:normal;margin-top:20px}.wordfenceLiveActivityPaused #wfLiveTrafficDisabledMessage{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-live-activity{position:relative;margin:20px 0 10px 0;padding:0.75rem;box-sizing:border-box;background:#FFFCEF;box-shadow:0 0 0 1px rgba(153,155,135,0.5),0 1px 2px #e8f3e0}.wf-live-activity .wf-live-activity-inner{width:100%;box-sizing:border-box;position:relative}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:flex-start}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-title{color:#888888;font-size:0.85rem;font-weight:bold;padding-right:0.5rem}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-message{font-size:0.80rem;color:#000000}.wf-live-activity .wf-live-activity-inner .wf-live-activity-state{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background:rgba(255,252,239,0.9);display:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:center;z-index:3001;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused .wf-live-activity .wf-live-activity-inner .wf-live-activity-state{display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:opacity 0.5s;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wf-scan-failed{max-width:640px;margin:0 auto}.wordfence .wordfenceScanButton{margin:20px 0 20px 0}.wordfence .wordfenceScanButton input.button-wf-grey{background:#EFEFEF url(../images/button-grad-grey.png) repeat-x scroll left top;border-color:#EFEFEF}.wordfence .wordfenceScanButton table td{vertical-align:top}.wordfence .wordfenceScanButton .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709E;height:44px;line-height:44px;padding:0px 20px}table.wfSummaryParent{font-family:sans-serif;font-size:14px;color:#000;z-index:9}table.wfSummaryParent td{vertical-align:top;padding:0;margin:0}table.wfSummaryParent table.wfSummaryChild th{font-weight:bold;text-align:right;font-family:Georgia,Times New Roman,Times,serif;color:#000;padding:5px 10px 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSummaryChild td{font-weight:normal;text-align:left;padding:5px 0 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSC1 td{width:300px;padding:0 25px 10px 0}table.wfSummaryParent table.wfSC2 th{width:80px}table.wfSummaryParent table.wfSC2 td{width:100px}table.wfSummaryParent table.wfSC3 th{width:80px}table.wfSummaryParent table.wfSC3 td{width:250px}table.wfSummaryParent th.wfHead{font-size:22px;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;color:#555;font-weight:bold;text-align:left;padding:20px 0 20px 0;-webkit-font-smoothing:antialiased}.wf-issues-table{table-layout:fixed;width:100%}div.wfIssue{width:100%}div.wfIssue table.wfIssue td{padding:2px;margin:0;border-width:0;text-align:left;width:100%}div.wfIssue table.wfIssue th{padding:2px;margin:0;font-weight:bold;text-align:left;color:#777;white-space:nowrap}div.wfIssue table.wfIssueLinks td{border-width:0;text-align:left;padding-right:10px}div.wfIssue h2{margin:0 0 5px 0;padding:0;font-size:0.9rem}@media (min-width: 768px){div.wfIssue h2{font-size:1.05rem}}.wfIssueOptions{border-top:1px solid #CCC;padding:10px}.wfIssueOptions h3{font-size:0.8rem;margin:0}@media (min-width: 768px){.wfIssueOptions h3{display:inline-block}}.wfIssueOptions ul{margin-bottom:0;padding-left:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfIssueOptions ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}.wfIssueOptions ul>li>a{position:relative;display:block;padding:8px 12px/2}.wfIssueOptions ul>li>a:hover,.wfIssueOptions ul>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfIssueOptions a{margin-left:10px}.wfIssueOptions strong{float:left;display:block;width:60px}.wfIssueOptions p{margin:6px 0px 0px}.wfProbSev1,.wfProbSev2,.wfAjaxLight128,.wfResolved{width:128px;height:128px;border:0;margin:0 auto;background-repeat:no-repeat;background-position:0 0;text-decoration:none;display:block}.wfProbSev1{background-image:url(../images/icons/error128.png)}.wfProbSev2{background-image:url(../images/icons/warning128.png)}.wfResolved{background-image:url(../images/icons/tick128.png)}.wfIssuesContainer{width:100%;display:none}.wfIssuesContainer p{max-width:550px}.wfALogTime{color:#999}.wfALogMailLink,.wfALogViewLink{display:block;position:absolute;padding:0 0 0 18px;margin:0;right:10px;top:0;background-repeat:no-repeat;font-weight:normal}.wfALogMailLink{background-image:url(../images/icons/email_go.png)}.wfALogViewLink{background-image:url(../images/icons/magnifier.png)}#wfActivity{position:relative}.consoleHead{position:relative;padding:0 0 0 3px;font-weight:bold;width:100%}.consoleHeadText{margin-bottom:4px;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;color:#555;font-weight:bold;-webkit-font-smoothing:antialiased}.consoleFooter{position:relative}.consoleOuter{width:100%}.consoleInner{height:116px;overflow:auto;z-index:1}.bevelDiv1{border:1px solid #EFEFEF}.bevelDiv2{border:1px solid #AAA}.bevelDiv3{background-color:#ffffed;padding:5px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.wfSecure{color:#0A0;font-weight:bold}.wfSummaryLine{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfSummaryLine{-webkit-flex-direction:row;flex-direction:row}}.wfSummaryLine .wfSummaryDate{padding-left:3px}.wfSummaryLine .wfSummaryMsg{padding-left:3px;-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfSummaryLoading{width:16px;height:11px;background-image:url("../images/icons/ajaxScan.gif")}.wfSummaryBad,.wfSummaryErr{color:#930000}.wfSummaryOK{color:#11967a}.wfSummaryIgnored{color:#a87302}.wfClear{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}.wfSummaryFinal{-webkit-font-smoothing:antialiased;font-weight:bold;color:#555}.wfStartScanButton{text-align:center}.wordfenceScanHelp{border:1px solid #CCC;padding:4px}.wf-scan-no-issues{font-size:1.25rem;color:#11967a}.wf-scan-severity{position:relative;width:10px}@media (min-width: 768px){.wf-scan-severity{width:144px}}.wf-scan-severity-1,.wf-scan-severity-2{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.wf-scan-severity-1{background-color:#c10000}.wf-scan-severity-2{background-color:#ffd10a}.scan-schedule{border-collapse:collapse;border-spacing:0}.scan-schedule tr:first-of-type th{padding-top:0}.scan-schedule td{padding:0}.scan-schedule th{padding:1.5rem 0.5rem 0.75rem 0;font-size:1rem;text-align:left}@media (min-width: 768px){.scan-schedule th{padding:0 0.5rem 0 0;font-size:0.8125rem;text-align:center}}.next-scan{font-size:1em;display:block;position:relative;width:7em;height:7em;background-color:#fff;border-radius:0.6em;box-shadow:0 1px 0 rgba(189,189,189,0.6);overflow:hidden}.next-scan *{display:block;width:100%;font-size:1em;font-weight:bold;font-style:normal;text-align:center}.next-scan strong{position:absolute;top:0;padding:0.4em 0;color:#fff;background-color:#00709E;box-shadow:0 2px 0 #00709E}.next-scan em{position:absolute;bottom:0.3em;color:#00709E}.next-scan span{width:100%;font-size:2.8em;padding-top:1.15em;color:#2f2f2f}.schedule-times-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;margin-top:1rem}@media (min-width: 768px){.schedule-times-wrapper{margin-top:0.25rem}}.schedule-times-wrapper:first-of-type{margin-top:0}@media (min-width: 768px){.schedule-times-wrapper:first-of-type{margin-top:1rem}}.schedule-times-wrapper>*{-webkit-flex-grow:1;flex-grow:1;min-width:0}.schedule-times-wrapper>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:initial;padding-right:0.25rem}.schedule-times{margin-bottom:0;margin-top:0;padding-left:0;list-style:none;clear:both}.schedule-times>li{float:left;position:relative;display:block;margin:0px 0px 2px 0px}.schedule-times>li.disabled>a{color:#777}.schedule-times>li.disabled>a:hover,.schedule-times>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.schedule-times>li>a{text-decoration:none;border:1px solid #e2e2e2;border-radius:4px;position:relative;display:block;padding:8px 12px}.schedule-times>li>a:hover,.schedule-times>li>a:focus{text-decoration:none;background-color:#e2e2e2}.schedule-times>li+li{margin-left:2px}.schedule-times>li.active>a,.schedule-times>li.active>a:hover,.schedule-times>li.active>a:focus{color:#fff;background-color:#00709e;border-color:#00709e}.schedule-times>li.text-only{position:relative;display:block;padding:8px 12px}.schedule-times>li>a>img{max-width:none}#wf-lt-listings .wfActEvent{padding-left:15px;border-left:5px solid #cccccc}#wf-lt-listings .wfActEvent.wfHuman{border-left:5px solid #16bc9b}#wf-lt-listings .wfActEvent.wfActionBlocked{border-left:5px solid #d03935}#wf-lt-listings .wfActEvent.wfNotice{border-left:5px solid #c10000}#wf-lt-listings .wfActEvent.wfWarning,#wf-lt-listings .wfActEvent.wf404{border-left:5px solid #ffd10a}#wf-lt-listings .wfActEvent:hover{background-color:#fff9e9 !important}.wfActEvent.wf-live-traffic-filter{padding-left:0;padding-right:0;display:-webkit-flex;display:flex;-webkit-align-items:baseline;align-items:baseline;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfActEvent.wf-live-traffic-filter{-webkit-flex-direction:row;flex-direction:row}}.wfActEvent.wf-live-traffic-filter h2{margin:0;padding-bottom:0.5rem}@media (min-width: 768px){.wfActEvent.wf-live-traffic-filter h2{padding-bottom:0;padding-right:0.5rem}}#wf-lt-advanced-filters{padding-left:0;padding-right:0;overflow:hidden}.wf-live-traffic-filter-detail{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-live-traffic-filter-detail{-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail *{-webkit-flex-grow:1;flex-grow:1}}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-remove{margin-left:0.5rem;font-size:1.5rem;color:#333}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0.25rem 0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:0.75rem !important}@media (min-width: 768px){.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:1rem !important}}.wf-filtered-traffic{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-filtered-traffic>*{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;padding:10px 20px;border-bottom:1px solid #CCC;width:100%;box-sizing:border-box}.wf-filtered-traffic>*>*:first-child{-webkit-flex-grow:1;flex-grow:1}.wf-filtered-traffic .wf-filtered-traffic-hits{font-size:1.75rem;color:#999999;margin-top:10px}#wf-live-traffic{position:relative;overflow:visible}#wf-live-traffic-legend{white-space:nowrap;background-color:#fff;border:1px solid #cccccc;padding:12px}#wf-live-traffic-legend.sticky{position:fixed;top:10px;right:auto;left:10px;z-index:2000}@media (min-width: 768px){#wf-live-traffic-legend.sticky{top:42px;left:182px}}#wf-live-traffic-legend-placeholder{display:none;padding:12px}#wf-live-traffic-legend-placeholder.sticky{display:block}#wf-live-traffic-legend ul{margin:0;padding:0}#wf-live-traffic-legend ul:before,#wf-live-traffic-legend ul:after{content:" ";display:table}#wf-live-traffic-legend ul:after{clear:both}#wf-live-traffic-legend ul li{margin:0;padding:0;position:relative;float:left;font-size:11.5px}@media (min-width: 768px){#wf-live-traffic-legend ul li{font-size:13px}}#wf-live-traffic-legend ul li+li{margin-left:8px}#wf-live-traffic-legend ul li:before{content:'';display:block;float:left;margin:3px 6px 0 0;width:12px;height:12px;background-color:#CCCCCC}#wf-live-traffic-legend ul li.wfHuman:before{background-color:#16bc9b}#wf-live-traffic-legend ul li.wfNotice:before{background-color:#ffd10a}#wf-live-traffic-legend ul li.wfBlocked:before{background-color:#d03935}.wfTimeAgo{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-weight:bold;font-style:italic}.wfActEvent{border-bottom:1px solid #CCC;padding:10px 20px;overflow:auto}.wf-pad-small{margin:8px 0}#wf-lt-listings{margin:0 0 0}#wf-lt-listings a{cursor:pointer;text-decoration:underline}#wf-lt-listings a.button,#wf-lt-listings a.wf-btn{text-decoration:none}.wfActionBlocked{background-color:#fff6f6}[class*="span"]{float:left;min-height:1px;margin-left:30px}.highlighted{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-moz-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-webkit-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-moz-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@-webkit-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}.highlighted{-webkit-animation-name:highlighted;animation-name:highlighted}.highlighted.wfActionBlocked{-webkit-animation-name:highlightedBlocked;animation-name:highlightedBlocked}#wf-lt-preset-filters{min-width:250px}#wf-lt-advanced-filters>table{width:100%}#wf-lt-advanced-filters>table>tr>td{vertical-align:top}.wf-lt-url{white-space:nowrap}table.block-ranges-table{border-collapse:collapse;margin:10px 0 0}table.block-ranges-table tr td{border:1px solid #CCC;border-width:1px 0;padding:10px 0 12px 0}#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:0.9rem}@media (min-width: 768px){#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:1.0rem}}@media (min-width: 992px){#input-wafStatus,#input-wafStatus option,.select2-container--default{font-size:1.125rem}}.wafStatus-enabled,.wafStatus-learning-mode,.wafStatus-disabled,.wafStatus-enabled.select2-container--default .select2-selection--single .select2-selection__rendered,.wafStatus-learning-mode.select2-container--default .select2-selection--single .select2-selection__rendered,.wafStatus-disabled.select2-container--default .select2-selection--single .select2-selection__rendered{color:#ffffff}#waf-config-form .waf-config-label{font-size:1.3em}#waf-config-form .select2-container--default .select2-selection--single{padding:4px;text-shadow:0 0 3px #000000;font-weight:bold;border-radius:3px}#waf-config-form .select2-container .select2-selection--single{height:auto}.wafStatus-enabled.select2-container--default .select2-selection--single{background-color:#11967a;border-color:#073a2f}.wafStatus-learning-mode.select2-container--default .select2-selection--single{background-color:#ffd10a;border-color:#a38400}.wafStatus-disabled.select2-container--default .select2-selection--single,.wafStatus-disabled.select2-container--default.select2-container--disabled .select2-selection--single,.wafStatus-learning-mode.select2-container--default.select2-container--disabled .select2-selection--single,.wafStatus-enabled.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#c10000;border-color:#5b0000}#waf-config-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;top:0}.wafStatus-enabled.select2-container--default .select2-selection--single .select2-selection__arrow b,.wafStatus-learning-mode.select2-container--default .select2-selection--single .select2-selection__arrow b,.wafStatus-disabled.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#ffffff transparent transparent}.wafStatus-enabled.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b,.wafStatus-learning-mode.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b,.wafStatus-disabled.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #ffffff}.wafStatus-description{display:none;max-width:500px;font-style:italic;font-size:14px;line-height:1.3}.whitelist-table-container{overflow-x:auto}table.whitelist-table .whitelist-edit{display:none}table.whitelist-table .edit-mode .whitelist-display{display:none}table.whitelist-table .edit-mode .whitelist-edit{display:block}table.whitelist-table .edit-mode span.whitelist-edit,table.whitelist-table .edit-mode input.whitelist-edit{display:inline}.wf-bulk-action{margin:12px 0}tr.wf-table-filters input{max-width:120px}#wordfenceRightRail img{max-width:100%}#wordfenceRightRail ul{list-style-type:none;margin:0;margin-top:15px}#wordfenceRightRail .center{text-align:center}#wordfenceRightRail .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wordfenceRightRail img{width:100%}.wordfenceRightRailLiveTraffic,.wordfenceRightRailOptions,.wordfenceRightRailDiagnostics{margin-left:1055px}.wordfenceRightRailBlockedIPs,.wordfenceRightRailWAF,.wordfenceRightRailCountryBlocking,.wordfenceRightRailScanSchedule{margin-left:950px}.wordfenceRightRail ul{list-style-type:none;margin:0}.wordfenceRightRail .center{text-align:center}.wordfenceRightRail .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wordfenceWrap.wordfence-community{min-height:760px}#wfTwoFactorQRCodeTable{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfTwoFactorQRCodeTable{width:256px;height:256px}}#wfTwoFactorRecoveryCodes{list-style-type:none}#wfTwoFactorRecoveryCodes li{font-family:monospace;text-align:center}#wfTwoFactorDownload .dashicons{line-height:26px}.wf-twofactor-delete{font-size:1.5rem}.wf-twofactor-delete a{text-decoration:none;color:#333}.wf-table.wf-table-twofactor>tbody>tr>td{vertical-align:middle}.wf-form-twofactor{max-width:400px}.wf-form-twofactor .wf-radio label{padding-left:0}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wf-plain{font-weight:normal}label.wf-control-label.wf-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.wf-form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wf-form-control::-moz-placeholder{color:#999;opacity:1}.wf-form-control:-ms-input-placeholder{color:#999}.wf-form-control::-webkit-input-placeholder{color:#999}.wf-form-control::-ms-expand{border:0;background-color:transparent}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{background-color:#e2e2e2;opacity:1}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{cursor:not-allowed;pointer-events:none}textarea.wf-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wf-form-control,input[type="time"].wf-form-control,input[type="datetime-local"].wf-form-control,input[type="month"].wf-form-control{line-height:34px}input[type="date"].wf-input-sm,.wf-input-group-sm input[type="date"],input[type="time"].wf-input-sm,.wf-input-group-sm input[type="time"],input[type="datetime-local"].wf-input-sm,.wf-input-group-sm input[type="datetime-local"],input[type="month"].wf-input-sm,.wf-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wf-input-lg,.wf-input-group-lg input[type="date"],input[type="time"].wf-input-lg,.wf-input-group-lg input[type="time"],input[type="datetime-local"].wf-input-lg,.wf-input-group-lg input[type="datetime-local"],input[type="month"].wf-input-lg,.wf-input-group-lg input[type="month"]{line-height:46px}}.wf-form-group{margin-bottom:8px}.wf-form-group.wf-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wf-form-group.wf-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wf-form-group.wf-focus label{margin-left:-4px}.wf-radio,.wf-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wf-radio label,.wf-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wf-radio input[type="radio"],.wf-radio-inline input[type="radio"],.wf-checkbox input[type="checkbox"],.wf-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wf-radio-offset{padding-left:29px}@media (min-width: 768px){.wf-radio-offset{padding-left:20px}}.wf-radio+.wf-radio,.wf-checkbox+.wf-checkbox{margin-top:-5px}.wf-radio-inline,.wf-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wf-radio-inline+.wf-radio-inline,.wf-checkbox-inline+.wf-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wf-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wf-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wf-radio-inline.wf-disabled,fieldset[disabled] .wf-radio-inline,.wf-checkbox-inline.wf-disabled,fieldset[disabled] .wf-checkbox-inline{cursor:not-allowed}.wf-radio.wf-disabled label,fieldset[disabled] .wf-radio label,.wf-checkbox.wf-disabled label,fieldset[disabled] .wf-checkbox label{cursor:not-allowed;pointer-events:none}.wf-form-control-static{padding-top:7px;padding-bottom:7px;margin:0;line-height:1}.wf-form-control-static.wf-input-lg,.wf-form-control-static.wf-input-sm{padding-left:0;padding-right:0}.wf-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wf-input-sm{height:30px;line-height:30px}textarea.wf-input-sm,select[multiple].wf-input-sm{height:auto}.wf-form-group-sm .wf-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-form-group-sm select.wf-form-control{height:30px;line-height:30px}.wf-form-group-sm textarea.wf-form-control,.wf-form-group-sm select[multiple].wf-form-control{height:auto}.wf-form-group-sm .wf-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wf-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wf-input-lg{height:46px;line-height:46px}textarea.wf-input-lg,select[multiple].wf-input-lg{height:auto}.wf-form-group-lg .wf-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-form-group-lg select.wf-form-control{height:46px;line-height:46px}.wf-form-group-lg textarea.wf-form-control,.wf-form-group-lg select[multiple].wf-form-control{height:auto}.wf-form-group-lg .wf-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wf-has-feedback{position:relative}.wf-has-feedback .wf-form-control{padding-right:42.5px}.wf-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.wf-input-lg+.wf-form-control-feedback,.wf-input-group-lg+.wf-form-control-feedback,.wf-form-group-lg .wf-form-control+.wf-form-control-feedback{width:46px;height:46px;line-height:46px}.wf-input-sm+.wf-form-control-feedback,.wf-input-group-sm+.wf-form-control-feedback,.wf-form-group-sm .wf-form-control+.wf-form-control-feedback{width:30px;height:30px;line-height:30px}.wf-has-success .wf-help-block,.wf-has-success .wf-control-label,.wf-has-success .wf-radio,.wf-has-success .wf-checkbox,.wf-has-success .wf-radio-inline,.wf-has-success .wf-checkbox-inline,.wf-has-success.wf-radio label,.wf-has-success.wf-checkbox label,.wf-has-success.wf-radio-inline label,.wf-has-success.wf-checkbox-inline label{color:#3c763d}.wf-has-success .wf-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-success .wf-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wf-has-success .wf-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wf-has-success .wf-form-control-feedback{color:#3c763d}.wf-has-warning .wf-help-block,.wf-has-warning .wf-control-label,.wf-has-warning .wf-radio,.wf-has-warning .wf-checkbox,.wf-has-warning .wf-radio-inline,.wf-has-warning .wf-checkbox-inline,.wf-has-warning.wf-radio label,.wf-has-warning.wf-checkbox label,.wf-has-warning.wf-radio-inline label,.wf-has-warning.wf-checkbox-inline label{color:#8a6d3b}.wf-has-warning .wf-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-warning .wf-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wf-has-warning .wf-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wf-has-warning .wf-form-control-feedback{color:#8a6d3b}.wf-has-error .wf-help-block,.wf-has-error .wf-control-label,.wf-has-error .wf-radio,.wf-has-error .wf-checkbox,.wf-has-error .wf-radio-inline,.wf-has-error .wf-checkbox-inline,.wf-has-error.wf-radio label,.wf-has-error.wf-checkbox label,.wf-has-error.wf-radio-inline label,.wf-has-error.wf-checkbox-inline label{color:#a94442}.wf-has-error .wf-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-error .wf-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wf-has-error .wf-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wf-has-error .wf-form-control-feedback{color:#a94442}.wf-has-feedback label ~ .wf-form-control-feedback{top:25px}.wf-has-feedback label.wf-sr-only ~ .wf-form-control-feedback{top:0}.wf-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wf-form-inline .wf-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-form-control{display:inline-block;width:auto;vertical-align:middle}.wf-form-inline .wf-form-control-static{display:inline-block}.wf-form-inline .wf-input-group{display:inline-table;vertical-align:middle}.wf-form-inline .wf-input-group .wf-input-group-addon,.wf-form-inline .wf-input-group .wf-input-group-btn,.wf-form-inline .wf-input-group .wf-form-control{width:auto}.wf-form-inline .wf-input-group>.wf-form-control{width:100%}.wf-form-inline .wf-control-label{margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio,.wf-form-inline .wf-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio label,.wf-form-inline .wf-checkbox label{padding-left:0}.wf-form-inline .wf-radio input[type="radio"],.wf-form-inline .wf-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wf-form-inline .wf-has-feedback .wf-form-control-feedback{top:0}}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox,.wf-form-horizontal .wf-radio-inline,.wf-form-horizontal .wf-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox{min-height:27px}.wf-form-horizontal .wf-form-group{margin-left:-15px;margin-right:-15px}.wf-form-horizontal .wf-form-group:before,.wf-form-horizontal .wf-form-group:after{content:" ";display:table}.wf-form-horizontal .wf-form-group:after{clear:both}@media (min-width: 768px){.wf-form-horizontal .wf-control-label{text-align:right;margin-bottom:0;padding-top:7px}}.wf-form-horizontal .wf-has-feedback .wf-form-control-feedback{right:15px}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-lg .wf-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-sm .wf-control-label{padding-top:6px;font-size:12px}}.wf-dashboard-item{position:relative;margin:0 auto 1rem;padding:0 1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-dashboard-item .wf-dashboard-item-inner{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content{max-width:75%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-title{font-size:0.75rem;width:100%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text{width:auto}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-success{color:#11967a}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning a{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox.checked{background-position:right center}.wf-dashboard-item .wf-dashboard-item-extra{display:none;margin:0 -1rem;padding:0 1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list{margin:0 -1rem;padding:0;list-style:none}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification{border-left:4px solid #f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification{border-left:4px solid #ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #eeeeee;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #eeeeee}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:center}@media (min-width: 1200px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:left}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-enabled .fa{color:#11967a}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-disabled .fa{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-premium{color:#9f9fa0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss a{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-count{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-dashboard-item.active .wf-dashboard-item-extra{display:block}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-content{margin-left:48px}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-action{right:auto;left:0px}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-title{color:#aaaaaa}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-subtitle{color:#8ea6be}.wf-notifications-empty{font-size:0.9rem;color:#9f9fa0}.wf-dashboard-graph-wrapper{width:100%}.wf-dashboard-badge{display:inline-block;min-width:10px;padding:3px 7px;margin-left:0.5rem;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#fcb214;border-radius:10px}.wf-dashboard-badge:empty{display:none}.wf-btn .wf-dashboard-badge{position:relative;top:-1px}.wf-btn-xs .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge{top:0;padding:1px 5px}.wf-list-group-item.active>.wf-dashboard-badge,.wf-nav-pills>.active>a>.wf-dashboard-badge{color:#00709e;background-color:#fff}.wf-list-group-item>.wf-dashboard-badge{float:right}.wf-list-group-item>.wf-dashboard-badge+.wf-dashboard-badge{margin-right:5px}.wf-nav-pills>li>a>.wf-dashboard-badge{margin-left:3px}.wf-dashboard-toggle-btns{text-align:center}.wf-dashboard-toggle-btns .wf-pagination{margin:1rem 1rem 0.5rem 1rem}.wf-dashboard-show-more{position:relative;font-size:14px;color:#959595;text-align:center;line-height:1rem;background:#ffffff;width:60%;margin:20px auto 0 auto}.wf-dashboard-show-more:before{display:inline-block;content:"";position:absolute;height:1px;background:#dddddd;top:50%;width:100%;left:0;right:0}.wf-dashboard-show-more a{display:inline-block;position:relative;padding:0 10px;background-color:#ffffff}.wf-ips,.wf-recent-logins,.wf-countries{max-height:30rem;overflow-y:hidden;margin-bottom:20px}.wf-ips .wf-table,.wf-recent-logins .wf-table,.wf-countries .wf-table{margin-bottom:0}.wf-dashboard-last-updated{font-style:italic;font-size:0.6rem;text-align:center;padding-bottom:1rem;margin:0}table.wf-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wf-table td,table.wf-table th{padding:0}.wf-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wf-table th{text-align:left}.wf-table{width:100%;max-width:100%;margin-bottom:20px}.wf-table>thead>tr>th,.wf-table>thead>tr>td,.wf-table>tbody>tr>th,.wf-table>tbody>tr>td,.wf-table>tfoot>tr>th,.wf-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wf-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wf-table>caption+thead>tr:first-child>th,.wf-table>caption+thead>tr:first-child>td,.wf-table>colgroup+thead>tr:first-child>th,.wf-table>colgroup+thead>tr:first-child>td,.wf-table>thead:first-child>tr:first-child>th,.wf-table>thead:first-child>tr:first-child>td{border-top:0}.wf-table>tbody+tbody{border-top:2px solid #ddd}.wf-table .wf-table{background-color:#fff}.wf-table-condensed>thead>tr>th,.wf-table-condensed>thead>tr>td,.wf-table-condensed>tbody>tr>th,.wf-table-condensed>tbody>tr>td,.wf-table-condensed>tfoot>tr>th,.wf-table-condensed>tfoot>tr>td{padding:5px}.wf-table-bordered{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td,.wf-table-bordered>tbody>tr>th,.wf-table-bordered>tbody>tr>td,.wf-table-bordered>tfoot>tr>th,.wf-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td{border-bottom-width:2px}.wf-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wf-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wf-table col[class*="col-"]{position:static;float:none;display:table-column}table.wf-table td[class*="col-"],table.wf-table th[class*="col-"]{position:static;float:none;display:table-cell}.wf-table>thead>tr>td.active,.wf-table>thead>tr>th.active,.wf-table>thead>tr.active>td,.wf-table>thead>tr.active>th,.wf-table>tbody>tr>td.active,.wf-table>tbody>tr>th.active,.wf-table>tbody>tr.active>td,.wf-table>tbody>tr.active>th,.wf-table>tfoot>tr>td.active,.wf-table>tfoot>tr>th.active,.wf-table>tfoot>tr.active>td,.wf-table>tfoot>tr.active>th{background-color:#f5f5f5}.wf-table-hover>tbody>tr>td.active:hover,.wf-table-hover>tbody>tr>th.active:hover,.wf-table-hover>tbody>tr.active:hover>td,.wf-table-hover>tbody>tr:hover>.active,.wf-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wf-table>thead>tr>td.success,.wf-table>thead>tr>th.success,.wf-table>thead>tr.success>td,.wf-table>thead>tr.success>th,.wf-table>tbody>tr>td.success,.wf-table>tbody>tr>th.success,.wf-table>tbody>tr.success>td,.wf-table>tbody>tr.success>th,.wf-table>tfoot>tr>td.success,.wf-table>tfoot>tr>th.success,.wf-table>tfoot>tr.success>td,.wf-table>tfoot>tr.success>th{background-color:#dff0d8}.wf-table-hover>tbody>tr>td.success:hover,.wf-table-hover>tbody>tr>th.success:hover,.wf-table-hover>tbody>tr.success:hover>td,.wf-table-hover>tbody>tr:hover>.success,.wf-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wf-table>thead>tr>td.info,.wf-table>thead>tr>th.info,.wf-table>thead>tr.info>td,.wf-table>thead>tr.info>th,.wf-table>tbody>tr>td.info,.wf-table>tbody>tr>th.info,.wf-table>tbody>tr.info>td,.wf-table>tbody>tr.info>th,.wf-table>tfoot>tr>td.info,.wf-table>tfoot>tr>th.info,.wf-table>tfoot>tr.info>td,.wf-table>tfoot>tr.info>th{background-color:#d9edf7}.wf-table-hover>tbody>tr>td.info:hover,.wf-table-hover>tbody>tr>th.info:hover,.wf-table-hover>tbody>tr.info:hover>td,.wf-table-hover>tbody>tr:hover>.info,.wf-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wf-table>thead>tr>td.warning,.wf-table>thead>tr>th.warning,.wf-table>thead>tr.warning>td,.wf-table>thead>tr.warning>th,.wf-table>tbody>tr>td.warning,.wf-table>tbody>tr>th.warning,.wf-table>tbody>tr.warning>td,.wf-table>tbody>tr.warning>th,.wf-table>tfoot>tr>td.warning,.wf-table>tfoot>tr>th.warning,.wf-table>tfoot>tr.warning>td,.wf-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wf-table-hover>tbody>tr>td.warning:hover,.wf-table-hover>tbody>tr>th.warning:hover,.wf-table-hover>tbody>tr.warning:hover>td,.wf-table-hover>tbody>tr:hover>.warning,.wf-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wf-table>thead>tr>td.danger,.wf-table>thead>tr>th.danger,.wf-table>thead>tr.danger>td,.wf-table>thead>tr.danger>th,.wf-table>tbody>tr>td.danger,.wf-table>tbody>tr>th.danger,.wf-table>tbody>tr.danger>td,.wf-table>tbody>tr.danger>th,.wf-table>tfoot>tr>td.danger,.wf-table>tfoot>tr>th.danger,.wf-table>tfoot>tr.danger>td,.wf-table>tfoot>tr.danger>th{background-color:#f2dede}.wf-table-hover>tbody>tr>td.danger:hover,.wf-table-hover>tbody>tr>th.danger:hover,.wf-table-hover>tbody>tr.danger:hover>td,.wf-table-hover>tbody>tr:hover>.danger,.wf-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wf-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wf-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wf-table-responsive>.wf-table{margin-bottom:0}.wf-table-responsive>.wf-table>thead>tr>th,.wf-table-responsive>.wf-table>thead>tr>td,.wf-table-responsive>.wf-table>tbody>tr>th,.wf-table-responsive>.wf-table>tbody>tr>td,.wf-table-responsive>.wf-table>tfoot>tr>th,.wf-table-responsive>.wf-table>tfoot>tr>td{white-space:nowrap}.wf-table-responsive>.wf-table-bordered{border:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:first-child{border-left:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:last-child{border-right:0}.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>td,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wf-nav{margin-bottom:0;padding-left:0;list-style:none}.wf-nav:before,.wf-nav:after{content:" ";display:table}.wf-nav:after{clear:both}.wf-nav>li{position:relative;display:block}.wf-nav>li>a{position:relative;display:block;padding:8px 12px}.wf-nav>li>a:hover,.wf-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wf-nav>li.wf-disabled>a{color:#777}.wf-nav>li.wf-disabled>a:hover,.wf-nav>li.wf-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wf-nav>li>a>img{max-width:none}.wf-nav-tabs{border-bottom:1px solid #ddd}.wf-nav-tabs>li{float:left;margin-bottom:-1px}.wf-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wf-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #ddd}.wf-nav-tabs>li.wf-active>a,.wf-nav-tabs>li.wf-active>a:hover,.wf-nav-tabs>li.wf-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wf-nav-pills>li{float:left}.wf-nav-pills>li>a{border-radius:4px}.wf-nav-pills>li+li{margin-left:2px}.wf-nav-pills>li.wf-active>a,.wf-nav-pills>li.wf-active>a:hover,.wf-nav-pills>li.wf-active>a:focus{color:#fff;background-color:#00709e}.wf-nav-stacked>li{float:none}.wf-nav-stacked>li+li{margin-top:2px;margin-left:0}.wf-nav-justified,.wf-nav-tabs.wf-nav-justified{width:100%}.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{float:none}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{text-align:center;margin-bottom:5px}.wf-nav-justified>.wf-dropdown .wf-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{display:table-cell;width:1%}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-bottom:0}}.wf-nav-tabs-justified,.wf-nav-tabs.wf-nav-justified{border-bottom:0}.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-right:0;border-radius:4px}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border-bottom-color:#fff}}.wf-tab-content>.wf-tab-pane{display:none}.wf-tab-content>.wf-active{display:block}.wf-nav-tabs .wf-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wf-navbar-brand:hover,.wf-navbar-brand:focus{text-decoration:none}.wf-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wf-navbar-brand,.navbar>.container-fluid .wf-navbar-brand{margin-left:-8px}}.wf-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wf-dropup,.wf-dropdown{position:relative}.wf-dropdown-toggle:focus{outline:0}.wf-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wf-dropdown-menu .wf-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wf-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wf-dropdown-menu>li>a:hover,.wf-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wf-dropdown-menu>.wf-active>a,.wf-dropdown-menu>.wf-active>a:hover,.wf-dropdown-menu>.wf-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wf-dropdown-menu>.wf-disabled>a,.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{color:#777}.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wf-open>.wf-dropdown-menu{display:block}.wf-open>a{outline:0}.wf-dropdown-menu-right{left:auto;right:0}.wf-dropdown-menu-left{left:0;right:auto}.wf-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wf-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wf-pull-right>.wf-dropdown-menu{right:0;left:auto}.wf-dropup .wf-caret,.wf-navbar-fixed-bottom .wf-dropdown .wf-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wf-dropup .wf-dropdown-menu,.wf-navbar-fixed-bottom .wf-dropdown .wf-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wf-navbar-right .wf-dropdown-menu{right:0;left:auto}.wf-navbar-right .wf-dropdown-menu-left{left:0;right:auto}}.wf-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wf-blocked-countries{margin-bottom:0;margin-top:0;padding-left:0;list-style:none;margin-left:-6px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-blocked-countries>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;margin:0px 0px 2px 6px;text-align:center;border:1px solid #e2e2e2;border-radius:4px;padding:8px 12px;background-color:#ffffff;-webkit-flex-basis:38%;flex-basis:38%}@media (min-width: 768px){.wf-blocked-countries>li{-webkit-flex-basis:20%;flex-basis:20%}}@media (min-width: 992px){.wf-blocked-countries>li{-webkit-flex-basis:15%;flex-basis:15%}}@media (min-width: 1200px){.wf-blocked-countries>li{-webkit-flex-basis:10%;flex-basis:10%}}.wf-blocked-countries>li:hover,.wf-blocked-countries>li:focus{text-decoration:none;background-color:#e2e2e2}.wf-blocked-countries>li.disabled>a{color:#777}.wf-blocked-countries>li.disabled>a:hover,.wf-blocked-countries>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-blocked-countries>li>a{text-decoration:none;position:relative;display:block}.wf-blocked-countries>li.active,.wf-blocked-countries>li.active:hover,.wf-blocked-countries>li.active:focus{background-color:#00709e;border-color:#00709e}.wf-blocked-countries>li.active>a,.wf-blocked-countries>li.active:hover>a,.wf-blocked-countries>li.active:focus>a{color:#fff}.wf-blocked-countries>li.text-only{position:relative;display:block;padding:8px 12px}.wf-blocked-countries>li>a>img{max-width:none}.wf-blocked-countries-section{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-title{font-size:1.1rem;padding-right:0.5rem}.wf-blocked-countries-section-spacer{-webkit-flex-basis:30px;flex-basis:30px;height:1px;background:#aaa}.wf-blocked-countries-section-options{margin-bottom:0;margin-top:0;padding-left:0.5rem;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-options li{padding:0;margin:0;color:#777}.wf-blocked-countries-section-options li a{padding:2px 4px;text-decoration:none;color:#777}.wf-blocked-countries-section-options li a.active-section{background-color:#777;color:#e2e2e2}table.wf-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wf-dataTable>thead th,table.wf-dataTable>tfoot th{font-weight:bold}table.wf-dataTable>thead th,table.wf-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wf-dataTable>thead th:active,table.wf-dataTable>thead td:active{outline:none}table.wf-dataTable>tfoot th,table.wf-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc,table.wf-dataTable>thead .sorting_asc_disabled,table.wf-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wf-dataTable>thead .sorting{background-image:url(../images/sort_both.png)}table.wf-dataTable>thead .sorting_asc{background-image:url(../images/sort_asc.png)}table.wf-dataTable>thead .sorting_desc{background-image:url(../images/sort_desc.png)}table.wf-dataTable>thead .sorting_asc_disabled{background-image:url(../images/sort_asc_disabled.png)}table.wf-dataTable>thead .sorting_desc_disabled{background-image:url(../images/sort_desc_disabled.png)}table.wf-dataTable>tbody>tr{background-color:#ffffff}table.wf-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wf-dataTable>tbody>tr>th,table.wf-dataTable>tbody>tr>td{padding:5px 8px}table.wf-dataTable.row-border>tbody>tr>th,table.wf-dataTable.row-border>tbody>tr>td,table.wf-dataTable.display>tbody>tr>th,table.wf-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wf-dataTable.row-border>tbody>tr:first-child>th,table.wf-dataTable.row-border>tbody>tr:first-child>td,table.wf-dataTable.display>tbody>tr:first-child>th,table.wf-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.cell-border>tbody>tr>th,table.wf-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr>th:first-child,table.wf-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr:first-child>th,table.wf-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.stripe>tbody>tr.odd,table.wf-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wf-dataTable.stripe>tbody>tr.odd.selected,table.wf-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wf-dataTable.hover>tbody>tr:hover,table.wf-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wf-dataTable.hover>tbody>tr:hover.selected,table.wf-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wf-dataTable.order-column>tbody>tr>.sorting_1,table.wf-dataTable.order-column>tbody>tr>.sorting_2,table.wf-dataTable.order-column>tbody>tr>.sorting_3,table.wf-dataTable.display tbody>tr>.sorting_1,table.wf-dataTable.display>tbody>tr>.sorting_2,table.wf-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wf-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wf-dataTable.display>tbody>tr.selected>.sorting_1,table.wf-dataTable.display>tbody>tr.selected>.sorting_2,table.wf-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.odd>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wf-dataTable.display>tbody>tr.odd>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wf-dataTable.display>tbody>tr.odd>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wf-dataTable.display>tbody>tr.even>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wf-dataTable.display>tbody>tr.even>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wf-dataTable.display>tbody>tr.even>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wf-dataTable.display>tbody>tr:hover>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wf-dataTable.display>tbody>tr:hover>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wf-dataTable.display>tbody>tr:hover>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wf-dataTable.no-footer{border-bottom:1px solid #111}table.wf-dataTable.nowrap th,table.wf-dataTable.nowrap td{white-space:nowrap}table.wf-dataTable.compact thead th,table.wf-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wf-dataTable.compact tfoot th,table.wf-dataTable.compact tfoot td{padding:4px}table.wf-dataTable.compact>tbody>tr>th,table.wf-dataTable.compact>tbody>tr>td{padding:4px}table.wf-dataTable th.dt-left,table.wf-dataTable td.dt-left{text-align:left}table.wf-dataTable th.dt-center,table.wf-dataTable td.dt-center,table.wf-dataTable td.dataTables_empty{text-align:center}table.wf-dataTable th.dt-right,table.wf-dataTable td.dt-right{text-align:right}table.wf-dataTable th.dt-justify,table.wf-dataTable td.dt-justify{text-align:justify}table.wf-dataTable th.dt-nowrap,table.wf-dataTable td.dt-nowrap{white-space:nowrap}table.wf-dataTable thead th.dt-head-left,table.wf-dataTable thead td.dt-head-left,table.wf-dataTable tfoot th.dt-head-left,table.wf-dataTable tfoot td.dt-head-left{text-align:left}table.wf-dataTable thead th.dt-head-center,table.wf-dataTable thead td.dt-head-center,table.wf-dataTable tfoot th.dt-head-center,table.wf-dataTable tfoot td.dt-head-center{text-align:center}table.wf-dataTable thead th.dt-head-right,table.wf-dataTable thead td.dt-head-right,table.wf-dataTable tfoot th.dt-head-right,table.wf-dataTable tfoot td.dt-head-right{text-align:right}table.wf-dataTable thead th.dt-head-justify,table.wf-dataTable thead td.dt-head-justify,table.wf-dataTable tfoot th.dt-head-justify,table.wf-dataTable tfoot td.dt-head-justify{text-align:justify}table.wf-dataTable thead th.dt-head-nowrap,table.wf-dataTable thead td.dt-head-nowrap,table.wf-dataTable tfoot th.dt-head-nowrap,table.wf-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wf-dataTable>tbody>tr>th.dt-body-left,table.wf-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wf-dataTable>tbody>tr>th.dt-body-center,table.wf-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wf-dataTable>tbody>tr>th.dt-body-right,table.wf-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wf-dataTable>tbody>tr>th.dt-body-justify,table.wf-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wf-dataTable>tbody>tr>th.dt-body-nowrap,table.wf-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wf-dataTable table.dataTable,table.wf-dataTable th,table.wf-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wf-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wf-dataTables_wrapper .dataTables_length{float:left}.wf-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wf-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wf-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wf-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wf-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wf-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wf-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter,.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_processing,.wf-dataTables_wrapper .dataTables_paginate{color:#333}.wf-dataTables_wrapper .dataTables_scroll{clear:both}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wf-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wf-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wf-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wf-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}.wf-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wf-alert h4{margin-top:0;color:inherit}.wf-alert .wf-alert-link{font-weight:bold}.wf-alert>p,.wf-alert>ul{margin-bottom:0}.wf-alert>p+p{margin-top:5px}.wf-alert-dismissable,.wf-alert-dismissible{padding-right:35px}.wf-alert-dismissable .close,.wf-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wf-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wf-alert-success hr{border-top-color:#c9e2b3}.wf-alert-success .alert-link{color:#2b542c}.wf-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wf-alert-info hr{border-top-color:#a6e1ec}.wf-alert-info .alert-link{color:#245269}.wf-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wf-alert-warning hr{border-top-color:#f7e1b5}.wf-alert-warning .alert-link{color:#66512c}.wf-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wf-alert-danger hr{border-top-color:#e4b9c0}.wf-alert-danger .alert-link{color:#843534}
|
js/admin.js
CHANGED
@@ -551,6 +551,14 @@
|
|
551 |
if (res.signatureUpdateTime) {
|
552 |
this.updateSignaturesTimestamp(res.signatureUpdateTime);
|
553 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
554 |
}
|
555 |
this.activityLogUpdatePending = false;
|
556 |
},
|
551 |
if (res.signatureUpdateTime) {
|
552 |
this.updateSignaturesTimestamp(res.signatureUpdateTime);
|
553 |
}
|
554 |
+
|
555 |
+
if (res.scanFailed) {
|
556 |
+
jQuery('#wf-scan-failed-time-ago').text(res.scanFailedTiming);
|
557 |
+
jQuery('#wf-scan-failed').show();
|
558 |
+
}
|
559 |
+
else {
|
560 |
+
jQuery('#wf-scan-failed').hide();
|
561 |
+
}
|
562 |
}
|
563 |
this.activityLogUpdatePending = false;
|
564 |
},
|
js/admin.liveTraffic.js
CHANGED
@@ -25,8 +25,7 @@
|
|
25 |
new GroupByModel('statusCode', 'HTTP Response Code'),
|
26 |
new GroupByModel('action', 'Firewall Response', 'enum', ['ok', 'throttled', 'lockedOut', 'blocked', 'blocked:waf']),
|
27 |
new GroupByModel('ip', 'IP'),
|
28 |
-
urlGroupBy
|
29 |
-
new GroupByModel('host', 'Host')
|
30 |
];
|
31 |
|
32 |
self.presetFiltersOptions = ko.observableArray([
|
@@ -142,9 +141,15 @@
|
|
142 |
};
|
143 |
self.reloadListings = function(options) {
|
144 |
pullDownListings(options, function(listings) {
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
var newListings = [];
|
146 |
for (var i = 0; i < listings.length; i++) {
|
147 |
-
newListings.push(new ListingModel(listings[i
|
148 |
}
|
149 |
self.listings(newListings);
|
150 |
})
|
@@ -284,7 +289,7 @@
|
|
284 |
self.sql = ko.observable('');
|
285 |
};
|
286 |
|
287 |
-
var ListingModel = function(data) {
|
288 |
var self = this;
|
289 |
|
290 |
self.id = ko.observable(0);
|
@@ -330,6 +335,10 @@
|
|
330 |
self[prop] !== undefined && self[prop](data[prop]);
|
331 |
}
|
332 |
}
|
|
|
|
|
|
|
|
|
333 |
|
334 |
// Use the same format as these update.
|
335 |
self.timeAgo = ko.pureComputed(function() {
|
@@ -351,6 +360,26 @@
|
|
351 |
});
|
352 |
|
353 |
self.firewallAction = ko.pureComputed(function() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
var desc = '';
|
355 |
switch (self.action()) {
|
356 |
case 'lockedOut':
|
25 |
new GroupByModel('statusCode', 'HTTP Response Code'),
|
26 |
new GroupByModel('action', 'Firewall Response', 'enum', ['ok', 'throttled', 'lockedOut', 'blocked', 'blocked:waf']),
|
27 |
new GroupByModel('ip', 'IP'),
|
28 |
+
urlGroupBy
|
|
|
29 |
];
|
30 |
|
31 |
self.presetFiltersOptions = ko.observableArray([
|
141 |
};
|
142 |
self.reloadListings = function(options) {
|
143 |
pullDownListings(options, function(listings) {
|
144 |
+
var groupByKO = self.groupBy();
|
145 |
+
var groupBy = '';
|
146 |
+
if (groupByKO) {
|
147 |
+
groupBy = groupByKO.param();
|
148 |
+
}
|
149 |
+
|
150 |
var newListings = [];
|
151 |
for (var i = 0; i < listings.length; i++) {
|
152 |
+
newListings.push(new ListingModel(listings[i], groupBy));
|
153 |
}
|
154 |
self.listings(newListings);
|
155 |
})
|
289 |
self.sql = ko.observable('');
|
290 |
};
|
291 |
|
292 |
+
var ListingModel = function(data, groupBy) {
|
293 |
var self = this;
|
294 |
|
295 |
self.id = ko.observable(0);
|
335 |
self[prop] !== undefined && self[prop](data[prop]);
|
336 |
}
|
337 |
}
|
338 |
+
|
339 |
+
if (data['lastHit'] !== undefined) {
|
340 |
+
self['ctime'](data['lastHit']);
|
341 |
+
}
|
342 |
|
343 |
// Use the same format as these update.
|
344 |
self.timeAgo = ko.pureComputed(function() {
|
360 |
});
|
361 |
|
362 |
self.firewallAction = ko.pureComputed(function() {
|
363 |
+
//Grouped by firewall action listing
|
364 |
+
if (groupBy == 'action') {
|
365 |
+
switch (self.action()) {
|
366 |
+
case 'lockedOut':
|
367 |
+
return 'Locked out from logging in';
|
368 |
+
case 'blocked:waf-always':
|
369 |
+
return 'Blocked by the Wordfence Application Firewall and plugin settings';
|
370 |
+
case 'blocked:wordfence':
|
371 |
+
return 'Blocked by Wordfence plugin settings';
|
372 |
+
case 'blocked:wfsnrepeat':
|
373 |
+
case 'blocked:wfsn':
|
374 |
+
return 'Blocked by the Wordfence Security Network';
|
375 |
+
case 'blocked:waf':
|
376 |
+
return 'Blocked by the Wordfence Web Application Firewall';
|
377 |
+
default:
|
378 |
+
return 'Blocked by Wordfence';
|
379 |
+
}
|
380 |
+
}
|
381 |
+
|
382 |
+
//Standard listing
|
383 |
var desc = '';
|
384 |
switch (self.action()) {
|
385 |
case 'lockedOut':
|
lib/GeoIP.dat
CHANGED
Binary file
|
lib/GeoIPv6.dat
CHANGED
Binary file
|
lib/dashboard/widget_networkattacks.php
CHANGED
@@ -62,23 +62,9 @@ STYLING;
|
|
62 |
$labels = array();
|
63 |
$values = array();
|
64 |
|
65 |
-
$utc = new DateTimeZone('UTC');
|
66 |
foreach ($blocks as $b) {
|
67 |
$values[] = $b['c'];
|
68 |
-
|
69 |
-
$dtStr = gmdate("c", $b['t']); //Have to do it this way because of PHP 5.2
|
70 |
-
$dt = new DateTime($dtStr, $utc);
|
71 |
-
$tz = get_option('timezone_string');
|
72 |
-
if (!empty($tz)) {
|
73 |
-
$dt->setTimezone(new DateTimeZone($tz));
|
74 |
-
}
|
75 |
-
else {
|
76 |
-
$gmt = get_option('gmt_offset');
|
77 |
-
if (!empty($gmt)) {
|
78 |
-
$dt->setTimezone(new DateTimeZone('Etc/GMT' . ($gmt < 0 ? '+' : '-') . abs($gmt))); //The Etc/GMT timezones have the +- signs flipped
|
79 |
-
}
|
80 |
-
}
|
81 |
-
$labels[] = "'" . $dt->format('g a') . "'";
|
82 |
}
|
83 |
?>
|
84 |
labels: [<?php echo implode(',', $labels); ?>],
|
@@ -120,23 +106,9 @@ STYLING;
|
|
120 |
$labels = array();
|
121 |
$values = array();
|
122 |
|
123 |
-
$utc = new DateTimeZone('UTC');
|
124 |
foreach ($blocks as $b) {
|
125 |
$values[] = $b['c'];
|
126 |
-
|
127 |
-
$dtStr = gmdate("c", $b['t']); //Have to do it this way because of PHP 5.2
|
128 |
-
$dt = new DateTime($dtStr, $utc);
|
129 |
-
$tz = get_option('timezone_string');
|
130 |
-
if (!empty($tz)) {
|
131 |
-
$dt->setTimezone(new DateTimeZone($tz));
|
132 |
-
}
|
133 |
-
else {
|
134 |
-
$gmt = get_option('gmt_offset');
|
135 |
-
if (!empty($gmt)) {
|
136 |
-
$dt->setTimezone(new DateTimeZone('Etc/GMT' . ($gmt < 0 ? '+' : '-') . abs($gmt))); //The Etc/GMT timezones have the +- signs flipped
|
137 |
-
}
|
138 |
-
}
|
139 |
-
$labels[] = "'" . $dt->format('M j') . "'";
|
140 |
}
|
141 |
?>
|
142 |
labels: [<?php echo implode(',', $labels); ?>],
|
@@ -178,23 +150,9 @@ STYLING;
|
|
178 |
$labels = array();
|
179 |
$values = array();
|
180 |
|
181 |
-
$utc = new DateTimeZone('UTC');
|
182 |
foreach ($blocks as $b) {
|
183 |
$values[] = $b['c'];
|
184 |
-
|
185 |
-
$dtStr = gmdate("c", $b['t']); //Have to do it this way because of PHP 5.2
|
186 |
-
$dt = new DateTime($dtStr, $utc);
|
187 |
-
$tz = get_option('timezone_string');
|
188 |
-
if (!empty($tz)) {
|
189 |
-
$dt->setTimezone(new DateTimeZone($tz));
|
190 |
-
}
|
191 |
-
else {
|
192 |
-
$gmt = get_option('gmt_offset');
|
193 |
-
if (!empty($gmt)) {
|
194 |
-
$dt->setTimezone(new DateTimeZone('Etc/GMT' . ($gmt < 0 ? '+' : '-') . abs($gmt))); //The Etc/GMT timezones have the +- signs flipped
|
195 |
-
}
|
196 |
-
}
|
197 |
-
$labels[] = "'" . $dt->format('M j') . "'";
|
198 |
}
|
199 |
?>
|
200 |
labels: [<?php echo implode(',', $labels); ?>],
|
62 |
$labels = array();
|
63 |
$values = array();
|
64 |
|
|
|
65 |
foreach ($blocks as $b) {
|
66 |
$values[] = $b['c'];
|
67 |
+
$labels[] = "'" . wfUtils::formatLocalTime('g a', $b['t']) . "'";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
?>
|
70 |
labels: [<?php echo implode(',', $labels); ?>],
|
106 |
$labels = array();
|
107 |
$values = array();
|
108 |
|
|
|
109 |
foreach ($blocks as $b) {
|
110 |
$values[] = $b['c'];
|
111 |
+
$labels[] = "'" . wfUtils::formatLocalTime('M j', $b['t']) . "'";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}
|
113 |
?>
|
114 |
labels: [<?php echo implode(',', $labels); ?>],
|
150 |
$labels = array();
|
151 |
$values = array();
|
152 |
|
|
|
153 |
foreach ($blocks as $b) {
|
154 |
$values[] = $b['c'];
|
155 |
+
$labels[] = "'" . wfUtils::formatLocalTime('M j', $b['t']) . "'";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
?>
|
158 |
labels: [<?php echo implode(',', $labels); ?>],
|
lib/email_newIssues.php
CHANGED
@@ -22,11 +22,23 @@
|
|
22 |
|
23 |
<?php foreach($issues as $i){ if($i['severity'] == 1){ ?>
|
24 |
<p>* <?php echo htmlspecialchars($i['shortMsg']) ?></p>
|
25 |
-
<?php
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
<?php if (!empty($i['tmplData']['badURL'])): ?>
|
31 |
<p><img src="<?php echo WORDFENCE_API_URL_BASE_NONSEC . "?" . http_build_query(array(
|
32 |
'v' => wfUtils::getWPVersion(),
|
22 |
|
23 |
<?php foreach($issues as $i){ if($i['severity'] == 1){ ?>
|
24 |
<p>* <?php echo htmlspecialchars($i['shortMsg']) ?></p>
|
25 |
+
<?php
|
26 |
+
if ((isset($i['tmplData']['wpRemoved']) && $i['tmplData']['wpRemoved']) || (isset($i['tmplData']['abandoned']) && $i['tmplData']['abandoned'])) {
|
27 |
+
if (isset($i['tmplData']['vulnerable']) && $i['tmplData']['vulnerable']) {
|
28 |
+
echo '<p><strong>Plugin contains an unpatched security vulnerability.</strong></p>';
|
29 |
+
}
|
30 |
+
}
|
31 |
+
else if (isset($i['tmplData']['wpURL'])) {
|
32 |
+
echo '<p>';
|
33 |
+
if (isset($i['tmplData']['vulnerable']) && $i['tmplData']['vulnerable']) {
|
34 |
+
echo '<strong>Update includes security-related fixes.</strong> ';
|
35 |
+
}
|
36 |
+
echo $i['tmplData']['wpURL'] . '/#developers</p>';
|
37 |
+
}
|
38 |
+
else if (isset($i['tmplData']['vulnerable']) && $i['tmplData']['vulnerable']) {
|
39 |
+
echo '<p><strong>Update includes security-related fixes.</strong></p>';
|
40 |
+
}
|
41 |
+
?>
|
42 |
<?php if (!empty($i['tmplData']['badURL'])): ?>
|
43 |
<p><img src="<?php echo WORDFENCE_API_URL_BASE_NONSEC . "?" . http_build_query(array(
|
44 |
'v' => wfUtils::getWPVersion(),
|
lib/menu_activity.php
CHANGED
@@ -148,6 +148,7 @@
|
|
148 |
<div class="wf-filtered-traffic" data-bind="foreach: listings">
|
149 |
<div>
|
150 |
<div>
|
|
|
151 |
<div data-bind="if: loc()">
|
152 |
<img data-bind="attr: { src: '<?php echo wfUtils::getBaseURL() . 'images/flags/'; ?>' + loc().countryCode.toLowerCase() + '.png',
|
153 |
alt: loc().countryName, title: loc().countryName }" width="16" height="11"
|
@@ -175,10 +176,38 @@
|
|
175 |
</span>
|
176 |
</div>
|
177 |
<div>
|
178 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
</div>
|
|
|
180 |
<div>
|
181 |
-
<span
|
182 |
data-bind="attr: { 'data-timestamp': ctime, text: 'Last hit was ' + ctime() + ' ago.' }"
|
183 |
class="wfTimeAgo wfTimeAgo-timestamp"></span>
|
184 |
</div>
|
148 |
<div class="wf-filtered-traffic" data-bind="foreach: listings">
|
149 |
<div>
|
150 |
<div>
|
151 |
+
<!-- ko if: $root.groupBy().param() == 'ip' -->
|
152 |
<div data-bind="if: loc()">
|
153 |
<img data-bind="attr: { src: '<?php echo wfUtils::getBaseURL() . 'images/flags/'; ?>' + loc().countryCode.toLowerCase() + '.png',
|
154 |
alt: loc().countryName, title: loc().countryName }" width="16" height="11"
|
176 |
</span>
|
177 |
</div>
|
178 |
<div>
|
179 |
+
<span class="wfReverseLookup"><span data-bind="text: IP" style="display:none;"></span></span>
|
180 |
+
</div>
|
181 |
+
<!-- /ko -->
|
182 |
+
<!-- ko if: $root.groupBy().param() == 'type' -->
|
183 |
+
<div>
|
184 |
+
<strong>Type:</strong>
|
185 |
+
<span data-bind="if: jsRun() == '1'">Human</span>
|
186 |
+
<span data-bind="if: jsRun() == '0'">Bot</span>
|
187 |
+
</div>
|
188 |
+
<!-- /ko -->
|
189 |
+
<!-- ko if: $root.groupBy().param() == 'user_login' -->
|
190 |
+
<div>
|
191 |
+
<strong>Username:</strong> <span data-bind="text: username()"></span>
|
192 |
+
</div>
|
193 |
+
<!-- /ko -->
|
194 |
+
<!-- ko if: $root.groupBy().param() == 'statusCode' -->
|
195 |
+
<div>
|
196 |
+
<strong>HTTP Response Code:</strong> <span data-bind="text: statusCode()"></span>
|
197 |
+
</div>
|
198 |
+
<!-- /ko -->
|
199 |
+
<!-- ko if: $root.groupBy().param() == 'action' -->
|
200 |
+
<div>
|
201 |
+
<strong>Firewall Response:</strong> <span data-bind="text: firewallAction()"></span>
|
202 |
+
</div>
|
203 |
+
<!-- /ko -->
|
204 |
+
<!-- ko if: $root.groupBy().param() == 'url' -->
|
205 |
+
<div>
|
206 |
+
<strong>URL:</strong> <span data-bind="text: displayURL()"></span>
|
207 |
</div>
|
208 |
+
<!-- /ko -->
|
209 |
<div>
|
210 |
+
<strong>Last Hit:</strong> <span
|
211 |
data-bind="attr: { 'data-timestamp': ctime, text: 'Last hit was ' + ctime() + ' ago.' }"
|
212 |
class="wfTimeAgo wfTimeAgo-timestamp"></span>
|
213 |
</div>
|
lib/menu_dashboard.php
CHANGED
@@ -17,12 +17,12 @@ $d = new wfDashboard();
|
|
17 |
</div>
|
18 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_SUCCESS): ?>
|
19 |
<div class="wf-dashboard-item-title">
|
20 |
-
<strong>Last scan completed: <?php echo esc_html(
|
21 |
</div>
|
22 |
<div class="wf-dashboard-item-action wf-dashboard-item-action-text wf-dashboard-item-action-text-success">No security problems detected</div>
|
23 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_WARNINGS): ?>
|
24 |
<div class="wf-dashboard-item-title">
|
25 |
-
<strong>Last scan completed: <?php echo esc_html(
|
26 |
</div>
|
27 |
<div class="wf-dashboard-item-action wf-dashboard-item-action-text wf-dashboard-item-action-text-warning"><a href="<?php echo network_admin_url('admin.php?page=WordfenceScan'); ?>"><?php echo esc_html($d->scanLastStatusMessage); ?></a></div>
|
28 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_FAILED): ?>
|
17 |
</div>
|
18 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_SUCCESS): ?>
|
19 |
<div class="wf-dashboard-item-title">
|
20 |
+
<strong>Last scan completed: <?php echo esc_html(wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $d->scanLastCompletion)); ?></strong>
|
21 |
</div>
|
22 |
<div class="wf-dashboard-item-action wf-dashboard-item-action-text wf-dashboard-item-action-text-success">No security problems detected</div>
|
23 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_WARNINGS): ?>
|
24 |
<div class="wf-dashboard-item-title">
|
25 |
+
<strong>Last scan completed: <?php echo esc_html(wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $d->scanLastCompletion)); ?></strong>
|
26 |
</div>
|
27 |
<div class="wf-dashboard-item-action wf-dashboard-item-action-text wf-dashboard-item-action-text-warning"><a href="<?php echo network_admin_url('admin.php?page=WordfenceScan'); ?>"><?php echo esc_html($d->scanLastStatusMessage); ?></a></div>
|
28 |
<?php elseif ($d->scanLastStatus == wfDashboard::SCAN_FAILED): ?>
|
lib/menu_options.php
CHANGED
@@ -450,7 +450,7 @@ $w = new wfConfig();
|
|
450 |
),
|
451 |
array(
|
452 |
'id' => 'scansEnabled_oldVersions',
|
453 |
-
'label' => 'Scan for out of date plugins, themes and WordPress versions <a href="http://docs.wordfence.com/en/Wordfence_options#Scan_for_out_of_date_plugins.2C_themes_and_WordPress_versions" target="_blank" class="wfhelp"></a>',
|
454 |
),
|
455 |
array(
|
456 |
'id' => 'scansEnabled_suspiciousAdminUsers',
|
450 |
),
|
451 |
array(
|
452 |
'id' => 'scansEnabled_oldVersions',
|
453 |
+
'label' => 'Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions <a href="http://docs.wordfence.com/en/Wordfence_options#Scan_for_out_of_date_plugins.2C_themes_and_WordPress_versions" target="_blank" class="wfhelp"></a>',
|
454 |
),
|
455 |
array(
|
456 |
'id' => 'scansEnabled_suspiciousAdminUsers',
|
lib/menu_scan.php
CHANGED
@@ -277,7 +277,7 @@ $sigUpdateTime = wfConfig::get('signatureUpdateTime');
|
|
277 |
</td></tr>
|
278 |
</table>
|
279 |
</p>
|
280 |
-
{{if data.
|
281 |
<p>
|
282 |
{{html longMsg}}
|
283 |
<a href="<?php echo get_admin_url() . 'update-core.php'; ?>">Click here to update now</a>.
|
@@ -318,7 +318,7 @@ $sigUpdateTime = wfConfig::get('signatureUpdateTime');
|
|
318 |
</td></tr>
|
319 |
</table>
|
320 |
</p>
|
321 |
-
{{if data.
|
322 |
<p>
|
323 |
{{html longMsg}}
|
324 |
<a href="<?php echo get_admin_url() . 'update-core.php'; ?>">Click here to update now</a>.
|
@@ -341,6 +341,121 @@ $sigUpdateTime = wfConfig::get('signatureUpdateTime');
|
|
341 |
</div>
|
342 |
</script>
|
343 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
344 |
<script type="text/x-jquery-template" id="issueTmpl_wfUpgrade">
|
345 |
<div>
|
346 |
<div class="wfIssue">
|
277 |
</td></tr>
|
278 |
</table>
|
279 |
</p>
|
280 |
+
{{if data.vulnerable}}<p><strong>Update includes security-related fixes.</strong></p>{{/if}}
|
281 |
<p>
|
282 |
{{html longMsg}}
|
283 |
<a href="<?php echo get_admin_url() . 'update-core.php'; ?>">Click here to update now</a>.
|
318 |
</td></tr>
|
319 |
</table>
|
320 |
</p>
|
321 |
+
{{if data.vulnerable}}<p><strong>Update includes security-related fixes.</strong></p>{{/if}}
|
322 |
<p>
|
323 |
{{html longMsg}}
|
324 |
<a href="<?php echo get_admin_url() . 'update-core.php'; ?>">Click here to update now</a>.
|
341 |
</div>
|
342 |
</script>
|
343 |
|
344 |
+
<script type="text/x-jquery-template" id="issueTmpl_wfPluginRemoved">
|
345 |
+
<div>
|
346 |
+
<div class="wfIssue">
|
347 |
+
<h2>${shortMsg}</h2>
|
348 |
+
<p>
|
349 |
+
<table border="0" class="wfIssue" cellspacing="0" cellpadding="0">
|
350 |
+
<tr><th><span class="wf-hidden-xs">Plugin </span>Name:</th><td>${data.Name}</td></tr>
|
351 |
+
{{if data.PluginURI}}<tr><th><span class="wf-hidden-xs">Plugin </span>Website:</th><td><a href="${data.PluginURI}" target="_blank"><span class="wf-hidden-xs wf-split-word">${data.PluginURI}</span><span class="wf-visible-xs">View</span></a></td></tr>{{/if}}
|
352 |
+
<tr><th>Current <span class="wf-hidden-xs">Plugin </span>Version:</th><td>${data.Version}</td></tr>
|
353 |
+
<tr><th>Severity:</th><td>{{if severity == '1'}}Critical{{else}}Warning{{/if}}</td></tr>
|
354 |
+
<tr><th>Status</th><td>
|
355 |
+
{{if status == 'new' }}New{{/if}}
|
356 |
+
{{if status == 'ignoreP' || status == 'ignoreC' }}Ignored{{/if}}
|
357 |
+
</td></tr>
|
358 |
+
</table>
|
359 |
+
</p>
|
360 |
+
<p>
|
361 |
+
{{html longMsg}}
|
362 |
+
</p>
|
363 |
+
<div class="wfIssueOptions">
|
364 |
+
{{if status == 'new'}}
|
365 |
+
<ul>
|
366 |
+
<li><h3>Resolve:</h3></li>
|
367 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">I have fixed this issue</a></li>
|
368 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'ignoreC'); return false;">Ignore this issue</a></li>
|
369 |
+
</ul>
|
370 |
+
{{/if}}
|
371 |
+
{{if status == 'ignoreC' || status == 'ignoreP'}}
|
372 |
+
<ul>
|
373 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">Stop ignoring this issue</a></li>
|
374 |
+
</ul>
|
375 |
+
{{/if}}
|
376 |
+
</div>
|
377 |
+
</div>
|
378 |
+
</div>
|
379 |
+
</script>
|
380 |
+
|
381 |
+
<script type="text/x-jquery-template" id="issueTmpl_wfPluginAbandoned">
|
382 |
+
<div>
|
383 |
+
<div class="wfIssue">
|
384 |
+
<h2>${shortMsg}</h2>
|
385 |
+
<p>
|
386 |
+
<table border="0" class="wfIssue" cellspacing="0" cellpadding="0">
|
387 |
+
<tr><th><span class="wf-hidden-xs">Plugin </span>Name:</th><td>${data.name}</td></tr>
|
388 |
+
{{if data.homepage}}<tr><th><span class="wf-hidden-xs">Plugin </span>Website:</th><td><a href="${data.homepage}" target="_blank"><span class="wf-hidden-xs wf-split-word">${data.homepage}</span><span class="wf-visible-xs">View</span></a></td></tr>{{/if}}
|
389 |
+
{{if data.wpURL}}<tr><th>Repository<span class="wf-hidden-xs"> Link</span>:</th><td><a href="${data.wpURL}" target="_blank"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">View</span></a></td></tr>{{/if}}
|
390 |
+
<tr><th>Current <span class="wf-hidden-xs">Plugin </span>Version:</th><td>${data.version}</td></tr>
|
391 |
+
<tr><th>Last Updated:</th><td>${data.dateUpdated}</td></tr>
|
392 |
+
<tr><th>Severity:</th><td>{{if severity == '1'}}Critical{{else}}Warning{{/if}}</td></tr>
|
393 |
+
<tr><th>Status</th><td>
|
394 |
+
{{if status == 'new' }}New{{/if}}
|
395 |
+
{{if status == 'ignoreP' || status == 'ignoreC' }}Ignored{{/if}}
|
396 |
+
</td></tr>
|
397 |
+
</table>
|
398 |
+
</p>
|
399 |
+
{{if data.vulnerable}}<p><strong>Plugin has unpatched security issues.</strong></p>{{/if}}
|
400 |
+
<p>
|
401 |
+
{{html longMsg}}
|
402 |
+
</p>
|
403 |
+
<div class="wfIssueOptions">
|
404 |
+
{{if status == 'new'}}
|
405 |
+
<ul>
|
406 |
+
<li><h3>Resolve:</h3></li>
|
407 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">I have fixed this issue</a></li>
|
408 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'ignoreC'); return false;">Ignore this issue</a></li>
|
409 |
+
</ul>
|
410 |
+
{{/if}}
|
411 |
+
{{if status == 'ignoreC' || status == 'ignoreP'}}
|
412 |
+
<ul>
|
413 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">Stop ignoring this issue</a></li>
|
414 |
+
</ul>
|
415 |
+
{{/if}}
|
416 |
+
</div>
|
417 |
+
</div>
|
418 |
+
</div>
|
419 |
+
</script>
|
420 |
+
|
421 |
+
<script type="text/x-jquery-template" id="issueTmpl_wfPluginVulnerable">
|
422 |
+
<div>
|
423 |
+
<div class="wfIssue">
|
424 |
+
<h2>${shortMsg}</h2>
|
425 |
+
<p>
|
426 |
+
<table border="0" class="wfIssue" cellspacing="0" cellpadding="0">
|
427 |
+
<tr><th><span class="wf-hidden-xs">Plugin </span>Name:</th><td>${data.Name}</td></tr>
|
428 |
+
{{if data.PluginURI}}<tr><th><span class="wf-hidden-xs">Plugin </span>Website:</th><td><a href="${data.PluginURI}" target="_blank"><span class="wf-hidden-xs wf-split-word">${data.PluginURI}</span><span class="wf-visible-xs">View</span></a></td></tr>{{/if}}
|
429 |
+
{{if data.wpURL}}<tr><th>Repository<span class="wf-hidden-xs"> Link</span>:</th><td><a href="${data.wpURL}" target="_blank"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">View</span></a></td></tr>{{/if}}
|
430 |
+
<tr><th>Current <span class="wf-hidden-xs">Plugin </span>Version:</th><td>${data.Version}</td></tr>
|
431 |
+
<tr><th>Severity:</th><td>{{if severity == '1'}}Critical{{else}}Warning{{/if}}</td></tr>
|
432 |
+
<tr><th>Status</th><td>
|
433 |
+
{{if status == 'new' }}New{{/if}}
|
434 |
+
{{if status == 'ignoreP' || status == 'ignoreC' }}Ignored{{/if}}
|
435 |
+
</td></tr>
|
436 |
+
</table>
|
437 |
+
</p>
|
438 |
+
<p>
|
439 |
+
{{html longMsg}}
|
440 |
+
</p>
|
441 |
+
<div class="wfIssueOptions">
|
442 |
+
{{if status == 'new'}}
|
443 |
+
<ul>
|
444 |
+
<li><h3>Resolve:</h3></li>
|
445 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">I have fixed this issue</a></li>
|
446 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'ignoreC'); return false;">Ignore this issue</a></li>
|
447 |
+
</ul>
|
448 |
+
{{/if}}
|
449 |
+
{{if status == 'ignoreC' || status == 'ignoreP'}}
|
450 |
+
<ul>
|
451 |
+
<li><a href="#" onclick="WFAD.updateIssueStatus('${id}', 'delete'); return false;">Stop ignoring this issue</a></li>
|
452 |
+
</ul>
|
453 |
+
{{/if}}
|
454 |
+
</div>
|
455 |
+
</div>
|
456 |
+
</div>
|
457 |
+
</script>
|
458 |
+
|
459 |
<script type="text/x-jquery-template" id="issueTmpl_wfUpgrade">
|
460 |
<div>
|
461 |
<div class="wfIssue">
|
lib/menu_scan_scan.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<div class="wordfenceModeElem" id="wordfenceMode_scan"></div>
|
|
|
|
|
|
|
|
|
2 |
<div class="wordfenceScanButton wf-center">
|
3 |
<a href="#" id="wfStartScanButton1" class="wfStartScanButton button button-primary" onclick="wordfenceAdmin.startScan(); return false;">Start a Wordfence Scan</a><br />
|
4 |
<a href="#" onclick="WFAD.killScan(); return false;" style="font-size: 10px; color: #AAA;">Click to kill the current scan.</a>
|
1 |
<div class="wordfenceModeElem" id="wordfenceMode_scan"></div>
|
2 |
+
<div class="wf-alert wf-alert-danger" id="wf-scan-failed" style="display: none;">
|
3 |
+
<h4>Scan Failed</h4>
|
4 |
+
<p>The current scan looks like it has failed. Its last status update was <span id="wf-scan-failed-time-ago"></span> ago. You may continue to wait in case it resumes or cancel and restart the scan. Some sites may need adjustments to run scans reliably. <a href="https://docs.wordfence.com/en/My_scans_don%27t_finish._What_would_cause_that%3F" target="_blank">Click here for steps you can try.</a></p>
|
5 |
+
</div>
|
6 |
<div class="wordfenceScanButton wf-center">
|
7 |
<a href="#" id="wfStartScanButton1" class="wfStartScanButton button button-primary" onclick="wordfenceAdmin.startScan(); return false;">Start a Wordfence Scan</a><br />
|
8 |
<a href="#" onclick="WFAD.killScan(); return false;" style="font-size: 10px; color: #AAA;">Click to kill the current scan.</a>
|
lib/menu_tools_diagnostic.php
CHANGED
@@ -357,8 +357,16 @@ if (!isset($sendingDiagnosticEmail)) { $sendingDiagnosticEmail = false; }
|
|
357 |
</tbody>
|
358 |
</table>
|
359 |
<?php
|
|
|
360 |
$wfdb = new wfDB();
|
361 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
if ($q):
|
363 |
$databaseCols = count($q[0]);
|
364 |
?>
|
@@ -399,7 +407,7 @@ if (!isset($sendingDiagnosticEmail)) { $sendingDiagnosticEmail = false; }
|
|
399 |
if ($count >= 250) {
|
400 |
?>
|
401 |
<tr>
|
402 |
-
<td colspan="<?php echo $databaseCols; ?>">and <?php echo
|
403 |
</tr>
|
404 |
<?php
|
405 |
break;
|
357 |
</tbody>
|
358 |
</table>
|
359 |
<?php
|
360 |
+
global $wpdb;
|
361 |
$wfdb = new wfDB();
|
362 |
+
//This must be done this way because MySQL with InnoDB tables does a full regeneration of all metadata if we don't. That takes a long time with a large table count.
|
363 |
+
$tables = $wfdb->querySelect('SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() ORDER BY TABLE_NAME ASC LIMIT 250');
|
364 |
+
$total = $wfdb->querySingle('SELECT FOUND_ROWS()');
|
365 |
+
foreach ($tables as &$t) {
|
366 |
+
$t = "'" . esc_sql($t['TABLE_NAME']) . "'";
|
367 |
+
}
|
368 |
+
unset($t);
|
369 |
+
$q = $wfdb->querySelect("SHOW TABLE STATUS WHERE Name IN (" . implode(',', $tables) . ')');
|
370 |
if ($q):
|
371 |
$databaseCols = count($q[0]);
|
372 |
?>
|
407 |
if ($count >= 250) {
|
408 |
?>
|
409 |
<tr>
|
410 |
+
<td colspan="<?php echo $databaseCols; ?>">and <?php echo $total - $count; ?> more</td>
|
411 |
</tr>
|
412 |
<?php
|
413 |
break;
|
lib/wfActivityReport.php
CHANGED
@@ -724,14 +724,14 @@ class wfActivityReportView extends wfView {
|
|
724 |
if ($unix_time === null) {
|
725 |
$unix_time = time();
|
726 |
}
|
727 |
-
return
|
728 |
}
|
729 |
|
730 |
public function attackTime($unix_time = null) {
|
731 |
if ($unix_time === null) {
|
732 |
$unix_time = time();
|
733 |
}
|
734 |
-
return
|
735 |
}
|
736 |
|
737 |
public function displayIP($binaryIP) {
|
724 |
if ($unix_time === null) {
|
725 |
$unix_time = time();
|
726 |
}
|
727 |
+
return wfUtils::formatLocalTime('F j, Y g:ia', $unix_time);
|
728 |
}
|
729 |
|
730 |
public function attackTime($unix_time = null) {
|
731 |
if ($unix_time === null) {
|
732 |
$unix_time = time();
|
733 |
}
|
734 |
+
return wfUtils::formatLocalTime('F j, Y', $unix_time) . "<br>" . wfUtils::formatLocalTime('g:ia', $unix_time);
|
735 |
}
|
736 |
|
737 |
public function displayIP($binaryIP) {
|
lib/wfIssues.php
CHANGED
@@ -38,6 +38,7 @@ class wfIssues {
|
|
38 |
public static function statusPrep(){
|
39 |
wfConfig::set_ser('wfStatusStartMsgs', array());
|
40 |
wordfence::status(10, 'info', "SUM_PREP:Preparing a new scan.");
|
|
|
41 |
}
|
42 |
|
43 |
public static function statusStart($message) {
|
@@ -45,6 +46,7 @@ class wfIssues {
|
|
45 |
$statusStartMsgs[] = $message;
|
46 |
wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
|
47 |
wordfence::status(10, 'info', 'SUM_START:' . $message);
|
|
|
48 |
return count($statusStartMsgs) - 1;
|
49 |
}
|
50 |
|
@@ -68,6 +70,7 @@ class wfIssues {
|
|
68 |
else if ($state == self::STATUS_SUCCESS) {
|
69 |
wordfence::status(10, 'info', 'SUM_ENDSUCCESS:' . $statusStartMsgs[$index]);
|
70 |
}
|
|
|
71 |
$statusStartMsgs[$index] = '';
|
72 |
wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
|
73 |
}
|
@@ -80,14 +83,39 @@ class wfIssues {
|
|
80 |
$statusStartMsgs[$i] = '';
|
81 |
}
|
82 |
}
|
|
|
83 |
}
|
84 |
|
85 |
public static function statusPaidOnly($message) {
|
86 |
wordfence::status(10, 'info', "SUM_PAIDONLY:" . $message);
|
|
|
87 |
}
|
88 |
|
89 |
public static function statusDisabled($message) {
|
90 |
wordfence::status(10, 'info', "SUM_DISABLED:" . $message);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
}
|
92 |
|
93 |
public function __sleep(){ //Same order here as vars above
|
38 |
public static function statusPrep(){
|
39 |
wfConfig::set_ser('wfStatusStartMsgs', array());
|
40 |
wordfence::status(10, 'info', "SUM_PREP:Preparing a new scan.");
|
41 |
+
wfIssues::updateScanStillRunning();
|
42 |
}
|
43 |
|
44 |
public static function statusStart($message) {
|
46 |
$statusStartMsgs[] = $message;
|
47 |
wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
|
48 |
wordfence::status(10, 'info', 'SUM_START:' . $message);
|
49 |
+
wfIssues::updateScanStillRunning();
|
50 |
return count($statusStartMsgs) - 1;
|
51 |
}
|
52 |
|
70 |
else if ($state == self::STATUS_SUCCESS) {
|
71 |
wordfence::status(10, 'info', 'SUM_ENDSUCCESS:' . $statusStartMsgs[$index]);
|
72 |
}
|
73 |
+
wfIssues::updateScanStillRunning();
|
74 |
$statusStartMsgs[$index] = '';
|
75 |
wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
|
76 |
}
|
83 |
$statusStartMsgs[$i] = '';
|
84 |
}
|
85 |
}
|
86 |
+
wfIssues::updateScanStillRunning();
|
87 |
}
|
88 |
|
89 |
public static function statusPaidOnly($message) {
|
90 |
wordfence::status(10, 'info', "SUM_PAIDONLY:" . $message);
|
91 |
+
wfIssues::updateScanStillRunning();
|
92 |
}
|
93 |
|
94 |
public static function statusDisabled($message) {
|
95 |
wordfence::status(10, 'info', "SUM_DISABLED:" . $message);
|
96 |
+
wfIssues::updateScanStillRunning();
|
97 |
+
}
|
98 |
+
|
99 |
+
public static function updateScanStillRunning($running = true) {
|
100 |
+
$timestamp = time();
|
101 |
+
if (!$running) {
|
102 |
+
$timestamp = 0;
|
103 |
+
}
|
104 |
+
wfConfig::set('wf_scanLastStatusTime', $timestamp);
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Returns false if the scan has not been detected as failing. If it has, it returns the timestamp of the last status update.
|
109 |
+
*
|
110 |
+
* @return bool|int
|
111 |
+
*/
|
112 |
+
public static function hasScanFailed() {
|
113 |
+
if (wfConfig::get('wf_scanLastStatusTime', 0) === 0) {
|
114 |
+
return false;
|
115 |
+
}
|
116 |
+
|
117 |
+
$threshold = WORDFENCE_SCAN_FAILURE_THRESHOLD;
|
118 |
+
return (time() > wfConfig::get('wf_scanLastStatusTime', 0) + $threshold) ? wfConfig::get('wf_scanLastStatusTime', 0) : false;
|
119 |
}
|
120 |
|
121 |
public function __sleep(){ //Same order here as vars above
|
lib/wfLog.php
CHANGED
@@ -1877,17 +1877,24 @@ class wfLiveTrafficQuery {
|
|
1877 |
$wheres[] = $filtersSQL;
|
1878 |
}
|
1879 |
}
|
1880 |
-
$where = join(' AND ', $wheres);
|
1881 |
|
1882 |
$orderBy = 'ORDER BY h.ctime DESC';
|
1883 |
-
$select =
|
1884 |
$groupBySQL = '';
|
1885 |
if ($groupBy && $groupBy->validate()) {
|
1886 |
$groupBySQL = "GROUP BY {$groupBy->getParam()}";
|
1887 |
$orderBy = 'ORDER BY hitCount DESC';
|
1888 |
-
$select .= ', COUNT(h.id) as hitCount';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1889 |
}
|
1890 |
-
|
|
|
1891 |
if ($where) {
|
1892 |
$where = 'WHERE ' . $where;
|
1893 |
}
|
@@ -1897,7 +1904,7 @@ class wfLiveTrafficQuery {
|
|
1897 |
$limitSQL = $wpdb->prepare('LIMIT %d, %d', $offset, $limit);
|
1898 |
|
1899 |
$sql = <<<SQL
|
1900 |
-
SELECT h.*, u.display_name
|
1901 |
LEFT JOIN {$wpdb->users} u on h.userID = u.ID
|
1902 |
LEFT JOIN {$wpdb->base_prefix}wfLogins l on h.id = l.hitID
|
1903 |
$where
|
@@ -2119,6 +2126,8 @@ class wfLiveTrafficQueryFilter {
|
|
2119 |
'!=',
|
2120 |
'contains',
|
2121 |
'match',
|
|
|
|
|
2122 |
);
|
2123 |
|
2124 |
/**
|
@@ -2164,6 +2173,14 @@ class wfLiveTrafficQueryFilter {
|
|
2164 |
case 'match':
|
2165 |
$sql = $wpdb->prepare("$param LIKE %s", $value);
|
2166 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2167 |
|
2168 |
default:
|
2169 |
$sql = $wpdb->prepare("$param $operator %s", $value);
|
1877 |
$wheres[] = $filtersSQL;
|
1878 |
}
|
1879 |
}
|
|
|
1880 |
|
1881 |
$orderBy = 'ORDER BY h.ctime DESC';
|
1882 |
+
$select = ', l.username';
|
1883 |
$groupBySQL = '';
|
1884 |
if ($groupBy && $groupBy->validate()) {
|
1885 |
$groupBySQL = "GROUP BY {$groupBy->getParam()}";
|
1886 |
$orderBy = 'ORDER BY hitCount DESC';
|
1887 |
+
$select .= ', COUNT(h.id) as hitCount, MAX(h.ctime) AS lastHit, u.user_login AS username';
|
1888 |
+
|
1889 |
+
if ($groupBy->getParam() == 'user_login') {
|
1890 |
+
$wheres[] = 'user_login IS NOT NULL';
|
1891 |
+
}
|
1892 |
+
else if ($groupBy->getParam() == 'action') {
|
1893 |
+
$wheres[] = '(statusCode = 403 OR statusCode = 503)';
|
1894 |
+
}
|
1895 |
}
|
1896 |
+
|
1897 |
+
$where = join(' AND ', $wheres);
|
1898 |
if ($where) {
|
1899 |
$where = 'WHERE ' . $where;
|
1900 |
}
|
1904 |
$limitSQL = $wpdb->prepare('LIMIT %d, %d', $offset, $limit);
|
1905 |
|
1906 |
$sql = <<<SQL
|
1907 |
+
SELECT h.*, u.display_name{$select} FROM {$this->getTableName()} h
|
1908 |
LEFT JOIN {$wpdb->users} u on h.userID = u.ID
|
1909 |
LEFT JOIN {$wpdb->base_prefix}wfLogins l on h.id = l.hitID
|
1910 |
$where
|
2126 |
'!=',
|
2127 |
'contains',
|
2128 |
'match',
|
2129 |
+
'hregexp',
|
2130 |
+
'hnotregexp',
|
2131 |
);
|
2132 |
|
2133 |
/**
|
2173 |
case 'match':
|
2174 |
$sql = $wpdb->prepare("$param LIKE %s", $value);
|
2175 |
break;
|
2176 |
+
|
2177 |
+
case 'hregexp':
|
2178 |
+
$sql = $wpdb->prepare("HEX($param) REGEXP %s", $value);
|
2179 |
+
break;
|
2180 |
+
|
2181 |
+
case 'hnotregexp':
|
2182 |
+
$sql = $wpdb->prepare("HEX($param) NOT REGEXP %s", $value);
|
2183 |
+
break;
|
2184 |
|
2185 |
default:
|
2186 |
$sql = $wpdb->prepare("$param $operator %s", $value);
|
lib/wfScan.php
CHANGED
@@ -55,7 +55,9 @@ class wfScan {
|
|
55 |
self::errorExit("There is already a scan running.");
|
56 |
}
|
57 |
|
|
|
58 |
wfConfig::set('wfPeakMemory', 0, wfConfig::DONT_AUTOLOAD);
|
|
|
59 |
wfConfig::set('lowResourceScanWaitStep', false);
|
60 |
if (wfConfig::get('lowResourceScansEnabled')) {
|
61 |
self::status(1, 'info', "Using low resource scanning");
|
@@ -97,6 +99,21 @@ class wfScan {
|
|
97 |
self::status(2, 'error', "Scan terminated with error: " . $e->getMessage());
|
98 |
exit();
|
99 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
catch (Exception $e){
|
101 |
wfUtils::clearScanLock();
|
102 |
self::status(2, 'error', "Scan terminated with error: " . $e->getMessage());
|
55 |
self::errorExit("There is already a scan running.");
|
56 |
}
|
57 |
|
58 |
+
wfIssues::updateScanStillRunning();
|
59 |
wfConfig::set('wfPeakMemory', 0, wfConfig::DONT_AUTOLOAD);
|
60 |
+
wfConfig::set('wfScanStartVersion', wfUtils::getWPVersion());
|
61 |
wfConfig::set('lowResourceScanWaitStep', false);
|
62 |
if (wfConfig::get('lowResourceScansEnabled')) {
|
63 |
self::status(1, 'info', "Using low resource scanning");
|
99 |
self::status(2, 'error', "Scan terminated with error: " . $e->getMessage());
|
100 |
exit();
|
101 |
}
|
102 |
+
catch (wfScanEngineCoreVersionChangeException $e) {
|
103 |
+
wfUtils::clearScanLock();
|
104 |
+
$peakMemory = self::logPeakMemory();
|
105 |
+
self::status(2, 'info', "Wordfence used " . wfUtils::formatBytes($peakMemory - self::$peakMemAtStart) . " of memory for scan. Server peak memory usage was: " . wfUtils::formatBytes($peakMemory));
|
106 |
+
self::status(2, 'error', "Scan terminated with message: " . $e->getMessage());
|
107 |
+
|
108 |
+
$nextScheduledScan = wordfence::getNextScanStartTimestamp();
|
109 |
+
if ($nextScheduledScan !== false && $nextScheduledScan - time() > 21600 /* 6 hours */) {
|
110 |
+
$nextScheduledScan = time() + 3600;
|
111 |
+
wordfence::scheduleSingleScan($nextScheduledScan);
|
112 |
+
}
|
113 |
+
self::status(2, 'error', wordfence::getNextScanStartTime($nextScheduledScan));
|
114 |
+
|
115 |
+
exit();
|
116 |
+
}
|
117 |
catch (Exception $e){
|
118 |
wfUtils::clearScanLock();
|
119 |
self::status(2, 'error', "Scan terminated with error: " . $e->getMessage());
|
lib/wfScanEngine.php
CHANGED
@@ -41,6 +41,8 @@ class wfScanEngine {
|
|
41 |
private $passwdHasIssues = wfIssues::STATUS_SECURE;
|
42 |
private $suspectedFiles = false; //Files found with the ".suspected" extension
|
43 |
private $gsbMultisiteBlogOffset = 0;
|
|
|
|
|
44 |
|
45 |
/**
|
46 |
* @var wordfenceDBScanner
|
@@ -107,6 +109,9 @@ class wfScanEngine {
|
|
107 |
if ($failureType == 'duration') {
|
108 |
new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . network_admin_url('admin.php?page=WordfenceScan') . '">Scan aborted due to duration limit</a>', 'wfplugin_scan');
|
109 |
}
|
|
|
|
|
|
|
110 |
else {
|
111 |
$trimmedError = substr($message, 0, 100) . (strlen($message) > 100 ? '...' : '');
|
112 |
new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . network_admin_url('admin.php?page=WordfenceScan') . '">Scan failed: ' . esc_html($trimmedError) . '</a>', 'wfplugin_scan');
|
@@ -115,7 +120,7 @@ class wfScanEngine {
|
|
115 |
}
|
116 |
|
117 |
public function __sleep(){ //Same order here as above for properties that are included in serialization
|
118 |
-
return array('hasher', 'jobList', 'i', 'wp_version', 'apiKey', 'startTime', 'maxExecTime', 'publicScanEnabled', 'fileContentsResults', 'scanner', 'scanQueue', 'hoover', 'scanData', 'statusIDX', 'userPasswdQueue', 'passwdHasIssues', 'suspectedFiles', 'dbScanner', 'knownFilesLoader', 'metrics', 'checkHowGetIPsRequestTime', 'gsbMultisiteBlogOffset');
|
119 |
}
|
120 |
public function __construct(){
|
121 |
$this->startTime = time();
|
@@ -191,6 +196,18 @@ class wfScanEngine {
|
|
191 |
wfScanEngine::refreshScanNotification($this->i);
|
192 |
throw $e;
|
193 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
catch(Exception $e) {
|
195 |
wfConfig::set('lastScanCompleted', $e->getMessage());
|
196 |
wfConfig::set('lastScanFailureType', 'general');
|
@@ -204,9 +221,12 @@ class wfScanEngine {
|
|
204 |
}
|
205 |
}
|
206 |
public function checkForDurationLimit() {
|
207 |
-
$timeLimit =
|
208 |
-
if ($timeLimit
|
209 |
-
$timeLimit =
|
|
|
|
|
|
|
210 |
}
|
211 |
|
212 |
if ((time() - $this->startTime) > $timeLimit){
|
@@ -223,10 +243,35 @@ class wfScanEngine {
|
|
223 |
throw new wfScanEngineDurationLimitException($error);
|
224 |
}
|
225 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
public function shouldFork() {
|
227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
}
|
229 |
public function forkIfNeeded(){
|
|
|
|
|
230 |
self::checkForKill();
|
231 |
$this->checkForDurationLimit();
|
232 |
if(time() - $this->cycleStartTime > $this->maxExecTime){
|
@@ -866,15 +911,15 @@ class wfScanEngine {
|
|
866 |
|
867 |
if ($result['badList'] == 'goog-malware-shavar') {
|
868 |
$shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
|
869 |
-
$longMsg = "This
|
870 |
}
|
871 |
else if ($result['badList'] == 'googpub-phish-shavar') {
|
872 |
$shortMsg = "{$uctype} contains a suspected phishing site URL: " . esc_html($title);
|
873 |
-
$longMsg = "This
|
874 |
}
|
875 |
else if ($result['badList'] == 'wordfence-dbl') {
|
876 |
$shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
|
877 |
-
$longMsg = "This
|
878 |
}
|
879 |
else {
|
880 |
//A list type that may be new and the plugin has not been upgraded yet.
|
@@ -984,15 +1029,15 @@ class wfScanEngine {
|
|
984 |
|
985 |
if ($result['badList'] == 'goog-malware-shavar') {
|
986 |
$shortMsg = "$uctype with author " . esc_html($author) . " contains a suspected malware URL.";
|
987 |
-
$longMsg = "This
|
988 |
}
|
989 |
else if ($result['badList'] == 'googpub-phish-shavar') {
|
990 |
$shortMsg = "$uctype contains a suspected phishing site URL.";
|
991 |
-
$longMsg = "This
|
992 |
}
|
993 |
else if ($result['badList'] == 'wordfence-dbl') {
|
994 |
$shortMsg = "$uctype contains a suspected malware URL.";
|
995 |
-
$longMsg = "This
|
996 |
}
|
997 |
|
998 |
if(is_multisite()){
|
@@ -1368,31 +1413,92 @@ class wfScanEngine {
|
|
1368 |
}
|
1369 |
wfIssues::statusEnd($this->statusIDX['dns'], $haveIssues);
|
1370 |
}
|
1371 |
-
|
1372 |
-
private function
|
1373 |
$this->statusIDX['oldVersions'] = wfIssues::statusStart("Scanning for old themes, plugins and core files");
|
1374 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1375 |
|
1376 |
-
|
1377 |
-
$
|
1378 |
-
$update_check->checkAllVulnerabilities();
|
1379 |
|
1380 |
// WordPress core updates needed
|
1381 |
-
if ($
|
1382 |
-
$added = $this->addIssue('wfUpgrade', 1, 'wfUpgrade' . $
|
1383 |
'currentVersion' => $this->wp_version,
|
1384 |
-
'newVersion' => $
|
1385 |
));
|
1386 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1387 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1388 |
}
|
|
|
|
|
1389 |
|
1390 |
// Plugin updates needed
|
1391 |
-
if (count($
|
1392 |
-
foreach ($
|
1393 |
$severity = 1; //Critical
|
1394 |
-
if (isset($plugin['
|
1395 |
-
if (!$plugin['
|
1396 |
$severity = 2; //Warning
|
1397 |
}
|
1398 |
}
|
@@ -1401,25 +1507,122 @@ class wfScanEngine {
|
|
1401 |
$added = $this->addIssue('wfPluginUpgrade', $severity, $key, $key, $shortMsg, "You need to upgrade \"" . $plugin['Name'] . "\" to the newest version to ensure you have any security fixes the developer has released.", $plugin);
|
1402 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1403 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
|
|
|
|
|
|
|
|
1404 |
}
|
1405 |
}
|
1406 |
|
1407 |
// Theme updates needed
|
1408 |
-
if (count($
|
1409 |
-
foreach ($
|
1410 |
$severity = 1; //Critical
|
1411 |
-
if (isset($theme['
|
1412 |
-
if (!$theme['
|
1413 |
$severity = 2; //Warning
|
1414 |
}
|
1415 |
}
|
1416 |
$key = 'wfThemeUpgrade' . ' ' . $theme['Name'] . ' ' . $theme['version'] . ' ' . $theme['newVersion'];
|
1417 |
$shortMsg = "The Theme \"" . $theme['Name'] . "\" needs an upgrade (" . $theme['version'] . " -> " . $theme['newVersion'] . ").";
|
1418 |
-
$added = $this->addIssue('wfThemeUpgrade', $severity, $key, $key, $shortMsg, "You need to upgrade \"" .
|
1419 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1420 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1421 |
}
|
1422 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1423 |
|
1424 |
wfIssues::statusEnd($this->statusIDX['oldVersions'], $haveIssues);
|
1425 |
}
|
@@ -1453,9 +1656,11 @@ class wfScanEngine {
|
|
1453 |
wordfence::status($level, $type, $msg);
|
1454 |
}
|
1455 |
public function addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) {
|
|
|
1456 |
return $this->i->addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed);
|
1457 |
}
|
1458 |
public function addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData){
|
|
|
1459 |
return $this->i->addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData);
|
1460 |
}
|
1461 |
public function getPendingIssueCount() {
|
@@ -1531,21 +1736,21 @@ class wfScanEngine {
|
|
1531 |
public function processResponse($result){
|
1532 |
return false;
|
1533 |
}
|
1534 |
-
public static function getMaxExecutionTime
|
1535 |
$config = wfConfig::get('maxExecutionTime');
|
1536 |
-
wordfence::status(4, 'info', "Got value from wf config maxExecutionTime: $config");
|
1537 |
if(is_numeric($config) && $config >= 10){
|
1538 |
-
wordfence::status(4, 'info', "getMaxExecutionTime() returning config value: $config");
|
1539 |
return $config;
|
1540 |
}
|
1541 |
$ini = @ini_get('max_execution_time');
|
1542 |
-
wordfence::status(4, 'info', "Got max_execution_time value from ini: $ini");
|
1543 |
if(is_numeric($ini) && $ini >= 10){
|
1544 |
$ini = floor($ini / 2);
|
1545 |
-
wordfence::status(4, 'info', "getMaxExecutionTime() returning half ini value: $ini");
|
1546 |
return $ini;
|
1547 |
}
|
1548 |
-
wordfence::status(4, 'info', "getMaxExecutionTime() returning default of: 15");
|
1549 |
return 15;
|
1550 |
}
|
1551 |
|
@@ -1563,6 +1768,11 @@ class wfScanEngine {
|
|
1563 |
* @return array
|
1564 |
*/
|
1565 |
public function getPlugins() {
|
|
|
|
|
|
|
|
|
|
|
1566 |
if(! function_exists( 'get_plugins')){
|
1567 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
1568 |
}
|
@@ -1927,3 +2137,6 @@ class wfPubliclyAccessibleFileTest extends wfCommonBackupFileTest {
|
|
1927 |
|
1928 |
class wfScanEngineDurationLimitException extends Exception {
|
1929 |
}
|
|
|
|
|
|
41 |
private $passwdHasIssues = wfIssues::STATUS_SECURE;
|
42 |
private $suspectedFiles = false; //Files found with the ".suspected" extension
|
43 |
private $gsbMultisiteBlogOffset = 0;
|
44 |
+
private $updateCheck = false;
|
45 |
+
private $pluginRepoStatus = array();
|
46 |
|
47 |
/**
|
48 |
* @var wordfenceDBScanner
|
109 |
if ($failureType == 'duration') {
|
110 |
new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . network_admin_url('admin.php?page=WordfenceScan') . '">Scan aborted due to duration limit</a>', 'wfplugin_scan');
|
111 |
}
|
112 |
+
else if ($failureType == 'versionchange') {
|
113 |
+
//No need to create a notification
|
114 |
+
}
|
115 |
else {
|
116 |
$trimmedError = substr($message, 0, 100) . (strlen($message) > 100 ? '...' : '');
|
117 |
new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . network_admin_url('admin.php?page=WordfenceScan') . '">Scan failed: ' . esc_html($trimmedError) . '</a>', 'wfplugin_scan');
|
120 |
}
|
121 |
|
122 |
public function __sleep(){ //Same order here as above for properties that are included in serialization
|
123 |
+
return array('hasher', 'jobList', 'i', 'wp_version', 'apiKey', 'startTime', 'maxExecTime', 'publicScanEnabled', 'fileContentsResults', 'scanner', 'scanQueue', 'hoover', 'scanData', 'statusIDX', 'userPasswdQueue', 'passwdHasIssues', 'suspectedFiles', 'dbScanner', 'knownFilesLoader', 'metrics', 'checkHowGetIPsRequestTime', 'gsbMultisiteBlogOffset', 'updateCheck', 'pluginRepoStatus');
|
124 |
}
|
125 |
public function __construct(){
|
126 |
$this->startTime = time();
|
196 |
wfScanEngine::refreshScanNotification($this->i);
|
197 |
throw $e;
|
198 |
}
|
199 |
+
catch (wfScanEngineCoreVersionChangeException $e) {
|
200 |
+
wfConfig::set('lastScanCompleted', $e->getMessage());
|
201 |
+
wfConfig::set('lastScanFailureType', 'versionchange');
|
202 |
+
$this->i->setScanTimeNow();
|
203 |
+
|
204 |
+
$this->recordMetric('scan', 'duration', (time() - $this->startTime));
|
205 |
+
$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
|
206 |
+
$this->submitMetrics();
|
207 |
+
|
208 |
+
wfScanEngine::refreshScanNotification($this->i);
|
209 |
+
throw $e;
|
210 |
+
}
|
211 |
catch(Exception $e) {
|
212 |
wfConfig::set('lastScanCompleted', $e->getMessage());
|
213 |
wfConfig::set('lastScanFailureType', 'general');
|
221 |
}
|
222 |
}
|
223 |
public function checkForDurationLimit() {
|
224 |
+
static $timeLimit = false;
|
225 |
+
if ($timeLimit === false) {
|
226 |
+
$timeLimit = intval(wfConfig::get('scan_maxDuration'));
|
227 |
+
if ($timeLimit < 1) {
|
228 |
+
$timeLimit = WORDFENCE_DEFAULT_MAX_SCAN_TIME;
|
229 |
+
}
|
230 |
}
|
231 |
|
232 |
if ((time() - $this->startTime) > $timeLimit){
|
243 |
throw new wfScanEngineDurationLimitException($error);
|
244 |
}
|
245 |
}
|
246 |
+
public function checkForCoreVersionChange() {
|
247 |
+
$startVersion = wfConfig::get('wfScanStartVersion');
|
248 |
+
$currentVersion = wfUtils::getWPVersion(true);
|
249 |
+
if (version_compare($startVersion, $currentVersion) != 0) {
|
250 |
+
throw new wfScanEngineCoreVersionChangeException("Aborting scan because WordPress updated from version {$startVersion} to {$currentVersion}. The scan will be reattempted later.");
|
251 |
+
}
|
252 |
+
}
|
253 |
public function shouldFork() {
|
254 |
+
static $lastCheck = 0;
|
255 |
+
|
256 |
+
if (time() - $this->cycleStartTime > $this->maxExecTime) {
|
257 |
+
return true;
|
258 |
+
}
|
259 |
+
|
260 |
+
if ($lastCheck > time() - $this->maxExecTime) {
|
261 |
+
return false;
|
262 |
+
}
|
263 |
+
$lastCheck = time();
|
264 |
+
|
265 |
+
$this->checkForCoreVersionChange();
|
266 |
+
wfIssues::updateScanStillRunning();
|
267 |
+
self::checkForKill();
|
268 |
+
$this->checkForDurationLimit();
|
269 |
+
|
270 |
+
return false;
|
271 |
}
|
272 |
public function forkIfNeeded(){
|
273 |
+
wfIssues::updateScanStillRunning();
|
274 |
+
$this->checkForCoreVersionChange();
|
275 |
self::checkForKill();
|
276 |
$this->checkForDurationLimit();
|
277 |
if(time() - $this->cycleStartTime > $this->maxExecTime){
|
911 |
|
912 |
if ($result['badList'] == 'goog-malware-shavar') {
|
913 |
$shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
|
914 |
+
$longMsg = "This " . esc_html($type) . " contains a suspected malware URL listed on Google's list of malware sites. The URL is: " . esc_html($result['URL']) . " - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=" . urlencode($result['URL']) . "&client=googlechrome&hl=en-US\" target=\"_blank\">Google Safe Browsing diagnostic page</a>.";
|
915 |
}
|
916 |
else if ($result['badList'] == 'googpub-phish-shavar') {
|
917 |
$shortMsg = "{$uctype} contains a suspected phishing site URL: " . esc_html($title);
|
918 |
+
$longMsg = "This " . esc_html($type) . " contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: " . esc_html($result['URL']);
|
919 |
}
|
920 |
else if ($result['badList'] == 'wordfence-dbl') {
|
921 |
$shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
|
922 |
+
$longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blacklist. The URL is: " . esc_html($result['URL']);
|
923 |
}
|
924 |
else {
|
925 |
//A list type that may be new and the plugin has not been upgraded yet.
|
1029 |
|
1030 |
if ($result['badList'] == 'goog-malware-shavar') {
|
1031 |
$shortMsg = "$uctype with author " . esc_html($author) . " contains a suspected malware URL.";
|
1032 |
+
$longMsg = "This " . esc_html($type) . " contains a suspected malware URL listed on Google's list of malware sites. The URL is: " . esc_html($result['URL']) . " - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=" . urlencode($result['URL']) . "&client=googlechrome&hl=en-US\" target=\"_blank\">Google Safe Browsing diagnostic page</a>.";
|
1033 |
}
|
1034 |
else if ($result['badList'] == 'googpub-phish-shavar') {
|
1035 |
$shortMsg = "$uctype contains a suspected phishing site URL.";
|
1036 |
+
$longMsg = "This " . esc_html($type) . " contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: " . esc_html($result['URL']);
|
1037 |
}
|
1038 |
else if ($result['badList'] == 'wordfence-dbl') {
|
1039 |
$shortMsg = "$uctype contains a suspected malware URL.";
|
1040 |
+
$longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blacklist. The URL is: " . esc_html($result['URL']);
|
1041 |
}
|
1042 |
|
1043 |
if(is_multisite()){
|
1413 |
}
|
1414 |
wfIssues::statusEnd($this->statusIDX['dns'], $haveIssues);
|
1415 |
}
|
1416 |
+
|
1417 |
+
private function scan_oldVersions_init() {
|
1418 |
$this->statusIDX['oldVersions'] = wfIssues::statusStart("Scanning for old themes, plugins and core files");
|
1419 |
+
|
1420 |
+
$this->updateCheck = new wfUpdateCheck();
|
1421 |
+
$this->updateCheck->checkAllUpdates(false);
|
1422 |
+
$this->updateCheck->checkAllVulnerabilities();
|
1423 |
+
|
1424 |
+
foreach ($this->updateCheck->getPluginSlugs() as $slug) {
|
1425 |
+
$this->pluginRepoStatus[$slug] = false;
|
1426 |
+
}
|
1427 |
+
|
1428 |
+
//Strip plugins that have a pending update
|
1429 |
+
if (count($this->updateCheck->getPluginUpdates()) > 0) {
|
1430 |
+
foreach ($this->updateCheck->getPluginUpdates() as $plugin) {
|
1431 |
+
if (!empty($plugin['slug'])) {
|
1432 |
+
unset($this->pluginRepoStatus[$plugin['slug']]);
|
1433 |
+
}
|
1434 |
+
}
|
1435 |
+
}
|
1436 |
+
}
|
1437 |
+
|
1438 |
+
private function scan_oldVersions_main() {
|
1439 |
+
if (!function_exists('plugins_api')) {
|
1440 |
+
require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
|
1441 |
+
}
|
1442 |
+
|
1443 |
+
foreach ($this->pluginRepoStatus as $slug => $status) {
|
1444 |
+
if ($status === false) {
|
1445 |
+
$result = plugins_api('plugin_information', array(
|
1446 |
+
'slug' => $slug,
|
1447 |
+
'fields' => array(
|
1448 |
+
'short_description' => false,
|
1449 |
+
'description' => false,
|
1450 |
+
'sections' => false,
|
1451 |
+
'tested' => true,
|
1452 |
+
'requires' => true,
|
1453 |
+
'rating' => false,
|
1454 |
+
'ratings' => false,
|
1455 |
+
'downloaded' => false,
|
1456 |
+
'downloadlink' => false,
|
1457 |
+
'last_updated' => true,
|
1458 |
+
'added' => false,
|
1459 |
+
'tags' => false,
|
1460 |
+
'compatibility' => true,
|
1461 |
+
'homepage' => true,
|
1462 |
+
'versions' => false,
|
1463 |
+
'donate_link' => false,
|
1464 |
+
'reviews' => false,
|
1465 |
+
'banners' => false,
|
1466 |
+
'icons' => false,
|
1467 |
+
'active_installs' => false,
|
1468 |
+
'group' => false,
|
1469 |
+
'contributors' => false,
|
1470 |
+
),
|
1471 |
+
));
|
1472 |
+
unset($result->versions);
|
1473 |
+
unset($result->screenshots);
|
1474 |
+
$this->pluginRepoStatus[$slug] = $result;
|
1475 |
+
|
1476 |
+
$this->forkIfNeeded();
|
1477 |
+
}
|
1478 |
+
}
|
1479 |
+
}
|
1480 |
|
1481 |
+
private function scan_oldVersions_finish() {
|
1482 |
+
$haveIssues = wfIssues::STATUS_SECURE;
|
|
|
1483 |
|
1484 |
// WordPress core updates needed
|
1485 |
+
if ($this->updateCheck->needsCoreUpdate()) {
|
1486 |
+
$added = $this->addIssue('wfUpgrade', 1, 'wfUpgrade' . $this->updateCheck->getCoreUpdateVersion(), 'wfUpgrade' . $this->updateCheck->getCoreUpdateVersion(), "Your WordPress version is out of date", "WordPress version " . esc_html($this->updateCheck->getCoreUpdateVersion()) . " is now available. Please upgrade immediately to get the latest security updates from WordPress.", array(
|
1487 |
'currentVersion' => $this->wp_version,
|
1488 |
+
'newVersion' => $this->updateCheck->getCoreUpdateVersion(),
|
1489 |
));
|
1490 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1491 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1492 |
}
|
1493 |
+
|
1494 |
+
$allPlugins = $this->updateCheck->getAllPlugins();
|
1495 |
|
1496 |
// Plugin updates needed
|
1497 |
+
if (count($this->updateCheck->getPluginUpdates()) > 0) {
|
1498 |
+
foreach ($this->updateCheck->getPluginUpdates() as $plugin) {
|
1499 |
$severity = 1; //Critical
|
1500 |
+
if (isset($plugin['vulnerable'])) {
|
1501 |
+
if (!$plugin['vulnerable']) {
|
1502 |
$severity = 2; //Warning
|
1503 |
}
|
1504 |
}
|
1507 |
$added = $this->addIssue('wfPluginUpgrade', $severity, $key, $key, $shortMsg, "You need to upgrade \"" . $plugin['Name'] . "\" to the newest version to ensure you have any security fixes the developer has released.", $plugin);
|
1508 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1509 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1510 |
+
|
1511 |
+
if (isset($plugin['slug'])) {
|
1512 |
+
unset($allPlugins[$plugin['slug']]);
|
1513 |
+
}
|
1514 |
}
|
1515 |
}
|
1516 |
|
1517 |
// Theme updates needed
|
1518 |
+
if (count($this->updateCheck->getThemeUpdates()) > 0) {
|
1519 |
+
foreach ($this->updateCheck->getThemeUpdates() as $theme) {
|
1520 |
$severity = 1; //Critical
|
1521 |
+
if (isset($theme['vulnerable'])) {
|
1522 |
+
if (!$theme['vulnerable']) {
|
1523 |
$severity = 2; //Warning
|
1524 |
}
|
1525 |
}
|
1526 |
$key = 'wfThemeUpgrade' . ' ' . $theme['Name'] . ' ' . $theme['version'] . ' ' . $theme['newVersion'];
|
1527 |
$shortMsg = "The Theme \"" . $theme['Name'] . "\" needs an upgrade (" . $theme['version'] . " -> " . $theme['newVersion'] . ").";
|
1528 |
+
$added = $this->addIssue('wfThemeUpgrade', $severity, $key, $key, $shortMsg, "You need to upgrade \"" . esc_html($theme['Name']) . "\" to the newest version to ensure you have any security fixes the developer has released.", $theme);
|
1529 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1530 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1531 |
}
|
1532 |
}
|
1533 |
+
|
1534 |
+
//Abandoned plugins
|
1535 |
+
foreach ($this->pluginRepoStatus as $slug => $status) {
|
1536 |
+
if ($status !== false && !is_wp_error($status) && property_exists($status, 'last_updated')) {
|
1537 |
+
$lastUpdateTimestamp = strtotime($status->last_updated);
|
1538 |
+
if ($lastUpdateTimestamp > 0 && (time() - $lastUpdateTimestamp) > 63072000 /* ~2 years */) {
|
1539 |
+
$statusArray = (array) $status;
|
1540 |
+
$statusArray['dateUpdated'] = wfUtils::formatLocalTime(get_option('date_format'), $lastUpdateTimestamp);
|
1541 |
+
$severity = 2; //Warning
|
1542 |
+
$statusArray['abandoned'] = true;
|
1543 |
+
$statusArray['vulnerable'] = false;
|
1544 |
+
if ($this->updateCheck->isPluginVulnerable($slug, $statusArray['version'])) {
|
1545 |
+
$severity = 1; //Critical
|
1546 |
+
$statusArray['vulnerable'] = true;
|
1547 |
+
}
|
1548 |
+
|
1549 |
+
if (isset($allPlugins[$slug])) {
|
1550 |
+
$statusArray['wpURL'] = $allPlugins[$slug]['wpURL'];
|
1551 |
+
}
|
1552 |
+
|
1553 |
+
$key = "wfPluginAbandoned {$slug} {$statusArray['version']}";
|
1554 |
+
$shortMsg = 'The Plugin "' . $statusArray['name'] . '" appears to be abandoned.';
|
1555 |
+
$longMsg = 'It was last updated ' . wfUtils::makeTimeAgo(time() - $lastUpdateTimestamp) . ' ago.';
|
1556 |
+
if ($statusArray['vulnerable']) {
|
1557 |
+
$longMsg .= ' It has unpatched security issues and may have compatibility problems with the current version of WordPress.';
|
1558 |
+
}
|
1559 |
+
else {
|
1560 |
+
$longMsg .= ' It may have compatibility problems with the current version of WordPress or unknown security issues.';
|
1561 |
+
}
|
1562 |
+
$longMsg .= ' <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_appears_to_be_abandoned" target="_blank">Get more information.</a>';
|
1563 |
+
$added = $this->addIssue('wfPluginAbandoned', $severity, $key, $key, $shortMsg, $longMsg, $statusArray);
|
1564 |
+
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1565 |
+
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1566 |
+
|
1567 |
+
unset($allPlugins[$slug]);
|
1568 |
+
}
|
1569 |
+
}
|
1570 |
+
else if ($status !== false && is_wp_error($status) && isset($status->error_data['plugins_api_failed']) && $status->error_data['plugins_api_failed'] == 'N;') { //The plugin does not exist in the wp.org repo
|
1571 |
+
$knownFiles = $this->getKnownFilesLoader()->getKnownFiles();
|
1572 |
+
$requestedPlugins = $this->getPlugins();
|
1573 |
+
foreach ($requestedPlugins as $key => $data) {
|
1574 |
+
$testKey = trailingslashit($data['FullDir']) . '.';
|
1575 |
+
if ($data['ShortDir'] == $slug && isset($knownFiles['plugins'][$testKey])) { //It existed in the repo at some point and was removed
|
1576 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $key;
|
1577 |
+
$pluginData = get_plugin_data($pluginFile);
|
1578 |
+
$pluginData['wpRemoved'] = true;
|
1579 |
+
$pluginData['vulnerable'] = false;
|
1580 |
+
if ($this->updateCheck->isPluginVulnerable($slug, $pluginData['Version'])) {
|
1581 |
+
$pluginData['vulnerable'] = true;
|
1582 |
+
}
|
1583 |
+
|
1584 |
+
$key = "wfPluginRemoved {$slug} {$pluginData['Version']}";
|
1585 |
+
$shortMsg = 'The Plugin "' . $pluginData['Name'] . '" has been removed from wordpress.org.';
|
1586 |
+
if ($pluginData['vulnerable']) {
|
1587 |
+
$longMsg = 'It has unpatched security issues and may have compatibility problems with the current version of WordPress.';
|
1588 |
+
}
|
1589 |
+
else {
|
1590 |
+
$longMsg = 'It may have compatibility problems with the current version of WordPress or unknown security issues.';
|
1591 |
+
}
|
1592 |
+
$longMsg .= ' <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_has_been_removed_from_wordpress.org" target="_blank">Get more information.</a>';
|
1593 |
+
$added = $this->addIssue('wfPluginRemoved', 1, $key, $key, $shortMsg, $longMsg, $pluginData);
|
1594 |
+
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1595 |
+
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1596 |
+
|
1597 |
+
unset($allPlugins[$slug]);
|
1598 |
+
}
|
1599 |
+
}
|
1600 |
+
}
|
1601 |
+
}
|
1602 |
+
|
1603 |
+
//Other vulnerable plugins
|
1604 |
+
//Disabled until we improve the data source to weed out false positives
|
1605 |
+
/*if (count($allPlugins) > 0) {
|
1606 |
+
foreach ($allPlugins as $plugin) {
|
1607 |
+
if (!isset($plugin['vulnerable']) || !$plugin['vulnerable']) {
|
1608 |
+
continue;
|
1609 |
+
}
|
1610 |
+
|
1611 |
+
$key = 'wfPluginVulnerable' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['Version'];
|
1612 |
+
$shortMsg = "The Plugin \"" . $plugin['Name'] . "\" has an unpatched security vulnerability.";
|
1613 |
+
$longMsg = 'To protect your site from this vulnerability, the safest option is to deactivate and completely remove ' . esc_html($plugin['Name']) . ' until the developer releases a security fix. <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_has_an_unpatched_security_vulnerability" target="_blank">Get more information.</a>';
|
1614 |
+
$added = $this->addIssue('wfPluginVulnerable', 1, $key, $key, $shortMsg, $longMsg, $plugin);
|
1615 |
+
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
1616 |
+
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
1617 |
+
|
1618 |
+
if (isset($plugin['slug'])) {
|
1619 |
+
unset($allPlugins[$plugin['slug']]);
|
1620 |
+
}
|
1621 |
+
}
|
1622 |
+
}*/
|
1623 |
+
|
1624 |
+
$this->updateCheck = false;
|
1625 |
+
$this->pluginRepoStatus = array();
|
1626 |
|
1627 |
wfIssues::statusEnd($this->statusIDX['oldVersions'], $haveIssues);
|
1628 |
}
|
1656 |
wordfence::status($level, $type, $msg);
|
1657 |
}
|
1658 |
public function addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) {
|
1659 |
+
wfIssues::updateScanStillRunning();
|
1660 |
return $this->i->addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed);
|
1661 |
}
|
1662 |
public function addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData){
|
1663 |
+
wfIssues::updateScanStillRunning();
|
1664 |
return $this->i->addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData);
|
1665 |
}
|
1666 |
public function getPendingIssueCount() {
|
1736 |
public function processResponse($result){
|
1737 |
return false;
|
1738 |
}
|
1739 |
+
public static function getMaxExecutionTime($staySilent = false) {
|
1740 |
$config = wfConfig::get('maxExecutionTime');
|
1741 |
+
if (!$staySilent) { wordfence::status(4, 'info', "Got value from wf config maxExecutionTime: $config"); }
|
1742 |
if(is_numeric($config) && $config >= 10){
|
1743 |
+
if (!$staySilent) { wordfence::status(4, 'info', "getMaxExecutionTime() returning config value: $config"); }
|
1744 |
return $config;
|
1745 |
}
|
1746 |
$ini = @ini_get('max_execution_time');
|
1747 |
+
if (!$staySilent) { wordfence::status(4, 'info', "Got max_execution_time value from ini: $ini"); }
|
1748 |
if(is_numeric($ini) && $ini >= 10){
|
1749 |
$ini = floor($ini / 2);
|
1750 |
+
if (!$staySilent) { wordfence::status(4, 'info', "getMaxExecutionTime() returning half ini value: $ini"); }
|
1751 |
return $ini;
|
1752 |
}
|
1753 |
+
if (!$staySilent) { wordfence::status(4, 'info', "getMaxExecutionTime() returning default of: 15"); }
|
1754 |
return 15;
|
1755 |
}
|
1756 |
|
1768 |
* @return array
|
1769 |
*/
|
1770 |
public function getPlugins() {
|
1771 |
+
static $plugins = null;
|
1772 |
+
if ($plugins !== null) {
|
1773 |
+
return $plugins;
|
1774 |
+
}
|
1775 |
+
|
1776 |
if(! function_exists( 'get_plugins')){
|
1777 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
1778 |
}
|
2137 |
|
2138 |
class wfScanEngineDurationLimitException extends Exception {
|
2139 |
}
|
2140 |
+
|
2141 |
+
class wfScanEngineCoreVersionChangeException extends Exception {
|
2142 |
+
}
|
lib/wfUnlockMsg.php
CHANGED
@@ -1,8 +1,17 @@
|
|
1 |
If you are a site administrator and have been accidentally locked out, please enter your email in the box below and click "Send". If the email address you enter belongs to a known site administrator or someone set to receive Wordfence alerts, we will send you an email to help you regain access. <a href="https://docs.wordfence.com/en/Help!_I_locked_myself_out_and_can't_get_back_in._What_can_I_do%3F" target="_blank">Please read this FAQ entry if this does not work.</a>
|
2 |
<br /><br />
|
3 |
-
<form method="POST" action
|
4 |
<?php require_once(ABSPATH .'wp-includes/pluggable.php'); ?>
|
5 |
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce('wf-form'); ?>" />
|
6 |
-
<input type="text" size="50" name="email" value="" maxlength="255" /> <input type="submit" name="s" value="Send me an unlock email" />
|
7 |
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
<br /><br />
|
1 |
If you are a site administrator and have been accidentally locked out, please enter your email in the box below and click "Send". If the email address you enter belongs to a known site administrator or someone set to receive Wordfence alerts, we will send you an email to help you regain access. <a href="https://docs.wordfence.com/en/Help!_I_locked_myself_out_and_can't_get_back_in._What_can_I_do%3F" target="_blank">Please read this FAQ entry if this does not work.</a>
|
2 |
<br /><br />
|
3 |
+
<form method="POST" id="unlock-form" action="#">
|
4 |
<?php require_once(ABSPATH .'wp-includes/pluggable.php'); ?>
|
5 |
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce('wf-form'); ?>" />
|
6 |
+
<input type="text" size="50" name="email" id="unlock-email" value="" maxlength="255" /> <input type="submit" id="unlock-submit" name="s" value="Send me an unlock email" disabled />
|
7 |
</form>
|
8 |
+
<script type="application/javascript">
|
9 |
+
(function() {
|
10 |
+
var textfield = document.getElementById('unlock-email');
|
11 |
+
textfield.addEventListener('focus', function() {
|
12 |
+
document.getElementById('unlock-form').action = "<?php echo esc_attr(wfUtils::getSiteBaseURL()); ?>" + "?_wfsf=unlockEmail";
|
13 |
+
document.getElementById('unlock-submit').disabled = false;
|
14 |
+
});
|
15 |
+
})();
|
16 |
+
</script>
|
17 |
<br /><br />
|
lib/wfUpdateCheck.php
CHANGED
@@ -5,13 +5,23 @@ class wfUpdateCheck {
|
|
5 |
private $needs_core_update = false;
|
6 |
private $core_update_version = 0;
|
7 |
private $plugin_updates = array();
|
|
|
|
|
8 |
private $theme_updates = array();
|
9 |
private $api = null;
|
10 |
|
11 |
public function __construct() {
|
12 |
$this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
|
13 |
}
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
/**
|
16 |
* @return bool
|
17 |
*/
|
@@ -88,6 +98,12 @@ class wfUpdateCheck {
|
|
88 |
wp_update_plugins();
|
89 |
$update_plugins = get_site_transient('update_plugins');
|
90 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
if ($update_plugins && !empty($update_plugins->response)) {
|
93 |
foreach ($update_plugins->response as $plugin => $vals) {
|
@@ -98,22 +114,88 @@ class wfUpdateCheck {
|
|
98 |
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
99 |
$valsArray = (array) $vals;
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
$data = get_plugin_data($pluginFile);
|
102 |
$data['pluginFile'] = $pluginFile;
|
103 |
$data['newVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
|
104 |
-
$data['slug'] =
|
105 |
$data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null);
|
106 |
|
107 |
//Check the vulnerability database
|
108 |
-
if
|
109 |
-
$data['
|
110 |
}
|
111 |
else {
|
112 |
-
$data['
|
113 |
}
|
114 |
|
|
|
|
|
|
|
|
|
115 |
|
116 |
$this->plugin_updates[] = $data;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
}
|
119 |
|
@@ -149,9 +231,9 @@ class wfUpdateCheck {
|
|
149 |
foreach ($update_themes->response as $theme => $vals) {
|
150 |
foreach ($themes as $name => $themeData) {
|
151 |
if (strtolower($name) == $theme) {
|
152 |
-
$
|
153 |
if (isset($themeData['Version'])) {
|
154 |
-
$
|
155 |
}
|
156 |
|
157 |
$this->theme_updates[] = array(
|
@@ -161,7 +243,7 @@ class wfUpdateCheck {
|
|
161 |
'Name' => $themeData['Name'],
|
162 |
'name' => $themeData['Name'],
|
163 |
'version' => $themeData['Version'],
|
164 |
-
'
|
165 |
);
|
166 |
}
|
167 |
}
|
@@ -184,29 +266,98 @@ class wfUpdateCheck {
|
|
184 |
require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
|
185 |
}
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
$this->checkPluginUpdates();
|
188 |
$update_plugins = get_site_transient('update_plugins');
|
189 |
-
|
190 |
-
$vulnerabilities = array();
|
191 |
-
if ($update_plugins && !empty($update_plugins->response)) {
|
192 |
if (!function_exists('get_plugin_data'))
|
193 |
{
|
194 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
195 |
}
|
196 |
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
try {
|
211 |
$result = $this->api->call('plugin_vulnerability_check', array(), array(
|
212 |
'plugins' => json_encode($vulnerabilities),
|
@@ -216,7 +367,7 @@ class wfUpdateCheck {
|
|
216 |
$vulnerableList = $result['vulnerable'];
|
217 |
foreach ($vulnerableList as $r) {
|
218 |
if ($r['slug'] == $v['slug']) {
|
219 |
-
$v['vulnerable'] = !!$r['vulnerable'];
|
220 |
break;
|
221 |
}
|
222 |
}
|
@@ -300,13 +451,13 @@ class wfUpdateCheck {
|
|
300 |
if ($v['fromVersion'] == 'Unknown' && $v['toVersion'] == 'Unknown') {
|
301 |
return $v['vulnerable'];
|
302 |
}
|
303 |
-
else if ($v['toVersion'] == 'Unknown
|
304 |
return $v['vulnerable'];
|
305 |
}
|
306 |
-
else if ($v['fromVersion'] == 'Unknown' && version_compare($version, $v['toVersion']) < 0) {
|
307 |
return $v['vulnerable'];
|
308 |
}
|
309 |
-
else if (version_compare($version, $v['fromVersion']) >= 0 && version_compare($version, $v['toVersion']) < 0) {
|
310 |
return $v['vulnerable'];
|
311 |
}
|
312 |
}
|
@@ -334,6 +485,20 @@ class wfUpdateCheck {
|
|
334 |
public function getPluginUpdates() {
|
335 |
return $this->plugin_updates;
|
336 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
|
338 |
/**
|
339 |
* @return array
|
5 |
private $needs_core_update = false;
|
6 |
private $core_update_version = 0;
|
7 |
private $plugin_updates = array();
|
8 |
+
private $all_plugins = array();
|
9 |
+
private $plugin_slugs = array();
|
10 |
private $theme_updates = array();
|
11 |
private $api = null;
|
12 |
|
13 |
public function __construct() {
|
14 |
$this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
|
15 |
}
|
16 |
+
|
17 |
+
public function __sleep() {
|
18 |
+
return array('needs_core_update', 'core_update_version', 'plugin_updates', 'all_plugins', 'plugin_slugs', 'theme_updates');
|
19 |
+
}
|
20 |
+
|
21 |
+
public function __wakeup() {
|
22 |
+
$this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
|
23 |
+
}
|
24 |
+
|
25 |
/**
|
26 |
* @return bool
|
27 |
*/
|
98 |
wp_update_plugins();
|
99 |
$update_plugins = get_site_transient('update_plugins');
|
100 |
}
|
101 |
+
|
102 |
+
//Get the full plugin list
|
103 |
+
if (!function_exists('get_plugins')) {
|
104 |
+
require_once(ABSPATH . '/wp-admin/includes/plugin.php');
|
105 |
+
}
|
106 |
+
$installedPlugins = get_plugins();
|
107 |
|
108 |
if ($update_plugins && !empty($update_plugins->response)) {
|
109 |
foreach ($update_plugins->response as $plugin => $vals) {
|
114 |
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
115 |
$valsArray = (array) $vals;
|
116 |
|
117 |
+
$slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
|
118 |
+
if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
|
119 |
+
if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) {
|
120 |
+
$slug = $matches[1];
|
121 |
+
}
|
122 |
+
else if (preg_match('/^([^\/.]+)\.php#x2F;', $pluginFile, $matches)) {
|
123 |
+
$slug = $matches[1];
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
$data = get_plugin_data($pluginFile);
|
128 |
$data['pluginFile'] = $pluginFile;
|
129 |
$data['newVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
|
130 |
+
$data['slug'] = $slug;
|
131 |
$data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null);
|
132 |
|
133 |
//Check the vulnerability database
|
134 |
+
if ($slug !== null && isset($data['Version'])) {
|
135 |
+
$data['vulnerable'] = $this->isPluginVulnerable($slug, $data['Version']);
|
136 |
}
|
137 |
else {
|
138 |
+
$data['vulnerable'] = false;
|
139 |
}
|
140 |
|
141 |
+
if ($slug !== null) {
|
142 |
+
$this->plugin_slugs[] = $slug;
|
143 |
+
$this->all_plugins[$slug] = $data;
|
144 |
+
}
|
145 |
|
146 |
$this->plugin_updates[] = $data;
|
147 |
+
unset($installedPlugins[$plugin]);
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
//We have to grab the slugs from the update response because no built-in function exists to return the true slug from the local files
|
152 |
+
if ($update_plugins && !empty($update_plugins->no_update)) {
|
153 |
+
foreach ($update_plugins->no_update as $plugin => $vals) {
|
154 |
+
if (!function_exists('get_plugin_data')) {
|
155 |
+
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
156 |
+
}
|
157 |
+
|
158 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
159 |
+
$valsArray = (array) $vals;
|
160 |
+
|
161 |
+
$data = get_plugin_data($pluginFile);
|
162 |
+
$data['pluginFile'] = $pluginFile;
|
163 |
+
$data['slug'] = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
|
164 |
+
$data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null);
|
165 |
+
|
166 |
+
//Check the vulnerability database
|
167 |
+
if (isset($valsArray['slug']) && isset($data['Version'])) {
|
168 |
+
$data['vulnerable'] = $this->isPluginVulnerable($valsArray['slug'], $data['Version']);
|
169 |
+
}
|
170 |
+
else {
|
171 |
+
$data['vulnerable'] = false;
|
172 |
+
}
|
173 |
+
|
174 |
+
if (isset($valsArray['slug'])) {
|
175 |
+
$this->plugin_slugs[] = $valsArray['slug'];
|
176 |
+
$this->all_plugins[$valsArray['slug']] = $data;
|
177 |
+
}
|
178 |
+
|
179 |
+
unset($installedPlugins[$plugin]);
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
//Get the remaining plugins (not in the wordpress.org repo for whatever reason)
|
184 |
+
foreach ($installedPlugins as $plugin => $data) {
|
185 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
186 |
+
$data = get_plugin_data($pluginFile);
|
187 |
+
|
188 |
+
$slug = null;
|
189 |
+
if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
|
190 |
+
$slug = $matches[1];
|
191 |
+
}
|
192 |
+
else if (preg_match('/^([^\/.]+)\.php#x2F;', $plugin, $matches)) {
|
193 |
+
$slug = $matches[1];
|
194 |
+
}
|
195 |
+
|
196 |
+
if ($slug !== null) {
|
197 |
+
$this->plugin_slugs[] = $slug;
|
198 |
+
$this->all_plugins[$slug] = $data;
|
199 |
}
|
200 |
}
|
201 |
|
231 |
foreach ($update_themes->response as $theme => $vals) {
|
232 |
foreach ($themes as $name => $themeData) {
|
233 |
if (strtolower($name) == $theme) {
|
234 |
+
$vulnerable = false;
|
235 |
if (isset($themeData['Version'])) {
|
236 |
+
$vulnerable = $this->isThemeVulnerable($theme, $themeData['Version']);
|
237 |
}
|
238 |
|
239 |
$this->theme_updates[] = array(
|
243 |
'Name' => $themeData['Name'],
|
244 |
'name' => $themeData['Name'],
|
245 |
'version' => $themeData['Version'],
|
246 |
+
'vulnerable' => $vulnerable
|
247 |
);
|
248 |
}
|
249 |
}
|
266 |
require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
|
267 |
}
|
268 |
|
269 |
+
$vulnerabilities = array();
|
270 |
+
|
271 |
+
//Get the full plugin list
|
272 |
+
if (!function_exists('get_plugins')) {
|
273 |
+
require_once(ABSPATH . '/wp-admin/includes/plugin.php');
|
274 |
+
}
|
275 |
+
$installedPlugins = get_plugins();
|
276 |
+
|
277 |
+
//Get the info for plugins on wordpress.org
|
278 |
$this->checkPluginUpdates();
|
279 |
$update_plugins = get_site_transient('update_plugins');
|
280 |
+
if ($update_plugins) {
|
|
|
|
|
281 |
if (!function_exists('get_plugin_data'))
|
282 |
{
|
283 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
284 |
}
|
285 |
|
286 |
+
if (!empty($update_plugins->response)) {
|
287 |
+
foreach ($update_plugins->response as $plugin => $vals) {
|
288 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
289 |
+
$valsArray = (array) $vals;
|
290 |
+
$data = get_plugin_data($pluginFile);
|
291 |
+
|
292 |
+
$slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
|
293 |
+
if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
|
294 |
+
if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
|
295 |
+
$slug = $matches[1];
|
296 |
+
}
|
297 |
+
else if (preg_match('/^([^\/.]+)\.php#x2F;', $plugin, $matches)) {
|
298 |
+
$slug = $matches[1];
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
$record = array();
|
303 |
+
$record['slug'] = $slug;
|
304 |
+
$record['toVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
|
305 |
+
$record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown');
|
306 |
+
$record['vulnerable'] = false;
|
307 |
+
$vulnerabilities[] = $record;
|
308 |
+
|
309 |
+
unset($installedPlugins[$plugin]);
|
310 |
+
}
|
311 |
+
}
|
312 |
+
|
313 |
+
if (!empty($update_plugins->no_update)) {
|
314 |
+
foreach ($update_plugins->no_update as $plugin => $vals) {
|
315 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
316 |
+
$valsArray = (array) $vals;
|
317 |
+
$data = get_plugin_data($pluginFile);
|
318 |
+
|
319 |
+
$slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
|
320 |
+
if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
|
321 |
+
if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
|
322 |
+
$slug = $matches[1];
|
323 |
+
}
|
324 |
+
else if (preg_match('/^([^\/.]+)\.php#x2F;', $plugin, $matches)) {
|
325 |
+
$slug = $matches[1];
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
$record = array();
|
330 |
+
$record['slug'] = $slug;
|
331 |
+
$record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown');
|
332 |
+
$record['vulnerable'] = false;
|
333 |
+
$vulnerabilities[] = $record;
|
334 |
+
|
335 |
+
unset($installedPlugins[$plugin]);
|
336 |
+
}
|
337 |
}
|
338 |
+
}
|
339 |
+
|
340 |
+
//Get the remaining plugins (not in the wordpress.org repo for whatever reason)
|
341 |
+
foreach ($installedPlugins as $plugin => $data) {
|
342 |
+
$pluginFile = wfUtils::getPluginBaseDir() . $plugin;
|
343 |
+
$data = get_plugin_data($pluginFile);
|
344 |