Wordfence Security – Firewall & Malware Scan - Version 7.7.0

Version Description

  • October 3, 2022 =
  • Improvement: Added configurable scan resume functionality to prevent scan failures on sites with intermittent connectivity issues
  • Improvement: Added new scan result for vulnerabilities found in plugins that do not have patched versions available via WordPress.org
  • Improvement: Implemented stand-alone MMDB reader for IP address lookups to prevent plugin conflicts and support additional PHP versions
  • Improvement: Added option to disable looking up IP address locations via the Wordfence API
  • Improvement: Prevented successful logins from resetting brute force counters
  • Improvement: Clarified IPv6 diagnostic
  • Improvement: Included maximum number of days in live traffic option text
  • Fix: Made timezones consistent on firewall page
  • Fix: Added "Use only IPv4 to start scans" option to search
  • Fix: Prevented deprecation notices on PHP 8.1 when emailing the activity log
  • Fix: Prevented warning on PHP 8 related to process owner diagnostic
  • Fix: Prevented PHP Code Sniffer false positive related to T_BAD_CHARACTER
  • Fix: Removed unsupported beta feed option
Download this release

Release Info

Developer wfalexk
Plugin Icon 128x128 Wordfence Security – Firewall & Malware Scan
Version 7.7.0
Comparing to
See all releases

Code changes from version 7.6.2 to 7.7.0

Files changed (185) hide show
  1. css/{activity-report-widget.1663593635.css → activity-report-widget.1664811036.css} +0 -0
  2. css/{diff.1663593635.css → diff.1664811036.css} +0 -0
  3. css/{dt_table.1663593635.css → dt_table.1664811036.css} +0 -0
  4. css/{fullLog.1663593635.css → fullLog.1664811036.css} +0 -0
  5. css/{iptraf.1663593635.css → iptraf.1664811036.css} +0 -0
  6. css/{jquery-ui-timepicker-addon.1663593635.css → jquery-ui-timepicker-addon.1664811036.css} +0 -0
  7. css/{jquery-ui.min.1663593635.css → jquery-ui.min.1664811036.css} +0 -0
  8. css/{jquery-ui.structure.min.1663593635.css → jquery-ui.structure.min.1664811036.css} +0 -0
  9. css/{jquery-ui.theme.min.1663593635.css → jquery-ui.theme.min.1664811036.css} +0 -0
  10. css/license/{care-global.1663593635.css → care-global.1664811036.css} +0 -0
  11. css/license/{care.1663593635.css → care.1664811036.css} +0 -0
  12. css/license/{free-global.1663593635.css → free-global.1664811036.css} +0 -0
  13. css/license/{free.1663593635.css → free.1664811036.css} +0 -0
  14. css/license/{premium-global.1663593635.css → premium-global.1664811036.css} +0 -0
  15. css/license/{premium.1663593635.css → premium.1664811036.css} +0 -0
  16. css/license/{response-global.1663593635.css → response-global.1664811036.css} +0 -0
  17. css/license/{response-variables.1663593635.css → response-variables.1664811036.css} +0 -0
  18. css/license/{response.1663593635.css → response.1664811036.css} +0 -0
  19. css/{main.1663593635.css → main.1664811036.css} +0 -0
  20. css/{phpinfo.1663593635.css → phpinfo.1664811036.css} +0 -0
  21. css/{wf-adminbar.1663593635.css → wf-adminbar.1664811036.css} +0 -0
  22. css/{wf-colorbox.1663593635.css → wf-colorbox.1664811036.css} +0 -0
  23. css/{wf-font-awesome.1663593635.css → wf-font-awesome.1664811036.css} +0 -0
  24. css/{wf-global.1663593635.css → wf-global.1664811036.css} +0 -0
  25. css/{wf-ionicons.1663593635.css → wf-ionicons.1664811036.css} +0 -0
  26. css/{wf-onboarding.1663593635.css → wf-onboarding.1664811036.css} +0 -0
  27. css/{wf-roboto-font.1663593635.css → wf-roboto-font.1664811036.css} +0 -0
  28. css/{wfselect2.min.1663593635.css → wfselect2.min.1664811036.css} +0 -0
  29. css/{wordfenceBox.1663593635.css → wordfenceBox.1664811036.css} +0 -0
  30. js/{Chart.bundle.min.1663593635.js → Chart.bundle.min.1664811036.js} +0 -0
  31. js/{admin.1663593635.js → admin.1664811036.js} +0 -0
  32. js/{admin.ajaxWatcher.1663593635.js → admin.ajaxWatcher.1664811036.js} +0 -0
  33. js/{admin.liveTraffic.1663593635.js → admin.liveTraffic.1664811036.js} +0 -0
  34. js/{date.1663593635.js → date.1664811036.js} +0 -0
  35. js/{jquery-ui-timepicker-addon.1663593635.js → jquery-ui-timepicker-addon.1664811036.js} +0 -0
  36. js/{jquery.colorbox-min.1663593635.js → jquery.colorbox-min.1664811036.js} +0 -0
  37. js/{jquery.colorbox.1663593635.js → jquery.colorbox.1664811036.js} +0 -0
  38. js/{jquery.dataTables.min.1663593635.js → jquery.dataTables.min.1664811036.js} +0 -0
  39. js/{jquery.qrcode.min.1663593635.js → jquery.qrcode.min.1664811036.js} +0 -0
  40. js/{jquery.tmpl.min.1663593635.js → jquery.tmpl.min.1664811036.js} +0 -0
  41. js/{jquery.tools.min.1663593635.js → jquery.tools.min.1664811036.js} +0 -0
  42. js/{knockout-3.5.1.1663593635.js → knockout-3.5.1.1664811036.js} +0 -0
  43. js/{wfdashboard.1663593635.js → wfdashboard.1664811036.js} +0 -0
  44. js/{wfdropdown.1663593635.js → wfdropdown.1664811036.js} +0 -0
  45. js/{wfglobal.1663593635.js → wfglobal.1664811036.js} +0 -0
  46. js/{wfi18n.1663593635.js → wfi18n.1664811036.js} +0 -0
  47. js/{wfpopover.1663593635.js → wfpopover.1664811036.js} +0 -0
  48. js/{wfselect2.min.1663593635.js → wfselect2.min.1664811036.js} +0 -0
  49. languages/wordfence.po +1145 -1120
  50. lib/email_newIssues.php +3 -9
  51. lib/menu_options.php +4 -1
  52. lib/menu_scanner.php +1 -22
  53. lib/menu_tools_diagnostic.php +1 -13
  54. lib/wfAPI.php +1 -2
  55. lib/wfConfig.php +11 -12
  56. lib/wfDiagnostic.php +2 -2
  57. lib/wfIpLocation.php +65 -0
  58. lib/wfIpLocator.php +110 -0
  59. lib/wfScan.php +5 -1
  60. lib/wfScanEngine.php +56 -30
  61. lib/wfScanMonitor.php +131 -0
  62. lib/wfSupportController.php +12 -0
  63. lib/wfUpdateCheck.php +106 -206
  64. lib/wfUtils.php +77 -86
  65. lib/wordfenceClass.php +64 -60
  66. lib/wordfenceConstants.php +1 -1
  67. lib/wordfenceScanner.php +6 -12
  68. models/common/wfGeoIP2.php +0 -104
  69. modules/login-security/css/{admin-global.1663593635.css → admin-global.1664811036.css} +0 -0
  70. modules/login-security/css/{admin.1663593635.css → admin.1664811036.css} +0 -0
  71. modules/login-security/css/{colorbox.1663593635.css → colorbox.1664811036.css} +0 -0
  72. modules/login-security/css/{font-awesome.1663593635.css → font-awesome.1664811036.css} +0 -0
  73. modules/login-security/css/{ionicons.1663593635.css → ionicons.1664811036.css} +0 -0
  74. modules/login-security/css/{jquery-ui.min.1663593635.css → jquery-ui.min.1664811036.css} +0 -0
  75. modules/login-security/css/{jquery-ui.structure.min.1663593635.css → jquery-ui.structure.min.1664811036.css} +0 -0
  76. modules/login-security/css/{jquery-ui.theme.min.1663593635.css → jquery-ui.theme.min.1664811036.css} +0 -0
  77. modules/login-security/css/{login.1663593635.css → login.1664811036.css} +0 -0
  78. modules/login-security/js/{admin-global.1663593635.js → admin-global.1664811036.js} +0 -0
  79. modules/login-security/js/{admin.1663593635.js → admin.1664811036.js} +0 -0
  80. modules/login-security/js/{jquery.colorbox.1663593635.js → jquery.colorbox.1664811036.js} +0 -0
  81. modules/login-security/js/{jquery.colorbox.min.1663593635.js → jquery.colorbox.min.1664811036.js} +0 -0
  82. modules/login-security/js/{jquery.qrcode.min.1663593635.js → jquery.qrcode.min.1664811036.js} +0 -0
  83. modules/login-security/js/{jquery.tmpl.min.1663593635.js → jquery.tmpl.min.1664811036.js} +0 -0
  84. modules/login-security/js/{login.1663593635.js → login.1664811036.js} +0 -0
  85. modules/login-security/wordfence-login-security.php +2 -2
  86. readme.txt +16 -1
  87. vendor/autoload.php +2 -2
  88. vendor/composer/ClassLoader.php +40 -4
  89. vendor/composer/InstalledVersions.php +337 -0
  90. vendor/composer/autoload_classmap.php +1 -0
  91. vendor/composer/autoload_psr4.php +1 -5
  92. vendor/composer/autoload_real.php +9 -6
  93. vendor/composer/autoload_static.php +12 -33
  94. vendor/composer/ca-bundle/LICENSE +0 -19
  95. vendor/composer/ca-bundle/res/cacert.pem +0 -3401
  96. vendor/composer/ca-bundle/src/CaBundle.php +0 -308
  97. vendor/composer/installed.json +63 -237
  98. vendor/composer/installed.php +41 -0
  99. vendor/geoip2/geoip2/.gitmodules +0 -3
  100. vendor/geoip2/geoip2/.php_cs +0 -35
  101. vendor/geoip2/geoip2/LICENSE +0 -202
  102. vendor/geoip2/geoip2/src/Database/Reader.php +0 -283
  103. vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php +0 -10
  104. vendor/geoip2/geoip2/src/Exception/AuthenticationException.php +0 -10
  105. vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php +0 -10
  106. vendor/geoip2/geoip2/src/Exception/HttpException.php +0 -24
  107. vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php +0 -26
  108. vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php +0 -10
  109. vendor/geoip2/geoip2/src/Model/AbstractModel.php +0 -67
  110. vendor/geoip2/geoip2/src/Model/AnonymousIp.php +0 -46
  111. vendor/geoip2/geoip2/src/Model/Asn.php +0 -35
  112. vendor/geoip2/geoip2/src/Model/City.php +0 -133
  113. vendor/geoip2/geoip2/src/Model/ConnectionType.php +0 -31
  114. vendor/geoip2/geoip2/src/Model/Country.php +0 -71
  115. vendor/geoip2/geoip2/src/Model/Domain.php +0 -31
  116. vendor/geoip2/geoip2/src/Model/Enterprise.php +0 -47
  117. vendor/geoip2/geoip2/src/Model/Insights.php +0 -47
  118. vendor/geoip2/geoip2/src/Model/Isp.php +0 -44
  119. vendor/geoip2/geoip2/src/ProviderInterface.php +0 -20
  120. vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php +0 -66
  121. vendor/geoip2/geoip2/src/Record/AbstractRecord.php +0 -61
  122. vendor/geoip2/geoip2/src/Record/City.php +0 -29
  123. vendor/geoip2/geoip2/src/Record/Continent.php +0 -32
  124. vendor/geoip2/geoip2/src/Record/Country.php +0 -41
  125. vendor/geoip2/geoip2/src/Record/Location.php +0 -52
  126. vendor/geoip2/geoip2/src/Record/MaxMind.php +0 -19
  127. vendor/geoip2/geoip2/src/Record/Postal.php +0 -26
  128. vendor/geoip2/geoip2/src/Record/RepresentedCountry.php +0 -39
  129. vendor/geoip2/geoip2/src/Record/Subdivision.php +0 -40
  130. vendor/geoip2/geoip2/src/Record/Traits.php +0 -114
  131. vendor/geoip2/geoip2/src/WebService/Client.php +0 -239
  132. vendor/maxmind-db/reader/LICENSE +0 -202
  133. vendor/maxmind-db/reader/autoload.php +0 -45
  134. vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php +0 -309
  135. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php +0 -341
  136. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php +0 -10
  137. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php +0 -69
  138. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php +0 -26
  139. vendor/maxmind/web-service-common/LICENSE +0 -202
  140. vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php +0 -10
  141. vendor/maxmind/web-service-common/src/Exception/HttpException.php +0 -40
  142. vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php +0 -10
  143. vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php +0 -12
  144. vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php +0 -37
  145. vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php +0 -7
  146. vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php +0 -10
  147. vendor/maxmind/web-service-common/src/Exception/WebServiceException.php +0 -10
  148. vendor/maxmind/web-service-common/src/WebService/Client.php +0 -472
  149. vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php +0 -110
  150. vendor/maxmind/web-service-common/src/WebService/Http/Request.php +0 -29
  151. vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php +0 -26
  152. vendor/wordfence/mmdb-reader/src/ControlByte.php +118 -0
  153. vendor/wordfence/mmdb-reader/src/DataFieldParser.php +167 -0
  154. vendor/wordfence/mmdb-reader/src/Database.php +173 -0
  155. vendor/wordfence/mmdb-reader/src/DatabaseMetadata.php +75 -0
  156. vendor/wordfence/mmdb-reader/src/Endianness.php +39 -0
  157. vendor/wordfence/mmdb-reader/src/Exception/FormatException.php +6 -0
  158. vendor/wordfence/mmdb-reader/src/Exception/IncompatibleIpVersionException.php +6 -0
  159. vendor/wordfence/mmdb-reader/src/Exception/IncompatibleVersionException.php +7 -0
  160. vendor/wordfence/mmdb-reader/src/Exception/InvalidArgumentException.php +6 -0
  161. vendor/wordfence/mmdb-reader/src/Exception/InvalidIpAddressException.php +6 -0
  162. vendor/wordfence/mmdb-reader/src/Exception/InvalidOperationException.php +7 -0
  163. vendor/wordfence/mmdb-reader/src/Exception/IoException.php +6 -0
  164. vendor/wordfence/mmdb-reader/src/Exception/MmdbException.php +18 -0
  165. vendor/wordfence/mmdb-reader/src/Exception/MmdbThrowable.php +8 -0
  166. vendor/wordfence/mmdb-reader/src/Exception/RuntimeMmdbException.php +18 -0
  167. vendor/wordfence/mmdb-reader/src/IntegerParser.php +16 -0
  168. vendor/wordfence/mmdb-reader/src/Io/FileHandle.php +94 -0
  169. vendor/wordfence/mmdb-reader/src/IpAddress.php +99 -0
  170. vendor/wordfence/mmdb-reader/src/IpAddressInterface.php +27 -0
  171. vendor/wordfence/mmdb-reader/src/Node.php +32 -0
  172. vendor/wordfence/mmdb-reader/src/NodeReader.php +78 -0
  173. vendor/wordfence/mmdb-reader/src/NodeRecord.php +50 -0
  174. vendor/wordfence/wf-waf/src/lib/rules.php +1 -1
  175. vendor/wordfence/wf-waf/src/lib/storage/mysql.php +0 -1
  176. vendor/wordfence/wf-waf/src/lib/waf.php +0 -3
  177. views/dashboard/options-group-general.php +13 -0
  178. views/scanner/issue-base.php +1 -1
  179. views/scanner/issue-wfPluginVulnerable.php +0 -3
  180. views/scanner/options-group-advanced.php +15 -0
  181. views/scanner/scan-failed.php +6 -1
  182. views/tools/options-group-live-traffic.php +1 -1
  183. waf/wfWAFGeoIP2.php +0 -70
  184. waf/wfWAFIPBlocksController.php +7 -16
  185. wordfence.php +3 -3
css/{activity-report-widget.1663593635.css → activity-report-widget.1664811036.css} RENAMED
File without changes
css/{diff.1663593635.css → diff.1664811036.css} RENAMED
File without changes
css/{dt_table.1663593635.css → dt_table.1664811036.css} RENAMED
File without changes
css/{fullLog.1663593635.css → fullLog.1664811036.css} RENAMED
File without changes
css/{iptraf.1663593635.css → iptraf.1664811036.css} RENAMED
File without changes
css/{jquery-ui-timepicker-addon.1663593635.css → jquery-ui-timepicker-addon.1664811036.css} RENAMED
File without changes
css/{jquery-ui.min.1663593635.css → jquery-ui.min.1664811036.css} RENAMED
File without changes
css/{jquery-ui.structure.min.1663593635.css → jquery-ui.structure.min.1664811036.css} RENAMED
File without changes
css/{jquery-ui.theme.min.1663593635.css → jquery-ui.theme.min.1664811036.css} RENAMED
File without changes
css/license/{care-global.1663593635.css → care-global.1664811036.css} RENAMED
File without changes
css/license/{care.1663593635.css → care.1664811036.css} RENAMED
File without changes
css/license/{free-global.1663593635.css → free-global.1664811036.css} RENAMED
File without changes
css/license/{free.1663593635.css → free.1664811036.css} RENAMED
File without changes
css/license/{premium-global.1663593635.css → premium-global.1664811036.css} RENAMED
File without changes
css/license/{premium.1663593635.css → premium.1664811036.css} RENAMED
File without changes
css/license/{response-global.1663593635.css → response-global.1664811036.css} RENAMED
File without changes
css/license/{response-variables.1663593635.css → response-variables.1664811036.css} RENAMED
File without changes
css/license/{response.1663593635.css → response.1664811036.css} RENAMED
File without changes
css/{main.1663593635.css → main.1664811036.css} RENAMED
File without changes
css/{phpinfo.1663593635.css → phpinfo.1664811036.css} RENAMED
File without changes
css/{wf-adminbar.1663593635.css → wf-adminbar.1664811036.css} RENAMED
File without changes
css/{wf-colorbox.1663593635.css → wf-colorbox.1664811036.css} RENAMED
File without changes
css/{wf-font-awesome.1663593635.css → wf-font-awesome.1664811036.css} RENAMED
File without changes
css/{wf-global.1663593635.css → wf-global.1664811036.css} RENAMED
File without changes
css/{wf-ionicons.1663593635.css → wf-ionicons.1664811036.css} RENAMED
File without changes
css/{wf-onboarding.1663593635.css → wf-onboarding.1664811036.css} RENAMED
File without changes
css/{wf-roboto-font.1663593635.css → wf-roboto-font.1664811036.css} RENAMED
File without changes
css/{wfselect2.min.1663593635.css → wfselect2.min.1664811036.css} RENAMED
File without changes
css/{wordfenceBox.1663593635.css → wordfenceBox.1664811036.css} RENAMED
File without changes
js/{Chart.bundle.min.1663593635.js → Chart.bundle.min.1664811036.js} RENAMED
File without changes
js/{admin.1663593635.js → admin.1664811036.js} RENAMED
File without changes
js/{admin.ajaxWatcher.1663593635.js → admin.ajaxWatcher.1664811036.js} RENAMED
File without changes
js/{admin.liveTraffic.1663593635.js → admin.liveTraffic.1664811036.js} RENAMED
File without changes
js/{date.1663593635.js → date.1664811036.js} RENAMED
File without changes
js/{jquery-ui-timepicker-addon.1663593635.js → jquery-ui-timepicker-addon.1664811036.js} RENAMED
File without changes
js/{jquery.colorbox-min.1663593635.js → jquery.colorbox-min.1664811036.js} RENAMED
File without changes
js/{jquery.colorbox.1663593635.js → jquery.colorbox.1664811036.js} RENAMED
File without changes
js/{jquery.dataTables.min.1663593635.js → jquery.dataTables.min.1664811036.js} RENAMED
File without changes
js/{jquery.qrcode.min.1663593635.js → jquery.qrcode.min.1664811036.js} RENAMED
File without changes
js/{jquery.tmpl.min.1663593635.js → jquery.tmpl.min.1664811036.js} RENAMED
File without changes
js/{jquery.tools.min.1663593635.js → jquery.tools.min.1664811036.js} RENAMED
File without changes
js/{knockout-3.5.1.1663593635.js → knockout-3.5.1.1664811036.js} RENAMED
File without changes
js/{wfdashboard.1663593635.js → wfdashboard.1664811036.js} RENAMED
File without changes
js/{wfdropdown.1663593635.js → wfdropdown.1664811036.js} RENAMED
File without changes
js/{wfglobal.1663593635.js → wfglobal.1664811036.js} RENAMED
File without changes
js/{wfi18n.1663593635.js → wfi18n.1664811036.js} RENAMED
File without changes
js/{wfpopover.1663593635.js → wfpopover.1664811036.js} RENAMED
File without changes
js/{wfselect2.min.1663593635.js → wfselect2.min.1664811036.js} RENAMED
File without changes
languages/wordfence.po CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Wordfence Security plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Wordfence Security 7.6.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-09-19T09:19:29-04:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: wordfence\n"
@@ -57,7 +57,7 @@ msgstr ""
57
  #: lib/dashboard/widget_content_logins.php:7
58
  #: lib/dashboard/widget_ips.php:115
59
  #: lib/dashboard/widget_logins.php:96
60
- #: lib/wordfenceClass.php:6194
61
  #: views/reports/activity-report-email-inline.php:146
62
  #: views/reports/activity-report.php:16
63
  #: views/waf/option-whitelist.php:110
@@ -68,7 +68,7 @@ msgstr ""
68
 
69
  #: lib/dashboard/widget_content_logins.php:6
70
  #: lib/dashboard/widget_logins.php:95
71
- #: lib/wordfenceClass.php:6269
72
  #: views/reports/activity-report-email-inline.php:256
73
  #: views/reports/activity-report.php:106
74
  msgid "Username"
@@ -133,7 +133,7 @@ msgstr ""
133
  #. translators: WordPress username.
134
  #: lib/dashboard/widget_ips.php:96
135
  #: lib/dashboard/widget_logins.php:77
136
- #: lib/wordfenceClass.php:6140
137
  msgid "An error occurred"
138
  msgstr ""
139
 
@@ -235,51 +235,51 @@ msgstr ""
235
  #: lib/menu_wordfence_central.php:59
236
  #: lib/wf503.php:390
237
  #: lib/wfScanEngine.php:283
238
- #: lib/wfScanEngine.php:616
239
- #: lib/wfScanEngine.php:629
240
- #: lib/wfScanEngine.php:701
241
- #: lib/wfScanEngine.php:724
242
- #: lib/wfScanEngine.php:799
243
- #: lib/wfScanEngine.php:1029
244
- #: lib/wfScanEngine.php:1030
245
- #: lib/wfScanEngine.php:1171
246
- #: lib/wfScanEngine.php:1308
247
- #: lib/wfScanEngine.php:1451
248
- #: lib/wfScanEngine.php:1815
249
- #: lib/wfScanEngine.php:2061
250
- #: lib/wfScanEngine.php:2100
251
- #: lib/wfScanEngine.php:2288
252
- #: lib/wfScanEngine.php:2330
253
  #: lib/wfVersionCheckController.php:68
254
  #: lib/wfVersionCheckController.php:91
255
  #: lib/wfVersionCheckController.php:167
256
  #: lib/wfVersionCheckController.php:186
257
- #: lib/wordfenceClass.php:1398
258
- #: lib/wordfenceClass.php:2775
259
- #: lib/wordfenceClass.php:2911
260
- #: lib/wordfenceClass.php:3066
261
- #: lib/wordfenceClass.php:3102
262
- #: lib/wordfenceClass.php:3630
 
263
  #: lib/wordfenceClass.php:4961
264
- #: lib/wordfenceClass.php:4969
265
- #: lib/wordfenceClass.php:4975
266
- #: lib/wordfenceClass.php:4988
267
- #: lib/wordfenceClass.php:5000
268
- #: lib/wordfenceClass.php:5008
269
- #: lib/wordfenceClass.php:6329
270
- #: lib/wordfenceClass.php:6351
271
- #: lib/wordfenceClass.php:6370
272
- #: lib/wordfenceClass.php:6376
273
- #: lib/wordfenceClass.php:6423
274
- #: lib/wordfenceClass.php:8075
275
- #: lib/wordfenceClass.php:8099
276
- #: lib/wordfenceClass.php:8143
277
- #: lib/wordfenceClass.php:8182
278
- #: lib/wordfenceClass.php:8207
279
- #: lib/wordfenceClass.php:8238
280
- #: lib/wordfenceClass.php:8267
281
- #: lib/wordfenceClass.php:8313
282
- #: lib/wordfenceClass.php:9035
283
  #: lib/wordfenceHash.php:521
284
  #: lib/wordfenceHash.php:568
285
  #: lib/wordfenceHash.php:642
@@ -351,7 +351,6 @@ msgstr ""
351
  #: views/scanner/issue-wfPluginUpgrade.php:20
352
  #: views/scanner/issue-wfPluginVulnerable.php:17
353
  #: views/scanner/issue-wfPluginVulnerable.php:18
354
- #: views/scanner/issue-wfPluginVulnerable.php:19
355
  #: views/scanner/issue-wfThemeUpgrade.php:18
356
  #: views/scanner/issue-wfThemeUpgrade.php:19
357
  #: views/scanner/issue-wfUpgrade.php:17
@@ -426,7 +425,7 @@ msgid "Last Updated: %s ago"
426
  msgstr ""
427
 
428
  #: lib/dashboard/widget_notifications.php:8
429
- #: lib/wordfenceClass.php:6809
430
  msgid "Notifications"
431
  msgstr ""
432
 
@@ -496,16 +495,16 @@ msgstr ""
496
 
497
  #. translators: Support URL.
498
  #: lib/dashboard/widget_notifications.php:134
499
- #: lib/menu_scanner.php:217
500
- #: lib/menu_scanner.php:228
501
- #: lib/menu_tools_diagnostic.php:917
502
  #: lib/menu_tools_twoFactor.php:235
503
  #: lib/menu_tools_twoFactor.php:273
504
- #: lib/wordfenceClass.php:8100
505
- #: lib/wordfenceClass.php:8144
506
- #: lib/wordfenceClass.php:8208
507
- #: lib/wordfenceClass.php:8268
508
- #: lib/wordfenceClass.php:8314
509
  #: views/blocking/block-list.php:501
510
  #: views/blocking/blocking-create.php:212
511
  #: views/blocking/blocking-create.php:529
@@ -646,50 +645,41 @@ msgstr ""
646
  msgid "HIGH SENSITIVITY scanning is enabled, it may produce false positives"
647
  msgstr ""
648
 
649
- #: lib/email_newIssues.php:48
650
- #: lib/menu_scanner.php:119
651
- msgid "Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites."
652
- msgstr ""
653
-
654
- #: lib/email_newIssues.php:48
655
- msgid "The Beta option can be turned off at the bottom of the Diagnostics page."
656
- msgstr ""
657
-
658
  #. translators: 1. URL to WordPress admin panel. 2. URL to WordPress admin panel. 3. URL to Wordfence support page. 4. URL to Wordfence support page.
659
- #: lib/email_newIssues.php:56
660
  msgid "The scan was terminated early because it reached the time limit for scans. If you would like to allow your scans to run longer, you can customize the limit on the options page: <a href=\"%1$s\">%2$s</a> or read more about scan options to improve scan speed here: <a href=\"%3$s\">%4$s</a>"
661
  msgstr ""
662
 
663
- #: lib/email_newIssues.php:62
664
  msgid "Critical Problems:"
665
  msgstr ""
666
 
667
- #: lib/email_newIssues.php:63
668
  msgid "High Severity Problems:"
669
  msgstr ""
670
 
671
- #: lib/email_newIssues.php:64
672
  msgid "Medium Severity Problems:"
673
  msgstr ""
674
 
675
- #: lib/email_newIssues.php:65
676
  msgid "Low Severity Problems:"
677
  msgstr ""
678
 
679
- #: lib/email_newIssues.php:84
680
  msgid "Plugin contains an unpatched security vulnerability."
681
  msgstr ""
682
 
683
- #: lib/email_newIssues.php:86
684
- #: lib/email_newIssues.php:108
685
  #: views/scanner/issue-wfPluginAbandoned.php:20
686
  #: views/scanner/issue-wfPluginAbandoned.php:37
687
  #: views/scanner/issue-wfPluginRemoved.php:18
688
  #: views/scanner/issue-wfPluginRemoved.php:32
689
  #: views/scanner/issue-wfPluginUpgrade.php:20
690
  #: views/scanner/issue-wfPluginUpgrade.php:37
691
- #: views/scanner/issue-wfPluginVulnerable.php:19
692
- #: views/scanner/issue-wfPluginVulnerable.php:34
693
  #: views/scanner/issue-wfThemeUpgrade.php:19
694
  #: views/scanner/issue-wfThemeUpgrade.php:35
695
  #: views/scanner/issue-wfUpgrade.php:17
@@ -697,24 +687,24 @@ msgstr ""
697
  msgid "Vulnerability Information"
698
  msgstr ""
699
 
700
- #: lib/email_newIssues.php:92
701
  msgid "The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed."
702
  msgstr ""
703
 
704
- #: lib/email_newIssues.php:95
705
  msgid "Firewall issues may be caused by file permission changes or other technical problems."
706
  msgstr ""
707
 
708
- #: lib/email_newIssues.php:95
709
  msgid "More Details and Instructions"
710
  msgstr ""
711
 
712
- #: lib/email_newIssues.php:98
713
  msgid "Scanning additional paths is optional and is not always necessary."
714
  msgstr ""
715
 
716
  #. translators: 1. WordPress version. 2. WordPress version.
717
- #: lib/email_newIssues.php:98
718
  #: lib/email_unlockRequest.php:14
719
  #: lib/menu_dashboard.php:118
720
  #: lib/menu_dashboard.php:487
@@ -723,7 +713,7 @@ msgstr ""
723
  #: lib/wfVersionCheckController.php:91
724
  #: lib/wfVersionCheckController.php:167
725
  #: lib/wfVersionCheckController.php:186
726
- #: lib/wordfenceClass.php:6456
727
  #: views/blocking/blocking-create.php:528
728
  #: views/blocking/blocking-status.php:27
729
  #: views/dashboard/options-group-dashboard.php:107
@@ -740,7 +730,7 @@ msgstr ""
740
  msgid "Learn More"
741
  msgstr ""
742
 
743
- #: lib/email_newIssues.php:106
744
  #: views/scanner/issue-wfPluginUpgrade.php:16
745
  #: views/scanner/issue-wfPluginUpgrade.php:33
746
  #: views/scanner/issue-wfThemeUpgrade.php:16
@@ -750,62 +740,62 @@ msgstr ""
750
  msgid "Update includes security-related fixes."
751
  msgstr ""
752
 
753
- #: lib/email_newIssues.php:126
754
  msgid "The malicious URL matched"
755
  msgstr ""
756
 
757
  #. translators: Number of scan results
758
- #: lib/email_newIssues.php:135
759
  msgid "%d existing issue was found again and is not shown."
760
  msgid_plural "%d existing issues were found again and are not shown."
761
  msgstr[0] ""
762
  msgstr[1] ""
763
 
764
  #. translators: Number of scan results
765
- #: lib/email_newIssues.php:138
766
  msgid "%d issue was omitted from this email due to length limits."
767
  msgid_plural "%d issues were omitted from this email due to length limits."
768
  msgstr[0] ""
769
  msgstr[1] ""
770
 
771
  #. translators: Number of scan results
772
- #: lib/email_newIssues.php:139
773
  msgid "View every issue:"
774
  msgstr ""
775
 
776
- #: lib/email_newIssues.php:148
777
  msgid "NOTE: You are using the free version of Wordfence. Upgrade today:"
778
  msgstr ""
779
 
780
- #: lib/email_newIssues.php:151
781
  msgid "Receive real-time Firewall and Scan engine rule updates for protection as threats emerge"
782
  msgstr ""
783
 
784
- #: lib/email_newIssues.php:152
785
  msgid "Real-time IP Blocklist blocks the most malicious IPs from accessing your site"
786
  msgstr ""
787
 
788
- #: lib/email_newIssues.php:153
789
  msgid "Country blocking"
790
  msgstr ""
791
 
792
- #: lib/email_newIssues.php:154
793
  msgid "IP reputation monitoring"
794
  msgstr ""
795
 
796
- #: lib/email_newIssues.php:155
797
  msgid "Schedule scans to run more frequently and at optimal times"
798
  msgstr ""
799
 
800
- #: lib/email_newIssues.php:156
801
  msgid "Access to Premium Support"
802
  msgstr ""
803
 
804
- #: lib/email_newIssues.php:157
805
  msgid "Discounts for multi-year and multi-license purchases"
806
  msgstr ""
807
 
808
- #: lib/email_newIssues.php:160
809
  msgid "Click here to upgrade to Wordfence Premium:"
810
  msgstr ""
811
 
@@ -926,7 +916,7 @@ msgid "Live Updates Paused &mdash; Click inside window to resume"
926
  msgstr ""
927
 
928
  #: lib/menu_dashboard.php:24
929
- #: lib/wordfenceClass.php:6694
930
  msgid "Wordfence Dashboard"
931
  msgstr ""
932
 
@@ -938,7 +928,7 @@ msgstr ""
938
  #: lib/menu_dashboard_options.php:98
939
  #: lib/menu_firewall.php:20
940
  #: lib/menu_firewall.php:30
941
- #: lib/wordfenceClass.php:6698
942
  #: models/page/wfPage.php:105
943
  msgid "Firewall"
944
  msgstr ""
@@ -974,8 +964,8 @@ msgstr ""
974
  #: lib/menu_dashboard.php:71
975
  #: lib/menu_dashboard_options.php:115
976
  #: lib/menu_scanner.php:31
977
- #: lib/menu_scanner.php:305
978
- #: lib/wordfenceClass.php:6705
979
  #: models/page/wfPage.php:113
980
  msgid "Scan"
981
  msgstr ""
@@ -993,7 +983,7 @@ msgstr ""
993
 
994
  #: lib/menu_dashboard.php:75
995
  #: lib/menu_dashboard_options.php:119
996
- #: lib/menu_options.php:87
997
  #: lib/menu_scanner.php:65
998
  #: lib/menu_scanner_options.php:120
999
  #: views/dashboard/options-group-dashboard.php:97
@@ -1058,7 +1048,7 @@ msgstr ""
1058
  #: lib/menu_scanner.php:80
1059
  #: lib/menu_support.php:55
1060
  #: lib/menu_tools_twoFactor.php:51
1061
- #: lib/wordfenceClass.php:6734
1062
  #: views/blocking/blocking-create.php:179
1063
  #: views/blocking/blocking-status.php:23
1064
  #: views/blocking/blocking-status.php:27
@@ -1152,7 +1142,7 @@ msgid "Learn about Wordfence Response"
1152
  msgstr ""
1153
 
1154
  #: lib/menu_dashboard.php:229
1155
- #: lib/wordfenceClass.php:6709
1156
  msgid "Tools"
1157
  msgstr ""
1158
 
@@ -1162,15 +1152,15 @@ msgstr ""
1162
 
1163
  #: lib/menu_dashboard.php:240
1164
  #: lib/menu_firewall_waf.php:157
1165
- #: lib/menu_scanner.php:139
1166
  #: lib/menu_support.php:19
1167
- #: lib/wordfenceClass.php:6722
1168
  msgid "Help"
1169
  msgstr ""
1170
 
1171
  #: lib/menu_dashboard.php:241
1172
  #: lib/menu_firewall_waf.php:158
1173
- #: lib/menu_scanner.php:140
1174
  msgid "Find the documentation and help you need"
1175
  msgstr ""
1176
 
@@ -1202,9 +1192,9 @@ msgstr ""
1202
  #: lib/menu_firewall_waf.php:255
1203
  #: lib/menu_firewall_waf.php:272
1204
  #: lib/menu_firewall_waf.php:289
1205
- #: lib/menu_scanner.php:313
1206
- #: lib/menu_scanner.php:330
1207
- #: lib/menu_scanner.php:382
1208
  #: views/tours/login-security.php:37
1209
  #: views/tours/login-security.php:53
1210
  msgid "Next"
@@ -1229,9 +1219,9 @@ msgstr ""
1229
  #: lib/menu_firewall_waf.php:271
1230
  #: lib/menu_firewall_waf.php:288
1231
  #: lib/menu_firewall_waf.php:306
1232
- #: lib/menu_scanner.php:329
1233
- #: lib/menu_scanner.php:345
1234
- #: lib/menu_scanner.php:396
1235
  #: views/tours/login-security.php:52
1236
  #: views/tours/login-security.php:69
1237
  msgid "Previous"
@@ -1252,8 +1242,8 @@ msgstr ""
1252
  #: lib/menu_firewall_blocking.php:226
1253
  #: lib/menu_firewall_waf.php:307
1254
  #: lib/menu_firewall_waf.php:354
1255
- #: lib/menu_scanner.php:346
1256
- #: lib/menu_scanner.php:397
1257
  #: lib/menu_tools_livetraffic.php:577
1258
  #: lib/menu_tools_livetraffic.php:608
1259
  msgid "Got it"
@@ -1317,7 +1307,7 @@ msgstr ""
1317
 
1318
  #: lib/menu_dashboard_options.php:11
1319
  #: lib/menu_dashboard_options.php:79
1320
- #: lib/menu_options.php:272
1321
  msgid "Wordfence Global Options"
1322
  msgstr ""
1323
 
@@ -1359,8 +1349,8 @@ msgstr ""
1359
 
1360
  #: lib/menu_dashboard_options.php:287
1361
  #: lib/menu_dashboard_options.php:297
1362
- #: lib/menu_options.php:405
1363
- #: lib/menu_options.php:415
1364
  #: lib/menu_tools.php:26
1365
  #: lib/menu_tools_importExport.php:7
1366
  #: lib/menu_tools_importExport.php:13
@@ -1383,7 +1373,7 @@ msgstr ""
1383
  #: lib/menu_firewall.php:41
1384
  #: lib/menu_firewall_blocking.php:119
1385
  #: lib/menu_firewall_waf.php:142
1386
- #: lib/wordfenceClass.php:6700
1387
  #: models/page/wfPage.php:109
1388
  msgid "Blocking"
1389
  msgstr ""
@@ -1456,7 +1446,7 @@ msgstr ""
1456
 
1457
  #: lib/menu_firewall_blocking_options.php:12
1458
  #: lib/menu_firewall_blocking_options.php:92
1459
- #: lib/menu_options.php:340
1460
  #: models/page/wfPage.php:111
1461
  #: views/blocking/blocking-status.php:14
1462
  msgid "Blocking Options"
@@ -1499,7 +1489,7 @@ msgstr ""
1499
 
1500
  #: lib/menu_firewall_waf.php:39
1501
  #: lib/menu_firewall_waf_options.php:150
1502
- #: lib/menu_options.php:104
1503
  #: views/waf/options-group-basic-firewall.php:34
1504
  msgid "Web Application Firewall Status"
1505
  msgstr ""
@@ -1566,7 +1556,7 @@ msgstr ""
1566
  #: lib/wfDiagnostic.php:933
1567
  #: lib/wfDiagnostic.php:938
1568
  #: lib/wfDiagnostic.php:942
1569
- #: lib/wordfenceClass.php:6166
1570
  #: models/firewall/wfFirewall.php:41
1571
  #: views/scanner/scan-scheduling.php:14
1572
  #: views/user/disabled-application-passwords.php:12
@@ -1665,7 +1655,7 @@ msgstr ""
1665
  #: lib/menu_firewall_waf.php:347
1666
  #: lib/menu_firewall_waf_options.php:23
1667
  #: lib/menu_firewall_waf_options.php:127
1668
- #: lib/menu_options.php:303
1669
  #: models/page/wfPage.php:107
1670
  msgid "Firewall Options"
1671
  msgstr ""
@@ -1683,8 +1673,8 @@ msgid "Are you sure you want to restore the default Firewall settings? This will
1683
  msgstr ""
1684
 
1685
  #: lib/menu_options.php:24
1686
- #: lib/menu_options.php:262
1687
- #: lib/wordfenceClass.php:6717
1688
  msgid "All Options"
1689
  msgstr ""
1690
 
@@ -1729,562 +1719,577 @@ msgstr ""
1729
 
1730
  #: lib/menu_options.php:76
1731
  #: views/dashboard/options-group-general.php:73
1732
- msgid "Hide WordPress version"
1733
  msgstr ""
1734
 
1735
  #: lib/menu_options.php:77
1736
- #: views/dashboard/options-group-general.php:85
1737
- msgid "Disable Code Execution for Uploads directory"
1738
  msgstr ""
1739
 
1740
  #: lib/menu_options.php:78
1741
- #: views/dashboard/options-group-general.php:97
1742
- msgid "Pause live updates when window loses focus"
1743
  msgstr ""
1744
 
1745
  #: lib/menu_options.php:79
1746
- #: views/dashboard/options-group-general.php:107
1747
- msgid "Update interval in seconds"
1748
  msgstr ""
1749
 
1750
  #: lib/menu_options.php:80
1751
  #: views/dashboard/options-group-general.php:120
1752
- msgid "Bypass the LiteSpeed \"noabort\" check"
1753
  msgstr ""
1754
 
1755
  #: lib/menu_options.php:81
1756
- #: views/dashboard/options-group-general.php:132
1757
- msgid "Delete Wordfence tables and data on deactivation"
1758
  msgstr ""
1759
 
1760
  #: lib/menu_options.php:82
 
 
 
 
 
1761
  #: views/dashboard/options-group-dashboard.php:36
1762
  msgid "Updates Needed (Plugin, Theme, or Core)"
1763
  msgstr ""
1764
 
1765
- #: lib/menu_options.php:83
1766
  #: views/dashboard/options-group-dashboard.php:48
1767
  msgid "Security Alerts"
1768
  msgstr ""
1769
 
1770
- #: lib/menu_options.php:84
1771
  #: views/dashboard/options-group-dashboard.php:60
1772
  msgid "Promotions"
1773
  msgstr ""
1774
 
1775
- #: lib/menu_options.php:85
1776
  #: views/dashboard/options-group-dashboard.php:72
1777
  msgid "Blog Highlights"
1778
  msgstr ""
1779
 
1780
- #: lib/menu_options.php:86
1781
  #: views/dashboard/options-group-dashboard.php:84
1782
  msgid "Product Updates"
1783
  msgstr ""
1784
 
1785
- #: lib/menu_options.php:88
1786
  #: views/dashboard/options-group-alert.php:36
1787
  msgid "Email me when Wordfence is automatically updated"
1788
  msgstr ""
1789
 
1790
- #: lib/menu_options.php:89
1791
  #: views/dashboard/options-group-alert.php:48
1792
  msgid "Email me if Wordfence is deactivated"
1793
  msgstr ""
1794
 
1795
- #: lib/menu_options.php:90
1796
  #: views/dashboard/options-group-alert.php:59
1797
  msgid "Email me if the Wordfence Web Application Firewall is turned off"
1798
  msgstr ""
1799
 
1800
- #: lib/menu_options.php:91
1801
  msgid "Alert me with scan results of this severity level or greater"
1802
  msgstr ""
1803
 
1804
- #: lib/menu_options.php:92
1805
  #: views/dashboard/options-group-alert.php:90
1806
  msgid "Alert when an IP address is blocked"
1807
  msgstr ""
1808
 
1809
- #: lib/menu_options.php:93
1810
  #: views/dashboard/options-group-alert.php:101
1811
  msgid "Alert when someone is locked out from login"
1812
  msgstr ""
1813
 
1814
- #: lib/menu_options.php:94
1815
  #: views/dashboard/options-group-alert.php:123
1816
  msgid "Alert when the \"lost password\" form is used for a valid user"
1817
  msgstr ""
1818
 
1819
- #: lib/menu_options.php:95
1820
  #: views/dashboard/options-group-alert.php:134
1821
  msgid "Alert me when someone with administrator access signs in"
1822
  msgstr ""
1823
 
1824
- #: lib/menu_options.php:96
1825
  #: views/dashboard/options-group-alert.php:140
1826
  msgid "Only alert me when that administrator signs in from a new device"
1827
  msgstr ""
1828
 
1829
- #: lib/menu_options.php:97
1830
  #: views/dashboard/options-group-alert.php:151
1831
  msgid "Alert me when a non-admin user signs in"
1832
  msgstr ""
1833
 
1834
- #: lib/menu_options.php:98
1835
  #: views/dashboard/options-group-alert.php:157
1836
  msgid "Only alert me when that user signs in from a new device"
1837
  msgstr ""
1838
 
1839
- #: lib/menu_options.php:99
1840
  #: views/dashboard/options-group-alert.php:168
1841
  msgid "Alert me when there's a large increase in attacks detected on my site"
1842
  msgstr ""
1843
 
1844
- #: lib/menu_options.php:100
1845
  #: views/dashboard/options-group-alert.php:177
1846
  msgid "Maximum email alerts to send per hour"
1847
  msgstr ""
1848
 
1849
- #: lib/menu_options.php:101
1850
  #: views/dashboard/options-group-email-summary.php:43
1851
  msgid "Enable email summary"
1852
  msgstr ""
1853
 
1854
- #: lib/menu_options.php:102
1855
  #: views/dashboard/options-group-email-summary.php:52
1856
  msgid "List of directories to exclude from recently modified file list"
1857
  msgstr ""
1858
 
1859
- #: lib/menu_options.php:103
1860
  #: views/dashboard/options-group-email-summary.php:63
1861
  msgid "Enable activity report widget on the WordPress dashboard"
1862
  msgstr ""
1863
 
1864
- #: lib/menu_options.php:105
1865
  msgid "Web Application Firewall Protection Level"
1866
  msgstr ""
1867
 
1868
- #: lib/menu_options.php:106
1869
  #: views/waf/options-group-basic-firewall.php:464
1870
  msgid "Real-Time IP Blocklist"
1871
  msgstr ""
1872
 
1873
- #: lib/menu_options.php:107
1874
  #: views/waf/options-group-advanced-firewall.php:40
1875
  msgid "Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)"
1876
  msgstr ""
1877
 
1878
- #: lib/menu_options.php:108
1879
  #: views/waf/options-group-advanced-firewall.php:52
1880
  msgid "Allowlisted IP addresses that bypass all rules"
1881
  msgstr ""
1882
 
1883
- #: lib/menu_options.php:109
1884
  #: views/waf/options-group-advanced-firewall.php:88
1885
  msgid "Allowlisted services"
1886
  msgstr ""
1887
 
1888
- #: lib/menu_options.php:110
1889
  #: views/waf/options-group-advanced-firewall.php:99
1890
  msgid "Immediately block IPs that access these URLs"
1891
  msgstr ""
1892
 
1893
- #: lib/menu_options.php:111
1894
  #: views/waf/options-group-advanced-firewall.php:112
1895
  msgid "Ignored IP addresses for Wordfence Web Application Firewall alerting"
1896
  msgstr ""
1897
 
1898
- #: lib/menu_options.php:112
1899
  msgid "Web Application Firewall Rules"
1900
  msgstr ""
1901
 
1902
- #: lib/menu_options.php:113
1903
  #: views/waf/options-group-brute-force.php:38
1904
  msgid "Enable brute force protection"
1905
  msgstr ""
1906
 
1907
- #: lib/menu_options.php:114
1908
  #: views/waf/options-group-brute-force.php:61
1909
  msgid "Lock out after how many login failures"
1910
  msgstr ""
1911
 
1912
- #: lib/menu_options.php:115
1913
  #: views/waf/options-group-brute-force.php:77
1914
  msgid "Lock out after how many forgot password attempts"
1915
  msgstr ""
1916
 
1917
- #: lib/menu_options.php:116
1918
  #: views/waf/options-group-brute-force.php:93
1919
  msgid "Count failures over what time period"
1920
  msgstr ""
1921
 
1922
- #: lib/menu_options.php:117
1923
  #: views/waf/options-group-brute-force.php:109
1924
  msgid "Amount of time a user is locked out"
1925
  msgstr ""
1926
 
1927
- #: lib/menu_options.php:118
1928
  #: views/waf/options-group-brute-force.php:121
1929
  msgid "Immediately lock out invalid usernames"
1930
  msgstr ""
1931
 
1932
- #: lib/menu_options.php:119
1933
  #: views/waf/options-group-brute-force.php:139
1934
  msgid "Immediately block the IP of users who try to sign in as these usernames"
1935
  msgstr ""
1936
 
1937
- #: lib/menu_options.php:120
1938
  #: views/waf/options-group-brute-force.php:178
1939
  msgid "Enforce strong passwords"
1940
  msgstr ""
1941
 
1942
- #: lib/menu_options.php:121
1943
  #: views/waf/options-group-brute-force.php:155
1944
  msgid "Prevent the use of passwords leaked in data breaches"
1945
  msgstr ""
1946
 
1947
- #: lib/menu_options.php:122
1948
  #: views/waf/options-group-brute-force.php:190
1949
  msgid "Don't let WordPress reveal valid users in login errors"
1950
  msgstr ""
1951
 
1952
- #: lib/menu_options.php:123
1953
  msgid "Prevent users registering \"admin\" username if it doesn't exist"
1954
  msgstr ""
1955
 
1956
- #: lib/menu_options.php:124
1957
  msgid "Prevent discovery of usernames through \"/?author=N\" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps"
1958
  msgstr ""
1959
 
1960
- #: lib/menu_options.php:125
1961
  #: views/waf/options-group-brute-force.php:226
1962
  msgid "Disable WordPress application passwords"
1963
  msgstr ""
1964
 
1965
- #: lib/menu_options.php:126
1966
  #: views/waf/options-group-brute-force.php:238
1967
  msgid "Block IPs who send POST requests with blank User-Agent and Referer"
1968
  msgstr ""
1969
 
1970
- #: lib/menu_options.php:127
1971
  #: views/waf/options-group-brute-force.php:248
1972
  msgid "Custom text shown on block pages"
1973
  msgstr ""
1974
 
1975
- #: lib/menu_options.php:128
1976
  #: views/waf/options-group-brute-force.php:263
1977
  msgid "Check password strength on profile update"
1978
  msgstr ""
1979
 
1980
- #: lib/menu_options.php:129
1981
  #: views/waf/options-group-brute-force.php:275
1982
  msgid "Participate in the Real-Time Wordfence Security Network"
1983
  msgstr ""
1984
 
1985
- #: lib/menu_options.php:130
1986
  #: views/waf/options-group-rate-limiting.php:38
1987
  msgid "Enable Rate Limiting and Advanced Blocking"
1988
  msgstr ""
1989
 
1990
- #: lib/menu_options.php:131
1991
  #: views/waf/options-group-rate-limiting.php:60
1992
  msgid "How should we treat Google's crawlers"
1993
  msgstr ""
1994
 
1995
- #: lib/menu_options.php:132
1996
  #: views/waf/options-group-rate-limiting.php:100
1997
  msgid "If anyone's requests exceed"
1998
  msgstr ""
1999
 
2000
- #: lib/menu_options.php:133
2001
  #: views/waf/options-group-rate-limiting.php:117
2002
  msgid "If a crawler's page views exceed"
2003
  msgstr ""
2004
 
2005
- #: lib/menu_options.php:134
2006
  #: views/waf/options-group-rate-limiting.php:134
2007
  msgid "If a crawler's pages not found (404s) exceed"
2008
  msgstr ""
2009
 
2010
- #: lib/menu_options.php:135
2011
  #: views/waf/options-group-rate-limiting.php:151
2012
  msgid "If a human's page views exceed"
2013
  msgstr ""
2014
 
2015
- #: lib/menu_options.php:136
2016
  #: views/waf/options-group-rate-limiting.php:168
2017
  msgid "If a human's pages not found (404s) exceed"
2018
  msgstr ""
2019
 
2020
- #: lib/menu_options.php:137
2021
  #: views/waf/options-group-rate-limiting.php:184
2022
  msgid "How long is an IP address blocked when it breaks a rule"
2023
  msgstr ""
2024
 
2025
- #: lib/menu_options.php:138
2026
  #: views/waf/options-group-rate-limiting.php:194
2027
  msgid "Allowlisted 404 URLs"
2028
  msgstr ""
2029
 
2030
- #: lib/menu_options.php:139
2031
  msgid "Web Application Firewall Allowlisted URLs"
2032
  msgstr ""
2033
 
2034
- #: lib/menu_options.php:140
2035
  msgid "Monitor background requests from an administrator's web browser for false positives (Front-end Website)"
2036
  msgstr ""
2037
 
2038
- #: lib/menu_options.php:141
2039
  msgid "Monitor background requests from an administrator's web browser for false positives (Admin Panel)"
2040
  msgstr ""
2041
 
2042
- #: lib/menu_options.php:142
2043
  msgid "What to do when we block someone visiting from a blocked country"
2044
  msgstr ""
2045
 
2046
- #: lib/menu_options.php:143
2047
  msgid "URL to redirect blocked countries to"
2048
  msgstr ""
2049
 
2050
- #: lib/menu_options.php:144
2051
  #: views/blocking/options-group-advanced-country.php:62
2052
  msgid "Block countries even if they are logged in"
2053
  msgstr ""
2054
 
2055
- #: lib/menu_options.php:145
2056
  msgid "If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking"
2057
  msgstr ""
2058
 
2059
- #: lib/menu_options.php:146
2060
  msgid "If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country"
2061
  msgstr ""
2062
 
2063
- #: lib/menu_options.php:147
2064
  #: views/scanner/scan-scheduling.php:12
2065
  msgid "Schedule Wordfence Scans"
2066
  msgstr ""
2067
 
2068
- #: lib/menu_options.php:148
2069
  msgid "Scan Type"
2070
  msgstr ""
2071
 
2072
- #: lib/menu_options.php:149
2073
  #: views/scanner/options-group-general.php:32
2074
  msgid "Check if this website is on a domain blocklist"
2075
  msgstr ""
2076
 
2077
- #: lib/menu_options.php:150
2078
  msgid "Check if this website is being &quot;Spamvertised&quot;"
2079
  msgstr ""
2080
 
2081
- #: lib/menu_options.php:151
2082
  #: views/scanner/options-group-general.php:34
2083
  msgid "Check if this website IP is generating spam"
2084
  msgstr ""
2085
 
2086
- #: lib/menu_options.php:152
2087
  #: views/scanner/options-group-general.php:35
2088
  msgid "Scan for misconfigured How does Wordfence get IPs"
2089
  msgstr ""
2090
 
2091
- #: lib/menu_options.php:153
2092
  #: views/scanner/options-group-general.php:36
2093
  msgid "Scan for publicly accessible configuration, backup, or log files"
2094
  msgstr ""
2095
 
2096
- #: lib/menu_options.php:154
2097
  #: views/scanner/options-group-general.php:37
2098
  msgid "Scan for publicly accessible quarantined files"
2099
  msgstr ""
2100
 
2101
- #: lib/menu_options.php:155
2102
  #: views/scanner/options-group-general.php:38
2103
  msgid "Scan core files against repository versions for changes"
2104
  msgstr ""
2105
 
2106
- #: lib/menu_options.php:156
2107
  #: views/scanner/options-group-general.php:39
2108
  msgid "Scan theme files against repository versions for changes"
2109
  msgstr ""
2110
 
2111
- #: lib/menu_options.php:157
2112
  #: views/scanner/options-group-general.php:40
2113
  msgid "Scan plugin files against repository versions for changes"
2114
  msgstr ""
2115
 
2116
- #: lib/menu_options.php:158
2117
  #: views/scanner/options-group-general.php:41
2118
  msgid "Scan wp-admin and wp-includes for files not bundled with WordPress"
2119
  msgstr ""
2120
 
2121
- #: lib/menu_options.php:159
2122
  #: views/scanner/options-group-general.php:42
2123
  msgid "Scan for signatures of known malicious files"
2124
  msgstr ""
2125
 
2126
- #: lib/menu_options.php:160
2127
  #: views/scanner/options-group-general.php:43
2128
  msgid "Scan file contents for backdoors, trojans and suspicious code"
2129
  msgstr ""
2130
 
2131
- #: lib/menu_options.php:161
2132
  #: views/scanner/options-group-general.php:44
2133
  msgid "Scan file contents for malicious URLs"
2134
  msgstr ""
2135
 
2136
- #: lib/menu_options.php:162
2137
  #: views/scanner/options-group-general.php:45
2138
  msgid "Scan posts for known dangerous URLs and suspicious content"
2139
  msgstr ""
2140
 
2141
- #: lib/menu_options.php:163
2142
  #: views/scanner/options-group-general.php:46
2143
  msgid "Scan comments for known dangerous URLs and suspicious content"
2144
  msgstr ""
2145
 
2146
- #: lib/menu_options.php:164
2147
  #: views/scanner/options-group-general.php:47
2148
  msgid "Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content"
2149
  msgstr ""
2150
 
2151
- #: lib/menu_options.php:165
2152
  #: views/scanner/options-group-general.php:48
2153
  msgid "Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions"
2154
  msgstr ""
2155
 
2156
- #: lib/menu_options.php:166
2157
  #: views/scanner/options-group-general.php:49
2158
  msgid "Scan for suspicious admin users created outside of WordPress"
2159
  msgstr ""
2160
 
2161
- #: lib/menu_options.php:167
2162
  #: views/scanner/options-group-general.php:50
2163
  msgid "Check the strength of passwords"
2164
  msgstr ""
2165
 
2166
- #: lib/menu_options.php:168
2167
  #: views/scanner/options-group-general.php:51
2168
  msgid "Monitor disk space"
2169
  msgstr ""
2170
 
2171
- #: lib/menu_options.php:169
2172
  #: views/scanner/options-group-general.php:52
2173
  msgid "Monitor Web Application Firewall status"
2174
  msgstr ""
2175
 
2176
- #: lib/menu_options.php:170
2177
  #: views/scanner/options-group-general.php:53
2178
  msgid "Scan files outside your WordPress installation"
2179
  msgstr ""
2180
 
2181
- #: lib/menu_options.php:171
2182
  #: views/scanner/options-group-general.php:54
2183
  msgid "Scan images, binary, and other files as if they were executable"
2184
  msgstr ""
2185
 
2186
- #: lib/menu_options.php:172
2187
  #: views/scanner/options-group-performance.php:32
2188
  msgid "Use low resource scanning (reduces server load by lengthening the scan duration)"
2189
  msgstr ""
2190
 
2191
- #: lib/menu_options.php:173
2192
  #: views/scanner/options-group-performance.php:33
2193
  msgid "Limit the number of issues sent in the scan results email"
2194
  msgstr ""
2195
 
2196
- #: lib/menu_options.php:174
2197
  #: views/scanner/options-group-performance.php:34
2198
  msgid "Time limit that a scan can run in seconds"
2199
  msgstr ""
2200
 
2201
  #. translators: Time until.
2202
- #: lib/menu_options.php:175
2203
  #: views/scanner/options-group-performance.php:35
2204
  msgid "How much memory should Wordfence request when scanning"
2205
  msgstr ""
2206
 
2207
- #: lib/menu_options.php:176
2208
  msgid "Maximum execution time for each scan stage"
2209
  msgstr ""
2210
 
2211
- #: lib/menu_options.php:177
2212
  msgid "Exclude files from scan that match these wildcard patterns"
2213
  msgstr ""
2214
 
2215
- #: lib/menu_options.php:178
2216
  msgid "Additional scan signatures"
2217
  msgstr ""
2218
 
2219
- #: lib/menu_options.php:179
 
 
 
 
 
 
 
 
 
 
2220
  msgid "Traffic logging mode (Live Traffic)"
2221
  msgstr ""
2222
 
2223
- #: lib/menu_options.php:180
2224
  #: views/tools/options-group-live-traffic.php:78
2225
  msgid "Don't log signed-in users with publishing access"
2226
  msgstr ""
2227
 
2228
- #: lib/menu_options.php:181
2229
  #: views/tools/options-group-live-traffic.php:87
2230
  msgid "List of comma separated usernames to ignore"
2231
  msgstr ""
2232
 
2233
- #: lib/menu_options.php:182
2234
  #: views/tools/options-group-live-traffic.php:96
2235
  msgid "List of comma separated IP addresses to ignore"
2236
  msgstr ""
2237
 
2238
- #: lib/menu_options.php:183
2239
  #: views/tools/options-group-live-traffic.php:105
2240
  msgid "Browser user-agent to ignore"
2241
  msgstr ""
2242
 
2243
- #: lib/menu_options.php:184
2244
  #: views/tools/options-group-live-traffic.php:114
2245
  msgid "Amount of Live Traffic data to store (number of rows)"
2246
  msgstr ""
2247
 
2248
- #: lib/menu_options.php:185
2249
  msgid "Maximum days to keep Live Traffic data"
2250
  msgstr ""
2251
 
2252
- #: lib/menu_options.php:186
2253
  #: views/dashboard/options-group-import.php:31
2254
  msgid "Export this site's Wordfence options for import on another site"
2255
  msgstr ""
2256
 
2257
- #: lib/menu_options.php:187
2258
  #: views/dashboard/options-group-import.php:44
2259
  msgid "Import Wordfence options from another site using a token"
2260
  msgstr ""
2261
 
2262
- #: lib/menu_options.php:191
2263
  msgid "Require Cellphone Sign-in for all Administrators"
2264
  msgstr ""
2265
 
2266
- #: lib/menu_options.php:192
2267
  msgid "Enable Separate Prompt for Two Factor Code"
2268
  msgstr ""
2269
 
2270
- #: lib/menu_options.php:201
2271
  msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
2272
  msgstr ""
2273
 
2274
- #: lib/menu_options.php:268
2275
  msgid "These options are also available throughout the plugin pages, in the relevant sections. This page is provided for easier setup for experienced Wordfence users."
2276
  msgstr ""
2277
 
2278
- #: lib/menu_options.php:351
2279
  #: models/page/wfPage.php:115
2280
  msgid "Scan Options"
2281
  msgstr ""
2282
 
2283
- #: lib/menu_options.php:383
2284
  msgid "Tool Options"
2285
  msgstr ""
2286
 
2287
- #: lib/menu_options.php:413
2288
  msgid "Importing and exporting of options is available on the Tools page"
2289
  msgstr ""
2290
 
@@ -2323,7 +2328,7 @@ msgid "Signature updates delayed by 30 days"
2323
  msgstr ""
2324
 
2325
  #: lib/menu_scanner.php:80
2326
- #: lib/wordfenceClass.php:6746
2327
  msgid "Protect More Sites"
2328
  msgstr ""
2329
 
@@ -2357,69 +2362,65 @@ msgstr ""
2357
  msgid "Reputation Check Status"
2358
  msgstr ""
2359
 
2360
- #: lib/menu_scanner.php:120
2361
- msgid "Turn Off Beta Signatures"
2362
- msgstr ""
2363
-
2364
- #: lib/menu_scanner.php:150
2365
  #: lib/menu_scanner_options.php:97
2366
  msgid "Scan Options and Scheduling"
2367
  msgstr ""
2368
 
2369
- #: lib/menu_scanner.php:151
2370
  msgid "Manage scan options including scheduling"
2371
  msgstr ""
2372
 
2373
- #: lib/menu_scanner.php:212
2374
  msgid "Are you sure you want to delete?"
2375
  msgstr ""
2376
 
2377
- #: lib/menu_scanner.php:213
2378
  msgid "<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup."
2379
  msgstr ""
2380
 
2381
  #. translators: Support URL.
2382
- #: lib/menu_scanner.php:216
2383
  msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here for our help article<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
2384
  msgstr ""
2385
 
2386
- #: lib/menu_scanner.php:218
2387
  msgid "Delete Files"
2388
  msgstr ""
2389
 
2390
- #: lib/menu_scanner.php:226
2391
  msgid "Are you sure you want to repair?"
2392
  msgstr ""
2393
 
2394
- #: lib/menu_scanner.php:227
2395
  msgid "Do not repair files on your system unless you're ABSOLUTELY sure you know what you're doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files."
2396
  msgstr ""
2397
 
2398
- #: lib/menu_scanner.php:229
2399
  msgid "Repair Files"
2400
  msgstr ""
2401
 
2402
  #. translators: Time limit (number).
2403
  #. translators: Support URL.
2404
- #: lib/menu_scanner.php:239
2405
  #: lib/menu_tools_twoFactor.php:246
2406
  #: lib/menu_tools_twoFactor.php:255
2407
  #: lib/menu_tools_twoFactor.php:264
2408
  #: lib/menu_tools_twoFactor.php:284
2409
- #: lib/wordfenceClass.php:4970
2410
- #: lib/wordfenceClass.php:4976
2411
- #: lib/wordfenceClass.php:4982
2412
- #: lib/wordfenceClass.php:4989
2413
- #: lib/wordfenceClass.php:4995
2414
- #: lib/wordfenceClass.php:5002
2415
- #: lib/wordfenceClass.php:5010
2416
- #: lib/wordfenceClass.php:6108
2417
- #: lib/wordfenceClass.php:6110
2418
- #: lib/wordfenceClass.php:6161
2419
- #: lib/wordfenceClass.php:8125
2420
- #: lib/wordfenceClass.php:8132
2421
- #: lib/wordfenceClass.php:8239
2422
- #: lib/wordfenceClass.php:8303
2423
  #: views/dashboard/options-group-import.php:147
2424
  #: views/dashboard/options-group-import.php:157
2425
  #: views/dashboard/options-group-import.php:177
@@ -2434,39 +2435,39 @@ msgstr ""
2434
  msgid "Close"
2435
  msgstr ""
2436
 
2437
- #: lib/menu_scanner.php:306
2438
  msgid "A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site's online reputation."
2439
  msgstr ""
2440
 
2441
- #: lib/menu_scanner.php:320
2442
  msgid "Manage Scan Settings"
2443
  msgstr ""
2444
 
2445
- #: lib/menu_scanner.php:322
2446
  msgid "Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling."
2447
  msgstr ""
2448
 
2449
- #: lib/menu_scanner.php:337
2450
  msgid "Start Your First Scan"
2451
  msgstr ""
2452
 
2453
- #: lib/menu_scanner.php:338
2454
  msgid "By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like."
2455
  msgstr ""
2456
 
2457
- #: lib/menu_scanner.php:374
2458
  msgid "Scan Options &amp; Settings"
2459
  msgstr ""
2460
 
2461
- #: lib/menu_scanner.php:376
2462
  msgid "All of your scan options, including scheduling, are now located here."
2463
  msgstr ""
2464
 
2465
- #: lib/menu_scanner.php:389
2466
  msgid "Scan Progress and Activity"
2467
  msgstr ""
2468
 
2469
- #: lib/menu_scanner.php:390
2470
  msgid "Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings."
2471
  msgstr ""
2472
 
@@ -2622,7 +2623,7 @@ msgstr ""
2622
  #: lib/menu_tools_livetraffic.php:41
2623
  #: lib/menu_tools_livetraffic.php:571
2624
  #: lib/menu_tools_livetraffic.php:602
2625
- #: lib/wordfenceClass.php:6711
2626
  #: models/page/wfPage.php:119
2627
  msgid "Live Traffic"
2628
  msgstr ""
@@ -2642,7 +2643,7 @@ msgid "Diagnostics"
2642
  msgstr ""
2643
 
2644
  #: lib/menu_tools_diagnostic.php:34
2645
- msgid "This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host's environment."
2646
  msgstr ""
2647
 
2648
  #: lib/menu_tools_diagnostic.php:38
@@ -2975,7 +2976,7 @@ msgstr ""
2975
 
2976
  #: lib/menu_tools_diagnostic.php:667
2977
  #: lib/menu_tools_diagnostic.php:706
2978
- #: lib/wordfenceClass.php:6169
2979
  msgid "Download"
2980
  msgstr ""
2981
 
@@ -3005,7 +3006,7 @@ msgid "New Issues (%d total)"
3005
  msgstr ""
3006
 
3007
  #: lib/menu_tools_diagnostic.php:746
3008
- #: lib/wordfenceClass.php:3985
3009
  #: views/diagnostics/text.php:519
3010
  msgid "No New Issues"
3011
  msgstr ""
@@ -3070,36 +3071,32 @@ msgstr ""
3070
  msgid "Disable reading of php://input"
3071
  msgstr ""
3072
 
3073
- #: lib/menu_tools_diagnostic.php:877
3074
- msgid "Enable beta threat defense feed"
3075
- msgstr ""
3076
-
3077
- #: lib/menu_tools_diagnostic.php:896
3078
- #: lib/wordfenceClass.php:6230
3079
  msgid "Restore Defaults"
3080
  msgstr ""
3081
 
3082
- #: lib/menu_tools_diagnostic.php:897
3083
- #: lib/wordfenceClass.php:6155
3084
  msgid "Cancel Changes"
3085
  msgstr ""
3086
 
3087
- #: lib/menu_tools_diagnostic.php:898
3088
- #: lib/wordfenceClass.php:6233
3089
  msgid "Save Changes"
3090
  msgstr ""
3091
 
3092
- #: lib/menu_tools_diagnostic.php:915
3093
  #: views/options/block-all-options-controls.php:162
3094
  #: views/options/block-controls.php:77
3095
  msgid "Confirm Restore Defaults"
3096
  msgstr ""
3097
 
3098
- #: lib/menu_tools_diagnostic.php:916
3099
  msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page."
3100
  msgstr ""
3101
 
3102
- #: lib/menu_tools_diagnostic.php:918
3103
  #: views/options/block-all-options-controls.php:165
3104
  #: views/options/block-controls.php:80
3105
  msgid "Restore<span class=\"wf-hidden-xs\"> Defaults</span>"
@@ -3156,14 +3153,14 @@ msgstr ""
3156
  #: lib/menu_tools_livetraffic.php:100
3157
  #: lib/menu_tools_livetraffic.php:227
3158
  #: lib/menu_tools_livetraffic.php:458
3159
- #: lib/wordfenceClass.php:6192
3160
  msgid "Human"
3161
  msgstr ""
3162
 
3163
  #: lib/menu_tools_livetraffic.php:101
3164
  #: lib/menu_tools_livetraffic.php:228
3165
  #: lib/menu_tools_livetraffic.php:458
3166
- #: lib/wordfenceClass.php:6154
3167
  msgid "Bot"
3168
  msgstr ""
3169
 
@@ -3173,7 +3170,7 @@ msgstr ""
3173
 
3174
  #: lib/menu_tools_livetraffic.php:103
3175
  #: lib/wfDiagnostic.php:803
3176
- #: lib/wordfenceClass.php:6146
3177
  msgid "Blocked"
3178
  msgstr ""
3179
 
@@ -3319,7 +3316,7 @@ msgid "%s hits"
3319
  msgstr ""
3320
 
3321
  #: lib/menu_tools_livetraffic.php:286
3322
- #: lib/wordfenceClass.php:6261
3323
  msgid "Type"
3324
  msgstr ""
3325
 
@@ -3342,7 +3339,7 @@ msgid "IP Address"
3342
  msgstr ""
3343
 
3344
  #: lib/menu_tools_livetraffic.php:291
3345
- #: lib/wordfenceClass.php:4266
3346
  #: views/blocking/blocking-create.php:193
3347
  msgid "Hostname"
3348
  msgstr ""
@@ -3363,7 +3360,6 @@ msgstr ""
3363
  #: views/scanner/issue-wfPluginUpgrade.php:20
3364
  #: views/scanner/issue-wfPluginVulnerable.php:17
3365
  #: views/scanner/issue-wfPluginVulnerable.php:18
3366
- #: views/scanner/issue-wfPluginVulnerable.php:19
3367
  #: views/scanner/issue-wfThemeUpgrade.php:18
3368
  #: views/scanner/issue-wfThemeUpgrade.php:19
3369
  #: views/scanner/issue-wfUpgrade.php:17
@@ -3702,22 +3698,22 @@ msgid "You've chosen to block the network that <span style=\"color: #F00;\">%s</
3702
  msgstr ""
3703
 
3704
  #: lib/menu_tools_whois.php:95
3705
- #: lib/wordfenceClass.php:6174
3706
  msgid "Enter a valid IP or domain"
3707
  msgstr ""
3708
 
3709
  #: lib/menu_tools_whois.php:95
3710
- #: lib/wordfenceClass.php:6217
3711
  msgid "Please enter a valid IP address or domain name for your whois lookup."
3712
  msgstr ""
3713
 
3714
  #: lib/menu_tools_whois.php:99
3715
- #: lib/wordfenceClass.php:6198
3716
  msgid "Loading..."
3717
  msgstr ""
3718
 
3719
  #: lib/menu_tools_whois.php:104
3720
- #: lib/wordfenceClass.php:6204
3721
  msgid "Look up IP or Domain"
3722
  msgstr ""
3723
 
@@ -3747,7 +3743,7 @@ msgstr ""
3747
 
3748
  #: lib/menu_wordfence_central.php:44
3749
  #: lib/menu_wordfence_central.php:57
3750
- #: lib/wordfenceClass.php:6727
3751
  msgid "Wordfence Central"
3752
  msgstr ""
3753
 
@@ -3830,20 +3826,20 @@ msgstr ""
3830
  #. translators: Error message.
3831
  #: lib/rest-api/wfRESTConfigController.php:215
3832
  #: lib/rest-api/wfRESTConfigController.php:258
3833
- #: lib/wordfenceClass.php:4550
3834
  msgid "An error occurred while saving the configuration: %s"
3835
  msgstr ""
3836
 
3837
  #. translators: Error message.
3838
  #: lib/rest-api/wfRESTConfigController.php:226
3839
  #: lib/rest-api/wfRESTConfigController.php:269
3840
- #: lib/wordfenceClass.php:4559
3841
  msgid "Errors occurred while saving the configuration: %s"
3842
  msgstr ""
3843
 
3844
  #: lib/rest-api/wfRESTConfigController.php:231
3845
  #: lib/rest-api/wfRESTConfigController.php:274
3846
- #: lib/wordfenceClass.php:4564
3847
  msgid "Errors occurred while saving the configuration."
3848
  msgstr ""
3849
 
@@ -3960,37 +3956,37 @@ msgid "Wordfence activity for %1$s on %2$s"
3960
  msgstr ""
3961
 
3962
  #: lib/wfActivityReport.php:584
3963
- #: lib/wordfenceClass.php:8478
3964
  msgid "Blocked because the IP is blocklisted"
3965
  msgstr ""
3966
 
3967
  #. translators: Reason for firewall action.
3968
  #: lib/wfActivityReport.php:587
3969
- #: lib/wordfenceClass.php:8481
3970
  msgid "Blocked for %s"
3971
  msgstr ""
3972
 
3973
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3974
  #: lib/wfActivityReport.php:599
3975
- #: lib/wordfenceClass.php:8495
3976
  msgid "Blocked for %1$s in query string: %2$s = %3$s"
3977
  msgstr ""
3978
 
3979
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3980
  #: lib/wfActivityReport.php:602
3981
- #: lib/wordfenceClass.php:8500
3982
  msgid "Blocked for %1$s in POST body: %2$s = %3$s"
3983
  msgstr ""
3984
 
3985
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3986
  #: lib/wfActivityReport.php:605
3987
- #: lib/wordfenceClass.php:8505
3988
  msgid "Blocked for %1$s in cookie: %2$s = %3$s"
3989
  msgstr ""
3990
 
3991
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3992
  #: lib/wfActivityReport.php:608
3993
- #: lib/wordfenceClass.php:8510
3994
  msgid "Blocked for %1$s in file: %2$s = %3$s"
3995
  msgstr ""
3996
 
@@ -4001,10 +3997,10 @@ msgid "Unknown"
4001
  msgstr ""
4002
 
4003
  #: lib/wfAdminNoticeQueue.php:193
4004
- #: lib/wordfenceClass.php:6167
4005
- #: lib/wordfenceClass.php:6422
4006
- #: lib/wordfenceClass.php:6457
4007
- #: lib/wordfenceClass.php:9033
4008
  msgid "Dismiss"
4009
  msgstr ""
4010
 
@@ -5174,48 +5170,48 @@ msgid "Invalid response received from Wordfence Central when fetching token."
5174
  msgstr ""
5175
 
5176
  #. translators: 1. Key in key-value store. 2. Value in key-value store.
5177
- #: lib/wfConfig.php:483
5178
  msgid "wfConfig::set() got an array as second param with key: %1$s and value: %2$s"
5179
  msgstr ""
5180
 
5181
  #. translators: Key in key-value store.
5182
- #: lib/wfConfig.php:640
5183
  msgid "Error reassembling value for %s"
5184
  msgstr ""
5185
 
5186
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5187
- #: lib/wfConfig.php:734
5188
- #: lib/wfConfig.php:743
5189
- #: lib/wfConfig.php:750
5190
- #: lib/wfConfig.php:760
5191
- #: lib/wfConfig.php:767
5192
  msgid "Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)"
5193
  msgstr ""
5194
 
5195
  #. translators: Key in key-value store.
5196
- #: lib/wfConfig.php:779
5197
  msgid "Error writing value header for %s"
5198
  msgstr ""
5199
 
5200
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5201
- #: lib/wfConfig.php:792
5202
- #: lib/wfConfig.php:803
5203
- #: lib/wfConfig.php:813
5204
  msgid "Error writing value for %1$s (MySQLi error: [%2$s] %3$s)"
5205
  msgstr ""
5206
 
5207
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5208
- #: lib/wfConfig.php:820
5209
  msgid "Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)"
5210
  msgstr ""
5211
 
5212
  #. translators: Support URL.
5213
- #: lib/wfConfig.php:990
5214
  msgid "Wordfence Upgrade not run. Please modify your .htaccess"
5215
  msgstr ""
5216
 
5217
  #. translators: Support URL.
5218
- #: lib/wfConfig.php:990
5219
  msgid ""
5220
  "To preserve the integrity of your website we are not running Wordfence auto-update.\n"
5221
  "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n"
@@ -5227,75 +5223,79 @@ msgid ""
5227
  ""
5228
  msgstr ""
5229
 
5230
- #: lib/wfConfig.php:1113
5231
  msgid "Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory."
5232
  msgstr ""
5233
 
5234
- #: lib/wfConfig.php:1150
5235
  msgid "Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file."
5236
  msgstr ""
5237
 
5238
- #: lib/wfConfig.php:1187
5239
- #: lib/wordfenceClass.php:7588
5240
  msgid "The grace period end time must be in the future."
5241
  msgstr ""
5242
 
5243
- #: lib/wfConfig.php:1196
5244
  msgid "Unknown firewall mode."
5245
  msgstr ""
5246
 
5247
- #: lib/wfConfig.php:1215
5248
  msgid "The following emails are invalid: "
5249
  msgstr ""
5250
 
5251
  #. translators: Regular expression.
5252
- #: lib/wfConfig.php:1228
5253
  msgid "\"%s\" is not a valid regular expression."
5254
  msgstr ""
5255
 
5256
- #: lib/wfConfig.php:1247
5257
  msgid "Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: "
5258
  msgstr ""
5259
 
5260
- #: lib/wfConfig.php:1266
5261
  msgid "The following users you selected to ignore in live traffic reports are not valid on this system: "
5262
  msgstr ""
5263
 
5264
- #: lib/wfConfig.php:1283
5265
  msgid "The following IPs you selected to ignore in live traffic reports are not valid: "
5266
  msgstr ""
5267
 
5268
- #: lib/wfConfig.php:1300
5269
  msgid "The following IPs/ranges you selected to trust as proxies are not valid: "
5270
  msgstr ""
5271
 
5272
- #: lib/wfConfig.php:1310
5273
  msgid "An empty license key was entered."
5274
  msgstr ""
5275
 
5276
- #: lib/wfConfig.php:1313
5277
- #: lib/wordfenceClass.php:4435
5278
  msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F."
5279
  msgstr ""
5280
 
5281
- #: lib/wfConfig.php:1325
5282
  msgid "A wildcard cannot be used to exclude all files from the scan."
5283
  msgstr ""
5284
 
5285
- #: lib/wfConfig.php:1792
5286
- #: lib/wfConfig.php:1814
 
 
 
 
5287
  msgid "The Wordfence server's response did not contain the expected elements."
5288
  msgstr ""
5289
 
5290
- #: lib/wfConfig.php:1796
5291
  msgid "Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: "
5292
  msgstr ""
5293
 
5294
- #: lib/wfConfig.php:1818
5295
  msgid "Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: "
5296
  msgstr ""
5297
 
5298
- #: lib/wfConfig.php:1862
5299
  msgid "Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: "
5300
  msgstr ""
5301
 
@@ -5502,7 +5502,7 @@ msgid "Connecting back to this site"
5502
  msgstr ""
5503
 
5504
  #: lib/wfDiagnostic.php:132
5505
- msgid "Connecting back to this site via IPv6"
5506
  msgstr ""
5507
 
5508
  #: lib/wfDiagnostic.php:133
@@ -5909,7 +5909,7 @@ msgid "Interval the trash is automatically emptied at in days"
5909
  msgstr ""
5910
 
5911
  #: lib/wfDiagnostic.php:941
5912
- #: lib/wordfenceClass.php:4284
5913
  msgid "Never"
5914
  msgstr ""
5915
 
@@ -6156,7 +6156,7 @@ msgid "Access from your area has been temporarily limited for security reasons"
6156
  msgstr ""
6157
 
6158
  #: lib/wfLog.php:626
6159
- #: lib/wordfenceClass.php:6205
6160
  #: waf/wfWAFIPBlocksController.php:99
6161
  msgid "Manual block by administrator"
6162
  msgstr ""
@@ -6236,93 +6236,93 @@ msgstr ""
6236
  msgid "Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s"
6237
  msgstr ""
6238
 
6239
- #: lib/wfScan.php:110
6240
  msgid "Checking if scan is already running"
6241
  msgstr ""
6242
 
6243
- #: lib/wfScan.php:112
6244
  msgid "There is already a scan running."
6245
  msgstr ""
6246
 
6247
- #: lib/wfScan.php:121
6248
  msgid "Using low resource scanning"
6249
  msgstr ""
6250
 
6251
- #: lib/wfScan.php:124
6252
  msgid "Requesting max memory"
6253
  msgstr ""
6254
 
6255
- #: lib/wfScan.php:126
6256
  msgid "Setting up error handling environment"
6257
  msgstr ""
6258
 
6259
- #: lib/wfScan.php:134
6260
  msgid "Setting up scanRunning and starting scan"
6261
  msgstr ""
6262
 
6263
  #. translators: Error message (used for debugging).
6264
- #: lib/wfScan.php:139
6265
  msgid "Got a true deserialized value back from 'wfsd_engine' with type: %s"
6266
  msgstr ""
6267
 
6268
  #. translators: Error message (used for debugging).
6269
- #: lib/wfScan.php:143
6270
  msgid "Scan can't continue - stored data not found after a fork. Got type: %s"
6271
  msgstr ""
6272
 
6273
- #: lib/wfScan.php:145
6274
- #: lib/wfScan.php:148
6275
  msgid "Scan can't continue - stored data not found after a fork."
6276
  msgstr ""
6277
 
6278
  #. translators: Error message.
6279
- #: lib/wfScan.php:149
6280
- #: lib/wfScan.php:315
6281
  msgid "Previous scan terminated with an error. See below."
6282
  msgstr ""
6283
 
6284
- #: lib/wfScan.php:172
6285
  msgid "Contacting Wordfence to initiate scan"
6286
  msgstr ""
6287
 
6288
  #. translators: Time until.
6289
- #: lib/wfScan.php:181
6290
  msgid "Deferring scheduled scan by %s"
6291
  msgstr ""
6292
 
6293
- #: lib/wfScan.php:202
6294
  msgid "Initiating quick scan"
6295
  msgstr ""
6296
 
6297
  #. translators: 1. Bytes of memory. 2. Bytes of memory.
6298
  #. translators: 1. Memory in bytes. 2. Memory in bytes.
6299
- #: lib/wfScan.php:213
6300
- #: lib/wfScan.php:225
6301
- #: lib/wfScan.php:248
6302
- #: lib/wfScan.php:263
6303
- #: lib/wfScan.php:278
6304
- #: lib/wfScan.php:293
6305
- #: lib/wfScanEngine.php:446
6306
- msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s"
6307
- msgstr ""
6308
-
6309
- #. translators: Error message.
6310
  #: lib/wfScan.php:217
6311
  #: lib/wfScan.php:229
6312
  #: lib/wfScan.php:252
6313
  #: lib/wfScan.php:267
6314
  #: lib/wfScan.php:282
6315
  #: lib/wfScan.php:297
6316
- #: lib/wfScan.php:314
 
 
 
 
 
 
 
 
 
 
 
6317
  msgid "Scan terminated with error: %s"
6318
  msgstr ""
6319
 
6320
- #: lib/wfScan.php:300
6321
  msgid "Wordfence scan failed because of license site URL conflict"
6322
  msgstr ""
6323
 
6324
  #. translators: Error message.
6325
- #: lib/wfScan.php:352
6326
  msgid "Scan Engine Error: %s"
6327
  msgstr ""
6328
 
@@ -6376,767 +6376,783 @@ msgid "Calling startScan(true)"
6376
  msgstr ""
6377
 
6378
  #. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
6379
- #: lib/wfScanEngine.php:454
6380
  msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
6381
  msgstr ""
6382
 
6383
  #. translators: 1. Time duration.
6384
- #: lib/wfScanEngine.php:466
6385
  msgid "Quick Scan Complete. Scanned in %s."
6386
  msgstr ""
6387
 
6388
  #. translators: Number of scan results.
6389
- #: lib/wfScanEngine.php:475
6390
  msgid "%d ignored issue was also detected."
6391
  msgid_plural "%d ignored issues were also detected."
6392
  msgstr[0] ""
6393
  msgstr[1] ""
6394
 
6395
  #. translators: Number of scan results.
6396
- #: lib/wfScanEngine.php:486
6397
  msgid "Scan complete. You have %d new issue to fix."
6398
  msgid_plural "Scan complete. You have %d new issues to fix."
6399
  msgstr[0] ""
6400
  msgstr[1] ""
6401
 
6402
- #: lib/wfScanEngine.php:494
6403
  msgid "See below."
6404
  msgstr ""
6405
 
6406
- #: lib/wfScanEngine.php:497
6407
  msgid "Scan complete. Congratulations, no new problems found."
6408
  msgstr ""
6409
 
6410
- #: lib/wfScanEngine.php:508
6411
  msgid "Checking if your site IP is generating spam"
6412
  msgstr ""
6413
 
6414
- #: lib/wfScanEngine.php:527
6415
  msgid "Checking if your IP is generating spam is for paid members only"
6416
  msgstr ""
6417
 
6418
- #: lib/wfScanEngine.php:534
6419
  msgid "Checking if your site is on a domain blocklist"
6420
  msgstr ""
6421
 
6422
- #: lib/wfScanEngine.php:539
6423
  msgid "Checking if your site is on a domain blocklist is for paid members only"
6424
  msgstr ""
6425
 
6426
  #. translators: Error message.
6427
- #: lib/wfScanEngine.php:575
6428
  msgid "Error checking domain blocklists: %s"
6429
  msgstr ""
6430
 
6431
  #. translators: WordPress site ID.
6432
- #: lib/wfScanEngine.php:609
6433
  msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list."
6434
  msgstr ""
6435
 
6436
- #: lib/wfScanEngine.php:612
6437
  msgid "Your site is listed on Google's Safe Browsing malware list."
6438
  msgstr ""
6439
 
6440
  #. translators: 1. URL. 2. URL.
6441
- #: lib/wfScanEngine.php:616
6442
  msgid "The URL %1$s is on the malware list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6443
  msgstr ""
6444
 
6445
  #. translators: WordPress site ID.
6446
- #: lib/wfScanEngine.php:622
6447
  msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list."
6448
  msgstr ""
6449
 
6450
- #: lib/wfScanEngine.php:625
6451
  msgid "Your site is listed on Google's Safe Browsing phishing list."
6452
  msgstr ""
6453
 
6454
  #. translators: 1. URL. 2. URL.
6455
- #: lib/wfScanEngine.php:629
6456
  msgid "The URL %1$s is on the phishing list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6457
  msgstr ""
6458
 
6459
  #. translators: WordPress site ID.
6460
- #: lib/wfScanEngine.php:635
6461
  msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist."
6462
  msgstr ""
6463
 
6464
- #: lib/wfScanEngine.php:638
6465
  msgid "Your site is listed on the Wordfence domain blocklist."
6466
  msgstr ""
6467
 
6468
  #. translators: URL.
6469
- #: lib/wfScanEngine.php:642
6470
  msgid "The URL %s is on the blocklist."
6471
  msgstr ""
6472
 
6473
  #. translators: WordPress site ID.
6474
- #: lib/wfScanEngine.php:648
6475
  msgid "The multisite blog with ID %d is listed on a domain blocklist."
6476
  msgstr ""
6477
 
6478
- #: lib/wfScanEngine.php:651
6479
  msgid "Your site is listed on a domain blocklist."
6480
  msgstr ""
6481
 
6482
  #. translators: URL.
6483
- #: lib/wfScanEngine.php:653
6484
  msgid "The URL is: %s"
6485
  msgstr ""
6486
 
6487
- #: lib/wfScanEngine.php:673
6488
  msgid "Checking for the most secure way to get IPs"
6489
  msgstr ""
6490
 
6491
- #: lib/wfScanEngine.php:700
6492
  msgid "Unable to accurately detect IPs"
6493
  msgstr ""
6494
 
6495
  #. translators: Support URL.
6496
- #: lib/wfScanEngine.php:701
6497
  msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
6498
  msgstr ""
6499
 
6500
- #: lib/wfScanEngine.php:711
6501
- #: lib/wordfenceClass.php:6399
6502
  msgid "For maximum security use PHP's built in REMOTE_ADDR."
6503
  msgstr ""
6504
 
6505
- #: lib/wfScanEngine.php:713
6506
- #: lib/wordfenceClass.php:6402
6507
  msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs."
6508
  msgstr ""
6509
 
6510
- #: lib/wfScanEngine.php:715
6511
- #: lib/wordfenceClass.php:6405
6512
  msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs."
6513
  msgstr ""
6514
 
6515
- #: lib/wfScanEngine.php:717
6516
- #: lib/wordfenceClass.php:6408
6517
  msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs."
6518
  msgstr ""
6519
 
6520
- #: lib/wfScanEngine.php:721
6521
  msgid "'How does Wordfence get IPs' is misconfigured"
6522
  msgstr ""
6523
 
6524
  #. translators: Support URL.
6525
- #: lib/wfScanEngine.php:724
6526
  msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
6527
  msgstr ""
6528
 
6529
- #: lib/wfScanEngine.php:745
6530
  msgid "Check for publicly accessible configuration files, backup files and logs"
6531
  msgstr ""
6532
 
6533
  #. translators: File path.
6534
- #: lib/wfScanEngine.php:796
6535
  msgid "Publicly accessible config, backup, or log file found: %s"
6536
  msgstr ""
6537
 
6538
  #. translators: 1. URL to publicly accessible file. 2. Support URL.
6539
- #: lib/wfScanEngine.php:799
6540
  msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn more<span class=\"screen-reader-text\"> ("
6541
  msgstr ""
6542
 
6543
- #: lib/wfScanEngine.php:829
6544
  msgid "Checking if your server discloses the path to the document root"
6545
  msgstr ""
6546
 
6547
- #: lib/wfScanEngine.php:839
6548
  msgid "Web server exposes the document root"
6549
  msgstr ""
6550
 
6551
- #: lib/wfScanEngine.php:840
6552
  msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view."
6553
  msgstr ""
6554
 
6555
- #: lib/wfScanEngine.php:866
6556
  msgid "Directory listing is enabled"
6557
  msgstr ""
6558
 
6559
- #: lib/wfScanEngine.php:867
6560
  msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed."
6561
  msgstr ""
6562
 
6563
- #: lib/wfScanEngine.php:883
6564
  msgid "Checking if your site is being Spamvertised"
6565
  msgstr ""
6566
 
6567
- #: lib/wfScanEngine.php:902
6568
  msgid "Check if your site is being Spamvertized is for paid members only"
6569
  msgstr ""
6570
 
6571
- #: lib/wfScanEngine.php:932
6572
  msgid "Ignoring invalid scan path: %s"
6573
  msgstr ""
6574
 
6575
- #: lib/wfScanEngine.php:966
6576
  msgid "Ignoring invalid expected scan file: %s"
6577
  msgstr ""
6578
 
6579
- #: lib/wfScanEngine.php:971
6580
  msgid "Wordfence could not read the content of your WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory."
6581
  msgstr ""
6582
 
6583
- #: lib/wfScanEngine.php:980
6584
  msgid "Ignoring invalid base scan file: %s"
6585
  msgstr ""
6586
 
6587
- #: lib/wfScanEngine.php:991
6588
  msgid "Checking for paths skipped due to scan settings"
6589
  msgstr ""
6590
 
6591
  #. translators: Number of paths skipped in scan.
6592
- #: lib/wfScanEngine.php:1001
6593
  msgid ", and %d more."
6594
  msgstr ""
6595
 
6596
  #. translators: Number of paths skipped in scan.
6597
- #: lib/wfScanEngine.php:1025
6598
  msgid "%d path was skipped for the malware scan due to scan settings"
6599
  msgid_plural "%d paths were skipped for the malware scan due to scan settings"
6600
  msgstr[0] ""
6601
  msgstr[1] ""
6602
 
6603
  #. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths.
6604
- #: lib/wfScanEngine.php:1028
6605
  msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
6606
  msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
6607
  msgstr[0] ""
6608
  msgstr[1] ""
6609
 
6610
- #: lib/wfScanEngine.php:1056
6611
  msgid "Including files that are outside the WordPress installation in the scan."
6612
  msgstr ""
6613
 
6614
- #: lib/wfScanEngine.php:1059
6615
  msgid "Getting plugin list from WordPress"
6616
  msgstr ""
6617
 
6618
  #. translators: Number of plugins.
6619
- #: lib/wfScanEngine.php:1061
6620
  msgid "Found %d plugin"
6621
  msgid_plural "Found %d plugins"
6622
  msgstr[0] ""
6623
  msgstr[1] ""
6624
 
6625
- #: lib/wfScanEngine.php:1063
6626
  msgid "Getting theme list from WordPress"
6627
  msgstr ""
6628
 
6629
  #. translators: Number of themes.
6630
- #: lib/wfScanEngine.php:1065
6631
  msgid "Found %d theme"
6632
  msgid_plural "Found %d themes"
6633
  msgstr[0] ""
6634
  msgstr[1] ""
6635
 
6636
- #: lib/wfScanEngine.php:1082
6637
  msgid "Scanning file contents for infections and vulnerabilities"
6638
  msgstr ""
6639
 
6640
- #: lib/wfScanEngine.php:1085
6641
  msgid "Skipping scan of file contents for infections and vulnerabilities"
6642
  msgstr ""
6643
 
6644
- #: lib/wfScanEngine.php:1089
6645
  msgid "Scanning file contents for URLs on a domain blocklist"
6646
  msgstr ""
6647
 
6648
- #: lib/wfScanEngine.php:1092
6649
  msgid "Skipping scan of file contents for URLs on a domain blocklist"
6650
  msgstr ""
6651
 
6652
- #: lib/wfScanEngine.php:1097
6653
  msgid "Starting scan of file contents"
6654
  msgstr ""
6655
 
6656
- #: lib/wfScanEngine.php:1113
6657
  msgid "Done file contents scan"
6658
  msgstr ""
6659
 
6660
  #. translators: Scan result description.
6661
- #: lib/wfScanEngine.php:1121
6662
- #: lib/wfScanEngine.php:2290
6663
- #: lib/wfScanEngine.php:2332
6664
  msgid "Adding issue: %s"
6665
  msgstr ""
6666
 
6667
- #: lib/wfScanEngine.php:1154
6668
  msgid "Scanning for publicly accessible quarantined files"
6669
  msgstr ""
6670
 
6671
  #. translators: File path.
6672
- #: lib/wfScanEngine.php:1159
6673
  msgid "Testing accessibility of: %s"
6674
  msgstr ""
6675
 
6676
  #. translators: File path.
6677
- #: lib/wfScanEngine.php:1168
6678
  msgid "Publicly accessible quarantined file found: %s"
6679
  msgstr ""
6680
 
6681
  #. translators: URL to publicly accessible file.
6682
- #: lib/wfScanEngine.php:1171
6683
  msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s<span class=\"screen-reader-text\"> ("
6684
  msgstr ""
6685
 
6686
- #: lib/wfScanEngine.php:1195
6687
  msgid "Scanning posts for URLs on a domain blocklist"
6688
  msgstr ""
6689
 
6690
  #. translators: Number of posts left to scan.
6691
- #: lib/wfScanEngine.php:1218
6692
  msgid "Scanning posts with %d left to scan."
6693
  msgstr ""
6694
 
6695
- #: lib/wfScanEngine.php:1240
6696
  msgid "Post title contains suspicious code"
6697
  msgstr ""
6698
 
6699
- #: lib/wfScanEngine.php:1241
6700
  msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious."
6701
  msgstr ""
6702
 
6703
- #: lib/wfScanEngine.php:1264
6704
  msgid "Examining URLs found in posts we scanned for dangerous websites"
6705
  msgstr ""
6706
 
6707
- #: lib/wfScanEngine.php:1266
6708
- #: lib/wfScanEngine.php:2253
6709
  msgid "Done examining URLs"
6710
  msgstr ""
6711
 
6712
  #. translators: 1. WordPress Post type. 2. URL.
6713
- #: lib/wfScanEngine.php:1302
6714
- #: lib/wfScanEngine.php:1322
6715
  msgid "%1$s contains a suspected malware URL: %2$s"
6716
  msgstr ""
6717
 
6718
  #. translators: 1. WordPress Post type. 2. URL. 3. URL.
6719
  #. translators: 1. WordPress post type. 2. URL. 3. URL.
6720
- #: lib/wfScanEngine.php:1308
6721
- #: lib/wfScanEngine.php:1451
6722
  msgid "This %1$s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6723
  msgstr ""
6724
 
6725
  #. translators: 1. WordPress Post type. 2. URL.
6726
- #: lib/wfScanEngine.php:1314
6727
  msgid "%1$s contains a suspected phishing site URL: %2$s"
6728
  msgstr ""
6729
 
6730
  #. translators: 1. WordPress Post type. 2. URL.
6731
  #. translators: 1. WordPress post type. 2. URL.
6732
- #: lib/wfScanEngine.php:1317
6733
- #: lib/wfScanEngine.php:1460
6734
  msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s"
6735
  msgstr ""
6736
 
6737
  #. translators: 1. WordPress Post type. 2. URL.
6738
  #. translators: 1. WordPress post type. 2. URL.
6739
- #: lib/wfScanEngine.php:1325
6740
- #: lib/wfScanEngine.php:1468
6741
  msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s"
6742
  msgstr ""
6743
 
6744
  #. translators: Scan result description.
6745
- #: lib/wfScanEngine.php:1334
6746
  msgid "Adding issue: %1$s"
6747
  msgstr ""
6748
 
6749
- #: lib/wfScanEngine.php:1370
6750
  msgid "Scanning comments for URLs on a domain blocklist"
6751
  msgstr ""
6752
 
6753
  #. translators: Number of comments left to scan.
6754
- #: lib/wfScanEngine.php:1394
6755
  msgid "Scanning comments with %d left to scan."
6756
  msgstr ""
6757
 
6758
  #. translators: 1. WordPress post type. 2. WordPress author username.
6759
- #: lib/wfScanEngine.php:1448
6760
  msgid "%1$s with author %2$s contains a suspected malware URL."
6761
  msgstr ""
6762
 
6763
  #. translators: WordPress post type.
6764
- #: lib/wfScanEngine.php:1457
6765
  msgid "%s contains a suspected phishing site URL."
6766
  msgstr ""
6767
 
6768
  #. translators: URL.
6769
- #: lib/wfScanEngine.php:1465
6770
  msgid "%s contains a suspected malware URL."
6771
  msgstr ""
6772
 
6773
  #. translators: WordPress username.
6774
- #: lib/wfScanEngine.php:1513
6775
  msgid "Author: %s"
6776
  msgstr ""
6777
 
6778
  #. translators: Email address.
6779
- #: lib/wfScanEngine.php:1516
6780
  msgid "Email: %s"
6781
  msgstr ""
6782
 
6783
  #. translators: IP address.
6784
- #: lib/wfScanEngine.php:1518
6785
  msgid "Source IP: %s"
6786
  msgstr ""
6787
 
6788
  #. translators: Comment description.
6789
- #: lib/wfScanEngine.php:1519
6790
  msgid "Scanning comment with %s"
6791
  msgstr ""
6792
 
6793
  #. translators: Comment description.
6794
- #: lib/wfScanEngine.php:1532
6795
- #: lib/wfScanEngine.php:1538
6796
  msgid "Marking comment as spam for containing a malware URL. Comment has %s"
6797
  msgstr ""
6798
 
6799
  #. translators: Comment description.
6800
- #: lib/wfScanEngine.php:1535
6801
  msgid "Marking comment as spam for containing a phishing URL. Comment has %s"
6802
  msgstr ""
6803
 
6804
  #. translators: Comment description.
6805
- #: lib/wfScanEngine.php:1545
6806
  msgid "Scanned comment with %s"
6807
  msgstr ""
6808
 
6809
- #: lib/wfScanEngine.php:1596
6810
  msgid "Scanning for weak passwords"
6811
  msgstr ""
6812
 
6813
- #: lib/wfScanEngine.php:1607
6814
  msgid "We were unable to generate the user list for your password check."
6815
  msgstr ""
6816
 
6817
  #. translators: Number of users.
6818
- #: lib/wfScanEngine.php:1623
6819
  msgid "Starting password strength check on %d user."
6820
  msgid_plural "Starting password strength check on %d users."
6821
  msgstr[0] ""
6822
  msgstr[1] ""
6823
 
6824
  #. translators: Number of users.
6825
- #: lib/wfScanEngine.php:1632
6826
  msgid "Total of %d users left to process in password strength check."
6827
  msgid_plural "Total of %d users left to process in password strength check."
6828
  msgstr[0] ""
6829
  msgstr[1] ""
6830
 
6831
  #. translators: WordPress user ID.
6832
- #: lib/wfScanEngine.php:1667
6833
  msgid "Could not get username for user with ID %d when checking password strength."
6834
  msgstr ""
6835
 
6836
  #. translators: 1. WordPress username. 2. WordPress user ID.
6837
- #: lib/wfScanEngine.php:1673
6838
  msgid "Checking password strength of user '%1$s' with ID %2$d"
6839
  msgstr ""
6840
 
6841
  #. translators: 1. WordPress username. 2. WordPress capability.
6842
- #: lib/wfScanEngine.php:1681
6843
  msgid "User \"%1$s\" with \"%2$s\" access has an easy password."
6844
  msgstr ""
6845
 
6846
  #. translators: WordPress capability.
6847
- #: lib/wfScanEngine.php:1687
6848
  msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it."
6849
  msgstr ""
6850
 
6851
  #. translators: WordPress username.
6852
- #: lib/wfScanEngine.php:1695
6853
  msgid "User \"%s\" with 'subscriber' access has a very easy password."
6854
  msgstr ""
6855
 
6856
- #: lib/wfScanEngine.php:1696
6857
  msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password."
6858
  msgstr ""
6859
 
6860
  #. translators: Scan result description.
6861
- #: lib/wfScanEngine.php:1703
6862
  msgid "Adding issue %s"
6863
  msgstr ""
6864
 
6865
  #. translators: WordPress username.
6866
- #: lib/wfScanEngine.php:1720
6867
  msgid "Completed checking password strength of user '%s'"
6868
  msgstr ""
6869
 
6870
- #: lib/wfScanEngine.php:1753
6871
  msgid "Scanning to check available disk space"
6872
  msgstr ""
6873
 
6874
- #: lib/wfScanEngine.php:1760
6875
  msgid "Unable to access available disk space information"
6876
  msgstr ""
6877
 
6878
  #. translators: 1. Number of bytes. 2. Number of bytes.
6879
- #: lib/wfScanEngine.php:1769
6880
  msgid "Total disk space: %1$s -- Free disk space: %2$s"
6881
  msgstr ""
6882
 
6883
  #. translators: Number of bytes.
6884
- #: lib/wfScanEngine.php:1774
6885
  msgid "The disk has %s MB available"
6886
  msgstr ""
6887
 
6888
  #. translators: Number of bytes.
6889
- #: lib/wfScanEngine.php:1789
6890
  msgid "You have %s disk space remaining"
6891
  msgstr ""
6892
 
6893
  #. translators: Number of bytes.
6894
- #: lib/wfScanEngine.php:1790
6895
  msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests."
6896
  msgstr ""
6897
 
6898
- #: lib/wfScanEngine.php:1803
6899
  msgid "Checking Web Application Firewall status"
6900
  msgstr ""
6901
 
6902
- #: lib/wfScanEngine.php:1814
6903
  msgid "Web Application Firewall is disabled"
6904
  msgstr ""
6905
 
6906
  #. translators: Support URL.
6907
- #: lib/wfScanEngine.php:1815
6908
  msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">More Details<span class=\"screen-reader-text\"> ("
6909
  msgstr ""
6910
 
6911
- #: lib/wfScanEngine.php:1830
6912
  msgid "Scanning for old themes, plugins and core files"
6913
  msgstr ""
6914
 
6915
- #: lib/wfScanEngine.php:1916
6916
  msgid "Your WordPress version is out of date"
6917
  msgstr ""
6918
 
6919
  #. translators: Software version.
6920
- #: lib/wfScanEngine.php:1917
6921
  msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress."
6922
  msgstr ""
6923
 
6924
  #. translators: 1. Plugin name. 2. Software version. 3. Software version.
6925
- #: lib/wfScanEngine.php:1944
6926
  msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)."
6927
  msgstr ""
6928
 
6929
  #. translators: Theme name.
6930
- #: lib/wfScanEngine.php:1951
6931
- #: lib/wfScanEngine.php:1985
6932
  msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released."
6933
  msgstr ""
6934
 
6935
  #. translators: 1. Theme name. 2. Software version. 3. Software version.
6936
- #: lib/wfScanEngine.php:1978
6937
  msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)."
6938
  msgstr ""
6939
 
6940
  #. translators: 1. Plugin name. 2. Software version. 3. Software version.
6941
- #: lib/wfScanEngine.php:2029
6942
  msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)."
6943
  msgstr ""
6944
 
6945
  #. translators: 1. Plugin name. 2. Software version.
6946
- #: lib/wfScanEngine.php:2036
6947
  msgid "It was last updated %1$s ago and tested up to WordPress %2$s."
6948
  msgstr ""
6949
 
6950
  #. translators: 1. Plugin name. 2. Software version.
6951
- #: lib/wfScanEngine.php:2043
6952
  msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)."
6953
  msgstr ""
6954
 
6955
  #. translators: Time duration.
6956
- #: lib/wfScanEngine.php:2049
6957
  msgid "It was last updated %s ago."
6958
  msgstr ""
6959
 
6960
- #: lib/wfScanEngine.php:2055
6961
- #: lib/wfScanEngine.php:2094
6962
  msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress."
6963
  msgstr ""
6964
 
6965
- #: lib/wfScanEngine.php:2057
6966
- #: lib/wfScanEngine.php:2096
6967
  msgid "Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin."
6968
  msgstr ""
6969
 
6970
  #. translators: Support URL.
6971
- #: lib/wfScanEngine.php:2061
6972
- #: lib/wfScanEngine.php:2100
6973
- #: lib/wfScanEngine.php:2288
6974
- #: lib/wfScanEngine.php:2330
6975
  msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> ("
6976
  msgstr ""
6977
 
6978
  #. translators: Plugin name.
6979
- #: lib/wfScanEngine.php:2092
6980
  msgid "The Plugin \"%s\" has been removed from wordpress.org."
6981
  msgstr ""
6982
 
6983
- #: lib/wfScanEngine.php:2145
 
 
 
 
 
 
 
 
6984
  msgid "Scanning for admin users not created through WordPress"
6985
  msgstr ""
6986
 
6987
  #. translators: WordPress username.
6988
- #: lib/wfScanEngine.php:2167
6989
  msgid "An admin user with the username %s was created outside of WordPress."
6990
  msgstr ""
6991
 
6992
  #. translators: WordPress username.
6993
- #: lib/wfScanEngine.php:2168
6994
  msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
6995
  msgstr ""
6996
 
6997
  #. translators: WordPress username.
6998
- #: lib/wfScanEngine.php:2194
6999
  msgid "An admin user with a suspicious username %s was found."
7000
  msgstr ""
7001
 
7002
  #. translators: WordPress username.
7003
- #: lib/wfScanEngine.php:2195
7004
  msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
7005
  msgstr ""
7006
 
7007
- #: lib/wfScanEngine.php:2216
7008
  msgid "Scanning for suspicious site options"
7009
  msgstr ""
7010
 
7011
- #: lib/wfScanEngine.php:2251
7012
  msgid "Examining URLs found in the options we scanned for dangerous websites"
7013
  msgstr ""
7014
 
7015
  #. translators: URL.
7016
- #: lib/wfScanEngine.php:2275
7017
- #: lib/wfScanEngine.php:2281
7018
  msgid "Option contains a suspected malware URL: %s"
7019
  msgstr ""
7020
 
7021
  #. translators: URL.
7022
- #: lib/wfScanEngine.php:2276
7023
  msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s"
7024
  msgstr ""
7025
 
7026
  #. translators: URL.
7027
- #: lib/wfScanEngine.php:2278
7028
  msgid "Option contains a suspected phishing site URL: %s"
7029
  msgstr ""
7030
 
7031
  #. translators: URL.
7032
- #: lib/wfScanEngine.php:2279
7033
  msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s"
7034
  msgstr ""
7035
 
7036
  #. translators: URL.
7037
- #: lib/wfScanEngine.php:2282
7038
  msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s"
7039
  msgstr ""
7040
 
7041
- #: lib/wfScanEngine.php:2322
7042
  msgid "Checking for future GeoIP support"
7043
  msgstr ""
7044
 
7045
- #: lib/wfScanEngine.php:2327
7046
  msgid "PHP Update Needed for Country Blocking"
7047
  msgstr ""
7048
 
7049
  #. translators: Software version.
7050
- #: lib/wfScanEngine.php:2328
7051
  msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
7052
  msgstr ""
7053
 
7054
- #: lib/wfScanEngine.php:2377
7055
  msgid "Previous scan was stopped successfully."
7056
  msgstr ""
7057
 
7058
- #: lib/wfScanEngine.php:2378
7059
  msgid "Scan was stopped on administrator request."
7060
  msgstr ""
7061
 
7062
- #: lib/wfScanEngine.php:2394
7063
  msgid "Entering start scan routine"
7064
  msgstr ""
7065
 
7066
- #: lib/wfScanEngine.php:2397
7067
  msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan."
7068
  msgstr ""
7069
 
7070
- #. translators: Support URL.
7071
- #: lib/wfScanEngine.php:2421
 
 
 
 
7072
  msgid "Test result of scan start URL fetch: %s"
7073
  msgstr ""
7074
 
7075
  #. translators: WordPress admin panel URL.
7076
- #: lib/wfScanEngine.php:2430
7077
  msgid "Starting cron with normal ajax at URL %s"
7078
  msgstr ""
7079
 
7080
  #. translators: Error message.
7081
  #. translators: WordPress admin panel URL.
7082
- #: lib/wfScanEngine.php:2454
7083
- #: lib/wfScanEngine.php:2489
7084
  msgid "There was an error starting the scan: %s."
7085
  msgstr ""
7086
 
7087
- #: lib/wfScanEngine.php:2456
7088
- #: lib/wfScanEngine.php:2491
7089
  msgid "There was an unknown error starting the scan."
7090
  msgstr ""
7091
 
7092
- #: lib/wfScanEngine.php:2463
7093
- #: lib/wfScanEngine.php:2497
7094
  msgid "Scan process ended after forking."
7095
  msgstr ""
7096
 
7097
  #. translators: WordPress admin panel URL.
7098
- #: lib/wfScanEngine.php:2467
7099
  msgid "Starting cron via proxy at URL %s"
7100
  msgstr ""
7101
 
7102
  #. translators: Time in seconds.
7103
- #: lib/wfScanEngine.php:2543
7104
  msgid "Got value from wf config maxExecutionTime: %s"
7105
  msgstr ""
7106
 
7107
  #. translators: Time in seconds.
7108
- #: lib/wfScanEngine.php:2547
7109
  msgid "getMaxExecutionTime() returning config value: %s"
7110
  msgstr ""
7111
 
7112
  #. translators: PHP ini value.
7113
- #: lib/wfScanEngine.php:2554
7114
  msgid "Got max_execution_time value from ini: %s"
7115
  msgstr ""
7116
 
7117
  #. translators: 1. PHP ini setting. 2. Time in seconds.
7118
- #: lib/wfScanEngine.php:2561
7119
  msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing"
7120
  msgstr ""
7121
 
7122
  #. translators: PHP ini setting.
7123
- #: lib/wfScanEngine.php:2571
7124
  msgid "getMaxExecutionTime() returning half ini value: %d"
7125
  msgstr ""
7126
 
7127
- #: lib/wfScanEngine.php:2577
7128
  msgid "getMaxExecutionTime() returning default of: 15"
7129
  msgstr ""
7130
 
7131
  #. translators: 1. HTTP status code.
7132
- #: lib/wfScanEngine.php:2779
7133
  msgid "Got error response from Wordfence servers: %s"
7134
  msgstr ""
7135
 
7136
- #: lib/wfScanEngine.php:2783
7137
  msgid "Invalid response from Wordfence servers."
7138
  msgstr ""
7139
 
 
 
 
 
7140
  #: lib/wfUnlockMsg.php:2
7141
  msgid "If you are a WordPress user with administrative privileges on this site please enter your email in the box below and click &quot;Send&quot;. You will then receive an email that helps you regain access."
7142
  msgstr ""
@@ -7212,7 +7228,7 @@ msgid "Wordfence error: No encryption key found!"
7212
  msgstr ""
7213
 
7214
  #. translators: Error message.
7215
- #: lib/wfUtils.php:1484
7216
  msgid "Call to Wordfence API to resolve IPs failed: %s"
7217
  msgstr ""
7218
 
@@ -7296,1466 +7312,1478 @@ msgstr ""
7296
  msgid "File last modified:"
7297
  msgstr ""
7298
 
7299
- #: lib/wordfenceClass.php:181
7300
  msgid ""
7301
  "To ensure uninterrupted Premium Wordfence protection on your site,\n"
7302
  "please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n"
7303
  "select the license about to expire and click the button to renew that license."
7304
  msgstr ""
7305
 
7306
- #: lib/wordfenceClass.php:212
7307
  msgid "Your Premium Wordfence License is set to auto-renew in 10 days."
7308
  msgstr ""
7309
 
7310
- #: lib/wordfenceClass.php:213
7311
  msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard"
7312
  msgstr ""
7313
 
7314
- #: lib/wordfenceClass.php:225
7315
  msgid "Your Premium Wordfence License expires in less than 2 weeks."
7316
  msgstr ""
7317
 
7318
- #: lib/wordfenceClass.php:228
7319
  msgid "Your Premium Wordfence License expires in less than a week."
7320
  msgstr ""
7321
 
7322
- #: lib/wordfenceClass.php:231
7323
  msgid "Your Premium Wordfence License expires in 2 days."
7324
  msgstr ""
7325
 
7326
- #: lib/wordfenceClass.php:234
7327
  msgid "Your Premium Wordfence License expires in 1 day."
7328
  msgstr ""
7329
 
7330
- #: lib/wordfenceClass.php:238
7331
  msgid "Your Wordfence Premium License has Expired!"
7332
  msgstr ""
7333
 
7334
- #: lib/wordfenceClass.php:270
7335
  msgid "The Wordfence Premium License in use on this site has been removed from your account."
7336
  msgstr ""
7337
 
7338
- #: lib/wordfenceClass.php:270
7339
  msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help."
7340
  msgstr ""
7341
 
7342
  #. translators: Wordfence license key.
7343
- #: lib/wordfenceClass.php:280
7344
  msgid "Could not verify Wordfence License: %s"
7345
  msgstr ""
7346
 
7347
  #. translators: WordPress version.
7348
- #: lib/wordfenceClass.php:362
7349
  msgid "WordPress (v%s)"
7350
  msgstr ""
7351
 
7352
  #. translators: Number of plugins.
7353
- #: lib/wordfenceClass.php:366
7354
  msgid "%d plugin"
7355
  msgid_plural "%d plugins"
7356
  msgstr[0] ""
7357
  msgstr[1] ""
7358
 
7359
  #. translators: Number of themes.
7360
- #: lib/wordfenceClass.php:371
7361
  msgid "%d theme"
7362
  msgid_plural "%d themes"
7363
  msgstr[0] ""
7364
  msgstr[1] ""
7365
 
7366
- #: lib/wordfenceClass.php:375
7367
  msgid "An update is available for "
7368
  msgid_plural "Updates are available for "
7369
  msgstr[0] ""
7370
  msgstr[1] ""
7371
 
7372
- #: lib/wordfenceClass.php:380
7373
  msgid "and "
7374
  msgstr ""
7375
 
7376
  #. translators: Wordfence version.
7377
- #: lib/wordfenceClass.php:419
7378
  msgid "`runInstall` called with previous version = %s"
7379
  msgstr ""
7380
 
7381
- #: lib/wordfenceClass.php:471
7382
- #: lib/wordfenceClass.php:4057
7383
  msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key."
7384
  msgstr ""
7385
 
7386
- #: lib/wordfenceClass.php:835
7387
  msgid "Automatically generated from previous country blocking settings"
7388
  msgstr ""
7389
 
7390
- #: lib/wordfenceClass.php:1282
7391
  #: views/user/disabled-application-passwords.php:15
7392
  msgid "Application passwords have been disabled by Wordfence."
7393
  msgstr ""
7394
 
7395
- #: lib/wordfenceClass.php:1398
7396
  msgid "Upgrade To Premium"
7397
  msgstr ""
7398
 
7399
- #: lib/wordfenceClass.php:1417
7400
  msgid "wp_mail from address is incomplete, attempting to fix"
7401
  msgstr ""
7402
 
7403
  #. translators: Email address.
7404
- #: lib/wordfenceClass.php:1427
7405
  msgid "Fixing wp_mail from address: %s"
7406
  msgstr ""
7407
 
7408
- #: lib/wordfenceClass.php:1526
7409
  msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again."
7410
  msgstr ""
7411
 
7412
- #: lib/wordfenceClass.php:1531
7413
  msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again."
7414
  msgstr ""
7415
 
7416
- #: lib/wordfenceClass.php:1537
7417
  msgid "Wordfence encountered an internal error executing that request."
7418
  msgstr ""
7419
 
7420
  #. translators: Error message.
7421
- #: lib/wordfenceClass.php:1643
7422
  msgid "2FA Migration Error: %s"
7423
  msgstr ""
7424
 
7425
- #: lib/wordfenceClass.php:1683
7426
  msgid "Please choose a stronger password. Use at least 12 characters, and include numbers, symbols, and a mix of upper and lowercase letters. Do not use common words or sequences of letters or numbers."
7427
  msgstr ""
7428
 
7429
- #: lib/wordfenceClass.php:1689
7430
  msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed."
7431
  msgstr ""
7432
 
7433
  #. translators: Support URL.
7434
- #: lib/wordfenceClass.php:1704
7435
  msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href=\"%s\">Learn More</a>"
7436
  msgstr ""
7437
 
7438
  #. translators: 1. Password reset limit (number). 2. WordPress username.
7439
- #: lib/wordfenceClass.php:1826
7440
  msgid "Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: '%2$s'"
7441
  msgstr ""
7442
 
7443
- #: lib/wordfenceClass.php:1874
7444
- #: lib/wordfenceClass.php:2057
7445
  msgid "Sorry but your browser sent an invalid security token when trying to use this form."
7446
  msgstr ""
7447
 
7448
- #: lib/wordfenceClass.php:1879
7449
  msgid "Please wait 3 minutes and try again"
7450
  msgstr ""
7451
 
7452
- #: lib/wordfenceClass.php:1880
7453
  msgid "You have used this form too much. Please wait 3 minutes and try again."
7454
  msgstr ""
7455
 
7456
- #: lib/wordfenceClass.php:1919
7457
  msgid "Unlock email requested"
7458
  msgstr ""
7459
 
7460
- #: lib/wordfenceClass.php:1921
7461
  msgid "Your request was received"
7462
  msgstr ""
7463
 
7464
  #. translators: Email address.
7465
- #: lib/wordfenceClass.php:1922
7466
  msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now."
7467
  msgstr ""
7468
 
7469
- #: lib/wordfenceClass.php:1928
7470
  msgid "Invalid key provided for authentication."
7471
  msgstr ""
7472
 
7473
- #: lib/wordfenceClass.php:1939
7474
  msgid "Request received via unlock email link to unblock all IPs."
7475
  msgstr ""
7476
 
7477
- #: lib/wordfenceClass.php:1948
7478
  msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules."
7479
  msgstr ""
7480
 
7481
- #: lib/wordfenceClass.php:1956
7482
  msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader."
7483
  msgstr ""
7484
 
7485
- #: lib/wordfenceClass.php:2001
7486
  msgid "Unsubscribe Requested"
7487
  msgstr ""
7488
 
7489
- #: lib/wordfenceClass.php:2063
7490
  msgid "An error occurred while saving the license."
7491
  msgstr ""
7492
 
7493
  #. translators: Error message.
7494
- #: lib/wordfenceClass.php:2065
7495
- #: lib/wordfenceClass.php:2085
7496
  msgid "An error occurred while saving the license: %s"
7497
  msgstr ""
7498
 
7499
- #: lib/wordfenceClass.php:2101
7500
  msgid "Rescheduled missing daily cron"
7501
  msgstr ""
7502
 
7503
- #: lib/wordfenceClass.php:2106
7504
  msgid "Rescheduled missing hourly cron"
7505
  msgstr ""
7506
 
7507
- #: lib/wordfenceClass.php:2418
7508
- #: lib/wordfenceClass.php:2422
7509
  msgid "Accessed a banned URL"
7510
  msgstr ""
7511
 
7512
- #: lib/wordfenceClass.php:2429
7513
- #: lib/wordfenceClass.php:2433
7514
  msgid "POST received with blank user-agent and referer"
7515
  msgstr ""
7516
 
7517
- #: lib/wordfenceClass.php:2567
7518
  msgid "<strong>ERROR</strong>: You can't register using that username"
7519
  msgstr ""
7520
 
7521
- #: lib/wordfenceClass.php:2607
7522
  msgid "Sorry, you are not allowed to list users."
7523
  msgstr ""
7524
 
7525
- #: lib/wordfenceClass.php:2614
7526
  msgid "Invalid user ID."
7527
  msgstr ""
7528
 
7529
- #: lib/wordfenceClass.php:2758
7530
  msgid "<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again."
7531
  msgstr ""
7532
 
7533
  #. translators: 1. WordPress username. 2. Password reset URL.
7534
  #. translators: 1. WordPress username. 2. Reset password URL.
7535
- #: lib/wordfenceClass.php:2765
7536
- #: lib/wordfenceClass.php:3215
7537
  msgid "<strong>ERROR</strong>: The username or password you entered is incorrect. <a href=\"%2$s\" title=\"Password Lost and Found\">Lost your password</a>?"
7538
  msgstr ""
7539
 
7540
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
7541
- #: lib/wordfenceClass.php:2775
7542
- #: lib/wordfenceClass.php:2911
7543
  msgid "<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
7544
  msgstr ""
7545
 
7546
- #: lib/wordfenceClass.php:2799
7547
  msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>)."
7548
  msgstr ""
7549
 
7550
- #: lib/wordfenceClass.php:2803
7551
  msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>)."
7552
  msgstr ""
7553
 
7554
- #: lib/wordfenceClass.php:2810
7555
- #: lib/wordfenceClass.php:2861
7556
- #: lib/wordfenceClass.php:2884
7557
  msgid "<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again."
7558
  msgstr ""
7559
 
7560
- #: lib/wordfenceClass.php:2820
7561
  msgid "<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456)."
7562
  msgstr ""
7563
 
7564
- #: lib/wordfenceClass.php:2824
7565
  msgid "<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456)."
7566
  msgstr ""
7567
 
7568
- #: lib/wordfenceClass.php:2870
7569
  msgid "<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you."
7570
  msgstr ""
7571
 
7572
- #: lib/wordfenceClass.php:2893
7573
  msgid "<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with 'wf' and should be four characters (e.g., wfAB12)."
7574
  msgstr ""
7575
 
7576
- #: lib/wordfenceClass.php:2944
7577
  msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in."
7578
  msgstr ""
7579
 
7580
- #: lib/wordfenceClass.php:2949
7581
  msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
7582
  msgstr ""
7583
 
7584
- #: lib/wordfenceClass.php:2983
7585
- #: lib/wordfenceClass.php:3040
7586
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in."
7587
  msgstr ""
7588
 
7589
- #: lib/wordfenceClass.php:2988
7590
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
7591
  msgstr ""
7592
 
7593
- #: lib/wordfenceClass.php:3045
7594
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>)."
7595
  msgstr ""
7596
 
7597
  #. translators: 1. Reset password URL. 2. Support URL.
7598
- #: lib/wordfenceClass.php:3066
7599
- #: lib/wordfenceClass.php:3102
7600
  msgid "<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
7601
  msgstr ""
7602
 
7603
  #. translators: 1. Reset password URL. 2. Support URL.
7604
- #: lib/wordfenceClass.php:3083
7605
- #: lib/wordfenceClass.php:3119
7606
  msgid "<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">reset your password</a> to reactivate your account. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span style=\"font-size:0;\"> (opens in new tab)</span></a>"
7607
  msgstr ""
7608
 
7609
- #: lib/wordfenceClass.php:3091
7610
  msgid "Admin Login Blocked"
7611
  msgstr ""
7612
 
7613
  #. translators: WordPress username.
7614
- #: lib/wordfenceClass.php:3091
7615
  msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not."
7616
  msgstr ""
7617
 
7618
  #. translators: WordPress username.
7619
- #: lib/wordfenceClass.php:3092
7620
  msgid "<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account."
7621
  msgstr ""
7622
 
7623
- #: lib/wordfenceClass.php:3132
7624
  msgid "Blocked by Wordfence Security Network"
7625
  msgstr ""
7626
 
7627
- #: lib/wordfenceClass.php:3162
7628
  msgid "Blocked by login security setting"
7629
  msgstr ""
7630
 
7631
  #. translators: WordPress username.
7632
- #: lib/wordfenceClass.php:3172
7633
  msgid "Used an invalid username '%s' to try to sign in"
7634
  msgstr ""
7635
 
7636
  #. translators: 1. Login attempt limit. 2. WordPress username.
7637
- #: lib/wordfenceClass.php:3191
7638
  msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'"
7639
  msgstr ""
7640
 
7641
- #: lib/wordfenceClass.php:3548
7642
  msgid "An invalid type was specified to get file."
7643
  msgstr ""
7644
 
7645
- #: lib/wordfenceClass.php:3564
7646
  msgid "We could not fetch a core WordPress file from the Wordfence API."
7647
  msgstr ""
7648
 
7649
- #: lib/wordfenceClass.php:3623
7650
  msgid "Wordfence Test Email"
7651
  msgstr ""
7652
 
7653
  #. translators: 1. Site URL. 2. IP address.
7654
- #: lib/wordfenceClass.php:3623
7655
  msgid ""
7656
  "This is a test email from %1$s.\n"
7657
  "The IP address that requested this was: %2$s"
7658
  msgstr ""
7659
 
7660
- #: lib/wordfenceClass.php:3630
7661
  msgid "Cellphone Sign-in is only available to paid members. <a href=\"https://www.wordfence.com/gnl1twoFac3/wordfence-signup/\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to upgrade now.<span class=\"screen-reader-text\"> ("
7662
  msgstr ""
7663
 
7664
- #: lib/wordfenceClass.php:3637
7665
  msgid "The username you specified does not exist."
7666
  msgstr ""
7667
 
7668
- #: lib/wordfenceClass.php:3646
7669
  msgid "The username you specified is already enabled."
7670
  msgstr ""
7671
 
7672
- #: lib/wordfenceClass.php:3651
7673
  msgid "Unknown authentication mode."
7674
  msgstr ""
7675
 
7676
- #: lib/wordfenceClass.php:3656
7677
  msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234"
7678
  msgstr ""
7679
 
7680
  #. translators: Error message.
7681
- #: lib/wordfenceClass.php:3663
7682
- #: lib/wordfenceClass.php:3695
7683
- #: lib/wordfenceClass.php:3758
7684
  msgid "Could not contact Wordfence servers to generate a verification code: %s"
7685
  msgstr ""
7686
 
7687
  #. translators: Error message.
7688
- #: lib/wordfenceClass.php:3675
7689
- #: lib/wordfenceClass.php:3719
7690
  msgid "Could not generate verification code: %s"
7691
  msgstr ""
7692
 
7693
  #. translators: Error message.
7694
- #: lib/wordfenceClass.php:3676
7695
- #: lib/wordfenceClass.php:3720
7696
  msgid "We could not generate a verification code."
7697
  msgstr ""
7698
 
7699
- #: lib/wordfenceClass.php:3736
7700
  msgid "Unknown two-factor authentication mode."
7701
  msgstr ""
7702
 
7703
- #: lib/wordfenceClass.php:3769
7704
  msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code."
7705
  msgstr ""
7706
 
7707
- #: lib/wordfenceClass.php:3774
7708
  msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page."
7709
  msgstr ""
7710
 
7711
- #: lib/wordfenceClass.php:3856
7712
  msgid "That user has already been removed from the list."
7713
  msgstr ""
7714
 
7715
- #: lib/wordfenceClass.php:3876
7716
  msgid "No scan is scheduled"
7717
  msgstr ""
7718
 
7719
- #: lib/wordfenceClass.php:3881
7720
  msgid "Next scan is starting now"
7721
  msgstr ""
7722
 
7723
  #. translators: 1. Time until. 2. Localized date.
7724
- #: lib/wordfenceClass.php:3884
7725
  msgid "Next scan in %1$s (%2$s)"
7726
  msgstr ""
7727
 
7728
  #. translators: Localized date.
7729
- #: lib/wordfenceClass.php:3901
7730
  msgid "Scheduled Wordfence scan starting at %s"
7731
  msgstr ""
7732
 
7733
- #: lib/wordfenceClass.php:3924
7734
  msgid "Sorry but this feature is only available for paid customers."
7735
  msgstr ""
7736
 
7737
  #. translators: Site URL.
7738
- #: lib/wordfenceClass.php:3938
7739
  msgid "SITE: %s"
7740
  msgstr ""
7741
 
7742
  #. translators: Plugin version.
7743
- #: lib/wordfenceClass.php:3939
7744
  msgid "PLUGIN VERSION: %s"
7745
  msgstr ""
7746
 
7747
  #. translators: WordPress version.
7748
- #: lib/wordfenceClass.php:3940
7749
  msgid "WORDPRESS VERSION: %s"
7750
  msgstr ""
7751
 
7752
  #. translators: Wordfence license key.
7753
- #: lib/wordfenceClass.php:3941
7754
  msgid "LICENSE KEY: %s"
7755
  msgstr ""
7756
 
7757
  #. translators: Email address.
7758
- #: lib/wordfenceClass.php:3942
7759
  msgid "ADMIN EMAIL: %s"
7760
  msgstr ""
7761
 
7762
  #. translators: Email address.
7763
- #: lib/wordfenceClass.php:3943
7764
  msgid "LOG:"
7765
  msgstr ""
7766
 
7767
- #: lib/wordfenceClass.php:3959
7768
  msgid "# Scan Issues"
7769
  msgstr ""
7770
 
7771
  #. translators: Number of scan results.
7772
- #: lib/wordfenceClass.php:3964
7773
  msgid "## New Issues (%d total)"
7774
  msgstr ""
7775
 
7776
  #. translators: Number of scan results.
7777
- #: lib/wordfenceClass.php:3991
7778
  msgid "## Ignored Issues (%d total)"
7779
  msgstr ""
7780
 
7781
- #: lib/wordfenceClass.php:4012
7782
  msgid "No Ignored Issues"
7783
  msgstr ""
7784
 
7785
- #: lib/wordfenceClass.php:4034
7786
  msgid "Wordfence Activity Log"
7787
  msgstr ""
7788
 
7789
  #. translators: Error message.
7790
- #: lib/wordfenceClass.php:4060
7791
  msgid "Could not fetch free license key from Wordfence: %s"
7792
  msgstr ""
7793
 
7794
- #: lib/wordfenceClass.php:4151
7795
  msgid "We could not find your .htaccess file to modify it."
7796
  msgstr ""
7797
 
7798
  #. translators: Error message.
7799
- #: lib/wordfenceClass.php:4156
7800
  msgid "We found your .htaccess file but could not open it for writing: %s"
7801
  msgstr ""
7802
 
7803
- #: lib/wordfenceClass.php:4239
7804
  msgid "All Countries"
7805
  msgstr ""
7806
 
7807
- #: lib/wordfenceClass.php:4242
7808
  msgid "1 Country"
7809
  msgstr ""
7810
 
7811
  #. translators: Number of countries.
7812
- #: lib/wordfenceClass.php:4245
7813
  msgid "%d Countries"
7814
  msgstr ""
7815
 
7816
- #: lib/wordfenceClass.php:4249
7817
  msgid "Entire Site"
7818
  msgstr ""
7819
 
7820
- #: lib/wordfenceClass.php:4252
7821
  msgid "Login Only"
7822
  msgstr ""
7823
 
7824
- #: lib/wordfenceClass.php:4255
7825
  msgid "Site Except Login"
7826
  msgstr ""
7827
 
7828
- #: lib/wordfenceClass.php:4263
7829
  msgid "IP Range"
7830
  msgstr ""
7831
 
7832
  #. translators: 2FA backup codes.
7833
- #: lib/wordfenceClass.php:4264
7834
- #: lib/wordfenceClass.php:6267
7835
  msgid "User Agent"
7836
  msgstr ""
7837
 
7838
- #: lib/wordfenceClass.php:4265
7839
  #: views/blocking/blocking-create.php:201
7840
  msgid "Referrer"
7841
  msgstr ""
7842
 
7843
- #: lib/wordfenceClass.php:4280
7844
  msgid "Permanent"
7845
  msgstr ""
7846
 
7847
- #: lib/wordfenceClass.php:4352
7848
  msgid "An error occurred while creating the block."
7849
  msgstr ""
7850
 
7851
- #: lib/wordfenceClass.php:4358
7852
  msgid "No block parameters were provided."
7853
  msgstr ""
7854
 
7855
- #: lib/wordfenceClass.php:4395
7856
- #: lib/wordfenceClass.php:4427
7857
  msgid "No blocks were provided."
7858
  msgstr ""
7859
 
7860
- #: lib/wordfenceClass.php:4459
7861
  msgid "The license provided is already in use on another site."
7862
  msgstr ""
7863
 
7864
- #: lib/wordfenceClass.php:4464
7865
  msgid "The Wordfence activation server returned an unexpected response. Please try again."
7866
  msgstr ""
7867
 
7868
- #: lib/wordfenceClass.php:4470
7869
  msgid "We received an error while trying to activate the license with the Wordfence servers: "
7870
  msgstr ""
7871
 
7872
- #: lib/wordfenceClass.php:4483
7873
  msgid "No license was provided to install."
7874
  msgstr ""
7875
 
7876
- #: lib/wordfenceClass.php:4534
7877
  msgid "An unknown configuration section was provided."
7878
  msgstr ""
7879
 
7880
- #: lib/wordfenceClass.php:4540
7881
  msgid "No configuration section was provided."
7882
  msgstr ""
7883
 
7884
- #: lib/wordfenceClass.php:4586
7885
- #: lib/wordfenceClass.php:4591
7886
  msgid "An error occurred while saving the configuration."
7887
  msgstr ""
7888
 
7889
- #: lib/wordfenceClass.php:4602
7890
  msgid "No configuration changes were provided to save."
7891
  msgstr ""
7892
 
7893
- #: lib/wordfenceClass.php:4633
7894
- #: lib/wordfenceClass.php:5271
7895
- #: lib/wordfenceClass.php:5302
7896
- #: lib/wordfenceClass.php:7386
7897
- #: lib/wordfenceClass.php:7421
7898
- #: lib/wordfenceClass.php:7453
7899
  msgid "We could not find that issue in our database."
7900
  msgstr ""
7901
 
7902
- #: lib/wordfenceClass.php:4643
7903
  msgid "An error occurred while trying to hide the file."
7904
  msgstr ""
7905
 
7906
- #: lib/wordfenceClass.php:4656
7907
  msgid "An invalid file was requested for hiding."
7908
  msgstr ""
7909
 
7910
- #: lib/wordfenceClass.php:4683
7911
- #: lib/wordfenceClass.php:5282
7912
  msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
7913
  msgstr ""
7914
 
7915
- #: lib/wordfenceClass.php:4707
7916
  msgid "Manual permanent block by admin"
7917
  msgstr ""
7918
 
7919
- #: lib/wordfenceClass.php:4748
7920
  msgid "Please enter a valid IP address to block."
7921
  msgstr ""
7922
 
7923
- #: lib/wordfenceClass.php:4751
7924
  msgid "You can't block your own IP address."
7925
  msgstr ""
7926
 
7927
  #. translators: IP address.
7928
- #: lib/wordfenceClass.php:4755
7929
  msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page."
7930
  msgstr ""
7931
 
7932
  #. translators: IP address.
7933
- #: lib/wordfenceClass.php:4757
7934
  msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for."
7935
  msgstr ""
7936
 
7937
- #: lib/wordfenceClass.php:4763
7938
  msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google."
7939
  msgstr ""
7940
 
7941
- #: lib/wordfenceClass.php:4806
7942
  msgid "An invalid operation was called."
7943
  msgstr ""
7944
 
7945
- #: lib/wordfenceClass.php:4816
7946
  msgid "An invalid status was specified when trying to update that issue."
7947
  msgstr ""
7948
 
7949
- #: lib/wordfenceClass.php:4828
7950
  msgid "Scan stop request received."
7951
  msgstr ""
7952
 
7953
- #: lib/wordfenceClass.php:4829
7954
  msgid "A request was received to stop the previous scan."
7955
  msgstr ""
7956
 
7957
- #: lib/wordfenceClass.php:4878
7958
  msgid "Idle"
7959
  msgstr ""
7960
 
7961
  #. translators: Localized date.
7962
- #: lib/wordfenceClass.php:4887
7963
  msgid "Scan completed on %s"
7964
  msgstr ""
7965
 
7966
- #: lib/wordfenceClass.php:4894
7967
  msgid "Last scan failed"
7968
  msgstr ""
7969
 
7970
  #. translators: Time until.
7971
- #: lib/wordfenceClass.php:4957
7972
  msgid "more than %s"
7973
  msgstr ""
7974
 
7975
  #. translators: Localized date.
7976
- #: lib/wordfenceClass.php:4961
7977
  msgid "The current scan looks like it has failed. Its last status update was <span id=\"wf-scan-failed-time-ago\">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably."
7978
  msgstr ""
7979
 
7980
  #. translators: Localized date.
 
7981
  #: lib/wordfenceClass.php:4961
7982
- #: lib/wordfenceClass.php:4969
7983
- #: lib/wordfenceClass.php:4988
7984
- #: lib/wordfenceClass.php:5000
7985
- #: lib/wordfenceClass.php:5008
7986
  msgid "Click here for steps you can try."
7987
  msgstr ""
7988
 
7989
  #. translators: Localized date.
7990
- #: lib/wordfenceClass.php:4962
7991
  msgid "Cancel Scan"
7992
  msgstr ""
7993
 
7994
- #: lib/wordfenceClass.php:4969
7995
  msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably."
7996
  msgstr ""
7997
 
7998
  #. translators: Time limit (number).
7999
- #: lib/wordfenceClass.php:4975
8000
  msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page."
8001
  msgstr ""
8002
 
8003
- #: lib/wordfenceClass.php:4981
8004
  msgid "The previous scan has terminated because we detected an update occurring during the scan."
8005
  msgstr ""
8006
 
8007
- #: lib/wordfenceClass.php:4988
8008
- msgid "The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself."
8009
  msgstr ""
8010
 
8011
- #: lib/wordfenceClass.php:4994
 
 
 
 
 
 
 
 
 
 
 
 
8012
  msgid "Scans are not functional because SSL is unavailable."
8013
  msgstr ""
8014
 
8015
- #: lib/wordfenceClass.php:5000
8016
  msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably."
8017
  msgstr ""
8018
 
8019
- #: lib/wordfenceClass.php:5008
8020
  msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably."
8021
  msgstr ""
8022
 
8023
- #: lib/wordfenceClass.php:5035
8024
  msgid "Invalid email address given."
8025
  msgstr ""
8026
 
8027
- #: lib/wordfenceClass.php:5072
8028
- #: lib/wordfenceClass.php:5193
8029
  msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted."
8030
  msgstr ""
8031
 
8032
  #. translators: 1. File path. 2. Error message.
8033
- #: lib/wordfenceClass.php:5081
8034
  msgid "Could not delete file %1$s. Error was: %2$s"
8035
  msgstr ""
8036
 
8037
  #. translators: File path.
8038
- #: lib/wordfenceClass.php:5102
8039
  msgid "We could not retrieve the original file of %s to do a repair."
8040
  msgstr ""
8041
 
8042
  #. translators: File path.
8043
- #: lib/wordfenceClass.php:5107
8044
  msgid "An invalid file %s was specified for repair."
8045
  msgstr ""
8046
 
8047
  #. translators: File path.
8048
- #: lib/wordfenceClass.php:5115
8049
  msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
8050
  msgstr ""
8051
 
8052
  #. translators: 1. File path. 2. Error message.
8053
- #: lib/wordfenceClass.php:5118
8054
  msgid "We could not write to %1$s. The error was: %2$s"
8055
  msgstr ""
8056
 
8057
  #. translators: 1. File path. 2. Number of bytes.
8058
- #: lib/wordfenceClass.php:5129
8059
  msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server."
8060
  msgstr ""
8061
 
8062
- #: lib/wordfenceClass.php:5141
8063
  msgid "Deleted some files with errors"
8064
  msgstr ""
8065
 
8066
- #: lib/wordfenceClass.php:5141
8067
  msgid "Repaired some files with errors"
8068
  msgstr ""
8069
 
8070
  #. translators: 1. Number of files. 2. Error message.
8071
- #: lib/wordfenceClass.php:5144
8072
  msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s"
8073
  msgstr ""
8074
 
8075
  #. translators: 1. Number of files. 2. Error message.
8076
- #: lib/wordfenceClass.php:5146
8077
  msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s"
8078
  msgstr ""
8079
 
8080
  #. translators: Number of files.
8081
- #: lib/wordfenceClass.php:5150
8082
  msgid "Deleted %d files successfully"
8083
  msgstr ""
8084
 
8085
  #. translators: Number of files.
8086
- #: lib/wordfenceClass.php:5150
8087
  msgid "Repaired %d files successfully"
8088
  msgstr ""
8089
 
8090
  #. translators: Number of files.
8091
- #: lib/wordfenceClass.php:5151
8092
  msgid "Deleted %d files successfully. No errors were encountered."
8093
  msgstr ""
8094
 
8095
  #. translators: Number of files.
8096
- #: lib/wordfenceClass.php:5151
8097
  msgid "Repaired %d files successfully. No errors were encountered."
8098
  msgstr ""
8099
 
8100
- #: lib/wordfenceClass.php:5154
8101
  msgid "Could not delete files"
8102
  msgstr ""
8103
 
8104
- #: lib/wordfenceClass.php:5154
8105
  msgid "Could not repair files"
8106
  msgstr ""
8107
 
8108
  #. translators: Error message.
8109
- #: lib/wordfenceClass.php:5157
8110
  msgid "We could not delete any of the files you selected. We encountered the following errors: %s"
8111
  msgstr ""
8112
 
8113
  #. translators: Error message.
8114
- #: lib/wordfenceClass.php:5159
8115
  msgid "We could not repair any of the files you selected. We encountered the following errors: %s"
8116
  msgstr ""
8117
 
8118
- #: lib/wordfenceClass.php:5162
8119
  msgid "Nothing done"
8120
  msgstr ""
8121
 
8122
- #: lib/wordfenceClass.php:5163
8123
  msgid "We didn't delete anything and no errors were found."
8124
  msgstr ""
8125
 
8126
- #: lib/wordfenceClass.php:5163
8127
  msgid "We didn't repair anything and no errors were found."
8128
  msgstr ""
8129
 
8130
- #: lib/wordfenceClass.php:5171
8131
  msgid "Invalid bulk operation selected"
8132
  msgstr ""
8133
 
8134
- #: lib/wordfenceClass.php:5181
8135
  msgid "Could not delete file because we could not find that issue."
8136
  msgstr ""
8137
 
8138
- #: lib/wordfenceClass.php:5184
8139
  msgid "Could not delete file because that issue does not appear to be a file related issue."
8140
  msgstr ""
8141
 
8142
- #: lib/wordfenceClass.php:5189
8143
  msgid "An invalid file was requested for deletion."
8144
  msgstr ""
8145
 
8146
  #. translators: 1. File path. 2. Error message.
8147
- #: lib/wordfenceClass.php:5232
8148
  msgid "Could not delete file %1$s. The error was: %2$s"
8149
  msgstr ""
8150
 
8151
- #: lib/wordfenceClass.php:5245
8152
  msgid "Could not remove the option because we could not find that issue."
8153
  msgstr ""
8154
 
8155
- #: lib/wordfenceClass.php:5248
8156
  msgid "Could not remove the option because that issue does not appear to be a database related issue."
8157
  msgstr ""
8158
 
8159
  #. translators: 1. WordPress option. 2. Error message.
8160
- #: lib/wordfenceClass.php:5261
8161
  msgid "Could not remove the option %1$s. The error was: %2$s"
8162
  msgstr ""
8163
 
8164
- #: lib/wordfenceClass.php:5288
8165
  msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control."
8166
  msgstr ""
8167
 
8168
- #: lib/wordfenceClass.php:5330
8169
  msgid "We could not get the original file to do a repair."
8170
  msgstr ""
8171
 
8172
- #: lib/wordfenceClass.php:5334
8173
  msgid "An invalid file was specified for repair."
8174
  msgstr ""
8175
 
8176
- #: lib/wordfenceClass.php:5354
8177
  msgid "We could not write to that file. You may not have permission to modify files on your WordPress server."
8178
  msgstr ""
8179
 
8180
- #: lib/wordfenceClass.php:5358
8181
  msgid "Ajax request received to start scan."
8182
  msgstr ""
8183
 
8184
  #. translators: Number of URLs.
8185
- #: lib/wordfenceClass.php:5413
8186
  msgid "Page contains %d malware URL: "
8187
  msgid_plural "Page contains %d malware URLs: "
8188
  msgstr[0] ""
8189
  msgstr[1] ""
8190
 
8191
- #: lib/wordfenceClass.php:5416
8192
  msgid "Run a Scan"
8193
  msgstr ""
8194
 
8195
- #: lib/wordfenceClass.php:5464
8196
  msgid "Unknown dashboard data set."
8197
  msgstr ""
8198
 
8199
- #: lib/wordfenceClass.php:5495
8200
  msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again."
8201
  msgstr ""
8202
 
8203
- #: lib/wordfenceClass.php:5682
8204
  msgid "An invalid IP address was specified."
8205
  msgstr ""
8206
 
8207
- #: lib/wordfenceClass.php:5724
8208
  msgid "This link has expired. Refresh the scan results page and try again."
8209
  msgstr ""
8210
 
8211
- #: lib/wordfenceClass.php:5748
8212
- #: lib/wordfenceClass.php:5791
8213
- #: lib/wordfenceClass.php:5840
8214
  msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)"
8215
  msgstr ""
8216
 
8217
- #: lib/wordfenceClass.php:5755
8218
- #: lib/wordfenceClass.php:5847
8219
  msgid "Invalid file requested. (Relative paths not allowed)"
8220
  msgstr ""
8221
 
8222
- #: lib/wordfenceClass.php:5759
8223
- #: lib/wordfenceClass.php:5795
8224
- #: lib/wordfenceClass.php:5851
8225
  msgid "File contains illegal characters."
8226
  msgstr ""
8227
 
8228
  #. translators: Error message.
8229
- #: lib/wordfenceClass.php:5769
8230
  msgid "We could not open the requested file for reading. The error was: %s"
8231
  msgstr ""
8232
 
8233
- #: lib/wordfenceClass.php:5777
8234
  msgid "Greater than 2 Gigs"
8235
  msgstr ""
8236
 
8237
- #: lib/wordfenceClass.php:5782
8238
  msgid "Unknown file size."
8239
  msgstr ""
8240
 
8241
- #: lib/wordfenceClass.php:5804
8242
  msgid "We could not get the contents of the original file to do a comparison."
8243
  msgstr ""
8244
 
8245
- #: lib/wordfenceClass.php:5813
8246
  msgid "Empty file path provided"
8247
  msgstr ""
8248
 
8249
- #: lib/wordfenceClass.php:5818
8250
  msgid "Unable to read file contents"
8251
  msgstr ""
8252
 
8253
- #: lib/wordfenceClass.php:5855
8254
  msgid "File does not exist."
8255
  msgstr ""
8256
 
8257
- #: lib/wordfenceClass.php:6109
8258
  #: views/dashboard/options-group-import.php:167
8259
  msgid "Reload"
8260
  msgstr ""
8261
 
8262
- #: lib/wordfenceClass.php:6126
8263
  msgid "${totalIPs} addresses in this network"
8264
  msgstr ""
8265
 
8266
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8267
- #: lib/wordfenceClass.php:6127
8268
  msgid "%s in POST body: %s"
8269
  msgstr ""
8270
 
8271
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8272
- #: lib/wordfenceClass.php:6128
8273
  msgid "%s in cookie: %s"
8274
  msgstr ""
8275
 
8276
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8277
- #: lib/wordfenceClass.php:6129
8278
  msgid "%s in file: %s"
8279
  msgstr ""
8280
 
8281
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8282
- #: lib/wordfenceClass.php:6130
8283
  msgid "%s in query string: %s"
8284
  msgstr ""
8285
 
8286
  #. translators: Domain name.
8287
- #: lib/wordfenceClass.php:6131
8288
  msgid "%s is not valid hostname"
8289
  msgstr ""
8290
 
8291
  #. translators: Domain name.
8292
- #: lib/wordfenceClass.php:6132
8293
  msgid ".htaccess Updated"
8294
  msgstr ""
8295
 
8296
- #: lib/wordfenceClass.php:6133
8297
  msgid ".htaccess change"
8298
  msgstr ""
8299
 
8300
- #: lib/wordfenceClass.php:6134
8301
  msgid "404 Not Found"
8302
  msgstr ""
8303
 
8304
- #: lib/wordfenceClass.php:6135
8305
  msgid "Activity Log Sent"
8306
  msgstr ""
8307
 
8308
- #: lib/wordfenceClass.php:6136
8309
  msgid "Add action to allowlist"
8310
  msgstr ""
8311
 
8312
- #: lib/wordfenceClass.php:6137
8313
  msgid "Add code to .htaccess"
8314
  msgstr ""
8315
 
8316
- #: lib/wordfenceClass.php:6138
8317
  msgid "All Hits"
8318
  msgstr ""
8319
 
8320
  #. translators: WordPress username.
8321
- #: lib/wordfenceClass.php:6139
8322
  msgid "All capabilties of admin user %s were successfully revoked."
8323
  msgstr ""
8324
 
8325
- #: lib/wordfenceClass.php:6141
8326
  msgid "An error occurred when adding the request to the allowlist."
8327
  msgstr ""
8328
 
8329
- #: lib/wordfenceClass.php:6142
8330
  msgid "Are you sure you want to allowlist this action?"
8331
  msgstr ""
8332
 
8333
- #: lib/wordfenceClass.php:6143
8334
  msgid "Authentication Code"
8335
  msgstr ""
8336
 
8337
- #: lib/wordfenceClass.php:6144
8338
  msgid "Background Request Blocked"
8339
  msgstr ""
8340
 
8341
- #: lib/wordfenceClass.php:6145
8342
  msgid "Block This Network"
8343
  msgstr ""
8344
 
8345
- #: lib/wordfenceClass.php:6147
8346
  msgid "Blocked By Firewall"
8347
  msgstr ""
8348
 
8349
- #: lib/wordfenceClass.php:6148
8350
  msgid "Blocked WAF"
8351
  msgstr ""
8352
 
8353
- #: lib/wordfenceClass.php:6149
8354
  msgid "Blocked by Wordfence"
8355
  msgstr ""
8356
 
8357
- #: lib/wordfenceClass.php:6150
8358
  msgid "Blocked by Wordfence plugin settings"
8359
  msgstr ""
8360
 
8361
- #: lib/wordfenceClass.php:6151
8362
  msgid "Blocked by the Wordfence Application Firewall and plugin settings"
8363
  msgstr ""
8364
 
8365
- #: lib/wordfenceClass.php:6152
8366
  msgid "Blocked by the Wordfence Security Network"
8367
  msgstr ""
8368
 
8369
- #: lib/wordfenceClass.php:6153
8370
  msgid "Blocked by the Wordfence Web Application Firewall"
8371
  msgstr ""
8372
 
8373
- #: lib/wordfenceClass.php:6156
8374
  msgid "Cellphone Sign-In Recovery Codes"
8375
  msgstr ""
8376
 
8377
- #: lib/wordfenceClass.php:6157
8378
  msgid "Cellphone Sign-in activated for user."
8379
  msgstr ""
8380
 
8381
- #: lib/wordfenceClass.php:6158
8382
  msgid "Click here to download a backup copy of this file now"
8383
  msgstr ""
8384
 
8385
- #: lib/wordfenceClass.php:6159
8386
  msgid "Click here to download a backup copy of your .htaccess file now"
8387
  msgstr ""
8388
 
8389
- #: lib/wordfenceClass.php:6160
8390
  msgid "Click to fix .htaccess"
8391
  msgstr ""
8392
 
8393
- #: lib/wordfenceClass.php:6162
8394
  msgid "Crawlers"
8395
  msgstr ""
8396
 
8397
- #: lib/wordfenceClass.php:6163
8398
  msgid "Diagnostic report has been sent successfully."
8399
  msgstr ""
8400
 
8401
- #: lib/wordfenceClass.php:6164
8402
  msgid "Directory Listing Disabled"
8403
  msgstr ""
8404
 
8405
- #: lib/wordfenceClass.php:6165
8406
  msgid "Directory listing has been disabled on your server."
8407
  msgstr ""
8408
 
8409
- #: lib/wordfenceClass.php:6168
8410
  msgid "Don't ask again"
8411
  msgstr ""
8412
 
8413
- #: lib/wordfenceClass.php:6170
8414
  msgid "Download Backup File"
8415
  msgstr ""
8416
 
8417
- #: lib/wordfenceClass.php:6171
8418
  msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:"
8419
  msgstr ""
8420
 
8421
- #: lib/wordfenceClass.php:6172
8422
  msgid "Email Diagnostic Report"
8423
  msgstr ""
8424
 
8425
- #: lib/wordfenceClass.php:6173
8426
  msgid "Email Wordfence Activity Log"
8427
  msgstr ""
8428
 
8429
- #: lib/wordfenceClass.php:6175
8430
  msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data."
8431
  msgstr ""
8432
 
8433
- #: lib/wordfenceClass.php:6176
8434
  msgid "Error"
8435
  msgstr ""
8436
 
8437
- #: lib/wordfenceClass.php:6177
8438
  msgid "Error Enabling All Options Page"
8439
  msgstr ""
8440
 
8441
- #: lib/wordfenceClass.php:6178
8442
  msgid "Error Restoring Defaults"
8443
  msgstr ""
8444
 
8445
- #: lib/wordfenceClass.php:6179
8446
  msgid "Error Saving Option"
8447
  msgstr ""
8448
 
8449
- #: lib/wordfenceClass.php:6180
8450
  msgid "Error Saving Options"
8451
  msgstr ""
8452
 
8453
- #: lib/wordfenceClass.php:6181
8454
  msgid "Failed Login"
8455
  msgstr ""
8456
 
8457
- #: lib/wordfenceClass.php:6182
8458
  msgid "Failed Login: Invalid Username"
8459
  msgstr ""
8460
 
8461
- #: lib/wordfenceClass.php:6183
8462
  msgid "Failed Login: Valid Username"
8463
  msgstr ""
8464
 
8465
- #: lib/wordfenceClass.php:6184
8466
  msgid "File hidden successfully"
8467
  msgstr ""
8468
 
8469
- #: lib/wordfenceClass.php:6185
8470
  msgid "File restored OK"
8471
  msgstr ""
8472
 
8473
- #: lib/wordfenceClass.php:6186
8474
  msgid "Filter Traffic"
8475
  msgstr ""
8476
 
8477
- #: lib/wordfenceClass.php:6187
8478
  msgid "Firewall Response"
8479
  msgstr ""
8480
 
8481
- #: lib/wordfenceClass.php:6188
8482
  #: views/scanner/issue-wpscan_fullPathDiscl.php:8
8483
  msgid "Full Path Disclosure"
8484
  msgstr ""
8485
 
8486
- #: lib/wordfenceClass.php:6189
8487
  msgid "Google Bot"
8488
  msgstr ""
8489
 
8490
- #: lib/wordfenceClass.php:6190
8491
  msgid "Google Crawlers"
8492
  msgstr ""
8493
 
8494
- #: lib/wordfenceClass.php:6191
8495
  msgid "HTTP Response Code"
8496
  msgstr ""
8497
 
8498
- #: lib/wordfenceClass.php:6193
8499
  msgid "Humans"
8500
  msgstr ""
8501
 
8502
- #: lib/wordfenceClass.php:6195
8503
  msgid "Key:"
8504
  msgstr ""
8505
 
8506
  #. translators: Localized date.
8507
- #: lib/wordfenceClass.php:6196
8508
  msgid "Last Updated: %s"
8509
  msgstr ""
8510
 
8511
  #. translators: Localized date.
8512
- #: lib/wordfenceClass.php:6197
8513
  msgid "Learn more about repairing modified files."
8514
  msgstr ""
8515
 
8516
- #: lib/wordfenceClass.php:6199
8517
  msgid "Locked Out"
8518
  msgstr ""
8519
 
8520
- #: lib/wordfenceClass.php:6200
8521
  msgid "Locked out from logging in"
8522
  msgstr ""
8523
 
8524
- #: lib/wordfenceClass.php:6201
8525
  msgid "Logged In"
8526
  msgstr ""
8527
 
8528
- #: lib/wordfenceClass.php:6202
8529
  msgid "Logins"
8530
  msgstr ""
8531
 
8532
- #: lib/wordfenceClass.php:6203
8533
  msgid "Logins and Logouts"
8534
  msgstr ""
8535
 
8536
  #. translators: Localized date.
8537
- #: lib/wordfenceClass.php:6206
8538
  msgid "Next Update Check: %s"
8539
  msgstr ""
8540
 
8541
  #. translators: Localized date.
8542
- #: lib/wordfenceClass.php:6207
8543
  msgid "No activity to report yet. Please complete your first scan."
8544
  msgstr ""
8545
 
8546
- #: lib/wordfenceClass.php:6208
8547
  msgid "No issues have been ignored."
8548
  msgstr ""
8549
 
8550
- #: lib/wordfenceClass.php:6209
8551
  msgid "No new issues have been found."
8552
  msgstr ""
8553
 
8554
- #: lib/wordfenceClass.php:6210
8555
  msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory."
8556
  msgstr ""
8557
 
8558
- #: lib/wordfenceClass.php:6211
8559
  msgid "No rules were updated. Please verify your website can reach the Wordfence servers."
8560
  msgstr ""
8561
 
8562
- #: lib/wordfenceClass.php:6212
8563
  msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later."
8564
  msgstr ""
8565
 
8566
- #: lib/wordfenceClass.php:6213
8567
  msgid "Note: Status will update when changes are saved"
8568
  msgstr ""
8569
 
8570
- #: lib/wordfenceClass.php:6214
8571
  msgid "OK"
8572
  msgstr ""
8573
 
8574
- #: lib/wordfenceClass.php:6215
8575
  msgid "Pages Not Found"
8576
  msgstr ""
8577
 
8578
- #: lib/wordfenceClass.php:6216
8579
  msgid "Paid Members Only"
8580
  msgstr ""
8581
 
8582
- #: lib/wordfenceClass.php:6218
8583
  msgid "Please enter a valid email address."
8584
  msgstr ""
8585
 
8586
- #: lib/wordfenceClass.php:6219
8587
  msgid "Please include your support ticket number or forum username."
8588
  msgstr ""
8589
 
8590
- #: lib/wordfenceClass.php:6220
8591
  msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:"
8592
  msgstr ""
8593
 
8594
- #: lib/wordfenceClass.php:6221
8595
  msgid "Please specify a reason"
8596
  msgstr ""
8597
 
8598
- #: lib/wordfenceClass.php:6222
8599
  msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."
8600
  msgstr ""
8601
 
8602
- #: lib/wordfenceClass.php:6223
8603
  msgid "Please specify either an IP address range, Hostname or a web browser pattern to match."
8604
  msgstr ""
8605
 
8606
- #: lib/wordfenceClass.php:6224
8607
  msgid "Recent Activity"
8608
  msgstr ""
8609
 
8610
- #: lib/wordfenceClass.php:6225
8611
  msgid "Recovery Codes"
8612
  msgstr ""
8613
 
8614
- #: lib/wordfenceClass.php:6226
8615
  msgid "Redirected"
8616
  msgstr ""
8617
 
8618
- #: lib/wordfenceClass.php:6227
8619
  msgid "Redirected by Country Blocking bypass URL"
8620
  msgstr ""
8621
 
8622
- #: lib/wordfenceClass.php:6228
8623
  msgid "Referer"
8624
  msgstr ""
8625
 
8626
- #: lib/wordfenceClass.php:6229
8627
  msgid "Registered Users"
8628
  msgstr ""
8629
 
8630
- #: lib/wordfenceClass.php:6231
8631
  msgid "Rule Update Failed"
8632
  msgstr ""
8633
 
8634
- #: lib/wordfenceClass.php:6232
8635
  msgid "Rules Updated"
8636
  msgstr ""
8637
 
8638
- #: lib/wordfenceClass.php:6234
8639
  msgid "Scan Complete."
8640
  msgstr ""
8641
 
8642
- #: lib/wordfenceClass.php:6235
8643
  msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead."
8644
  msgstr ""
8645
 
8646
- #: lib/wordfenceClass.php:6236
8647
  msgid "Security Event"
8648
  msgstr ""
8649
 
8650
- #: lib/wordfenceClass.php:6237
8651
  msgid "Send"
8652
  msgstr ""
8653
 
8654
- #: lib/wordfenceClass.php:6238
8655
  msgid "Sorry, but no data for that IP or domain was found."
8656
  msgstr ""
8657
 
8658
- #: lib/wordfenceClass.php:6239
8659
  msgid "Specify a valid IP range"
8660
  msgstr ""
8661
 
8662
- #: lib/wordfenceClass.php:6240
8663
  msgid "Specify a valid hostname"
8664
  msgstr ""
8665
 
8666
- #: lib/wordfenceClass.php:6241
8667
  msgid "Specify an IP range, Hostname or Browser pattern"
8668
  msgstr ""
8669
 
8670
- #: lib/wordfenceClass.php:6242
8671
  msgid "Success deleting file"
8672
  msgstr ""
8673
 
8674
- #: lib/wordfenceClass.php:6243
8675
  msgid "Success removing option"
8676
  msgstr ""
8677
 
8678
- #: lib/wordfenceClass.php:6244
8679
  msgid "Success restoring file"
8680
  msgstr ""
8681
 
8682
- #: lib/wordfenceClass.php:6245
8683
  msgid "Success updating option"
8684
  msgstr ""
8685
 
8686
- #: lib/wordfenceClass.php:6246
8687
  msgid "Successfully deleted admin"
8688
  msgstr ""
8689
 
8690
- #: lib/wordfenceClass.php:6247
8691
  msgid "Successfully revoked admin"
8692
  msgstr ""
8693
 
8694
- #: lib/wordfenceClass.php:6248
8695
  msgid "Test Email Sent"
8696
  msgstr ""
8697
 
8698
- #: lib/wordfenceClass.php:6249
8699
  msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value."
8700
  msgstr ""
8701
 
8702
- #: lib/wordfenceClass.php:6250
8703
  msgid "The Full Path disclosure issue has been fixed"
8704
  msgstr ""
8705
 
8706
  #. translators: WordPress username.
8707
- #: lib/wordfenceClass.php:6251
8708
  msgid "The admin user %s was successfully deleted."
8709
  msgstr ""
8710
 
8711
  #. translators: File path.
8712
- #: lib/wordfenceClass.php:6252
8713
  msgid "The file %s was successfully deleted."
8714
  msgstr ""
8715
 
8716
  #. translators: File path.
8717
- #: lib/wordfenceClass.php:6253
8718
  msgid "The file %s was successfully hidden from public view."
8719
  msgstr ""
8720
 
8721
  #. translators: File path.
8722
- #: lib/wordfenceClass.php:6254
8723
  msgid "The file %s was successfully restored."
8724
  msgstr ""
8725
 
8726
  #. translators: WordPress option.
8727
- #: lib/wordfenceClass.php:6255
8728
  msgid "The option %s was successfully removed."
8729
  msgstr ""
8730
 
8731
  #. translators: WordPress option.
8732
- #: lib/wordfenceClass.php:6256
8733
  msgid "The request has been allowlisted. Please try it again."
8734
  msgstr ""
8735
 
8736
- #: lib/wordfenceClass.php:6257
8737
  msgid "There was an error while sending the email."
8738
  msgstr ""
8739
 
8740
- #: lib/wordfenceClass.php:6258
8741
  msgid "This will be shown only once. Keep these codes somewhere safe."
8742
  msgstr ""
8743
 
8744
- #: lib/wordfenceClass.php:6259
8745
  msgid "Throttled"
8746
  msgstr ""
8747
 
8748
- #: lib/wordfenceClass.php:6260
8749
  msgid "Two Factor Status"
8750
  msgstr ""
8751
 
8752
  #. translators: HTTP client type.
8753
- #: lib/wordfenceClass.php:6262
8754
  msgid "Type: %s"
8755
  msgstr ""
8756
 
8757
  #. translators: HTTP client type.
8758
- #: lib/wordfenceClass.php:6263
8759
  #: views/scanner/issue-checkGSB.php:8
8760
  #: views/scanner/issue-commentBadURL.php:8
8761
  #: views/scanner/issue-configReadable.php:12
@@ -8775,585 +8803,585 @@ msgstr ""
8775
  msgid "URL"
8776
  msgstr ""
8777
 
8778
- #: lib/wordfenceClass.php:6264
8779
  msgid "Unable to automatically hide file"
8780
  msgstr ""
8781
 
8782
  #. translators: 2FA backup codes.
8783
- #: lib/wordfenceClass.php:6265
8784
  msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
8785
  msgstr ""
8786
 
8787
  #. translators: 2FA backup codes.
8788
- #: lib/wordfenceClass.php:6266
8789
  msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
8790
  msgstr ""
8791
 
8792
- #: lib/wordfenceClass.php:6268
8793
  msgid "User ID"
8794
  msgstr ""
8795
 
8796
- #: lib/wordfenceClass.php:6270
8797
  msgid "WHOIS LOOKUP"
8798
  msgstr ""
8799
 
8800
- #: lib/wordfenceClass.php:6271
8801
  msgid "We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding."
8802
  msgstr ""
8803
 
8804
  #. translators: Error message.
8805
- #: lib/wordfenceClass.php:6272
8806
  msgid "We can't modify your .htaccess file for you because: %s"
8807
  msgstr ""
8808
 
8809
  #. translators: Error message.
8810
- #: lib/wordfenceClass.php:6273
8811
  msgid "We encountered a problem"
8812
  msgstr ""
8813
 
8814
  #. translators: URL.
8815
- #: lib/wordfenceClass.php:6274
8816
  msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."
8817
  msgstr ""
8818
 
8819
  #. translators: URL.
8820
- #: lib/wordfenceClass.php:6275
8821
  msgid "Wordfence is working..."
8822
  msgstr ""
8823
 
8824
- #: lib/wordfenceClass.php:6276
8825
  msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."
8826
  msgstr ""
8827
 
8828
- #: lib/wordfenceClass.php:6277
8829
  msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files."
8830
  msgstr ""
8831
 
8832
- #: lib/wordfenceClass.php:6278
8833
  msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>"
8834
  msgstr ""
8835
 
8836
- #: lib/wordfenceClass.php:6279
8837
  msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."
8838
  msgstr ""
8839
 
8840
- #: lib/wordfenceClass.php:6280
8841
  msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost."
8842
  msgstr ""
8843
 
8844
- #: lib/wordfenceClass.php:6281
8845
  msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally."
8846
  msgstr ""
8847
 
8848
  #. translators: Email address.
8849
- #: lib/wordfenceClass.php:6282
8850
  msgid "Your Wordfence activity log was sent to %s"
8851
  msgstr ""
8852
 
8853
  #. translators: Email address.
8854
- #: lib/wordfenceClass.php:6283
8855
  msgid "Your rules have been updated successfully."
8856
  msgstr ""
8857
 
8858
- #: lib/wordfenceClass.php:6284
8859
  msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href=\"https://www.wordfence.com/wafUpdateRules1/wordfence-signup/\">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>"
8860
  msgstr ""
8861
 
8862
  #. translators: wp_mail() return value.
8863
- #: lib/wordfenceClass.php:6285
8864
  msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."
8865
  msgstr ""
8866
 
8867
  #. translators: wp_mail() return value.
8868
- #: lib/wordfenceClass.php:6286
8869
  msgid "blocked by firewall"
8870
  msgstr ""
8871
 
8872
  #. translators: Reason for firewall action.
8873
- #: lib/wordfenceClass.php:6287
8874
  msgid "blocked by firewall for %s"
8875
  msgstr ""
8876
 
8877
  #. translators: Reason for firewall action.
8878
- #: lib/wordfenceClass.php:6288
8879
  msgid "blocked by real-time IP blocklist"
8880
  msgstr ""
8881
 
8882
- #: lib/wordfenceClass.php:6289
8883
  msgid "blocked by the Wordfence Security Network"
8884
  msgstr ""
8885
 
8886
  #. translators: Reason for firewall action.
8887
- #: lib/wordfenceClass.php:6290
8888
  msgid "blocked for %s"
8889
  msgstr ""
8890
 
8891
  #. translators: Reason for firewall action.
8892
- #: lib/wordfenceClass.php:6291
8893
  msgid "locked out from logging in"
8894
  msgstr ""
8895
 
8896
- #: lib/wordfenceClass.php:6304
8897
  msgid "Wordfence generated an error on activation. The output we received during activation was:"
8898
  msgstr ""
8899
 
8900
- #: lib/wordfenceClass.php:6311
8901
  msgid "Wordfence could not register with the Wordfence scanning servers when it activated."
8902
  msgstr ""
8903
 
8904
- #: lib/wordfenceClass.php:6312
8905
  msgid "You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can't connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges."
8906
  msgstr ""
8907
 
8908
- #: lib/wordfenceClass.php:6326
8909
  msgid "The Wordfence Web Application Firewall cannot run."
8910
  msgstr ""
8911
 
8912
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8913
- #: lib/wordfenceClass.php:6329
8914
  msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href=\"%1$s\">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8915
  msgstr ""
8916
 
8917
- #: lib/wordfenceClass.php:6335
8918
  msgid "The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead."
8919
  msgstr ""
8920
 
8921
- #: lib/wordfenceClass.php:6348
8922
- #: lib/wordfenceClass.php:6367
8923
  msgid "The Wordfence Web Application Firewall needs a configuration update."
8924
  msgstr ""
8925
 
8926
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8927
- #: lib/wordfenceClass.php:6351
8928
  msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a>. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8929
  msgstr ""
8930
 
8931
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8932
- #: lib/wordfenceClass.php:6370
8933
  msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a> or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8934
  msgstr ""
8935
 
8936
- #: lib/wordfenceClass.php:6376
8937
  msgid "The Wordfence Web Application Firewall is in read-only mode."
8938
  msgstr ""
8939
 
8940
- #: lib/wordfenceClass.php:6385
8941
  msgid "This site is currently using PHP's built in REMOTE_ADDR."
8942
  msgstr ""
8943
 
8944
- #: lib/wordfenceClass.php:6388
8945
  msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
8946
  msgstr ""
8947
 
8948
- #: lib/wordfenceClass.php:6391
8949
  msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
8950
  msgstr ""
8951
 
8952
- #: lib/wordfenceClass.php:6394
8953
  msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare."
8954
  msgstr ""
8955
 
8956
- #: lib/wordfenceClass.php:6411
8957
  msgid "Your 'How does Wordfence get IPs' setting is misconfigured."
8958
  msgstr ""
8959
 
8960
- #: lib/wordfenceClass.php:6413
8961
  msgid "Click here to use the recommended setting"
8962
  msgstr ""
8963
 
8964
- #: lib/wordfenceClass.php:6415
8965
  #: views/onboarding/fresh-install.php:38
8966
  msgid "or"
8967
  msgstr ""
8968
 
8969
- #: lib/wordfenceClass.php:6417
8970
  msgid "visit the options page"
8971
  msgstr ""
8972
 
8973
- #: lib/wordfenceClass.php:6419
8974
  msgid "to manually update it."
8975
  msgstr ""
8976
 
8977
- #: lib/wordfenceClass.php:6427
8978
  msgid "Do you want Wordfence to stay up-to-date automatically?"
8979
  msgstr ""
8980
 
8981
- #: lib/wordfenceClass.php:6429
8982
  msgid "Yes, enable auto-update."
8983
  msgstr ""
8984
 
8985
- #: lib/wordfenceClass.php:6431
8986
  msgid "No thanks."
8987
  msgstr ""
8988
 
8989
- #: lib/wordfenceClass.php:6455
8990
  msgid "Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page."
8991
  msgstr ""
8992
 
8993
  #. translators: Localized date.
8994
- #: lib/wordfenceClass.php:6564
8995
  msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then."
8996
  msgstr ""
8997
 
8998
  #. translators: 1. Localized date. 2. WordPress admin panel URL.
8999
- #: lib/wordfenceClass.php:6572
9000
  msgid "You may wait for the next automatic attempt at %1$s or try to <a href=\"%2$s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
9001
  msgstr ""
9002
 
9003
  #. translators: WordPress admin panel URL.
9004
- #: lib/wordfenceClass.php:6578
9005
  msgid "You may wait for the next automatic attempt or try to <a href=\"%s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
9006
  msgstr ""
9007
 
9008
  #. translators: WordPress admin panel URL.
9009
- #: lib/wordfenceClass.php:6583
9010
  msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
9011
  msgstr ""
9012
 
9013
- #: lib/wordfenceClass.php:6586
9014
  msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
9015
  msgstr ""
9016
 
9017
- #: lib/wordfenceClass.php:6694
9018
  #: models/page/wfPage.php:101
9019
  msgid "Dashboard"
9020
  msgstr ""
9021
 
9022
- #: lib/wordfenceClass.php:6738
9023
  msgid "Upgrade to Care"
9024
  msgstr ""
9025
 
9026
- #: lib/wordfenceClass.php:6742
9027
  msgid "Upgrade to Response"
9028
  msgstr ""
9029
 
9030
  #. translators: Number of notifications.
9031
- #: lib/wordfenceClass.php:6791
9032
  msgid "You have %d new Wordfence notification."
9033
  msgid_plural "You have %d new Wordfence notifications."
9034
  msgstr[0] ""
9035
  msgstr[1] ""
9036
 
9037
- #: lib/wordfenceClass.php:6815
9038
  msgid "JavaScript Errors"
9039
  msgstr ""
9040
 
9041
- #: lib/wordfenceClass.php:6821
9042
  msgid "Malware URLs"
9043
  msgstr ""
9044
 
9045
  #. translators: WordPress admin panel URL.
9046
- #: lib/wordfenceClass.php:6939
9047
- #: lib/wordfenceClass.php:7002
9048
  msgid "<a href=\"%s\">Click here</a> to rebuild the configuration file."
9049
  msgstr ""
9050
 
9051
  #. translators: File path.
9052
- #: lib/wordfenceClass.php:6950
9053
- #: lib/wordfenceClass.php:7013
9054
  msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it."
9055
  msgstr ""
9056
 
9057
- #: lib/wordfenceClass.php:6960
9058
- #: lib/wordfenceClass.php:7023
9059
  msgid "An error occured when fetching the WAF configuration from the database."
9060
  msgstr ""
9061
 
9062
  #. translators: Plugin name.
9063
- #: lib/wordfenceClass.php:7045
9064
  msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic."
9065
  msgstr ""
9066
 
9067
  #. translators: 1. Plugin name.
9068
- #: lib/wordfenceClass.php:7047
9069
  msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly."
9070
  msgstr ""
9071
 
9072
  #. translators: File path.
9073
- #: lib/wordfenceClass.php:7108
9074
  msgid "The file <code>%s</code> was restored successfully."
9075
  msgstr ""
9076
 
9077
- #: lib/wordfenceClass.php:7113
9078
  msgid "There was an error restoring the file."
9079
  msgstr ""
9080
 
9081
- #: lib/wordfenceClass.php:7123
9082
- #: lib/wordfenceClass.php:7146
9083
  msgid "Return to scan results"
9084
  msgstr ""
9085
 
9086
  #. translators: File path.
9087
- #: lib/wordfenceClass.php:7132
9088
  msgid "The file <code>%s</code> was deleted successfully."
9089
  msgstr ""
9090
 
9091
- #: lib/wordfenceClass.php:7136
9092
  msgid "There was an error deleting the file."
9093
  msgstr ""
9094
 
9095
  #. translators: IP address.
9096
- #: lib/wordfenceClass.php:7204
9097
  msgid ""
9098
  "User IP: %s\n"
9099
  ""
9100
  msgstr ""
9101
 
9102
  #. translators: Domain name.
9103
- #: lib/wordfenceClass.php:7207
9104
  msgid ""
9105
  "User hostname: %s\n"
9106
  ""
9107
  msgstr ""
9108
 
9109
- #: lib/wordfenceClass.php:7211
9110
  msgid "User location: "
9111
  msgstr ""
9112
 
9113
  #. translators: WordPress admin panel URL.
9114
- #: lib/wordfenceClass.php:7266
9115
  msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s"
9116
  msgstr ""
9117
 
9118
- #: lib/wordfenceClass.php:7307
9119
  msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]"
9120
  msgstr ""
9121
 
9122
- #: lib/wordfenceClass.php:7326
9123
  msgid "Invalid email address provided"
9124
  msgstr ""
9125
 
9126
- #: lib/wordfenceClass.php:7331
9127
  msgid "Test email sent successfully"
9128
  msgstr ""
9129
 
9130
- #: lib/wordfenceClass.php:7332
9131
  msgid "Test email failed to send"
9132
  msgstr ""
9133
 
9134
  #. translators: Localized date range.
9135
- #: lib/wordfenceClass.php:7350
9136
  msgid "Wordfence activity in the past %s"
9137
  msgstr ""
9138
 
9139
- #: lib/wordfenceClass.php:7390
9140
  #: lib/wordfenceClass.php:7394
9141
- #: lib/wordfenceClass.php:7425
 
9142
  msgid "We could not find that user in the database."
9143
  msgstr ""
9144
 
9145
- #: lib/wordfenceClass.php:7398
9146
  msgid "This user's email is the network admin email. It will need to be changed before deleting this user."
9147
  msgstr ""
9148
 
9149
- #: lib/wordfenceClass.php:7462
9150
  msgid "Wordfence could not find your .htaccess file."
9151
  msgstr ""
9152
 
9153
- #: lib/wordfenceClass.php:7478
9154
  msgid "Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server."
9155
  msgstr ""
9156
 
9157
- #: lib/wordfenceClass.php:7484
9158
  msgid "There was an error writing to your .htaccess file."
9159
  msgstr ""
9160
 
9161
- #: lib/wordfenceClass.php:7563
9162
  msgid "Required parameters not sent."
9163
  msgstr ""
9164
 
9165
- #: lib/wordfenceClass.php:7573
9166
  msgid "The WAF is currently in read-only mode and will not save any configuration changes."
9167
  msgstr ""
9168
 
9169
- #: lib/wordfenceClass.php:7611
9170
  #: views/waf/option-whitelist.php:60
9171
  msgid "Allowlisted via Firewall Options page"
9172
  msgstr ""
9173
 
9174
- #: lib/wordfenceClass.php:7898
9175
  msgid "Allowlisted via Live Traffic"
9176
  msgstr ""
9177
 
9178
- #: lib/wordfenceClass.php:8062
9179
- #: lib/wordfenceClass.php:8159
9180
  msgid "A valid server configuration was not provided."
9181
  msgstr ""
9182
 
9183
- #: lib/wordfenceClass.php:8073
9184
- #: lib/wordfenceClass.php:8180
9185
  msgid "Filesystem Credentials Required"
9186
  msgstr ""
9187
 
9188
  #. translators: Support URL.
9189
- #: lib/wordfenceClass.php:8075
9190
- #: lib/wordfenceClass.php:8099
9191
- #: lib/wordfenceClass.php:8143
9192
- #: lib/wordfenceClass.php:9035
9193
  msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
9194
  msgstr ""
9195
 
9196
  #. translators: Support URL.
9197
- #: lib/wordfenceClass.php:8076
9198
  msgid "Once you have entered credentials, click Continue to complete the setup."
9199
  msgstr ""
9200
 
9201
- #: lib/wordfenceClass.php:8097
9202
- #: lib/wordfenceClass.php:8205
9203
  msgid "Filesystem Permission Error"
9204
  msgstr ""
9205
 
9206
- #: lib/wordfenceClass.php:8123
9207
  msgid "Manual Installation Instructions"
9208
  msgstr ""
9209
 
9210
- #: lib/wordfenceClass.php:8130
9211
  msgid "Installation Successful"
9212
  msgstr ""
9213
 
9214
- #: lib/wordfenceClass.php:8141
9215
  msgid "Installation Failed"
9216
  msgstr ""
9217
 
9218
  #. translators: Support URL.
9219
- #: lib/wordfenceClass.php:8182
9220
- #: lib/wordfenceClass.php:8207
9221
- #: lib/wordfenceClass.php:8238
9222
- #: lib/wordfenceClass.php:8267
9223
- #: lib/wordfenceClass.php:8313
9224
  msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
9225
  msgstr ""
9226
 
9227
  #. translators: Support URL.
9228
- #: lib/wordfenceClass.php:8183
9229
  msgid "Once you have entered credentials, click Continue to complete uninstallation."
9230
  msgstr ""
9231
 
9232
- #: lib/wordfenceClass.php:8227
9233
  msgid "The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled."
9234
  msgstr ""
9235
 
9236
- #: lib/wordfenceClass.php:8229
9237
  msgid "Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed."
9238
  msgstr ""
9239
 
9240
  #. translators: Time until.
9241
- #: lib/wordfenceClass.php:8233
9242
  msgid "Waiting for it to take effect. This may take up to %s."
9243
  msgstr ""
9244
 
9245
- #: lib/wordfenceClass.php:8236
9246
  msgid "Waiting for Changes"
9247
  msgstr ""
9248
 
9249
- #: lib/wordfenceClass.php:8258
9250
  msgid "Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP."
9251
  msgstr ""
9252
 
9253
- #: lib/wordfenceClass.php:8260
9254
  msgid "Retrying Failed."
9255
  msgstr ""
9256
 
9257
- #: lib/wordfenceClass.php:8262
9258
  msgid "Try Again"
9259
  msgstr ""
9260
 
9261
- #: lib/wordfenceClass.php:8265
9262
  msgid "Unable to Uninstall"
9263
  msgstr ""
9264
 
9265
- #: lib/wordfenceClass.php:8301
9266
  msgid "Uninstallation Complete"
9267
  msgstr ""
9268
 
9269
- #: lib/wordfenceClass.php:8311
9270
  msgid "Uninstallation Failed"
9271
  msgstr ""
9272
 
9273
  #. translators: 1. Number of attacks/blocks. 2. Time since.
9274
- #: lib/wordfenceClass.php:8465
9275
  msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:"
9276
  msgstr ""
9277
 
9278
- #: lib/wordfenceClass.php:9032
9279
  msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:"
9280
  msgstr ""
9281
 
9282
- #: lib/wordfenceClass.php:9032
9283
  msgid "Click here to configure"
9284
  msgstr ""
9285
 
9286
- #: lib/wordfenceClass.php:9041
9287
  #: views/waf/waf-install-success.php:14
9288
  msgid "Nice work! The firewall is now optimized."
9289
  msgstr ""
9290
 
9291
- #: lib/wordfenceClass.php:9043
9292
- #: lib/wordfenceClass.php:9055
9293
  #: views/waf/waf-install-success.php:16
9294
  #: views/waf/waf-uninstall-success.php:19
9295
  msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page."
9296
  msgstr ""
9297
 
9298
- #: lib/wordfenceClass.php:9049
9299
  #: views/waf/waf-uninstall-success.php:15
9300
  msgid "Uninstallation was successful!"
9301
  msgstr ""
9302
 
9303
- #: lib/wordfenceClass.php:9052
9304
  #: views/waf/waf-uninstall-success.php:17
9305
  msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation."
9306
  msgstr ""
9307
 
9308
- #: lib/wordfenceClass.php:9060
9309
  msgid "The update was successful!"
9310
  msgstr ""
9311
 
9312
- #: lib/wordfenceClass.php:9210
9313
  msgid "Auth grant is invalid."
9314
  msgstr ""
9315
 
9316
  #. translators: Error message.
9317
- #: lib/wordfenceClass.php:9225
9318
  msgid "Invalid response from Wordfence Central: %s"
9319
  msgstr ""
9320
 
9321
  #. translators: JSON property.
9322
- #: lib/wordfenceClass.php:9231
9323
- #: lib/wordfenceClass.php:9244
9324
  msgid "Invalid response from Wordfence Central. Parameter %s not found in response."
9325
  msgstr ""
9326
 
9327
- #: lib/wordfenceClass.php:9273
9328
- #: lib/wordfenceClass.php:9410
9329
  msgid "Access token not found."
9330
  msgstr ""
9331
 
9332
- #: lib/wordfenceClass.php:9318
9333
- #: lib/wordfenceClass.php:9385
9334
  msgid "Invalid response from Wordfence Central."
9335
  msgstr ""
9336
 
9337
- #: lib/wordfenceClass.php:9361
9338
  msgid "Auth grant not found."
9339
  msgstr ""
9340
 
9341
- #: lib/wordfenceClass.php:9631
9342
  msgid "We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation."
9343
  msgstr ""
9344
 
9345
- #: lib/wordfenceClass.php:9723
9346
- #: lib/wordfenceClass.php:9794
9347
  msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation."
9348
  msgstr ""
9349
 
9350
  #. translators: File path.
9351
- #: lib/wordfenceClass.php:9764
9352
- #: lib/wordfenceClass.php:9812
9353
  msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation."
9354
  msgstr ""
9355
 
9356
- #: lib/wordfenceClass.php:9828
9357
  msgid "We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal."
9358
  msgstr ""
9359
 
@@ -9672,78 +9700,78 @@ msgid "This file appears to be an old version of the TimThumb script which makes
9672
  msgstr ""
9673
 
9674
  #. translators: Malware signature rule ID.
9675
- #: lib/wordfenceScanner.php:372
9676
  msgid "Resuming malware scan at rule %s."
9677
  msgstr ""
9678
 
9679
- #: lib/wordfenceScanner.php:406
9680
  msgid "This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans."
9681
  msgstr ""
9682
 
9683
- #: lib/wordfenceScanner.php:417
9684
  msgid "File appears to be malicious or unsafe: %s"
9685
  msgstr ""
9686
 
9687
- #: lib/wordfenceScanner.php:418
9688
  msgid "The matched text in this file is: %s"
9689
  msgstr ""
9690
 
9691
  #. translators: Scan result type.
9692
- #: lib/wordfenceScanner.php:418
9693
  msgid "The issue type is: %s"
9694
  msgstr ""
9695
 
9696
  #. translators: Scan result description.
9697
- #: lib/wordfenceScanner.php:418
9698
  msgid "Description: %s"
9699
  msgstr ""
9700
 
9701
  #. translators: Malware signature rule ID.
9702
- #: lib/wordfenceScanner.php:437
9703
  msgid "Forking during malware scan (%s) to ensure continuity."
9704
  msgstr ""
9705
 
9706
- #: lib/wordfenceScanner.php:459
9707
  msgid "This file may contain malicious executable code: "
9708
  msgstr ""
9709
 
9710
  #. translators: Malware signature matched text.
9711
- #: lib/wordfenceScanner.php:460
9712
  msgid "This file is a PHP executable file and contains the word \"eval\" (without quotes) and the word \"%s\" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives."
9713
  msgstr ""
9714
 
9715
- #: lib/wordfenceScanner.php:498
9716
  msgid "Asking Wordfence to check URLs against malware list."
9717
  msgstr ""
9718
 
9719
- #: lib/wordfenceScanner.php:526
9720
- #: lib/wordfenceScanner.php:570
9721
  msgid "File contains suspected malware URL: "
9722
  msgstr ""
9723
 
9724
  #. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL.
9725
- #: lib/wordfenceScanner.php:529
9726
  msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
9727
  msgstr ""
9728
 
9729
- #: lib/wordfenceScanner.php:551
9730
  msgid "File contains suspected phishing URL: "
9731
  msgstr ""
9732
 
9733
- #: lib/wordfenceScanner.php:552
9734
  msgid "This file contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: "
9735
  msgstr ""
9736
 
9737
- #: lib/wordfenceScanner.php:571
9738
  msgid "This file contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: "
9739
  msgstr ""
9740
 
9741
- #: lib/wordfenceScanner.php:588
9742
  msgid "Finalizing malware scan results"
9743
  msgstr ""
9744
 
9745
  #. translators: 1. Number of fils. 2. Seconds in millisecond precision.
9746
- #: lib/wordfenceScanner.php:610
9747
  msgid "Scanned contents of %1$d additional files at %2$.2f per second"
9748
  msgstr ""
9749
 
@@ -10514,11 +10542,15 @@ msgstr ""
10514
  msgid "Separate multiple addresses with commas"
10515
  msgstr ""
10516
 
10517
- #: views/dashboard/options-group-general.php:108
 
 
 
 
10518
  msgid "Setting higher will reduce browser traffic but slow scan starts, live traffic &amp; status updates."
10519
  msgstr ""
10520
 
10521
- #: views/dashboard/options-group-general.php:133
10522
  msgid "Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page."
10523
  msgstr ""
10524
 
@@ -11148,7 +11180,7 @@ msgstr ""
11148
  #: views/scanner/issue-wfPluginUpgrade.php:16
11149
  #: views/scanner/issue-wfPluginUpgrade.php:32
11150
  #: views/scanner/issue-wfPluginVulnerable.php:15
11151
- #: views/scanner/issue-wfPluginVulnerable.php:30
11152
  #: views/scanner/issue-wfThemeUpgrade.php:16
11153
  #: views/scanner/issue-wfThemeUpgrade.php:31
11154
  #: views/scanner/issue-wfUpgrade.php:15
@@ -11184,7 +11216,7 @@ msgstr ""
11184
  #: views/scanner/issue-wfPluginAbandoned.php:23
11185
  #: views/scanner/issue-wfPluginRemoved.php:21
11186
  #: views/scanner/issue-wfPluginUpgrade.php:23
11187
- #: views/scanner/issue-wfPluginVulnerable.php:22
11188
  #: views/scanner/issue-wfThemeUpgrade.php:22
11189
  #: views/scanner/issue-wfUpgrade.php:20
11190
  #: views/scanner/issue-wpscan_directoryList.php:19
@@ -11483,7 +11515,7 @@ msgstr ""
11483
  #: views/scanner/issue-wfPluginUpgrade.php:12
11484
  #: views/scanner/issue-wfPluginUpgrade.php:28
11485
  #: views/scanner/issue-wfPluginVulnerable.php:12
11486
- #: views/scanner/issue-wfPluginVulnerable.php:27
11487
  msgid "Plugin Name"
11488
  msgstr ""
11489
 
@@ -11494,7 +11526,7 @@ msgstr ""
11494
  #: views/scanner/issue-wfPluginUpgrade.php:13
11495
  #: views/scanner/issue-wfPluginUpgrade.php:29
11496
  #: views/scanner/issue-wfPluginVulnerable.php:13
11497
- #: views/scanner/issue-wfPluginVulnerable.php:28
11498
  msgid "Current Plugin Version"
11499
  msgstr ""
11500
 
@@ -11514,22 +11546,19 @@ msgstr ""
11514
  #: views/scanner/issue-wfPluginRemoved.php:31
11515
  #: views/scanner/issue-wfPluginUpgrade.php:18
11516
  #: views/scanner/issue-wfPluginUpgrade.php:35
11517
- #: views/scanner/issue-wfPluginVulnerable.php:17
11518
- #: views/scanner/issue-wfPluginVulnerable.php:32
11519
  msgid "Plugin URL"
11520
  msgstr ""
11521
 
11522
  #: views/scanner/issue-wfPluginAbandoned.php:19
11523
  #: views/scanner/issue-wfPluginAbandoned.php:36
11524
  #: views/scanner/issue-wfPluginUpgrade.php:36
11525
- #: views/scanner/issue-wfPluginVulnerable.php:18
11526
- #: views/scanner/issue-wfPluginVulnerable.php:33
11527
  msgid "Repository URL"
11528
  msgstr ""
11529
 
11530
  #: views/scanner/issue-wfPluginAbandoned.php:24
11531
  #: views/scanner/issue-wfPluginRemoved.php:22
11532
- #: views/scanner/issue-wfPluginVulnerable.php:23
11533
  msgid "Manage Plugins"
11534
  msgstr ""
11535
 
@@ -11639,10 +11668,6 @@ msgstr ""
11639
  msgid "Additional scan signatures (one per line)"
11640
  msgstr ""
11641
 
11642
- #: views/scanner/options-group-advanced.php:59
11643
- msgid "Use only IPv4 to start scans"
11644
- msgstr ""
11645
-
11646
  #: views/scanner/options-group-advanced.php:60
11647
  msgid "This option requires cURL. (This may have no effect on some old PHP or cURL versions.)"
11648
  msgstr ""
@@ -11696,11 +11721,11 @@ msgstr ""
11696
  msgid "Scan Scheduling"
11697
  msgstr ""
11698
 
11699
- #: views/scanner/scan-failed.php:18
11700
  msgid "Scan Failed"
11701
  msgstr ""
11702
 
11703
- #: views/scanner/scan-failed.php:21
11704
  msgid "The error returned was:"
11705
  msgstr ""
11706
 
@@ -12054,7 +12079,7 @@ msgid "All Traffic"
12054
  msgstr ""
12055
 
12056
  #: views/tools/options-group-live-traffic.php:123
12057
- msgid "Maximum days to keep Live Traffic data (minimum: 1)"
12058
  msgstr ""
12059
 
12060
  #: views/tools/options-group-live-traffic.php:135
2
  # This file is distributed under the same license as the Wordfence Security plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Wordfence Security 7.7.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-10-03T11:28:28-04:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: wordfence\n"
57
  #: lib/dashboard/widget_content_logins.php:7
58
  #: lib/dashboard/widget_ips.php:115
59
  #: lib/dashboard/widget_logins.php:96
60
+ #: lib/wordfenceClass.php:6198
61
  #: views/reports/activity-report-email-inline.php:146
62
  #: views/reports/activity-report.php:16
63
  #: views/waf/option-whitelist.php:110
68
 
69
  #: lib/dashboard/widget_content_logins.php:6
70
  #: lib/dashboard/widget_logins.php:95
71
+ #: lib/wordfenceClass.php:6273
72
  #: views/reports/activity-report-email-inline.php:256
73
  #: views/reports/activity-report.php:106
74
  msgid "Username"
133
  #. translators: WordPress username.
134
  #: lib/dashboard/widget_ips.php:96
135
  #: lib/dashboard/widget_logins.php:77
136
+ #: lib/wordfenceClass.php:6144
137
  msgid "An error occurred"
138
  msgstr ""
139
 
235
  #: lib/menu_wordfence_central.php:59
236
  #: lib/wf503.php:390
237
  #: lib/wfScanEngine.php:283
238
+ #: lib/wfScanEngine.php:618
239
+ #: lib/wfScanEngine.php:631
240
+ #: lib/wfScanEngine.php:703
241
+ #: lib/wfScanEngine.php:726
242
+ #: lib/wfScanEngine.php:801
243
+ #: lib/wfScanEngine.php:1031
244
+ #: lib/wfScanEngine.php:1032
245
+ #: lib/wfScanEngine.php:1173
246
+ #: lib/wfScanEngine.php:1310
247
+ #: lib/wfScanEngine.php:1453
248
+ #: lib/wfScanEngine.php:1817
249
+ #: lib/wfScanEngine.php:2063
250
+ #: lib/wfScanEngine.php:2102
251
+ #: lib/wfScanEngine.php:2302
252
+ #: lib/wfScanEngine.php:2344
253
  #: lib/wfVersionCheckController.php:68
254
  #: lib/wfVersionCheckController.php:91
255
  #: lib/wfVersionCheckController.php:167
256
  #: lib/wfVersionCheckController.php:186
257
+ #: lib/wordfenceClass.php:1402
258
+ #: lib/wordfenceClass.php:2769
259
+ #: lib/wordfenceClass.php:2905
260
+ #: lib/wordfenceClass.php:3060
261
+ #: lib/wordfenceClass.php:3096
262
+ #: lib/wordfenceClass.php:3622
263
+ #: lib/wordfenceClass.php:4953
264
  #: lib/wordfenceClass.php:4961
265
+ #: lib/wordfenceClass.php:4967
266
+ #: lib/wordfenceClass.php:4992
267
+ #: lib/wordfenceClass.php:5004
268
+ #: lib/wordfenceClass.php:5012
269
+ #: lib/wordfenceClass.php:6333
270
+ #: lib/wordfenceClass.php:6355
271
+ #: lib/wordfenceClass.php:6374
272
+ #: lib/wordfenceClass.php:6380
273
+ #: lib/wordfenceClass.php:6427
274
+ #: lib/wordfenceClass.php:8079
275
+ #: lib/wordfenceClass.php:8103
276
+ #: lib/wordfenceClass.php:8147
277
+ #: lib/wordfenceClass.php:8186
278
+ #: lib/wordfenceClass.php:8211
279
+ #: lib/wordfenceClass.php:8242
280
+ #: lib/wordfenceClass.php:8271
281
+ #: lib/wordfenceClass.php:8317
282
+ #: lib/wordfenceClass.php:9039
 
283
  #: lib/wordfenceHash.php:521
284
  #: lib/wordfenceHash.php:568
285
  #: lib/wordfenceHash.php:642
351
  #: views/scanner/issue-wfPluginUpgrade.php:20
352
  #: views/scanner/issue-wfPluginVulnerable.php:17
353
  #: views/scanner/issue-wfPluginVulnerable.php:18
 
354
  #: views/scanner/issue-wfThemeUpgrade.php:18
355
  #: views/scanner/issue-wfThemeUpgrade.php:19
356
  #: views/scanner/issue-wfUpgrade.php:17
425
  msgstr ""
426
 
427
  #: lib/dashboard/widget_notifications.php:8
428
+ #: lib/wordfenceClass.php:6813
429
  msgid "Notifications"
430
  msgstr ""
431
 
495
 
496
  #. translators: Support URL.
497
  #: lib/dashboard/widget_notifications.php:134
498
+ #: lib/menu_scanner.php:211
499
+ #: lib/menu_scanner.php:222
500
+ #: lib/menu_tools_diagnostic.php:905
501
  #: lib/menu_tools_twoFactor.php:235
502
  #: lib/menu_tools_twoFactor.php:273
503
+ #: lib/wordfenceClass.php:8104
504
+ #: lib/wordfenceClass.php:8148
505
+ #: lib/wordfenceClass.php:8212
506
+ #: lib/wordfenceClass.php:8272
507
+ #: lib/wordfenceClass.php:8318
508
  #: views/blocking/block-list.php:501
509
  #: views/blocking/blocking-create.php:212
510
  #: views/blocking/blocking-create.php:529
645
  msgid "HIGH SENSITIVITY scanning is enabled, it may produce false positives"
646
  msgstr ""
647
 
 
 
 
 
 
 
 
 
 
648
  #. translators: 1. URL to WordPress admin panel. 2. URL to WordPress admin panel. 3. URL to Wordfence support page. 4. URL to Wordfence support page.
649
+ #: lib/email_newIssues.php:50
650
  msgid "The scan was terminated early because it reached the time limit for scans. If you would like to allow your scans to run longer, you can customize the limit on the options page: <a href=\"%1$s\">%2$s</a> or read more about scan options to improve scan speed here: <a href=\"%3$s\">%4$s</a>"
651
  msgstr ""
652
 
653
+ #: lib/email_newIssues.php:56
654
  msgid "Critical Problems:"
655
  msgstr ""
656
 
657
+ #: lib/email_newIssues.php:57
658
  msgid "High Severity Problems:"
659
  msgstr ""
660
 
661
+ #: lib/email_newIssues.php:58
662
  msgid "Medium Severity Problems:"
663
  msgstr ""
664
 
665
+ #: lib/email_newIssues.php:59
666
  msgid "Low Severity Problems:"
667
  msgstr ""
668
 
669
+ #: lib/email_newIssues.php:78
670
  msgid "Plugin contains an unpatched security vulnerability."
671
  msgstr ""
672
 
673
+ #: lib/email_newIssues.php:80
674
+ #: lib/email_newIssues.php:103
675
  #: views/scanner/issue-wfPluginAbandoned.php:20
676
  #: views/scanner/issue-wfPluginAbandoned.php:37
677
  #: views/scanner/issue-wfPluginRemoved.php:18
678
  #: views/scanner/issue-wfPluginRemoved.php:32
679
  #: views/scanner/issue-wfPluginUpgrade.php:20
680
  #: views/scanner/issue-wfPluginUpgrade.php:37
681
+ #: views/scanner/issue-wfPluginVulnerable.php:18
682
+ #: views/scanner/issue-wfPluginVulnerable.php:31
683
  #: views/scanner/issue-wfThemeUpgrade.php:19
684
  #: views/scanner/issue-wfThemeUpgrade.php:35
685
  #: views/scanner/issue-wfUpgrade.php:17
687
  msgid "Vulnerability Information"
688
  msgstr ""
689
 
690
+ #: lib/email_newIssues.php:86
691
  msgid "The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed."
692
  msgstr ""
693
 
694
+ #: lib/email_newIssues.php:89
695
  msgid "Firewall issues may be caused by file permission changes or other technical problems."
696
  msgstr ""
697
 
698
+ #: lib/email_newIssues.php:89
699
  msgid "More Details and Instructions"
700
  msgstr ""
701
 
702
+ #: lib/email_newIssues.php:92
703
  msgid "Scanning additional paths is optional and is not always necessary."
704
  msgstr ""
705
 
706
  #. translators: 1. WordPress version. 2. WordPress version.
707
+ #: lib/email_newIssues.php:92
708
  #: lib/email_unlockRequest.php:14
709
  #: lib/menu_dashboard.php:118
710
  #: lib/menu_dashboard.php:487
713
  #: lib/wfVersionCheckController.php:91
714
  #: lib/wfVersionCheckController.php:167
715
  #: lib/wfVersionCheckController.php:186
716
+ #: lib/wordfenceClass.php:6460
717
  #: views/blocking/blocking-create.php:528
718
  #: views/blocking/blocking-status.php:27
719
  #: views/dashboard/options-group-dashboard.php:107
730
  msgid "Learn More"
731
  msgstr ""
732
 
733
+ #: lib/email_newIssues.php:101
734
  #: views/scanner/issue-wfPluginUpgrade.php:16
735
  #: views/scanner/issue-wfPluginUpgrade.php:33
736
  #: views/scanner/issue-wfThemeUpgrade.php:16
740
  msgid "Update includes security-related fixes."
741
  msgstr ""
742
 
743
+ #: lib/email_newIssues.php:121
744
  msgid "The malicious URL matched"
745
  msgstr ""
746
 
747
  #. translators: Number of scan results
748
+ #: lib/email_newIssues.php:130
749
  msgid "%d existing issue was found again and is not shown."
750
  msgid_plural "%d existing issues were found again and are not shown."
751
  msgstr[0] ""
752
  msgstr[1] ""
753
 
754
  #. translators: Number of scan results
755
+ #: lib/email_newIssues.php:133
756
  msgid "%d issue was omitted from this email due to length limits."
757
  msgid_plural "%d issues were omitted from this email due to length limits."
758
  msgstr[0] ""
759
  msgstr[1] ""
760
 
761
  #. translators: Number of scan results
762
+ #: lib/email_newIssues.php:134
763
  msgid "View every issue:"
764
  msgstr ""
765
 
766
+ #: lib/email_newIssues.php:143
767
  msgid "NOTE: You are using the free version of Wordfence. Upgrade today:"
768
  msgstr ""
769
 
770
+ #: lib/email_newIssues.php:146
771
  msgid "Receive real-time Firewall and Scan engine rule updates for protection as threats emerge"
772
  msgstr ""
773
 
774
+ #: lib/email_newIssues.php:147
775
  msgid "Real-time IP Blocklist blocks the most malicious IPs from accessing your site"
776
  msgstr ""
777
 
778
+ #: lib/email_newIssues.php:148
779
  msgid "Country blocking"
780
  msgstr ""
781
 
782
+ #: lib/email_newIssues.php:149
783
  msgid "IP reputation monitoring"
784
  msgstr ""
785
 
786
+ #: lib/email_newIssues.php:150
787
  msgid "Schedule scans to run more frequently and at optimal times"
788
  msgstr ""
789
 
790
+ #: lib/email_newIssues.php:151
791
  msgid "Access to Premium Support"
792
  msgstr ""
793
 
794
+ #: lib/email_newIssues.php:152
795
  msgid "Discounts for multi-year and multi-license purchases"
796
  msgstr ""
797
 
798
+ #: lib/email_newIssues.php:155
799
  msgid "Click here to upgrade to Wordfence Premium:"
800
  msgstr ""
801
 
916
  msgstr ""
917
 
918
  #: lib/menu_dashboard.php:24
919
+ #: lib/wordfenceClass.php:6698
920
  msgid "Wordfence Dashboard"
921
  msgstr ""
922
 
928
  #: lib/menu_dashboard_options.php:98
929
  #: lib/menu_firewall.php:20
930
  #: lib/menu_firewall.php:30
931
+ #: lib/wordfenceClass.php:6702
932
  #: models/page/wfPage.php:105
933
  msgid "Firewall"
934
  msgstr ""
964
  #: lib/menu_dashboard.php:71
965
  #: lib/menu_dashboard_options.php:115
966
  #: lib/menu_scanner.php:31
967
+ #: lib/menu_scanner.php:299
968
+ #: lib/wordfenceClass.php:6709
969
  #: models/page/wfPage.php:113
970
  msgid "Scan"
971
  msgstr ""
983
 
984
  #: lib/menu_dashboard.php:75
985
  #: lib/menu_dashboard_options.php:119
986
+ #: lib/menu_options.php:88
987
  #: lib/menu_scanner.php:65
988
  #: lib/menu_scanner_options.php:120
989
  #: views/dashboard/options-group-dashboard.php:97
1048
  #: lib/menu_scanner.php:80
1049
  #: lib/menu_support.php:55
1050
  #: lib/menu_tools_twoFactor.php:51
1051
+ #: lib/wordfenceClass.php:6738
1052
  #: views/blocking/blocking-create.php:179
1053
  #: views/blocking/blocking-status.php:23
1054
  #: views/blocking/blocking-status.php:27
1142
  msgstr ""
1143
 
1144
  #: lib/menu_dashboard.php:229
1145
+ #: lib/wordfenceClass.php:6713
1146
  msgid "Tools"
1147
  msgstr ""
1148
 
1152
 
1153
  #: lib/menu_dashboard.php:240
1154
  #: lib/menu_firewall_waf.php:157
1155
+ #: lib/menu_scanner.php:133
1156
  #: lib/menu_support.php:19
1157
+ #: lib/wordfenceClass.php:6726
1158
  msgid "Help"
1159
  msgstr ""
1160
 
1161
  #: lib/menu_dashboard.php:241
1162
  #: lib/menu_firewall_waf.php:158
1163
+ #: lib/menu_scanner.php:134
1164
  msgid "Find the documentation and help you need"
1165
  msgstr ""
1166
 
1192
  #: lib/menu_firewall_waf.php:255
1193
  #: lib/menu_firewall_waf.php:272
1194
  #: lib/menu_firewall_waf.php:289
1195
+ #: lib/menu_scanner.php:307
1196
+ #: lib/menu_scanner.php:324
1197
+ #: lib/menu_scanner.php:376
1198
  #: views/tours/login-security.php:37
1199
  #: views/tours/login-security.php:53
1200
  msgid "Next"
1219
  #: lib/menu_firewall_waf.php:271
1220
  #: lib/menu_firewall_waf.php:288
1221
  #: lib/menu_firewall_waf.php:306
1222
+ #: lib/menu_scanner.php:323
1223
+ #: lib/menu_scanner.php:339
1224
+ #: lib/menu_scanner.php:390
1225
  #: views/tours/login-security.php:52
1226
  #: views/tours/login-security.php:69
1227
  msgid "Previous"
1242
  #: lib/menu_firewall_blocking.php:226
1243
  #: lib/menu_firewall_waf.php:307
1244
  #: lib/menu_firewall_waf.php:354
1245
+ #: lib/menu_scanner.php:340
1246
+ #: lib/menu_scanner.php:391
1247
  #: lib/menu_tools_livetraffic.php:577
1248
  #: lib/menu_tools_livetraffic.php:608
1249
  msgid "Got it"
1307
 
1308
  #: lib/menu_dashboard_options.php:11
1309
  #: lib/menu_dashboard_options.php:79
1310
+ #: lib/menu_options.php:275
1311
  msgid "Wordfence Global Options"
1312
  msgstr ""
1313
 
1349
 
1350
  #: lib/menu_dashboard_options.php:287
1351
  #: lib/menu_dashboard_options.php:297
1352
+ #: lib/menu_options.php:408
1353
+ #: lib/menu_options.php:418
1354
  #: lib/menu_tools.php:26
1355
  #: lib/menu_tools_importExport.php:7
1356
  #: lib/menu_tools_importExport.php:13
1373
  #: lib/menu_firewall.php:41
1374
  #: lib/menu_firewall_blocking.php:119
1375
  #: lib/menu_firewall_waf.php:142
1376
+ #: lib/wordfenceClass.php:6704
1377
  #: models/page/wfPage.php:109
1378
  msgid "Blocking"
1379
  msgstr ""
1446
 
1447
  #: lib/menu_firewall_blocking_options.php:12
1448
  #: lib/menu_firewall_blocking_options.php:92
1449
+ #: lib/menu_options.php:343
1450
  #: models/page/wfPage.php:111
1451
  #: views/blocking/blocking-status.php:14
1452
  msgid "Blocking Options"
1489
 
1490
  #: lib/menu_firewall_waf.php:39
1491
  #: lib/menu_firewall_waf_options.php:150
1492
+ #: lib/menu_options.php:105
1493
  #: views/waf/options-group-basic-firewall.php:34
1494
  msgid "Web Application Firewall Status"
1495
  msgstr ""
1556
  #: lib/wfDiagnostic.php:933
1557
  #: lib/wfDiagnostic.php:938
1558
  #: lib/wfDiagnostic.php:942
1559
+ #: lib/wordfenceClass.php:6170
1560
  #: models/firewall/wfFirewall.php:41
1561
  #: views/scanner/scan-scheduling.php:14
1562
  #: views/user/disabled-application-passwords.php:12
1655
  #: lib/menu_firewall_waf.php:347
1656
  #: lib/menu_firewall_waf_options.php:23
1657
  #: lib/menu_firewall_waf_options.php:127
1658
+ #: lib/menu_options.php:306
1659
  #: models/page/wfPage.php:107
1660
  msgid "Firewall Options"
1661
  msgstr ""
1673
  msgstr ""
1674
 
1675
  #: lib/menu_options.php:24
1676
+ #: lib/menu_options.php:265
1677
+ #: lib/wordfenceClass.php:6721
1678
  msgid "All Options"
1679
  msgstr ""
1680
 
1719
 
1720
  #: lib/menu_options.php:76
1721
  #: views/dashboard/options-group-general.php:73
1722
+ msgid "Look up visitor IP locations via Wordfence servers"
1723
  msgstr ""
1724
 
1725
  #: lib/menu_options.php:77
1726
+ #: views/dashboard/options-group-general.php:86
1727
+ msgid "Hide WordPress version"
1728
  msgstr ""
1729
 
1730
  #: lib/menu_options.php:78
1731
+ #: views/dashboard/options-group-general.php:98
1732
+ msgid "Disable Code Execution for Uploads directory"
1733
  msgstr ""
1734
 
1735
  #: lib/menu_options.php:79
1736
+ #: views/dashboard/options-group-general.php:110
1737
+ msgid "Pause live updates when window loses focus"
1738
  msgstr ""
1739
 
1740
  #: lib/menu_options.php:80
1741
  #: views/dashboard/options-group-general.php:120
1742
+ msgid "Update interval in seconds"
1743
  msgstr ""
1744
 
1745
  #: lib/menu_options.php:81
1746
+ #: views/dashboard/options-group-general.php:133
1747
+ msgid "Bypass the LiteSpeed \"noabort\" check"
1748
  msgstr ""
1749
 
1750
  #: lib/menu_options.php:82
1751
+ #: views/dashboard/options-group-general.php:145
1752
+ msgid "Delete Wordfence tables and data on deactivation"
1753
+ msgstr ""
1754
+
1755
+ #: lib/menu_options.php:83
1756
  #: views/dashboard/options-group-dashboard.php:36
1757
  msgid "Updates Needed (Plugin, Theme, or Core)"
1758
  msgstr ""
1759
 
1760
+ #: lib/menu_options.php:84
1761
  #: views/dashboard/options-group-dashboard.php:48
1762
  msgid "Security Alerts"
1763
  msgstr ""
1764
 
1765
+ #: lib/menu_options.php:85
1766
  #: views/dashboard/options-group-dashboard.php:60
1767
  msgid "Promotions"
1768
  msgstr ""
1769
 
1770
+ #: lib/menu_options.php:86
1771
  #: views/dashboard/options-group-dashboard.php:72
1772
  msgid "Blog Highlights"
1773
  msgstr ""
1774
 
1775
+ #: lib/menu_options.php:87
1776
  #: views/dashboard/options-group-dashboard.php:84
1777
  msgid "Product Updates"
1778
  msgstr ""
1779
 
1780
+ #: lib/menu_options.php:89
1781
  #: views/dashboard/options-group-alert.php:36
1782
  msgid "Email me when Wordfence is automatically updated"
1783
  msgstr ""
1784
 
1785
+ #: lib/menu_options.php:90
1786
  #: views/dashboard/options-group-alert.php:48
1787
  msgid "Email me if Wordfence is deactivated"
1788
  msgstr ""
1789
 
1790
+ #: lib/menu_options.php:91
1791
  #: views/dashboard/options-group-alert.php:59
1792
  msgid "Email me if the Wordfence Web Application Firewall is turned off"
1793
  msgstr ""
1794
 
1795
+ #: lib/menu_options.php:92
1796
  msgid "Alert me with scan results of this severity level or greater"
1797
  msgstr ""
1798
 
1799
+ #: lib/menu_options.php:93
1800
  #: views/dashboard/options-group-alert.php:90
1801
  msgid "Alert when an IP address is blocked"
1802
  msgstr ""
1803
 
1804
+ #: lib/menu_options.php:94
1805
  #: views/dashboard/options-group-alert.php:101
1806
  msgid "Alert when someone is locked out from login"
1807
  msgstr ""
1808
 
1809
+ #: lib/menu_options.php:95
1810
  #: views/dashboard/options-group-alert.php:123
1811
  msgid "Alert when the \"lost password\" form is used for a valid user"
1812
  msgstr ""
1813
 
1814
+ #: lib/menu_options.php:96
1815
  #: views/dashboard/options-group-alert.php:134
1816
  msgid "Alert me when someone with administrator access signs in"
1817
  msgstr ""
1818
 
1819
+ #: lib/menu_options.php:97
1820
  #: views/dashboard/options-group-alert.php:140
1821
  msgid "Only alert me when that administrator signs in from a new device"
1822
  msgstr ""
1823
 
1824
+ #: lib/menu_options.php:98
1825
  #: views/dashboard/options-group-alert.php:151
1826
  msgid "Alert me when a non-admin user signs in"
1827
  msgstr ""
1828
 
1829
+ #: lib/menu_options.php:99
1830
  #: views/dashboard/options-group-alert.php:157
1831
  msgid "Only alert me when that user signs in from a new device"
1832
  msgstr ""
1833
 
1834
+ #: lib/menu_options.php:100
1835
  #: views/dashboard/options-group-alert.php:168
1836
  msgid "Alert me when there's a large increase in attacks detected on my site"
1837
  msgstr ""
1838
 
1839
+ #: lib/menu_options.php:101
1840
  #: views/dashboard/options-group-alert.php:177
1841
  msgid "Maximum email alerts to send per hour"
1842
  msgstr ""
1843
 
1844
+ #: lib/menu_options.php:102
1845
  #: views/dashboard/options-group-email-summary.php:43
1846
  msgid "Enable email summary"
1847
  msgstr ""
1848
 
1849
+ #: lib/menu_options.php:103
1850
  #: views/dashboard/options-group-email-summary.php:52
1851
  msgid "List of directories to exclude from recently modified file list"
1852
  msgstr ""
1853
 
1854
+ #: lib/menu_options.php:104
1855
  #: views/dashboard/options-group-email-summary.php:63
1856
  msgid "Enable activity report widget on the WordPress dashboard"
1857
  msgstr ""
1858
 
1859
+ #: lib/menu_options.php:106
1860
  msgid "Web Application Firewall Protection Level"
1861
  msgstr ""
1862
 
1863
+ #: lib/menu_options.php:107
1864
  #: views/waf/options-group-basic-firewall.php:464
1865
  msgid "Real-Time IP Blocklist"
1866
  msgstr ""
1867
 
1868
+ #: lib/menu_options.php:108
1869
  #: views/waf/options-group-advanced-firewall.php:40
1870
  msgid "Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)"
1871
  msgstr ""
1872
 
1873
+ #: lib/menu_options.php:109
1874
  #: views/waf/options-group-advanced-firewall.php:52
1875
  msgid "Allowlisted IP addresses that bypass all rules"
1876
  msgstr ""
1877
 
1878
+ #: lib/menu_options.php:110
1879
  #: views/waf/options-group-advanced-firewall.php:88
1880
  msgid "Allowlisted services"
1881
  msgstr ""
1882
 
1883
+ #: lib/menu_options.php:111
1884
  #: views/waf/options-group-advanced-firewall.php:99
1885
  msgid "Immediately block IPs that access these URLs"
1886
  msgstr ""
1887
 
1888
+ #: lib/menu_options.php:112
1889
  #: views/waf/options-group-advanced-firewall.php:112
1890
  msgid "Ignored IP addresses for Wordfence Web Application Firewall alerting"
1891
  msgstr ""
1892
 
1893
+ #: lib/menu_options.php:113
1894
  msgid "Web Application Firewall Rules"
1895
  msgstr ""
1896
 
1897
+ #: lib/menu_options.php:114
1898
  #: views/waf/options-group-brute-force.php:38
1899
  msgid "Enable brute force protection"
1900
  msgstr ""
1901
 
1902
+ #: lib/menu_options.php:115
1903
  #: views/waf/options-group-brute-force.php:61
1904
  msgid "Lock out after how many login failures"
1905
  msgstr ""
1906
 
1907
+ #: lib/menu_options.php:116
1908
  #: views/waf/options-group-brute-force.php:77
1909
  msgid "Lock out after how many forgot password attempts"
1910
  msgstr ""
1911
 
1912
+ #: lib/menu_options.php:117
1913
  #: views/waf/options-group-brute-force.php:93
1914
  msgid "Count failures over what time period"
1915
  msgstr ""
1916
 
1917
+ #: lib/menu_options.php:118
1918
  #: views/waf/options-group-brute-force.php:109
1919
  msgid "Amount of time a user is locked out"
1920
  msgstr ""
1921
 
1922
+ #: lib/menu_options.php:119
1923
  #: views/waf/options-group-brute-force.php:121
1924
  msgid "Immediately lock out invalid usernames"
1925
  msgstr ""
1926
 
1927
+ #: lib/menu_options.php:120
1928
  #: views/waf/options-group-brute-force.php:139
1929
  msgid "Immediately block the IP of users who try to sign in as these usernames"
1930
  msgstr ""
1931
 
1932
+ #: lib/menu_options.php:121
1933
  #: views/waf/options-group-brute-force.php:178
1934
  msgid "Enforce strong passwords"
1935
  msgstr ""
1936
 
1937
+ #: lib/menu_options.php:122
1938
  #: views/waf/options-group-brute-force.php:155
1939
  msgid "Prevent the use of passwords leaked in data breaches"
1940
  msgstr ""
1941
 
1942
+ #: lib/menu_options.php:123
1943
  #: views/waf/options-group-brute-force.php:190
1944
  msgid "Don't let WordPress reveal valid users in login errors"
1945
  msgstr ""
1946
 
1947
+ #: lib/menu_options.php:124
1948
  msgid "Prevent users registering \"admin\" username if it doesn't exist"
1949
  msgstr ""
1950
 
1951
+ #: lib/menu_options.php:125
1952
  msgid "Prevent discovery of usernames through \"/?author=N\" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps"
1953
  msgstr ""
1954
 
1955
+ #: lib/menu_options.php:126
1956
  #: views/waf/options-group-brute-force.php:226
1957
  msgid "Disable WordPress application passwords"
1958
  msgstr ""
1959
 
1960
+ #: lib/menu_options.php:127
1961
  #: views/waf/options-group-brute-force.php:238
1962
  msgid "Block IPs who send POST requests with blank User-Agent and Referer"
1963
  msgstr ""
1964
 
1965
+ #: lib/menu_options.php:128
1966
  #: views/waf/options-group-brute-force.php:248
1967
  msgid "Custom text shown on block pages"
1968
  msgstr ""
1969
 
1970
+ #: lib/menu_options.php:129
1971
  #: views/waf/options-group-brute-force.php:263
1972
  msgid "Check password strength on profile update"
1973
  msgstr ""
1974
 
1975
+ #: lib/menu_options.php:130
1976
  #: views/waf/options-group-brute-force.php:275
1977
  msgid "Participate in the Real-Time Wordfence Security Network"
1978
  msgstr ""
1979
 
1980
+ #: lib/menu_options.php:131
1981
  #: views/waf/options-group-rate-limiting.php:38
1982
  msgid "Enable Rate Limiting and Advanced Blocking"
1983
  msgstr ""
1984
 
1985
+ #: lib/menu_options.php:132
1986
  #: views/waf/options-group-rate-limiting.php:60
1987
  msgid "How should we treat Google's crawlers"
1988
  msgstr ""
1989
 
1990
+ #: lib/menu_options.php:133
1991
  #: views/waf/options-group-rate-limiting.php:100
1992
  msgid "If anyone's requests exceed"
1993
  msgstr ""
1994
 
1995
+ #: lib/menu_options.php:134
1996
  #: views/waf/options-group-rate-limiting.php:117
1997
  msgid "If a crawler's page views exceed"
1998
  msgstr ""
1999
 
2000
+ #: lib/menu_options.php:135
2001
  #: views/waf/options-group-rate-limiting.php:134
2002
  msgid "If a crawler's pages not found (404s) exceed"
2003
  msgstr ""
2004
 
2005
+ #: lib/menu_options.php:136
2006
  #: views/waf/options-group-rate-limiting.php:151
2007
  msgid "If a human's page views exceed"
2008
  msgstr ""
2009
 
2010
+ #: lib/menu_options.php:137
2011
  #: views/waf/options-group-rate-limiting.php:168
2012
  msgid "If a human's pages not found (404s) exceed"
2013
  msgstr ""
2014
 
2015
+ #: lib/menu_options.php:138
2016
  #: views/waf/options-group-rate-limiting.php:184
2017
  msgid "How long is an IP address blocked when it breaks a rule"
2018
  msgstr ""
2019
 
2020
+ #: lib/menu_options.php:139
2021
  #: views/waf/options-group-rate-limiting.php:194
2022
  msgid "Allowlisted 404 URLs"
2023
  msgstr ""
2024
 
2025
+ #: lib/menu_options.php:140
2026
  msgid "Web Application Firewall Allowlisted URLs"
2027
  msgstr ""
2028
 
2029
+ #: lib/menu_options.php:141
2030
  msgid "Monitor background requests from an administrator's web browser for false positives (Front-end Website)"
2031
  msgstr ""
2032
 
2033
+ #: lib/menu_options.php:142
2034
  msgid "Monitor background requests from an administrator's web browser for false positives (Admin Panel)"
2035
  msgstr ""
2036
 
2037
+ #: lib/menu_options.php:143
2038
  msgid "What to do when we block someone visiting from a blocked country"
2039
  msgstr ""
2040
 
2041
+ #: lib/menu_options.php:144
2042
  msgid "URL to redirect blocked countries to"
2043
  msgstr ""
2044
 
2045
+ #: lib/menu_options.php:145
2046
  #: views/blocking/options-group-advanced-country.php:62
2047
  msgid "Block countries even if they are logged in"
2048
  msgstr ""
2049
 
2050
+ #: lib/menu_options.php:146
2051
  msgid "If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking"
2052
  msgstr ""
2053
 
2054
+ #: lib/menu_options.php:147
2055
  msgid "If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country"
2056
  msgstr ""
2057
 
2058
+ #: lib/menu_options.php:148
2059
  #: views/scanner/scan-scheduling.php:12
2060
  msgid "Schedule Wordfence Scans"
2061
  msgstr ""
2062
 
2063
+ #: lib/menu_options.php:149
2064
  msgid "Scan Type"
2065
  msgstr ""
2066
 
2067
+ #: lib/menu_options.php:150
2068
  #: views/scanner/options-group-general.php:32
2069
  msgid "Check if this website is on a domain blocklist"
2070
  msgstr ""
2071
 
2072
+ #: lib/menu_options.php:151
2073
  msgid "Check if this website is being &quot;Spamvertised&quot;"
2074
  msgstr ""
2075
 
2076
+ #: lib/menu_options.php:152
2077
  #: views/scanner/options-group-general.php:34
2078
  msgid "Check if this website IP is generating spam"
2079
  msgstr ""
2080
 
2081
+ #: lib/menu_options.php:153
2082
  #: views/scanner/options-group-general.php:35
2083
  msgid "Scan for misconfigured How does Wordfence get IPs"
2084
  msgstr ""
2085
 
2086
+ #: lib/menu_options.php:154
2087
  #: views/scanner/options-group-general.php:36
2088
  msgid "Scan for publicly accessible configuration, backup, or log files"
2089
  msgstr ""
2090
 
2091
+ #: lib/menu_options.php:155
2092
  #: views/scanner/options-group-general.php:37
2093
  msgid "Scan for publicly accessible quarantined files"
2094
  msgstr ""
2095
 
2096
+ #: lib/menu_options.php:156
2097
  #: views/scanner/options-group-general.php:38
2098
  msgid "Scan core files against repository versions for changes"
2099
  msgstr ""
2100
 
2101
+ #: lib/menu_options.php:157
2102
  #: views/scanner/options-group-general.php:39
2103
  msgid "Scan theme files against repository versions for changes"
2104
  msgstr ""
2105
 
2106
+ #: lib/menu_options.php:158
2107
  #: views/scanner/options-group-general.php:40
2108
  msgid "Scan plugin files against repository versions for changes"
2109
  msgstr ""
2110
 
2111
+ #: lib/menu_options.php:159
2112
  #: views/scanner/options-group-general.php:41
2113
  msgid "Scan wp-admin and wp-includes for files not bundled with WordPress"
2114
  msgstr ""
2115
 
2116
+ #: lib/menu_options.php:160
2117
  #: views/scanner/options-group-general.php:42
2118
  msgid "Scan for signatures of known malicious files"
2119
  msgstr ""
2120
 
2121
+ #: lib/menu_options.php:161
2122
  #: views/scanner/options-group-general.php:43
2123
  msgid "Scan file contents for backdoors, trojans and suspicious code"
2124
  msgstr ""
2125
 
2126
+ #: lib/menu_options.php:162
2127
  #: views/scanner/options-group-general.php:44
2128
  msgid "Scan file contents for malicious URLs"
2129
  msgstr ""
2130
 
2131
+ #: lib/menu_options.php:163
2132
  #: views/scanner/options-group-general.php:45
2133
  msgid "Scan posts for known dangerous URLs and suspicious content"
2134
  msgstr ""
2135
 
2136
+ #: lib/menu_options.php:164
2137
  #: views/scanner/options-group-general.php:46
2138
  msgid "Scan comments for known dangerous URLs and suspicious content"
2139
  msgstr ""
2140
 
2141
+ #: lib/menu_options.php:165
2142
  #: views/scanner/options-group-general.php:47
2143
  msgid "Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content"
2144
  msgstr ""
2145
 
2146
+ #: lib/menu_options.php:166
2147
  #: views/scanner/options-group-general.php:48
2148
  msgid "Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions"
2149
  msgstr ""
2150
 
2151
+ #: lib/menu_options.php:167
2152
  #: views/scanner/options-group-general.php:49
2153
  msgid "Scan for suspicious admin users created outside of WordPress"
2154
  msgstr ""
2155
 
2156
+ #: lib/menu_options.php:168
2157
  #: views/scanner/options-group-general.php:50
2158
  msgid "Check the strength of passwords"
2159
  msgstr ""
2160
 
2161
+ #: lib/menu_options.php:169
2162
  #: views/scanner/options-group-general.php:51
2163
  msgid "Monitor disk space"
2164
  msgstr ""
2165
 
2166
+ #: lib/menu_options.php:170
2167
  #: views/scanner/options-group-general.php:52
2168
  msgid "Monitor Web Application Firewall status"
2169
  msgstr ""
2170
 
2171
+ #: lib/menu_options.php:171
2172
  #: views/scanner/options-group-general.php:53
2173
  msgid "Scan files outside your WordPress installation"
2174
  msgstr ""
2175
 
2176
+ #: lib/menu_options.php:172
2177
  #: views/scanner/options-group-general.php:54
2178
  msgid "Scan images, binary, and other files as if they were executable"
2179
  msgstr ""
2180
 
2181
+ #: lib/menu_options.php:173
2182
  #: views/scanner/options-group-performance.php:32
2183
  msgid "Use low resource scanning (reduces server load by lengthening the scan duration)"
2184
  msgstr ""
2185
 
2186
+ #: lib/menu_options.php:174
2187
  #: views/scanner/options-group-performance.php:33
2188
  msgid "Limit the number of issues sent in the scan results email"
2189
  msgstr ""
2190
 
2191
+ #: lib/menu_options.php:175
2192
  #: views/scanner/options-group-performance.php:34
2193
  msgid "Time limit that a scan can run in seconds"
2194
  msgstr ""
2195
 
2196
  #. translators: Time until.
2197
+ #: lib/menu_options.php:176
2198
  #: views/scanner/options-group-performance.php:35
2199
  msgid "How much memory should Wordfence request when scanning"
2200
  msgstr ""
2201
 
2202
+ #: lib/menu_options.php:177
2203
  msgid "Maximum execution time for each scan stage"
2204
  msgstr ""
2205
 
2206
+ #: lib/menu_options.php:178
2207
  msgid "Exclude files from scan that match these wildcard patterns"
2208
  msgstr ""
2209
 
2210
+ #: lib/menu_options.php:179
2211
  msgid "Additional scan signatures"
2212
  msgstr ""
2213
 
2214
+ #: lib/menu_options.php:180
2215
+ #: views/scanner/options-group-advanced.php:59
2216
+ msgid "Use only IPv4 to start scans"
2217
+ msgstr ""
2218
+
2219
+ #: lib/menu_options.php:181
2220
+ #: views/scanner/options-group-advanced.php:77
2221
+ msgid "Maximum number of attempts to resume each scan stage"
2222
+ msgstr ""
2223
+
2224
+ #: lib/menu_options.php:182
2225
  msgid "Traffic logging mode (Live Traffic)"
2226
  msgstr ""
2227
 
2228
+ #: lib/menu_options.php:183
2229
  #: views/tools/options-group-live-traffic.php:78
2230
  msgid "Don't log signed-in users with publishing access"
2231
  msgstr ""
2232
 
2233
+ #: lib/menu_options.php:184
2234
  #: views/tools/options-group-live-traffic.php:87
2235
  msgid "List of comma separated usernames to ignore"
2236
  msgstr ""
2237
 
2238
+ #: lib/menu_options.php:185
2239
  #: views/tools/options-group-live-traffic.php:96
2240
  msgid "List of comma separated IP addresses to ignore"
2241
  msgstr ""
2242
 
2243
+ #: lib/menu_options.php:186
2244
  #: views/tools/options-group-live-traffic.php:105
2245
  msgid "Browser user-agent to ignore"
2246
  msgstr ""
2247
 
2248
+ #: lib/menu_options.php:187
2249
  #: views/tools/options-group-live-traffic.php:114
2250
  msgid "Amount of Live Traffic data to store (number of rows)"
2251
  msgstr ""
2252
 
2253
+ #: lib/menu_options.php:188
2254
  msgid "Maximum days to keep Live Traffic data"
2255
  msgstr ""
2256
 
2257
+ #: lib/menu_options.php:189
2258
  #: views/dashboard/options-group-import.php:31
2259
  msgid "Export this site's Wordfence options for import on another site"
2260
  msgstr ""
2261
 
2262
+ #: lib/menu_options.php:190
2263
  #: views/dashboard/options-group-import.php:44
2264
  msgid "Import Wordfence options from another site using a token"
2265
  msgstr ""
2266
 
2267
+ #: lib/menu_options.php:194
2268
  msgid "Require Cellphone Sign-in for all Administrators"
2269
  msgstr ""
2270
 
2271
+ #: lib/menu_options.php:195
2272
  msgid "Enable Separate Prompt for Two Factor Code"
2273
  msgstr ""
2274
 
2275
+ #: lib/menu_options.php:204
2276
  msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
2277
  msgstr ""
2278
 
2279
+ #: lib/menu_options.php:271
2280
  msgid "These options are also available throughout the plugin pages, in the relevant sections. This page is provided for easier setup for experienced Wordfence users."
2281
  msgstr ""
2282
 
2283
+ #: lib/menu_options.php:354
2284
  #: models/page/wfPage.php:115
2285
  msgid "Scan Options"
2286
  msgstr ""
2287
 
2288
+ #: lib/menu_options.php:386
2289
  msgid "Tool Options"
2290
  msgstr ""
2291
 
2292
+ #: lib/menu_options.php:416
2293
  msgid "Importing and exporting of options is available on the Tools page"
2294
  msgstr ""
2295
 
2328
  msgstr ""
2329
 
2330
  #: lib/menu_scanner.php:80
2331
+ #: lib/wordfenceClass.php:6750
2332
  msgid "Protect More Sites"
2333
  msgstr ""
2334
 
2362
  msgid "Reputation Check Status"
2363
  msgstr ""
2364
 
2365
+ #: lib/menu_scanner.php:144
 
 
 
 
2366
  #: lib/menu_scanner_options.php:97
2367
  msgid "Scan Options and Scheduling"
2368
  msgstr ""
2369
 
2370
+ #: lib/menu_scanner.php:145
2371
  msgid "Manage scan options including scheduling"
2372
  msgstr ""
2373
 
2374
+ #: lib/menu_scanner.php:206
2375
  msgid "Are you sure you want to delete?"
2376
  msgstr ""
2377
 
2378
+ #: lib/menu_scanner.php:207
2379
  msgid "<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup."
2380
  msgstr ""
2381
 
2382
  #. translators: Support URL.
2383
+ #: lib/menu_scanner.php:210
2384
  msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here for our help article<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
2385
  msgstr ""
2386
 
2387
+ #: lib/menu_scanner.php:212
2388
  msgid "Delete Files"
2389
  msgstr ""
2390
 
2391
+ #: lib/menu_scanner.php:220
2392
  msgid "Are you sure you want to repair?"
2393
  msgstr ""
2394
 
2395
+ #: lib/menu_scanner.php:221
2396
  msgid "Do not repair files on your system unless you're ABSOLUTELY sure you know what you're doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files."
2397
  msgstr ""
2398
 
2399
+ #: lib/menu_scanner.php:223
2400
  msgid "Repair Files"
2401
  msgstr ""
2402
 
2403
  #. translators: Time limit (number).
2404
  #. translators: Support URL.
2405
+ #: lib/menu_scanner.php:233
2406
  #: lib/menu_tools_twoFactor.php:246
2407
  #: lib/menu_tools_twoFactor.php:255
2408
  #: lib/menu_tools_twoFactor.php:264
2409
  #: lib/menu_tools_twoFactor.php:284
2410
+ #: lib/wordfenceClass.php:4962
2411
+ #: lib/wordfenceClass.php:4968
2412
+ #: lib/wordfenceClass.php:4974
2413
+ #: lib/wordfenceClass.php:4993
2414
+ #: lib/wordfenceClass.php:4999
2415
+ #: lib/wordfenceClass.php:5006
2416
+ #: lib/wordfenceClass.php:5014
2417
+ #: lib/wordfenceClass.php:6112
2418
+ #: lib/wordfenceClass.php:6114
2419
+ #: lib/wordfenceClass.php:6165
2420
+ #: lib/wordfenceClass.php:8129
2421
+ #: lib/wordfenceClass.php:8136
2422
+ #: lib/wordfenceClass.php:8243
2423
+ #: lib/wordfenceClass.php:8307
2424
  #: views/dashboard/options-group-import.php:147
2425
  #: views/dashboard/options-group-import.php:157
2426
  #: views/dashboard/options-group-import.php:177
2435
  msgid "Close"
2436
  msgstr ""
2437
 
2438
+ #: lib/menu_scanner.php:300
2439
  msgid "A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site's online reputation."
2440
  msgstr ""
2441
 
2442
+ #: lib/menu_scanner.php:314
2443
  msgid "Manage Scan Settings"
2444
  msgstr ""
2445
 
2446
+ #: lib/menu_scanner.php:316
2447
  msgid "Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling."
2448
  msgstr ""
2449
 
2450
+ #: lib/menu_scanner.php:331
2451
  msgid "Start Your First Scan"
2452
  msgstr ""
2453
 
2454
+ #: lib/menu_scanner.php:332
2455
  msgid "By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like."
2456
  msgstr ""
2457
 
2458
+ #: lib/menu_scanner.php:368
2459
  msgid "Scan Options &amp; Settings"
2460
  msgstr ""
2461
 
2462
+ #: lib/menu_scanner.php:370
2463
  msgid "All of your scan options, including scheduling, are now located here."
2464
  msgstr ""
2465
 
2466
+ #: lib/menu_scanner.php:383
2467
  msgid "Scan Progress and Activity"
2468
  msgstr ""
2469
 
2470
+ #: lib/menu_scanner.php:384
2471
  msgid "Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings."
2472
  msgstr ""
2473
 
2623
  #: lib/menu_tools_livetraffic.php:41
2624
  #: lib/menu_tools_livetraffic.php:571
2625
  #: lib/menu_tools_livetraffic.php:602
2626
+ #: lib/wordfenceClass.php:6715
2627
  #: models/page/wfPage.php:119
2628
  msgid "Live Traffic"
2629
  msgstr ""
2643
  msgstr ""
2644
 
2645
  #: lib/menu_tools_diagnostic.php:34
2646
+ msgid "This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host's environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem. (<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More <span class=\"screen-reader-text\">opens in new tab</span></a>)"
2647
  msgstr ""
2648
 
2649
  #: lib/menu_tools_diagnostic.php:38
2976
 
2977
  #: lib/menu_tools_diagnostic.php:667
2978
  #: lib/menu_tools_diagnostic.php:706
2979
+ #: lib/wordfenceClass.php:6173
2980
  msgid "Download"
2981
  msgstr ""
2982
 
3006
  msgstr ""
3007
 
3008
  #: lib/menu_tools_diagnostic.php:746
3009
+ #: lib/wordfenceClass.php:3977
3010
  #: views/diagnostics/text.php:519
3011
  msgid "No New Issues"
3012
  msgstr ""
3071
  msgid "Disable reading of php://input"
3072
  msgstr ""
3073
 
3074
+ #: lib/menu_tools_diagnostic.php:884
3075
+ #: lib/wordfenceClass.php:6234
 
 
 
 
3076
  msgid "Restore Defaults"
3077
  msgstr ""
3078
 
3079
+ #: lib/menu_tools_diagnostic.php:885
3080
+ #: lib/wordfenceClass.php:6159
3081
  msgid "Cancel Changes"
3082
  msgstr ""
3083
 
3084
+ #: lib/menu_tools_diagnostic.php:886
3085
+ #: lib/wordfenceClass.php:6237
3086
  msgid "Save Changes"
3087
  msgstr ""
3088
 
3089
+ #: lib/menu_tools_diagnostic.php:903
3090
  #: views/options/block-all-options-controls.php:162
3091
  #: views/options/block-controls.php:77
3092
  msgid "Confirm Restore Defaults"
3093
  msgstr ""
3094
 
3095
+ #: lib/menu_tools_diagnostic.php:904
3096
  msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page."
3097
  msgstr ""
3098
 
3099
+ #: lib/menu_tools_diagnostic.php:906
3100
  #: views/options/block-all-options-controls.php:165
3101
  #: views/options/block-controls.php:80
3102
  msgid "Restore<span class=\"wf-hidden-xs\"> Defaults</span>"
3153
  #: lib/menu_tools_livetraffic.php:100
3154
  #: lib/menu_tools_livetraffic.php:227
3155
  #: lib/menu_tools_livetraffic.php:458
3156
+ #: lib/wordfenceClass.php:6196
3157
  msgid "Human"
3158
  msgstr ""
3159
 
3160
  #: lib/menu_tools_livetraffic.php:101
3161
  #: lib/menu_tools_livetraffic.php:228
3162
  #: lib/menu_tools_livetraffic.php:458
3163
+ #: lib/wordfenceClass.php:6158
3164
  msgid "Bot"
3165
  msgstr ""
3166
 
3170
 
3171
  #: lib/menu_tools_livetraffic.php:103
3172
  #: lib/wfDiagnostic.php:803
3173
+ #: lib/wordfenceClass.php:6150
3174
  msgid "Blocked"
3175
  msgstr ""
3176
 
3316
  msgstr ""
3317
 
3318
  #: lib/menu_tools_livetraffic.php:286
3319
+ #: lib/wordfenceClass.php:6265
3320
  msgid "Type"
3321
  msgstr ""
3322
 
3339
  msgstr ""
3340
 
3341
  #: lib/menu_tools_livetraffic.php:291
3342
+ #: lib/wordfenceClass.php:4258
3343
  #: views/blocking/blocking-create.php:193
3344
  msgid "Hostname"
3345
  msgstr ""
3360
  #: views/scanner/issue-wfPluginUpgrade.php:20
3361
  #: views/scanner/issue-wfPluginVulnerable.php:17
3362
  #: views/scanner/issue-wfPluginVulnerable.php:18
 
3363
  #: views/scanner/issue-wfThemeUpgrade.php:18
3364
  #: views/scanner/issue-wfThemeUpgrade.php:19
3365
  #: views/scanner/issue-wfUpgrade.php:17
3698
  msgstr ""
3699
 
3700
  #: lib/menu_tools_whois.php:95
3701
+ #: lib/wordfenceClass.php:6178
3702
  msgid "Enter a valid IP or domain"
3703
  msgstr ""
3704
 
3705
  #: lib/menu_tools_whois.php:95
3706
+ #: lib/wordfenceClass.php:6221
3707
  msgid "Please enter a valid IP address or domain name for your whois lookup."
3708
  msgstr ""
3709
 
3710
  #: lib/menu_tools_whois.php:99
3711
+ #: lib/wordfenceClass.php:6202
3712
  msgid "Loading..."
3713
  msgstr ""
3714
 
3715
  #: lib/menu_tools_whois.php:104
3716
+ #: lib/wordfenceClass.php:6208
3717
  msgid "Look up IP or Domain"
3718
  msgstr ""
3719
 
3743
 
3744
  #: lib/menu_wordfence_central.php:44
3745
  #: lib/menu_wordfence_central.php:57
3746
+ #: lib/wordfenceClass.php:6731
3747
  msgid "Wordfence Central"
3748
  msgstr ""
3749
 
3826
  #. translators: Error message.
3827
  #: lib/rest-api/wfRESTConfigController.php:215
3828
  #: lib/rest-api/wfRESTConfigController.php:258
3829
+ #: lib/wordfenceClass.php:4542
3830
  msgid "An error occurred while saving the configuration: %s"
3831
  msgstr ""
3832
 
3833
  #. translators: Error message.
3834
  #: lib/rest-api/wfRESTConfigController.php:226
3835
  #: lib/rest-api/wfRESTConfigController.php:269
3836
+ #: lib/wordfenceClass.php:4551
3837
  msgid "Errors occurred while saving the configuration: %s"
3838
  msgstr ""
3839
 
3840
  #: lib/rest-api/wfRESTConfigController.php:231
3841
  #: lib/rest-api/wfRESTConfigController.php:274
3842
+ #: lib/wordfenceClass.php:4556
3843
  msgid "Errors occurred while saving the configuration."
3844
  msgstr ""
3845
 
3956
  msgstr ""
3957
 
3958
  #: lib/wfActivityReport.php:584
3959
+ #: lib/wordfenceClass.php:8482
3960
  msgid "Blocked because the IP is blocklisted"
3961
  msgstr ""
3962
 
3963
  #. translators: Reason for firewall action.
3964
  #: lib/wfActivityReport.php:587
3965
+ #: lib/wordfenceClass.php:8485
3966
  msgid "Blocked for %s"
3967
  msgstr ""
3968
 
3969
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3970
  #: lib/wfActivityReport.php:599
3971
+ #: lib/wordfenceClass.php:8499
3972
  msgid "Blocked for %1$s in query string: %2$s = %3$s"
3973
  msgstr ""
3974
 
3975
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3976
  #: lib/wfActivityReport.php:602
3977
+ #: lib/wordfenceClass.php:8504
3978
  msgid "Blocked for %1$s in POST body: %2$s = %3$s"
3979
  msgstr ""
3980
 
3981
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3982
  #: lib/wfActivityReport.php:605
3983
+ #: lib/wordfenceClass.php:8509
3984
  msgid "Blocked for %1$s in cookie: %2$s = %3$s"
3985
  msgstr ""
3986
 
3987
  #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
3988
  #: lib/wfActivityReport.php:608
3989
+ #: lib/wordfenceClass.php:8514
3990
  msgid "Blocked for %1$s in file: %2$s = %3$s"
3991
  msgstr ""
3992
 
3997
  msgstr ""
3998
 
3999
  #: lib/wfAdminNoticeQueue.php:193
4000
+ #: lib/wordfenceClass.php:6171
4001
+ #: lib/wordfenceClass.php:6426
4002
+ #: lib/wordfenceClass.php:6461
4003
+ #: lib/wordfenceClass.php:9037
4004
  msgid "Dismiss"
4005
  msgstr ""
4006
 
5170
  msgstr ""
5171
 
5172
  #. translators: 1. Key in key-value store. 2. Value in key-value store.
5173
+ #: lib/wfConfig.php:484
5174
  msgid "wfConfig::set() got an array as second param with key: %1$s and value: %2$s"
5175
  msgstr ""
5176
 
5177
  #. translators: Key in key-value store.
5178
+ #: lib/wfConfig.php:641
5179
  msgid "Error reassembling value for %s"
5180
  msgstr ""
5181
 
5182
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5183
+ #: lib/wfConfig.php:735
5184
+ #: lib/wfConfig.php:744
5185
+ #: lib/wfConfig.php:751
5186
+ #: lib/wfConfig.php:761
5187
+ #: lib/wfConfig.php:768
5188
  msgid "Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)"
5189
  msgstr ""
5190
 
5191
  #. translators: Key in key-value store.
5192
+ #: lib/wfConfig.php:780
5193
  msgid "Error writing value header for %s"
5194
  msgstr ""
5195
 
5196
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5197
+ #: lib/wfConfig.php:793
5198
+ #: lib/wfConfig.php:804
5199
+ #: lib/wfConfig.php:814
5200
  msgid "Error writing value for %1$s (MySQLi error: [%2$s] %3$s)"
5201
  msgstr ""
5202
 
5203
  #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
5204
+ #: lib/wfConfig.php:821
5205
  msgid "Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)"
5206
  msgstr ""
5207
 
5208
  #. translators: Support URL.
5209
+ #: lib/wfConfig.php:991
5210
  msgid "Wordfence Upgrade not run. Please modify your .htaccess"
5211
  msgstr ""
5212
 
5213
  #. translators: Support URL.
5214
+ #: lib/wfConfig.php:991
5215
  msgid ""
5216
  "To preserve the integrity of your website we are not running Wordfence auto-update.\n"
5217
  "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n"
5223
  ""
5224
  msgstr ""
5225
 
5226
+ #: lib/wfConfig.php:1114
5227
  msgid "Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory."
5228
  msgstr ""
5229
 
5230
+ #: lib/wfConfig.php:1151
5231
  msgid "Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file."
5232
  msgstr ""
5233
 
5234
+ #: lib/wfConfig.php:1188
5235
+ #: lib/wordfenceClass.php:7592
5236
  msgid "The grace period end time must be in the future."
5237
  msgstr ""
5238
 
5239
+ #: lib/wfConfig.php:1197
5240
  msgid "Unknown firewall mode."
5241
  msgstr ""
5242
 
5243
+ #: lib/wfConfig.php:1216
5244
  msgid "The following emails are invalid: "
5245
  msgstr ""
5246
 
5247
  #. translators: Regular expression.
5248
+ #: lib/wfConfig.php:1229
5249
  msgid "\"%s\" is not a valid regular expression."
5250
  msgstr ""
5251
 
5252
+ #: lib/wfConfig.php:1248
5253
  msgid "Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: "
5254
  msgstr ""
5255
 
5256
+ #: lib/wfConfig.php:1267
5257
  msgid "The following users you selected to ignore in live traffic reports are not valid on this system: "
5258
  msgstr ""
5259
 
5260
+ #: lib/wfConfig.php:1284
5261
  msgid "The following IPs you selected to ignore in live traffic reports are not valid: "
5262
  msgstr ""
5263
 
5264
+ #: lib/wfConfig.php:1301
5265
  msgid "The following IPs/ranges you selected to trust as proxies are not valid: "
5266
  msgstr ""
5267
 
5268
+ #: lib/wfConfig.php:1311
5269
  msgid "An empty license key was entered."
5270
  msgstr ""
5271
 
5272
+ #: lib/wfConfig.php:1314
5273
+ #: lib/wordfenceClass.php:4427
5274
  msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F."
5275
  msgstr ""
5276
 
5277
+ #: lib/wfConfig.php:1326
5278
  msgid "A wildcard cannot be used to exclude all files from the scan."
5279
  msgstr ""
5280
 
5281
+ #: lib/wfConfig.php:1337
5282
+ msgid "Invalid number of scan resume attempts specified: %d"
5283
+ msgstr ""
5284
+
5285
+ #: lib/wfConfig.php:1791
5286
+ #: lib/wfConfig.php:1813
5287
  msgid "The Wordfence server's response did not contain the expected elements."
5288
  msgstr ""
5289
 
5290
+ #: lib/wfConfig.php:1795
5291
  msgid "Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: "
5292
  msgstr ""
5293
 
5294
+ #: lib/wfConfig.php:1817
5295
  msgid "Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: "
5296
  msgstr ""
5297
 
5298
+ #: lib/wfConfig.php:1861
5299
  msgid "Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: "
5300
  msgstr ""
5301
 
5502
  msgstr ""
5503
 
5504
  #: lib/wfDiagnostic.php:132
5505
+ msgid "Connecting back to this site via IPv6 (not required; failure to connect may not be an issue on some sites) <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
5506
  msgstr ""
5507
 
5508
  #: lib/wfDiagnostic.php:133
5909
  msgstr ""
5910
 
5911
  #: lib/wfDiagnostic.php:941
5912
+ #: lib/wordfenceClass.php:4276
5913
  msgid "Never"
5914
  msgstr ""
5915
 
6156
  msgstr ""
6157
 
6158
  #: lib/wfLog.php:626
6159
+ #: lib/wordfenceClass.php:6209
6160
  #: waf/wfWAFIPBlocksController.php:99
6161
  msgid "Manual block by administrator"
6162
  msgstr ""
6236
  msgid "Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s"
6237
  msgstr ""
6238
 
6239
+ #: lib/wfScan.php:114
6240
  msgid "Checking if scan is already running"
6241
  msgstr ""
6242
 
6243
+ #: lib/wfScan.php:116
6244
  msgid "There is already a scan running."
6245
  msgstr ""
6246
 
6247
+ #: lib/wfScan.php:125
6248
  msgid "Using low resource scanning"
6249
  msgstr ""
6250
 
6251
+ #: lib/wfScan.php:128
6252
  msgid "Requesting max memory"
6253
  msgstr ""
6254
 
6255
+ #: lib/wfScan.php:130
6256
  msgid "Setting up error handling environment"
6257
  msgstr ""
6258
 
6259
+ #: lib/wfScan.php:138
6260
  msgid "Setting up scanRunning and starting scan"
6261
  msgstr ""
6262
 
6263
  #. translators: Error message (used for debugging).
6264
+ #: lib/wfScan.php:143
6265
  msgid "Got a true deserialized value back from 'wfsd_engine' with type: %s"
6266
  msgstr ""
6267
 
6268
  #. translators: Error message (used for debugging).
6269
+ #: lib/wfScan.php:147
6270
  msgid "Scan can't continue - stored data not found after a fork. Got type: %s"
6271
  msgstr ""
6272
 
6273
+ #: lib/wfScan.php:149
6274
+ #: lib/wfScan.php:152
6275
  msgid "Scan can't continue - stored data not found after a fork."
6276
  msgstr ""
6277
 
6278
  #. translators: Error message.
6279
+ #: lib/wfScan.php:153
6280
+ #: lib/wfScan.php:319
6281
  msgid "Previous scan terminated with an error. See below."
6282
  msgstr ""
6283
 
6284
+ #: lib/wfScan.php:176
6285
  msgid "Contacting Wordfence to initiate scan"
6286
  msgstr ""
6287
 
6288
  #. translators: Time until.
6289
+ #: lib/wfScan.php:185
6290
  msgid "Deferring scheduled scan by %s"
6291
  msgstr ""
6292
 
6293
+ #: lib/wfScan.php:206
6294
  msgid "Initiating quick scan"
6295
  msgstr ""
6296
 
6297
  #. translators: 1. Bytes of memory. 2. Bytes of memory.
6298
  #. translators: 1. Memory in bytes. 2. Memory in bytes.
 
 
 
 
 
 
 
 
 
 
 
6299
  #: lib/wfScan.php:217
6300
  #: lib/wfScan.php:229
6301
  #: lib/wfScan.php:252
6302
  #: lib/wfScan.php:267
6303
  #: lib/wfScan.php:282
6304
  #: lib/wfScan.php:297
6305
+ #: lib/wfScanEngine.php:446
6306
+ msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s"
6307
+ msgstr ""
6308
+
6309
+ #. translators: Error message.
6310
+ #: lib/wfScan.php:221
6311
+ #: lib/wfScan.php:233
6312
+ #: lib/wfScan.php:256
6313
+ #: lib/wfScan.php:271
6314
+ #: lib/wfScan.php:286
6315
+ #: lib/wfScan.php:301
6316
+ #: lib/wfScan.php:318
6317
  msgid "Scan terminated with error: %s"
6318
  msgstr ""
6319
 
6320
+ #: lib/wfScan.php:304
6321
  msgid "Wordfence scan failed because of license site URL conflict"
6322
  msgstr ""
6323
 
6324
  #. translators: Error message.
6325
+ #: lib/wfScan.php:356
6326
  msgid "Scan Engine Error: %s"
6327
  msgstr ""
6328
 
6376
  msgstr ""
6377
 
6378
  #. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
6379
+ #: lib/wfScanEngine.php:456
6380
  msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
6381
  msgstr ""
6382
 
6383
  #. translators: 1. Time duration.
6384
+ #: lib/wfScanEngine.php:468
6385
  msgid "Quick Scan Complete. Scanned in %s."
6386
  msgstr ""
6387
 
6388
  #. translators: Number of scan results.
6389
+ #: lib/wfScanEngine.php:477
6390
  msgid "%d ignored issue was also detected."
6391
  msgid_plural "%d ignored issues were also detected."
6392
  msgstr[0] ""
6393
  msgstr[1] ""
6394
 
6395
  #. translators: Number of scan results.
6396
+ #: lib/wfScanEngine.php:488
6397
  msgid "Scan complete. You have %d new issue to fix."
6398
  msgid_plural "Scan complete. You have %d new issues to fix."
6399
  msgstr[0] ""
6400
  msgstr[1] ""
6401
 
6402
+ #: lib/wfScanEngine.php:496
6403
  msgid "See below."
6404
  msgstr ""
6405
 
6406
+ #: lib/wfScanEngine.php:499
6407
  msgid "Scan complete. Congratulations, no new problems found."
6408
  msgstr ""
6409
 
6410
+ #: lib/wfScanEngine.php:510
6411
  msgid "Checking if your site IP is generating spam"
6412
  msgstr ""
6413
 
6414
+ #: lib/wfScanEngine.php:529
6415
  msgid "Checking if your IP is generating spam is for paid members only"
6416
  msgstr ""
6417
 
6418
+ #: lib/wfScanEngine.php:536
6419
  msgid "Checking if your site is on a domain blocklist"
6420
  msgstr ""
6421
 
6422
+ #: lib/wfScanEngine.php:541
6423
  msgid "Checking if your site is on a domain blocklist is for paid members only"
6424
  msgstr ""
6425
 
6426
  #. translators: Error message.
6427
+ #: lib/wfScanEngine.php:577
6428
  msgid "Error checking domain blocklists: %s"
6429
  msgstr ""
6430
 
6431
  #. translators: WordPress site ID.
6432
+ #: lib/wfScanEngine.php:611
6433
  msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list."
6434
  msgstr ""
6435
 
6436
+ #: lib/wfScanEngine.php:614
6437
  msgid "Your site is listed on Google's Safe Browsing malware list."
6438
  msgstr ""
6439
 
6440
  #. translators: 1. URL. 2. URL.
6441
+ #: lib/wfScanEngine.php:618
6442
  msgid "The URL %1$s is on the malware list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6443
  msgstr ""
6444
 
6445
  #. translators: WordPress site ID.
6446
+ #: lib/wfScanEngine.php:624
6447
  msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list."
6448
  msgstr ""
6449
 
6450
+ #: lib/wfScanEngine.php:627
6451
  msgid "Your site is listed on Google's Safe Browsing phishing list."
6452
  msgstr ""
6453
 
6454
  #. translators: 1. URL. 2. URL.
6455
+ #: lib/wfScanEngine.php:631
6456
  msgid "The URL %1$s is on the phishing list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6457
  msgstr ""
6458
 
6459
  #. translators: WordPress site ID.
6460
+ #: lib/wfScanEngine.php:637
6461
  msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist."
6462
  msgstr ""
6463
 
6464
+ #: lib/wfScanEngine.php:640
6465
  msgid "Your site is listed on the Wordfence domain blocklist."
6466
  msgstr ""
6467
 
6468
  #. translators: URL.
6469
+ #: lib/wfScanEngine.php:644
6470
  msgid "The URL %s is on the blocklist."
6471
  msgstr ""
6472
 
6473
  #. translators: WordPress site ID.
6474
+ #: lib/wfScanEngine.php:650
6475
  msgid "The multisite blog with ID %d is listed on a domain blocklist."
6476
  msgstr ""
6477
 
6478
+ #: lib/wfScanEngine.php:653
6479
  msgid "Your site is listed on a domain blocklist."
6480
  msgstr ""
6481
 
6482
  #. translators: URL.
6483
+ #: lib/wfScanEngine.php:655
6484
  msgid "The URL is: %s"
6485
  msgstr ""
6486
 
6487
+ #: lib/wfScanEngine.php:675
6488
  msgid "Checking for the most secure way to get IPs"
6489
  msgstr ""
6490
 
6491
+ #: lib/wfScanEngine.php:702
6492
  msgid "Unable to accurately detect IPs"
6493
  msgstr ""
6494
 
6495
  #. translators: Support URL.
6496
+ #: lib/wfScanEngine.php:703
6497
  msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
6498
  msgstr ""
6499
 
6500
+ #: lib/wfScanEngine.php:713
6501
+ #: lib/wordfenceClass.php:6403
6502
  msgid "For maximum security use PHP's built in REMOTE_ADDR."
6503
  msgstr ""
6504
 
6505
+ #: lib/wfScanEngine.php:715
6506
+ #: lib/wordfenceClass.php:6406
6507
  msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs."
6508
  msgstr ""
6509
 
6510
+ #: lib/wfScanEngine.php:717
6511
+ #: lib/wordfenceClass.php:6409
6512
  msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs."
6513
  msgstr ""
6514
 
6515
+ #: lib/wfScanEngine.php:719
6516
+ #: lib/wordfenceClass.php:6412
6517
  msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs."
6518
  msgstr ""
6519
 
6520
+ #: lib/wfScanEngine.php:723
6521
  msgid "'How does Wordfence get IPs' is misconfigured"
6522
  msgstr ""
6523
 
6524
  #. translators: Support URL.
6525
+ #: lib/wfScanEngine.php:726
6526
  msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
6527
  msgstr ""
6528
 
6529
+ #: lib/wfScanEngine.php:747
6530
  msgid "Check for publicly accessible configuration files, backup files and logs"
6531
  msgstr ""
6532
 
6533
  #. translators: File path.
6534
+ #: lib/wfScanEngine.php:798
6535
  msgid "Publicly accessible config, backup, or log file found: %s"
6536
  msgstr ""
6537
 
6538
  #. translators: 1. URL to publicly accessible file. 2. Support URL.
6539
+ #: lib/wfScanEngine.php:801
6540
  msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn more<span class=\"screen-reader-text\"> ("
6541
  msgstr ""
6542
 
6543
+ #: lib/wfScanEngine.php:831
6544
  msgid "Checking if your server discloses the path to the document root"
6545
  msgstr ""
6546
 
6547
+ #: lib/wfScanEngine.php:841
6548
  msgid "Web server exposes the document root"
6549
  msgstr ""
6550
 
6551
+ #: lib/wfScanEngine.php:842
6552
  msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view."
6553
  msgstr ""
6554
 
6555
+ #: lib/wfScanEngine.php:868
6556
  msgid "Directory listing is enabled"
6557
  msgstr ""
6558
 
6559
+ #: lib/wfScanEngine.php:869
6560
  msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed."
6561
  msgstr ""
6562
 
6563
+ #: lib/wfScanEngine.php:885
6564
  msgid "Checking if your site is being Spamvertised"
6565
  msgstr ""
6566
 
6567
+ #: lib/wfScanEngine.php:904
6568
  msgid "Check if your site is being Spamvertized is for paid members only"
6569
  msgstr ""
6570
 
6571
+ #: lib/wfScanEngine.php:934
6572
  msgid "Ignoring invalid scan path: %s"
6573
  msgstr ""
6574
 
6575
+ #: lib/wfScanEngine.php:968
6576
  msgid "Ignoring invalid expected scan file: %s"
6577
  msgstr ""
6578
 
6579
+ #: lib/wfScanEngine.php:973
6580
  msgid "Wordfence could not read the content of your WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory."
6581
  msgstr ""
6582
 
6583
+ #: lib/wfScanEngine.php:982
6584
  msgid "Ignoring invalid base scan file: %s"
6585
  msgstr ""
6586
 
6587
+ #: lib/wfScanEngine.php:993
6588
  msgid "Checking for paths skipped due to scan settings"
6589
  msgstr ""
6590
 
6591
  #. translators: Number of paths skipped in scan.
6592
+ #: lib/wfScanEngine.php:1003
6593
  msgid ", and %d more."
6594
  msgstr ""
6595
 
6596
  #. translators: Number of paths skipped in scan.
6597
+ #: lib/wfScanEngine.php:1027
6598
  msgid "%d path was skipped for the malware scan due to scan settings"
6599
  msgid_plural "%d paths were skipped for the malware scan due to scan settings"
6600
  msgstr[0] ""
6601
  msgstr[1] ""
6602
 
6603
  #. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths.
6604
+ #: lib/wfScanEngine.php:1030
6605
  msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
6606
  msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
6607
  msgstr[0] ""
6608
  msgstr[1] ""
6609
 
6610
+ #: lib/wfScanEngine.php:1058
6611
  msgid "Including files that are outside the WordPress installation in the scan."
6612
  msgstr ""
6613
 
6614
+ #: lib/wfScanEngine.php:1061
6615
  msgid "Getting plugin list from WordPress"
6616
  msgstr ""
6617
 
6618
  #. translators: Number of plugins.
6619
+ #: lib/wfScanEngine.php:1063
6620
  msgid "Found %d plugin"
6621
  msgid_plural "Found %d plugins"
6622
  msgstr[0] ""
6623
  msgstr[1] ""
6624
 
6625
+ #: lib/wfScanEngine.php:1065
6626
  msgid "Getting theme list from WordPress"
6627
  msgstr ""
6628
 
6629
  #. translators: Number of themes.
6630
+ #: lib/wfScanEngine.php:1067
6631
  msgid "Found %d theme"
6632
  msgid_plural "Found %d themes"
6633
  msgstr[0] ""
6634
  msgstr[1] ""
6635
 
6636
+ #: lib/wfScanEngine.php:1084
6637
  msgid "Scanning file contents for infections and vulnerabilities"
6638
  msgstr ""
6639
 
6640
+ #: lib/wfScanEngine.php:1087
6641
  msgid "Skipping scan of file contents for infections and vulnerabilities"
6642
  msgstr ""
6643
 
6644
+ #: lib/wfScanEngine.php:1091
6645
  msgid "Scanning file contents for URLs on a domain blocklist"
6646
  msgstr ""
6647
 
6648
+ #: lib/wfScanEngine.php:1094
6649
  msgid "Skipping scan of file contents for URLs on a domain blocklist"
6650
  msgstr ""
6651
 
6652
+ #: lib/wfScanEngine.php:1099
6653
  msgid "Starting scan of file contents"
6654
  msgstr ""
6655
 
6656
+ #: lib/wfScanEngine.php:1115
6657
  msgid "Done file contents scan"
6658
  msgstr ""
6659
 
6660
  #. translators: Scan result description.
6661
+ #: lib/wfScanEngine.php:1123
6662
+ #: lib/wfScanEngine.php:2304
6663
+ #: lib/wfScanEngine.php:2346
6664
  msgid "Adding issue: %s"
6665
  msgstr ""
6666
 
6667
+ #: lib/wfScanEngine.php:1156
6668
  msgid "Scanning for publicly accessible quarantined files"
6669
  msgstr ""
6670
 
6671
  #. translators: File path.
6672
+ #: lib/wfScanEngine.php:1161
6673
  msgid "Testing accessibility of: %s"
6674
  msgstr ""
6675
 
6676
  #. translators: File path.
6677
+ #: lib/wfScanEngine.php:1170
6678
  msgid "Publicly accessible quarantined file found: %s"
6679
  msgstr ""
6680
 
6681
  #. translators: URL to publicly accessible file.
6682
+ #: lib/wfScanEngine.php:1173
6683
  msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s<span class=\"screen-reader-text\"> ("
6684
  msgstr ""
6685
 
6686
+ #: lib/wfScanEngine.php:1197
6687
  msgid "Scanning posts for URLs on a domain blocklist"
6688
  msgstr ""
6689
 
6690
  #. translators: Number of posts left to scan.
6691
+ #: lib/wfScanEngine.php:1220
6692
  msgid "Scanning posts with %d left to scan."
6693
  msgstr ""
6694
 
6695
+ #: lib/wfScanEngine.php:1242
6696
  msgid "Post title contains suspicious code"
6697
  msgstr ""
6698
 
6699
+ #: lib/wfScanEngine.php:1243
6700
  msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious."
6701
  msgstr ""
6702
 
6703
+ #: lib/wfScanEngine.php:1266
6704
  msgid "Examining URLs found in posts we scanned for dangerous websites"
6705
  msgstr ""
6706
 
6707
+ #: lib/wfScanEngine.php:1268
6708
+ #: lib/wfScanEngine.php:2267
6709
  msgid "Done examining URLs"
6710
  msgstr ""
6711
 
6712
  #. translators: 1. WordPress Post type. 2. URL.
6713
+ #: lib/wfScanEngine.php:1304
6714
+ #: lib/wfScanEngine.php:1324
6715
  msgid "%1$s contains a suspected malware URL: %2$s"
6716
  msgstr ""
6717
 
6718
  #. translators: 1. WordPress Post type. 2. URL. 3. URL.
6719
  #. translators: 1. WordPress post type. 2. URL. 3. URL.
6720
+ #: lib/wfScanEngine.php:1310
6721
+ #: lib/wfScanEngine.php:1453
6722
  msgid "This %1$s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
6723
  msgstr ""
6724
 
6725
  #. translators: 1. WordPress Post type. 2. URL.
6726
+ #: lib/wfScanEngine.php:1316
6727
  msgid "%1$s contains a suspected phishing site URL: %2$s"
6728
  msgstr ""
6729
 
6730
  #. translators: 1. WordPress Post type. 2. URL.
6731
  #. translators: 1. WordPress post type. 2. URL.
6732
+ #: lib/wfScanEngine.php:1319
6733
+ #: lib/wfScanEngine.php:1462
6734
  msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s"
6735
  msgstr ""
6736
 
6737
  #. translators: 1. WordPress Post type. 2. URL.
6738
  #. translators: 1. WordPress post type. 2. URL.
6739
+ #: lib/wfScanEngine.php:1327
6740
+ #: lib/wfScanEngine.php:1470
6741
  msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s"
6742
  msgstr ""
6743
 
6744
  #. translators: Scan result description.
6745
+ #: lib/wfScanEngine.php:1336
6746
  msgid "Adding issue: %1$s"
6747
  msgstr ""
6748
 
6749
+ #: lib/wfScanEngine.php:1372
6750
  msgid "Scanning comments for URLs on a domain blocklist"
6751
  msgstr ""
6752
 
6753
  #. translators: Number of comments left to scan.
6754
+ #: lib/wfScanEngine.php:1396
6755
  msgid "Scanning comments with %d left to scan."
6756
  msgstr ""
6757
 
6758
  #. translators: 1. WordPress post type. 2. WordPress author username.
6759
+ #: lib/wfScanEngine.php:1450
6760
  msgid "%1$s with author %2$s contains a suspected malware URL."
6761
  msgstr ""
6762
 
6763
  #. translators: WordPress post type.
6764
+ #: lib/wfScanEngine.php:1459
6765
  msgid "%s contains a suspected phishing site URL."
6766
  msgstr ""
6767
 
6768
  #. translators: URL.
6769
+ #: lib/wfScanEngine.php:1467
6770
  msgid "%s contains a suspected malware URL."
6771
  msgstr ""
6772
 
6773
  #. translators: WordPress username.
6774
+ #: lib/wfScanEngine.php:1515
6775
  msgid "Author: %s"
6776
  msgstr ""
6777
 
6778
  #. translators: Email address.
6779
+ #: lib/wfScanEngine.php:1518
6780
  msgid "Email: %s"
6781
  msgstr ""
6782
 
6783
  #. translators: IP address.
6784
+ #: lib/wfScanEngine.php:1520
6785
  msgid "Source IP: %s"
6786
  msgstr ""
6787
 
6788
  #. translators: Comment description.
6789
+ #: lib/wfScanEngine.php:1521
6790
  msgid "Scanning comment with %s"
6791
  msgstr ""
6792
 
6793
  #. translators: Comment description.
6794
+ #: lib/wfScanEngine.php:1534
6795
+ #: lib/wfScanEngine.php:1540
6796
  msgid "Marking comment as spam for containing a malware URL. Comment has %s"
6797
  msgstr ""
6798
 
6799
  #. translators: Comment description.
6800
+ #: lib/wfScanEngine.php:1537
6801
  msgid "Marking comment as spam for containing a phishing URL. Comment has %s"
6802
  msgstr ""
6803
 
6804
  #. translators: Comment description.
6805
+ #: lib/wfScanEngine.php:1547
6806
  msgid "Scanned comment with %s"
6807
  msgstr ""
6808
 
6809
+ #: lib/wfScanEngine.php:1598
6810
  msgid "Scanning for weak passwords"
6811
  msgstr ""
6812
 
6813
+ #: lib/wfScanEngine.php:1609
6814
  msgid "We were unable to generate the user list for your password check."
6815
  msgstr ""
6816
 
6817
  #. translators: Number of users.
6818
+ #: lib/wfScanEngine.php:1625
6819
  msgid "Starting password strength check on %d user."
6820
  msgid_plural "Starting password strength check on %d users."
6821
  msgstr[0] ""
6822
  msgstr[1] ""
6823
 
6824
  #. translators: Number of users.
6825
+ #: lib/wfScanEngine.php:1634
6826
  msgid "Total of %d users left to process in password strength check."
6827
  msgid_plural "Total of %d users left to process in password strength check."
6828
  msgstr[0] ""
6829
  msgstr[1] ""
6830
 
6831
  #. translators: WordPress user ID.
6832
+ #: lib/wfScanEngine.php:1669
6833
  msgid "Could not get username for user with ID %d when checking password strength."
6834
  msgstr ""
6835
 
6836
  #. translators: 1. WordPress username. 2. WordPress user ID.
6837
+ #: lib/wfScanEngine.php:1675
6838
  msgid "Checking password strength of user '%1$s' with ID %2$d"
6839
  msgstr ""
6840
 
6841
  #. translators: 1. WordPress username. 2. WordPress capability.
6842
+ #: lib/wfScanEngine.php:1683
6843
  msgid "User \"%1$s\" with \"%2$s\" access has an easy password."
6844
  msgstr ""
6845
 
6846
  #. translators: WordPress capability.
6847
+ #: lib/wfScanEngine.php:1689
6848
  msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it."
6849
  msgstr ""
6850
 
6851
  #. translators: WordPress username.
6852
+ #: lib/wfScanEngine.php:1697
6853
  msgid "User \"%s\" with 'subscriber' access has a very easy password."
6854
  msgstr ""
6855
 
6856
+ #: lib/wfScanEngine.php:1698
6857
  msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password."
6858
  msgstr ""
6859
 
6860
  #. translators: Scan result description.
6861
+ #: lib/wfScanEngine.php:1705
6862
  msgid "Adding issue %s"
6863
  msgstr ""
6864
 
6865
  #. translators: WordPress username.
6866
+ #: lib/wfScanEngine.php:1722
6867
  msgid "Completed checking password strength of user '%s'"
6868
  msgstr ""
6869
 
6870
+ #: lib/wfScanEngine.php:1755
6871
  msgid "Scanning to check available disk space"
6872
  msgstr ""
6873
 
6874
+ #: lib/wfScanEngine.php:1762
6875
  msgid "Unable to access available disk space information"
6876
  msgstr ""
6877
 
6878
  #. translators: 1. Number of bytes. 2. Number of bytes.
6879
+ #: lib/wfScanEngine.php:1771
6880
  msgid "Total disk space: %1$s -- Free disk space: %2$s"
6881
  msgstr ""
6882
 
6883
  #. translators: Number of bytes.
6884
+ #: lib/wfScanEngine.php:1776
6885
  msgid "The disk has %s MB available"
6886
  msgstr ""
6887
 
6888
  #. translators: Number of bytes.
6889
+ #: lib/wfScanEngine.php:1791
6890
  msgid "You have %s disk space remaining"
6891
  msgstr ""
6892
 
6893
  #. translators: Number of bytes.
6894
+ #: lib/wfScanEngine.php:1792
6895
  msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests."
6896
  msgstr ""
6897
 
6898
+ #: lib/wfScanEngine.php:1805
6899
  msgid "Checking Web Application Firewall status"
6900
  msgstr ""
6901
 
6902
+ #: lib/wfScanEngine.php:1816
6903
  msgid "Web Application Firewall is disabled"
6904
  msgstr ""
6905
 
6906
  #. translators: Support URL.
6907
+ #: lib/wfScanEngine.php:1817
6908
  msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">More Details<span class=\"screen-reader-text\"> ("
6909
  msgstr ""
6910
 
6911
+ #: lib/wfScanEngine.php:1832
6912
  msgid "Scanning for old themes, plugins and core files"
6913
  msgstr ""
6914
 
6915
+ #: lib/wfScanEngine.php:1918
6916
  msgid "Your WordPress version is out of date"
6917
  msgstr ""
6918
 
6919
  #. translators: Software version.
6920
+ #: lib/wfScanEngine.php:1919
6921
  msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress."
6922
  msgstr ""
6923
 
6924
  #. translators: 1. Plugin name. 2. Software version. 3. Software version.
6925
+ #: lib/wfScanEngine.php:1946
6926
  msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)."
6927
  msgstr ""
6928
 
6929
  #. translators: Theme name.
6930
+ #: lib/wfScanEngine.php:1953
6931
+ #: lib/wfScanEngine.php:1987
6932
  msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released."
6933
  msgstr ""
6934
 
6935
  #. translators: 1. Theme name. 2. Software version. 3. Software version.
6936
+ #: lib/wfScanEngine.php:1980
6937
  msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)."
6938
  msgstr ""
6939
 
6940
  #. translators: 1. Plugin name. 2. Software version. 3. Software version.
6941
+ #: lib/wfScanEngine.php:2031
6942
  msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)."
6943
  msgstr ""
6944
 
6945
  #. translators: 1. Plugin name. 2. Software version.
6946
+ #: lib/wfScanEngine.php:2038
6947
  msgid "It was last updated %1$s ago and tested up to WordPress %2$s."
6948
  msgstr ""
6949
 
6950
  #. translators: 1. Plugin name. 2. Software version.
6951
+ #: lib/wfScanEngine.php:2045
6952
  msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)."
6953
  msgstr ""
6954
 
6955
  #. translators: Time duration.
6956
+ #: lib/wfScanEngine.php:2051
6957
  msgid "It was last updated %s ago."
6958
  msgstr ""
6959
 
6960
+ #: lib/wfScanEngine.php:2057
6961
+ #: lib/wfScanEngine.php:2096
6962
  msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress."
6963
  msgstr ""
6964
 
6965
+ #: lib/wfScanEngine.php:2059
6966
+ #: lib/wfScanEngine.php:2098
6967
  msgid "Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin."
6968
  msgstr ""
6969
 
6970
  #. translators: Support URL.
6971
+ #: lib/wfScanEngine.php:2063
6972
+ #: lib/wfScanEngine.php:2102
6973
+ #: lib/wfScanEngine.php:2302
6974
+ #: lib/wfScanEngine.php:2344
6975
  msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> ("
6976
  msgstr ""
6977
 
6978
  #. translators: Plugin name.
6979
+ #: lib/wfScanEngine.php:2094
6980
  msgid "The Plugin \"%s\" has been removed from wordpress.org."
6981
  msgstr ""
6982
 
6983
+ #: lib/wfScanEngine.php:2121
6984
+ msgid "The Plugin \"%s\" has a security vulnerability."
6985
+ msgstr ""
6986
+
6987
+ #: lib/wfScanEngine.php:2124
6988
+ msgid "To protect your site from this vulnerability, the safest option is to deactivate and completely remove \"%s\" until a patched version is available. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
6989
+ msgstr ""
6990
+
6991
+ #: lib/wfScanEngine.php:2159
6992
  msgid "Scanning for admin users not created through WordPress"
6993
  msgstr ""
6994
 
6995
  #. translators: WordPress username.
6996
+ #: lib/wfScanEngine.php:2181
6997
  msgid "An admin user with the username %s was created outside of WordPress."
6998
  msgstr ""
6999
 
7000
  #. translators: WordPress username.
7001
+ #: lib/wfScanEngine.php:2182
7002
  msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
7003
  msgstr ""
7004
 
7005
  #. translators: WordPress username.
7006
+ #: lib/wfScanEngine.php:2208
7007
  msgid "An admin user with a suspicious username %s was found."
7008
  msgstr ""
7009
 
7010
  #. translators: WordPress username.
7011
+ #: lib/wfScanEngine.php:2209
7012
  msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
7013
  msgstr ""
7014
 
7015
+ #: lib/wfScanEngine.php:2230
7016
  msgid "Scanning for suspicious site options"
7017
  msgstr ""
7018
 
7019
+ #: lib/wfScanEngine.php:2265
7020
  msgid "Examining URLs found in the options we scanned for dangerous websites"
7021
  msgstr ""
7022
 
7023
  #. translators: URL.
7024
+ #: lib/wfScanEngine.php:2289
7025
+ #: lib/wfScanEngine.php:2295
7026
  msgid "Option contains a suspected malware URL: %s"
7027
  msgstr ""
7028
 
7029
  #. translators: URL.
7030
+ #: lib/wfScanEngine.php:2290
7031
  msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s"
7032
  msgstr ""
7033
 
7034
  #. translators: URL.
7035
+ #: lib/wfScanEngine.php:2292
7036
  msgid "Option contains a suspected phishing site URL: %s"
7037
  msgstr ""
7038
 
7039
  #. translators: URL.
7040
+ #: lib/wfScanEngine.php:2293
7041
  msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s"
7042
  msgstr ""
7043
 
7044
  #. translators: URL.
7045
+ #: lib/wfScanEngine.php:2296
7046
  msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s"
7047
  msgstr ""
7048
 
7049
+ #: lib/wfScanEngine.php:2336
7050
  msgid "Checking for future GeoIP support"
7051
  msgstr ""
7052
 
7053
+ #: lib/wfScanEngine.php:2341
7054
  msgid "PHP Update Needed for Country Blocking"
7055
  msgstr ""
7056
 
7057
  #. translators: Software version.
7058
+ #: lib/wfScanEngine.php:2342
7059
  msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
7060
  msgstr ""
7061
 
7062
+ #: lib/wfScanEngine.php:2392
7063
  msgid "Previous scan was stopped successfully."
7064
  msgstr ""
7065
 
7066
+ #: lib/wfScanEngine.php:2393
7067
  msgid "Scan was stopped on administrator request."
7068
  msgstr ""
7069
 
7070
+ #: lib/wfScanEngine.php:2409
7071
  msgid "Entering start scan routine"
7072
  msgstr ""
7073
 
7074
+ #: lib/wfScanEngine.php:2412
7075
  msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan."
7076
  msgstr ""
7077
 
7078
+ #: lib/wfScanEngine.php:2427
7079
+ msgid "Cached result for scan start test: %s"
7080
+ msgstr ""
7081
+
7082
+ #. translators: Scan start test result data.
7083
+ #: lib/wfScanEngine.php:2443
7084
  msgid "Test result of scan start URL fetch: %s"
7085
  msgstr ""
7086
 
7087
  #. translators: WordPress admin panel URL.
7088
+ #: lib/wfScanEngine.php:2456
7089
  msgid "Starting cron with normal ajax at URL %s"
7090
  msgstr ""
7091
 
7092
  #. translators: Error message.
7093
  #. translators: WordPress admin panel URL.
7094
+ #: lib/wfScanEngine.php:2480
7095
+ #: lib/wfScanEngine.php:2515
7096
  msgid "There was an error starting the scan: %s."
7097
  msgstr ""
7098
 
7099
+ #: lib/wfScanEngine.php:2482
7100
+ #: lib/wfScanEngine.php:2517
7101
  msgid "There was an unknown error starting the scan."
7102
  msgstr ""
7103
 
7104
+ #: lib/wfScanEngine.php:2489
7105
+ #: lib/wfScanEngine.php:2523
7106
  msgid "Scan process ended after forking."
7107
  msgstr ""
7108
 
7109
  #. translators: WordPress admin panel URL.
7110
+ #: lib/wfScanEngine.php:2493
7111
  msgid "Starting cron via proxy at URL %s"
7112
  msgstr ""
7113
 
7114
  #. translators: Time in seconds.
7115
+ #: lib/wfScanEngine.php:2569
7116
  msgid "Got value from wf config maxExecutionTime: %s"
7117
  msgstr ""
7118
 
7119
  #. translators: Time in seconds.
7120
+ #: lib/wfScanEngine.php:2573
7121
  msgid "getMaxExecutionTime() returning config value: %s"
7122
  msgstr ""
7123
 
7124
  #. translators: PHP ini value.
7125
+ #: lib/wfScanEngine.php:2580
7126
  msgid "Got max_execution_time value from ini: %s"
7127
  msgstr ""
7128
 
7129
  #. translators: 1. PHP ini setting. 2. Time in seconds.
7130
+ #: lib/wfScanEngine.php:2587
7131
  msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing"
7132
  msgstr ""
7133
 
7134
  #. translators: PHP ini setting.
7135
+ #: lib/wfScanEngine.php:2597
7136
  msgid "getMaxExecutionTime() returning half ini value: %d"
7137
  msgstr ""
7138
 
7139
+ #: lib/wfScanEngine.php:2603
7140
  msgid "getMaxExecutionTime() returning default of: 15"
7141
  msgstr ""
7142
 
7143
  #. translators: 1. HTTP status code.
7144
+ #: lib/wfScanEngine.php:2805
7145
  msgid "Got error response from Wordfence servers: %s"
7146
  msgstr ""
7147
 
7148
+ #: lib/wfScanEngine.php:2809
7149
  msgid "Invalid response from Wordfence servers."
7150
  msgstr ""
7151
 
7152
+ #: lib/wfScanMonitor.php:78
7153
+ msgid "Attempting to resume scan stage (%d attempt(s) remaining)..."
7154
+ msgstr ""
7155
+
7156
  #: lib/wfUnlockMsg.php:2
7157
  msgid "If you are a WordPress user with administrative privileges on this site please enter your email in the box below and click &quot;Send&quot;. You will then receive an email that helps you regain access."
7158
  msgstr ""
7228
  msgstr ""
7229
 
7230
  #. translators: Error message.
7231
+ #: lib/wfUtils.php:1453
7232
  msgid "Call to Wordfence API to resolve IPs failed: %s"
7233
  msgstr ""
7234
 
7312
  msgid "File last modified:"
7313
  msgstr ""
7314
 
7315
+ #: lib/wordfenceClass.php:183
7316
  msgid ""
7317
  "To ensure uninterrupted Premium Wordfence protection on your site,\n"
7318
  "please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n"
7319
  "select the license about to expire and click the button to renew that license."
7320
  msgstr ""
7321
 
7322
+ #: lib/wordfenceClass.php:214
7323
  msgid "Your Premium Wordfence License is set to auto-renew in 10 days."
7324
  msgstr ""
7325
 
7326
+ #: lib/wordfenceClass.php:215
7327
  msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard"
7328
  msgstr ""
7329
 
7330
+ #: lib/wordfenceClass.php:227
7331
  msgid "Your Premium Wordfence License expires in less than 2 weeks."
7332
  msgstr ""
7333
 
7334
+ #: lib/wordfenceClass.php:230
7335
  msgid "Your Premium Wordfence License expires in less than a week."
7336
  msgstr ""
7337
 
7338
+ #: lib/wordfenceClass.php:233
7339
  msgid "Your Premium Wordfence License expires in 2 days."
7340
  msgstr ""
7341
 
7342
+ #: lib/wordfenceClass.php:236
7343
  msgid "Your Premium Wordfence License expires in 1 day."
7344
  msgstr ""
7345
 
7346
+ #: lib/wordfenceClass.php:240
7347
  msgid "Your Wordfence Premium License has Expired!"
7348
  msgstr ""
7349
 
7350
+ #: lib/wordfenceClass.php:272
7351
  msgid "The Wordfence Premium License in use on this site has been removed from your account."
7352
  msgstr ""
7353
 
7354
+ #: lib/wordfenceClass.php:272
7355
  msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help."
7356
  msgstr ""
7357
 
7358
  #. translators: Wordfence license key.
7359
+ #: lib/wordfenceClass.php:282
7360
  msgid "Could not verify Wordfence License: %s"
7361
  msgstr ""
7362
 
7363
  #. translators: WordPress version.
7364
+ #: lib/wordfenceClass.php:364
7365
  msgid "WordPress (v%s)"
7366
  msgstr ""
7367
 
7368
  #. translators: Number of plugins.
7369
+ #: lib/wordfenceClass.php:368
7370
  msgid "%d plugin"
7371
  msgid_plural "%d plugins"
7372
  msgstr[0] ""
7373
  msgstr[1] ""
7374
 
7375
  #. translators: Number of themes.
7376
+ #: lib/wordfenceClass.php:373
7377
  msgid "%d theme"
7378
  msgid_plural "%d themes"
7379
  msgstr[0] ""
7380
  msgstr[1] ""
7381
 
7382
+ #: lib/wordfenceClass.php:377
7383
  msgid "An update is available for "
7384
  msgid_plural "Updates are available for "
7385
  msgstr[0] ""
7386
  msgstr[1] ""
7387
 
7388
+ #: lib/wordfenceClass.php:382
7389
  msgid "and "
7390
  msgstr ""
7391
 
7392
  #. translators: Wordfence version.
7393
+ #: lib/wordfenceClass.php:421
7394
  msgid "`runInstall` called with previous version = %s"
7395
  msgstr ""
7396
 
7397
+ #: lib/wordfenceClass.php:473
7398
+ #: lib/wordfenceClass.php:4049
7399
  msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key."
7400
  msgstr ""
7401
 
7402
+ #: lib/wordfenceClass.php:837
7403
  msgid "Automatically generated from previous country blocking settings"
7404
  msgstr ""
7405
 
7406
+ #: lib/wordfenceClass.php:1284
7407
  #: views/user/disabled-application-passwords.php:15
7408
  msgid "Application passwords have been disabled by Wordfence."
7409
  msgstr ""
7410
 
7411
+ #: lib/wordfenceClass.php:1402
7412
  msgid "Upgrade To Premium"
7413
  msgstr ""
7414
 
7415
+ #: lib/wordfenceClass.php:1421
7416
  msgid "wp_mail from address is incomplete, attempting to fix"
7417
  msgstr ""
7418
 
7419
  #. translators: Email address.
7420
+ #: lib/wordfenceClass.php:1431
7421
  msgid "Fixing wp_mail from address: %s"
7422
  msgstr ""
7423
 
7424
+ #: lib/wordfenceClass.php:1530
7425
  msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again."
7426
  msgstr ""
7427
 
7428
+ #: lib/wordfenceClass.php:1535
7429
  msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again."
7430
  msgstr ""
7431
 
7432
+ #: lib/wordfenceClass.php:1541
7433
  msgid "Wordfence encountered an internal error executing that request."
7434
  msgstr ""
7435
 
7436
  #. translators: Error message.
7437
+ #: lib/wordfenceClass.php:1647
7438
  msgid "2FA Migration Error: %s"
7439
  msgstr ""
7440
 
7441
+ #: lib/wordfenceClass.php:1687
7442
  msgid "Please choose a stronger password. Use at least 12 characters, and include numbers, symbols, and a mix of upper and lowercase letters. Do not use common words or sequences of letters or numbers."
7443
  msgstr ""
7444
 
7445
+ #: lib/wordfenceClass.php:1693
7446
  msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed."
7447
  msgstr ""
7448
 
7449
  #. translators: Support URL.
7450
+ #: lib/wordfenceClass.php:1708
7451
  msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href=\"%s\">Learn More</a>"
7452
  msgstr ""
7453
 
7454
  #. translators: 1. Password reset limit (number). 2. WordPress username.
7455
+ #: lib/wordfenceClass.php:1830
7456
  msgid "Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: '%2$s'"
7457
  msgstr ""
7458
 
7459
+ #: lib/wordfenceClass.php:1878
7460
+ #: lib/wordfenceClass.php:2061
7461
  msgid "Sorry but your browser sent an invalid security token when trying to use this form."
7462
  msgstr ""
7463
 
7464
+ #: lib/wordfenceClass.php:1883
7465
  msgid "Please wait 3 minutes and try again"
7466
  msgstr ""
7467
 
7468
+ #: lib/wordfenceClass.php:1884
7469
  msgid "You have used this form too much. Please wait 3 minutes and try again."
7470
  msgstr ""
7471
 
7472
+ #: lib/wordfenceClass.php:1923
7473
  msgid "Unlock email requested"
7474
  msgstr ""
7475
 
7476
+ #: lib/wordfenceClass.php:1925
7477
  msgid "Your request was received"
7478
  msgstr ""
7479
 
7480
  #. translators: Email address.
7481
+ #: lib/wordfenceClass.php:1926
7482
  msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now."
7483
  msgstr ""
7484
 
7485
+ #: lib/wordfenceClass.php:1932
7486
  msgid "Invalid key provided for authentication."
7487
  msgstr ""
7488
 
7489
+ #: lib/wordfenceClass.php:1943
7490
  msgid "Request received via unlock email link to unblock all IPs."
7491
  msgstr ""
7492
 
7493
+ #: lib/wordfenceClass.php:1952
7494
  msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules."
7495
  msgstr ""
7496
 
7497
+ #: lib/wordfenceClass.php:1960
7498
  msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader."
7499
  msgstr ""
7500
 
7501
+ #: lib/wordfenceClass.php:2005
7502
  msgid "Unsubscribe Requested"
7503
  msgstr ""
7504
 
7505
+ #: lib/wordfenceClass.php:2067
7506
  msgid "An error occurred while saving the license."
7507
  msgstr ""
7508
 
7509
  #. translators: Error message.
7510
+ #: lib/wordfenceClass.php:2069
7511
+ #: lib/wordfenceClass.php:2089
7512
  msgid "An error occurred while saving the license: %s"
7513
  msgstr ""
7514
 
7515
+ #: lib/wordfenceClass.php:2105
7516
  msgid "Rescheduled missing daily cron"
7517
  msgstr ""
7518
 
7519
+ #: lib/wordfenceClass.php:2110
7520
  msgid "Rescheduled missing hourly cron"
7521
  msgstr ""
7522
 
7523
+ #: lib/wordfenceClass.php:2412
7524
+ #: lib/wordfenceClass.php:2416
7525
  msgid "Accessed a banned URL"
7526
  msgstr ""
7527
 
7528
+ #: lib/wordfenceClass.php:2423
7529
+ #: lib/wordfenceClass.php:2427
7530
  msgid "POST received with blank user-agent and referer"
7531
  msgstr ""
7532
 
7533
+ #: lib/wordfenceClass.php:2561
7534
  msgid "<strong>ERROR</strong>: You can't register using that username"
7535
  msgstr ""
7536
 
7537
+ #: lib/wordfenceClass.php:2601
7538
  msgid "Sorry, you are not allowed to list users."
7539
  msgstr ""
7540
 
7541
+ #: lib/wordfenceClass.php:2608
7542
  msgid "Invalid user ID."
7543
  msgstr ""
7544
 
7545
+ #: lib/wordfenceClass.php:2752
7546
  msgid "<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again."
7547
  msgstr ""
7548
 
7549
  #. translators: 1. WordPress username. 2. Password reset URL.
7550
  #. translators: 1. WordPress username. 2. Reset password URL.
7551
+ #: lib/wordfenceClass.php:2759
7552
+ #: lib/wordfenceClass.php:3207
7553
  msgid "<strong>ERROR</strong>: The username or password you entered is incorrect. <a href=\"%2$s\" title=\"Password Lost and Found\">Lost your password</a>?"
7554
  msgstr ""
7555
 
7556
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
7557
+ #: lib/wordfenceClass.php:2769
7558
+ #: lib/wordfenceClass.php:2905
7559
  msgid "<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
7560
  msgstr ""
7561
 
7562
+ #: lib/wordfenceClass.php:2793
7563
  msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>)."
7564
  msgstr ""
7565
 
7566
+ #: lib/wordfenceClass.php:2797
7567
  msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>)."
7568
  msgstr ""
7569
 
7570
+ #: lib/wordfenceClass.php:2804
7571
+ #: lib/wordfenceClass.php:2855
7572
+ #: lib/wordfenceClass.php:2878
7573
  msgid "<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again."
7574
  msgstr ""
7575
 
7576
+ #: lib/wordfenceClass.php:2814
7577
  msgid "<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456)."
7578
  msgstr ""
7579
 
7580
+ #: lib/wordfenceClass.php:2818
7581
  msgid "<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456)."
7582
  msgstr ""
7583
 
7584
+ #: lib/wordfenceClass.php:2864
7585
  msgid "<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you."
7586
  msgstr ""
7587
 
7588
+ #: lib/wordfenceClass.php:2887
7589
  msgid "<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with 'wf' and should be four characters (e.g., wfAB12)."
7590
  msgstr ""
7591
 
7592
+ #: lib/wordfenceClass.php:2938
7593
  msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in."
7594
  msgstr ""
7595
 
7596
+ #: lib/wordfenceClass.php:2943
7597
  msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
7598
  msgstr ""
7599
 
7600
+ #: lib/wordfenceClass.php:2977
7601
+ #: lib/wordfenceClass.php:3034
7602
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in."
7603
  msgstr ""
7604
 
7605
+ #: lib/wordfenceClass.php:2982
7606
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
7607
  msgstr ""
7608
 
7609
+ #: lib/wordfenceClass.php:3039
7610
  msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>)."
7611
  msgstr ""
7612
 
7613
  #. translators: 1. Reset password URL. 2. Support URL.
7614
+ #: lib/wordfenceClass.php:3060
7615
+ #: lib/wordfenceClass.php:3096
7616
  msgid "<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
7617
  msgstr ""
7618
 
7619
  #. translators: 1. Reset password URL. 2. Support URL.
7620
+ #: lib/wordfenceClass.php:3077
7621
+ #: lib/wordfenceClass.php:3113
7622
  msgid "<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">reset your password</a> to reactivate your account. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span style=\"font-size:0;\"> (opens in new tab)</span></a>"
7623
  msgstr ""
7624
 
7625
+ #: lib/wordfenceClass.php:3085
7626
  msgid "Admin Login Blocked"
7627
  msgstr ""
7628
 
7629
  #. translators: WordPress username.
7630
+ #: lib/wordfenceClass.php:3085
7631
  msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not."
7632
  msgstr ""
7633
 
7634
  #. translators: WordPress username.
7635
+ #: lib/wordfenceClass.php:3086
7636
  msgid "<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account."
7637
  msgstr ""
7638
 
7639
+ #: lib/wordfenceClass.php:3126
7640
  msgid "Blocked by Wordfence Security Network"
7641
  msgstr ""
7642
 
7643
+ #: lib/wordfenceClass.php:3156
7644
  msgid "Blocked by login security setting"
7645
  msgstr ""
7646
 
7647
  #. translators: WordPress username.
7648
+ #: lib/wordfenceClass.php:3166
7649
  msgid "Used an invalid username '%s' to try to sign in"
7650
  msgstr ""
7651
 
7652
  #. translators: 1. Login attempt limit. 2. WordPress username.
7653
+ #: lib/wordfenceClass.php:3185
7654
  msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'"
7655
  msgstr ""
7656
 
7657
+ #: lib/wordfenceClass.php:3540
7658
  msgid "An invalid type was specified to get file."
7659
  msgstr ""
7660
 
7661
+ #: lib/wordfenceClass.php:3556
7662
  msgid "We could not fetch a core WordPress file from the Wordfence API."
7663
  msgstr ""
7664
 
7665
+ #: lib/wordfenceClass.php:3615
7666
  msgid "Wordfence Test Email"
7667
  msgstr ""
7668
 
7669
  #. translators: 1. Site URL. 2. IP address.
7670
+ #: lib/wordfenceClass.php:3615
7671
  msgid ""
7672
  "This is a test email from %1$s.\n"
7673
  "The IP address that requested this was: %2$s"
7674
  msgstr ""
7675
 
7676
+ #: lib/wordfenceClass.php:3622
7677
  msgid "Cellphone Sign-in is only available to paid members. <a href=\"https://www.wordfence.com/gnl1twoFac3/wordfence-signup/\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to upgrade now.<span class=\"screen-reader-text\"> ("
7678
  msgstr ""
7679
 
7680
+ #: lib/wordfenceClass.php:3629
7681
  msgid "The username you specified does not exist."
7682
  msgstr ""
7683
 
7684
+ #: lib/wordfenceClass.php:3638
7685
  msgid "The username you specified is already enabled."
7686
  msgstr ""
7687
 
7688
+ #: lib/wordfenceClass.php:3643
7689
  msgid "Unknown authentication mode."
7690
  msgstr ""
7691
 
7692
+ #: lib/wordfenceClass.php:3648
7693
  msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234"
7694
  msgstr ""
7695
 
7696
  #. translators: Error message.
7697
+ #: lib/wordfenceClass.php:3655
7698
+ #: lib/wordfenceClass.php:3687
7699
+ #: lib/wordfenceClass.php:3750
7700
  msgid "Could not contact Wordfence servers to generate a verification code: %s"
7701
  msgstr ""
7702
 
7703
  #. translators: Error message.
7704
+ #: lib/wordfenceClass.php:3667
7705
+ #: lib/wordfenceClass.php:3711
7706
  msgid "Could not generate verification code: %s"
7707
  msgstr ""
7708
 
7709
  #. translators: Error message.
7710
+ #: lib/wordfenceClass.php:3668
7711
+ #: lib/wordfenceClass.php:3712
7712
  msgid "We could not generate a verification code."
7713
  msgstr ""
7714
 
7715
+ #: lib/wordfenceClass.php:3728
7716
  msgid "Unknown two-factor authentication mode."
7717
  msgstr ""
7718
 
7719
+ #: lib/wordfenceClass.php:3761
7720
  msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code."
7721
  msgstr ""
7722
 
7723
+ #: lib/wordfenceClass.php:3766
7724
  msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page."
7725
  msgstr ""
7726
 
7727
+ #: lib/wordfenceClass.php:3848
7728
  msgid "That user has already been removed from the list."
7729
  msgstr ""
7730
 
7731
+ #: lib/wordfenceClass.php:3868
7732
  msgid "No scan is scheduled"
7733
  msgstr ""
7734
 
7735
+ #: lib/wordfenceClass.php:3873
7736
  msgid "Next scan is starting now"
7737
  msgstr ""
7738
 
7739
  #. translators: 1. Time until. 2. Localized date.
7740
+ #: lib/wordfenceClass.php:3876
7741
  msgid "Next scan in %1$s (%2$s)"
7742
  msgstr ""
7743
 
7744
  #. translators: Localized date.
7745
+ #: lib/wordfenceClass.php:3893
7746
  msgid "Scheduled Wordfence scan starting at %s"
7747
  msgstr ""
7748
 
7749
+ #: lib/wordfenceClass.php:3916
7750
  msgid "Sorry but this feature is only available for paid customers."
7751
  msgstr ""
7752
 
7753
  #. translators: Site URL.
7754
+ #: lib/wordfenceClass.php:3930
7755
  msgid "SITE: %s"
7756
  msgstr ""
7757
 
7758
  #. translators: Plugin version.
7759
+ #: lib/wordfenceClass.php:3931
7760
  msgid "PLUGIN VERSION: %s"
7761
  msgstr ""
7762
 
7763
  #. translators: WordPress version.
7764
+ #: lib/wordfenceClass.php:3932
7765
  msgid "WORDPRESS VERSION: %s"
7766
  msgstr ""
7767
 
7768
  #. translators: Wordfence license key.
7769
+ #: lib/wordfenceClass.php:3933
7770
  msgid "LICENSE KEY: %s"
7771
  msgstr ""
7772
 
7773
  #. translators: Email address.
7774
+ #: lib/wordfenceClass.php:3934
7775
  msgid "ADMIN EMAIL: %s"
7776
  msgstr ""
7777
 
7778
  #. translators: Email address.
7779
+ #: lib/wordfenceClass.php:3935
7780
  msgid "LOG:"
7781
  msgstr ""
7782
 
7783
+ #: lib/wordfenceClass.php:3951
7784
  msgid "# Scan Issues"
7785
  msgstr ""
7786
 
7787
  #. translators: Number of scan results.
7788
+ #: lib/wordfenceClass.php:3956
7789
  msgid "## New Issues (%d total)"
7790
  msgstr ""
7791
 
7792
  #. translators: Number of scan results.
7793
+ #: lib/wordfenceClass.php:3983
7794
  msgid "## Ignored Issues (%d total)"
7795
  msgstr ""
7796
 
7797
+ #: lib/wordfenceClass.php:4004
7798
  msgid "No Ignored Issues"
7799
  msgstr ""
7800
 
7801
+ #: lib/wordfenceClass.php:4026
7802
  msgid "Wordfence Activity Log"
7803
  msgstr ""
7804
 
7805
  #. translators: Error message.
7806
+ #: lib/wordfenceClass.php:4052
7807
  msgid "Could not fetch free license key from Wordfence: %s"
7808
  msgstr ""
7809
 
7810
+ #: lib/wordfenceClass.php:4143
7811
  msgid "We could not find your .htaccess file to modify it."
7812
  msgstr ""
7813
 
7814
  #. translators: Error message.
7815
+ #: lib/wordfenceClass.php:4148
7816
  msgid "We found your .htaccess file but could not open it for writing: %s"
7817
  msgstr ""
7818
 
7819
+ #: lib/wordfenceClass.php:4231
7820
  msgid "All Countries"
7821
  msgstr ""
7822
 
7823
+ #: lib/wordfenceClass.php:4234
7824
  msgid "1 Country"
7825
  msgstr ""
7826
 
7827
  #. translators: Number of countries.
7828
+ #: lib/wordfenceClass.php:4237
7829
  msgid "%d Countries"
7830
  msgstr ""
7831
 
7832
+ #: lib/wordfenceClass.php:4241
7833
  msgid "Entire Site"
7834
  msgstr ""
7835
 
7836
+ #: lib/wordfenceClass.php:4244
7837
  msgid "Login Only"
7838
  msgstr ""
7839
 
7840
+ #: lib/wordfenceClass.php:4247
7841
  msgid "Site Except Login"
7842
  msgstr ""
7843
 
7844
+ #: lib/wordfenceClass.php:4255
7845
  msgid "IP Range"
7846
  msgstr ""
7847
 
7848
  #. translators: 2FA backup codes.
7849
+ #: lib/wordfenceClass.php:4256
7850
+ #: lib/wordfenceClass.php:6271
7851
  msgid "User Agent"
7852
  msgstr ""
7853
 
7854
+ #: lib/wordfenceClass.php:4257
7855
  #: views/blocking/blocking-create.php:201
7856
  msgid "Referrer"
7857
  msgstr ""
7858
 
7859
+ #: lib/wordfenceClass.php:4272
7860
  msgid "Permanent"
7861
  msgstr ""
7862
 
7863
+ #: lib/wordfenceClass.php:4344
7864
  msgid "An error occurred while creating the block."
7865
  msgstr ""
7866
 
7867
+ #: lib/wordfenceClass.php:4350
7868
  msgid "No block parameters were provided."
7869
  msgstr ""
7870
 
7871
+ #: lib/wordfenceClass.php:4387
7872
+ #: lib/wordfenceClass.php:4419
7873
  msgid "No blocks were provided."
7874
  msgstr ""
7875
 
7876
+ #: lib/wordfenceClass.php:4451
7877
  msgid "The license provided is already in use on another site."
7878
  msgstr ""
7879
 
7880
+ #: lib/wordfenceClass.php:4456
7881
  msgid "The Wordfence activation server returned an unexpected response. Please try again."
7882
  msgstr ""
7883
 
7884
+ #: lib/wordfenceClass.php:4462
7885
  msgid "We received an error while trying to activate the license with the Wordfence servers: "
7886
  msgstr ""
7887
 
7888
+ #: lib/wordfenceClass.php:4475
7889
  msgid "No license was provided to install."
7890
  msgstr ""
7891
 
7892
+ #: lib/wordfenceClass.php:4526
7893
  msgid "An unknown configuration section was provided."
7894
  msgstr ""
7895
 
7896
+ #: lib/wordfenceClass.php:4532
7897
  msgid "No configuration section was provided."
7898
  msgstr ""
7899
 
7900
+ #: lib/wordfenceClass.php:4578
7901
+ #: lib/wordfenceClass.php:4583
7902
  msgid "An error occurred while saving the configuration."
7903
  msgstr ""
7904
 
7905
+ #: lib/wordfenceClass.php:4594
7906
  msgid "No configuration changes were provided to save."
7907
  msgstr ""
7908
 
7909
+ #: lib/wordfenceClass.php:4625
7910
+ #: lib/wordfenceClass.php:5275
7911
+ #: lib/wordfenceClass.php:5306
7912
+ #: lib/wordfenceClass.php:7390
7913
+ #: lib/wordfenceClass.php:7425
7914
+ #: lib/wordfenceClass.php:7457
7915
  msgid "We could not find that issue in our database."
7916
  msgstr ""
7917
 
7918
+ #: lib/wordfenceClass.php:4635
7919
  msgid "An error occurred while trying to hide the file."
7920
  msgstr ""
7921
 
7922
+ #: lib/wordfenceClass.php:4648
7923
  msgid "An invalid file was requested for hiding."
7924
  msgstr ""
7925
 
7926
+ #: lib/wordfenceClass.php:4675
7927
+ #: lib/wordfenceClass.php:5286
7928
  msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
7929
  msgstr ""
7930
 
7931
+ #: lib/wordfenceClass.php:4699
7932
  msgid "Manual permanent block by admin"
7933
  msgstr ""
7934
 
7935
+ #: lib/wordfenceClass.php:4740
7936
  msgid "Please enter a valid IP address to block."
7937
  msgstr ""
7938
 
7939
+ #: lib/wordfenceClass.php:4743
7940
  msgid "You can't block your own IP address."
7941
  msgstr ""
7942
 
7943
  #. translators: IP address.
7944
+ #: lib/wordfenceClass.php:4747
7945
  msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page."
7946
  msgstr ""
7947
 
7948
  #. translators: IP address.
7949
+ #: lib/wordfenceClass.php:4749
7950
  msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for."
7951
  msgstr ""
7952
 
7953
+ #: lib/wordfenceClass.php:4755
7954
  msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google."
7955
  msgstr ""
7956
 
7957
+ #: lib/wordfenceClass.php:4798
7958
  msgid "An invalid operation was called."
7959
  msgstr ""
7960
 
7961
+ #: lib/wordfenceClass.php:4808
7962
  msgid "An invalid status was specified when trying to update that issue."
7963
  msgstr ""
7964
 
7965
+ #: lib/wordfenceClass.php:4820
7966
  msgid "Scan stop request received."
7967
  msgstr ""
7968
 
7969
+ #: lib/wordfenceClass.php:4821
7970
  msgid "A request was received to stop the previous scan."
7971
  msgstr ""
7972
 
7973
+ #: lib/wordfenceClass.php:4870
7974
  msgid "Idle"
7975
  msgstr ""
7976
 
7977
  #. translators: Localized date.
7978
+ #: lib/wordfenceClass.php:4879
7979
  msgid "Scan completed on %s"
7980
  msgstr ""
7981
 
7982
+ #: lib/wordfenceClass.php:4886
7983
  msgid "Last scan failed"
7984
  msgstr ""
7985
 
7986
  #. translators: Time until.
7987
+ #: lib/wordfenceClass.php:4949
7988
  msgid "more than %s"
7989
  msgstr ""
7990
 
7991
  #. translators: Localized date.
7992
+ #: lib/wordfenceClass.php:4953
7993
  msgid "The current scan looks like it has failed. Its last status update was <span id=\"wf-scan-failed-time-ago\">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably."
7994
  msgstr ""
7995
 
7996
  #. translators: Localized date.
7997
+ #: lib/wordfenceClass.php:4953
7998
  #: lib/wordfenceClass.php:4961
7999
+ #: lib/wordfenceClass.php:4992
8000
+ #: lib/wordfenceClass.php:5004
8001
+ #: lib/wordfenceClass.php:5012
 
8002
  msgid "Click here for steps you can try."
8003
  msgstr ""
8004
 
8005
  #. translators: Localized date.
8006
+ #: lib/wordfenceClass.php:4954
8007
  msgid "Cancel Scan"
8008
  msgstr ""
8009
 
8010
+ #: lib/wordfenceClass.php:4961
8011
  msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably."
8012
  msgstr ""
8013
 
8014
  #. translators: Time limit (number).
8015
+ #: lib/wordfenceClass.php:4967
8016
  msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page."
8017
  msgstr ""
8018
 
8019
+ #: lib/wordfenceClass.php:4973
8020
  msgid "The previous scan has terminated because we detected an update occurring during the scan."
8021
  msgstr ""
8022
 
8023
+ #: lib/wordfenceClass.php:4982
8024
+ msgid "Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful."
8025
  msgstr ""
8026
 
8027
+ #: lib/wordfenceClass.php:4984
8028
+ msgid "Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful."
8029
+ msgstr ""
8030
+
8031
+ #: lib/wordfenceClass.php:4991
8032
+ msgid "Scan Stage Failed"
8033
+ msgstr ""
8034
+
8035
+ #: lib/wordfenceClass.php:4992
8036
+ msgid "A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself."
8037
+ msgstr ""
8038
+
8039
+ #: lib/wordfenceClass.php:4998
8040
  msgid "Scans are not functional because SSL is unavailable."
8041
  msgstr ""
8042
 
8043
+ #: lib/wordfenceClass.php:5004
8044
  msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably."
8045
  msgstr ""
8046
 
8047
+ #: lib/wordfenceClass.php:5012
8048
  msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably."
8049
  msgstr ""
8050
 
8051
+ #: lib/wordfenceClass.php:5039
8052
  msgid "Invalid email address given."
8053
  msgstr ""
8054
 
8055
+ #: lib/wordfenceClass.php:5076
8056
+ #: lib/wordfenceClass.php:5197
8057
  msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted."
8058
  msgstr ""
8059
 
8060
  #. translators: 1. File path. 2. Error message.
8061
+ #: lib/wordfenceClass.php:5085
8062
  msgid "Could not delete file %1$s. Error was: %2$s"
8063
  msgstr ""
8064
 
8065
  #. translators: File path.
8066
+ #: lib/wordfenceClass.php:5106
8067
  msgid "We could not retrieve the original file of %s to do a repair."
8068
  msgstr ""
8069
 
8070
  #. translators: File path.
8071
+ #: lib/wordfenceClass.php:5111
8072
  msgid "An invalid file %s was specified for repair."
8073
  msgstr ""
8074
 
8075
  #. translators: File path.
8076
+ #: lib/wordfenceClass.php:5119
8077
  msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
8078
  msgstr ""
8079
 
8080
  #. translators: 1. File path. 2. Error message.
8081
+ #: lib/wordfenceClass.php:5122
8082
  msgid "We could not write to %1$s. The error was: %2$s"
8083
  msgstr ""
8084
 
8085
  #. translators: 1. File path. 2. Number of bytes.
8086
+ #: lib/wordfenceClass.php:5133
8087
  msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server."
8088
  msgstr ""
8089
 
8090
+ #: lib/wordfenceClass.php:5145
8091
  msgid "Deleted some files with errors"
8092
  msgstr ""
8093
 
8094
+ #: lib/wordfenceClass.php:5145
8095
  msgid "Repaired some files with errors"
8096
  msgstr ""
8097
 
8098
  #. translators: 1. Number of files. 2. Error message.
8099
+ #: lib/wordfenceClass.php:5148
8100
  msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s"
8101
  msgstr ""
8102
 
8103
  #. translators: 1. Number of files. 2. Error message.
8104
+ #: lib/wordfenceClass.php:5150
8105
  msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s"
8106
  msgstr ""
8107
 
8108
  #. translators: Number of files.
8109
+ #: lib/wordfenceClass.php:5154
8110
  msgid "Deleted %d files successfully"
8111
  msgstr ""
8112
 
8113
  #. translators: Number of files.
8114
+ #: lib/wordfenceClass.php:5154
8115
  msgid "Repaired %d files successfully"
8116
  msgstr ""
8117
 
8118
  #. translators: Number of files.
8119
+ #: lib/wordfenceClass.php:5155
8120
  msgid "Deleted %d files successfully. No errors were encountered."
8121
  msgstr ""
8122
 
8123
  #. translators: Number of files.
8124
+ #: lib/wordfenceClass.php:5155
8125
  msgid "Repaired %d files successfully. No errors were encountered."
8126
  msgstr ""
8127
 
8128
+ #: lib/wordfenceClass.php:5158
8129
  msgid "Could not delete files"
8130
  msgstr ""
8131
 
8132
+ #: lib/wordfenceClass.php:5158
8133
  msgid "Could not repair files"
8134
  msgstr ""
8135
 
8136
  #. translators: Error message.
8137
+ #: lib/wordfenceClass.php:5161
8138
  msgid "We could not delete any of the files you selected. We encountered the following errors: %s"
8139
  msgstr ""
8140
 
8141
  #. translators: Error message.
8142
+ #: lib/wordfenceClass.php:5163
8143
  msgid "We could not repair any of the files you selected. We encountered the following errors: %s"
8144
  msgstr ""
8145
 
8146
+ #: lib/wordfenceClass.php:5166
8147
  msgid "Nothing done"
8148
  msgstr ""
8149
 
8150
+ #: lib/wordfenceClass.php:5167
8151
  msgid "We didn't delete anything and no errors were found."
8152
  msgstr ""
8153
 
8154
+ #: lib/wordfenceClass.php:5167
8155
  msgid "We didn't repair anything and no errors were found."
8156
  msgstr ""
8157
 
8158
+ #: lib/wordfenceClass.php:5175
8159
  msgid "Invalid bulk operation selected"
8160
  msgstr ""
8161
 
8162
+ #: lib/wordfenceClass.php:5185
8163
  msgid "Could not delete file because we could not find that issue."
8164
  msgstr ""
8165
 
8166
+ #: lib/wordfenceClass.php:5188
8167
  msgid "Could not delete file because that issue does not appear to be a file related issue."
8168
  msgstr ""
8169
 
8170
+ #: lib/wordfenceClass.php:5193
8171
  msgid "An invalid file was requested for deletion."
8172
  msgstr ""
8173
 
8174
  #. translators: 1. File path. 2. Error message.
8175
+ #: lib/wordfenceClass.php:5236
8176
  msgid "Could not delete file %1$s. The error was: %2$s"
8177
  msgstr ""
8178
 
8179
+ #: lib/wordfenceClass.php:5249
8180
  msgid "Could not remove the option because we could not find that issue."
8181
  msgstr ""
8182
 
8183
+ #: lib/wordfenceClass.php:5252
8184
  msgid "Could not remove the option because that issue does not appear to be a database related issue."
8185
  msgstr ""
8186
 
8187
  #. translators: 1. WordPress option. 2. Error message.
8188
+ #: lib/wordfenceClass.php:5265
8189
  msgid "Could not remove the option %1$s. The error was: %2$s"
8190
  msgstr ""
8191
 
8192
+ #: lib/wordfenceClass.php:5292
8193
  msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control."
8194
  msgstr ""
8195
 
8196
+ #: lib/wordfenceClass.php:5334
8197
  msgid "We could not get the original file to do a repair."
8198
  msgstr ""
8199
 
8200
+ #: lib/wordfenceClass.php:5338
8201
  msgid "An invalid file was specified for repair."
8202
  msgstr ""
8203
 
8204
+ #: lib/wordfenceClass.php:5358
8205
  msgid "We could not write to that file. You may not have permission to modify files on your WordPress server."
8206
  msgstr ""
8207
 
8208
+ #: lib/wordfenceClass.php:5362
8209
  msgid "Ajax request received to start scan."
8210
  msgstr ""
8211
 
8212
  #. translators: Number of URLs.
8213
+ #: lib/wordfenceClass.php:5417
8214
  msgid "Page contains %d malware URL: "
8215
  msgid_plural "Page contains %d malware URLs: "
8216
  msgstr[0] ""
8217
  msgstr[1] ""
8218
 
8219
+ #: lib/wordfenceClass.php:5420
8220
  msgid "Run a Scan"
8221
  msgstr ""
8222
 
8223
+ #: lib/wordfenceClass.php:5468
8224
  msgid "Unknown dashboard data set."
8225
  msgstr ""
8226
 
8227
+ #: lib/wordfenceClass.php:5499
8228
  msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again."
8229
  msgstr ""
8230
 
8231
+ #: lib/wordfenceClass.php:5686
8232
  msgid "An invalid IP address was specified."
8233
  msgstr ""
8234
 
8235
+ #: lib/wordfenceClass.php:5728
8236
  msgid "This link has expired. Refresh the scan results page and try again."
8237
  msgstr ""
8238
 
8239
+ #: lib/wordfenceClass.php:5752
8240
+ #: lib/wordfenceClass.php:5795
8241
+ #: lib/wordfenceClass.php:5844
8242
  msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)"
8243
  msgstr ""
8244
 
8245
+ #: lib/wordfenceClass.php:5759
8246
+ #: lib/wordfenceClass.php:5851
8247
  msgid "Invalid file requested. (Relative paths not allowed)"
8248
  msgstr ""
8249
 
8250
+ #: lib/wordfenceClass.php:5763
8251
+ #: lib/wordfenceClass.php:5799
8252
+ #: lib/wordfenceClass.php:5855
8253
  msgid "File contains illegal characters."
8254
  msgstr ""
8255
 
8256
  #. translators: Error message.
8257
+ #: lib/wordfenceClass.php:5773
8258
  msgid "We could not open the requested file for reading. The error was: %s"
8259
  msgstr ""
8260
 
8261
+ #: lib/wordfenceClass.php:5781
8262
  msgid "Greater than 2 Gigs"
8263
  msgstr ""
8264
 
8265
+ #: lib/wordfenceClass.php:5786
8266
  msgid "Unknown file size."
8267
  msgstr ""
8268
 
8269
+ #: lib/wordfenceClass.php:5808
8270
  msgid "We could not get the contents of the original file to do a comparison."
8271
  msgstr ""
8272
 
8273
+ #: lib/wordfenceClass.php:5817
8274
  msgid "Empty file path provided"
8275
  msgstr ""
8276
 
8277
+ #: lib/wordfenceClass.php:5822
8278
  msgid "Unable to read file contents"
8279
  msgstr ""
8280
 
8281
+ #: lib/wordfenceClass.php:5859
8282
  msgid "File does not exist."
8283
  msgstr ""
8284
 
8285
+ #: lib/wordfenceClass.php:6113
8286
  #: views/dashboard/options-group-import.php:167
8287
  msgid "Reload"
8288
  msgstr ""
8289
 
8290
+ #: lib/wordfenceClass.php:6130
8291
  msgid "${totalIPs} addresses in this network"
8292
  msgstr ""
8293
 
8294
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8295
+ #: lib/wordfenceClass.php:6131
8296
  msgid "%s in POST body: %s"
8297
  msgstr ""
8298
 
8299
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8300
+ #: lib/wordfenceClass.php:6132
8301
  msgid "%s in cookie: %s"
8302
  msgstr ""
8303
 
8304
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8305
+ #: lib/wordfenceClass.php:6133
8306
  msgid "%s in file: %s"
8307
  msgstr ""
8308
 
8309
  #. translators: 1. Description of firewall action. 2. Description of input parameters.
8310
+ #: lib/wordfenceClass.php:6134
8311
  msgid "%s in query string: %s"
8312
  msgstr ""
8313
 
8314
  #. translators: Domain name.
8315
+ #: lib/wordfenceClass.php:6135
8316
  msgid "%s is not valid hostname"
8317
  msgstr ""
8318
 
8319
  #. translators: Domain name.
8320
+ #: lib/wordfenceClass.php:6136
8321
  msgid ".htaccess Updated"
8322
  msgstr ""
8323
 
8324
+ #: lib/wordfenceClass.php:6137
8325
  msgid ".htaccess change"
8326
  msgstr ""
8327
 
8328
+ #: lib/wordfenceClass.php:6138
8329
  msgid "404 Not Found"
8330
  msgstr ""
8331
 
8332
+ #: lib/wordfenceClass.php:6139
8333
  msgid "Activity Log Sent"
8334
  msgstr ""
8335
 
8336
+ #: lib/wordfenceClass.php:6140
8337
  msgid "Add action to allowlist"
8338
  msgstr ""
8339
 
8340
+ #: lib/wordfenceClass.php:6141
8341
  msgid "Add code to .htaccess"
8342
  msgstr ""
8343
 
8344
+ #: lib/wordfenceClass.php:6142
8345
  msgid "All Hits"
8346
  msgstr ""
8347
 
8348
  #. translators: WordPress username.
8349
+ #: lib/wordfenceClass.php:6143
8350
  msgid "All capabilties of admin user %s were successfully revoked."
8351
  msgstr ""
8352
 
8353
+ #: lib/wordfenceClass.php:6145
8354
  msgid "An error occurred when adding the request to the allowlist."
8355
  msgstr ""
8356
 
8357
+ #: lib/wordfenceClass.php:6146
8358
  msgid "Are you sure you want to allowlist this action?"
8359
  msgstr ""
8360
 
8361
+ #: lib/wordfenceClass.php:6147
8362
  msgid "Authentication Code"
8363
  msgstr ""
8364
 
8365
+ #: lib/wordfenceClass.php:6148
8366
  msgid "Background Request Blocked"
8367
  msgstr ""
8368
 
8369
+ #: lib/wordfenceClass.php:6149
8370
  msgid "Block This Network"
8371
  msgstr ""
8372
 
8373
+ #: lib/wordfenceClass.php:6151
8374
  msgid "Blocked By Firewall"
8375
  msgstr ""
8376
 
8377
+ #: lib/wordfenceClass.php:6152
8378
  msgid "Blocked WAF"
8379
  msgstr ""
8380
 
8381
+ #: lib/wordfenceClass.php:6153
8382
  msgid "Blocked by Wordfence"
8383
  msgstr ""
8384
 
8385
+ #: lib/wordfenceClass.php:6154
8386
  msgid "Blocked by Wordfence plugin settings"
8387
  msgstr ""
8388
 
8389
+ #: lib/wordfenceClass.php:6155
8390
  msgid "Blocked by the Wordfence Application Firewall and plugin settings"
8391
  msgstr ""
8392
 
8393
+ #: lib/wordfenceClass.php:6156
8394
  msgid "Blocked by the Wordfence Security Network"
8395
  msgstr ""
8396
 
8397
+ #: lib/wordfenceClass.php:6157
8398
  msgid "Blocked by the Wordfence Web Application Firewall"
8399
  msgstr ""
8400
 
8401
+ #: lib/wordfenceClass.php:6160
8402
  msgid "Cellphone Sign-In Recovery Codes"
8403
  msgstr ""
8404
 
8405
+ #: lib/wordfenceClass.php:6161
8406
  msgid "Cellphone Sign-in activated for user."
8407
  msgstr ""
8408
 
8409
+ #: lib/wordfenceClass.php:6162
8410
  msgid "Click here to download a backup copy of this file now"
8411
  msgstr ""
8412
 
8413
+ #: lib/wordfenceClass.php:6163
8414
  msgid "Click here to download a backup copy of your .htaccess file now"
8415
  msgstr ""
8416
 
8417
+ #: lib/wordfenceClass.php:6164
8418
  msgid "Click to fix .htaccess"
8419
  msgstr ""
8420
 
8421
+ #: lib/wordfenceClass.php:6166
8422
  msgid "Crawlers"
8423
  msgstr ""
8424
 
8425
+ #: lib/wordfenceClass.php:6167
8426
  msgid "Diagnostic report has been sent successfully."
8427
  msgstr ""
8428
 
8429
+ #: lib/wordfenceClass.php:6168
8430
  msgid "Directory Listing Disabled"
8431
  msgstr ""
8432
 
8433
+ #: lib/wordfenceClass.php:6169
8434
  msgid "Directory listing has been disabled on your server."
8435
  msgstr ""
8436
 
8437
+ #: lib/wordfenceClass.php:6172
8438
  msgid "Don't ask again"
8439
  msgstr ""
8440
 
8441
+ #: lib/wordfenceClass.php:6174
8442
  msgid "Download Backup File"
8443
  msgstr ""
8444
 
8445
+ #: lib/wordfenceClass.php:6175
8446
  msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:"
8447
  msgstr ""
8448
 
8449
+ #: lib/wordfenceClass.php:6176
8450
  msgid "Email Diagnostic Report"
8451
  msgstr ""
8452
 
8453
+ #: lib/wordfenceClass.php:6177
8454
  msgid "Email Wordfence Activity Log"
8455
  msgstr ""
8456
 
8457
+ #: lib/wordfenceClass.php:6179
8458
  msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data."
8459
  msgstr ""
8460
 
8461
+ #: lib/wordfenceClass.php:6180
8462
  msgid "Error"
8463
  msgstr ""
8464
 
8465
+ #: lib/wordfenceClass.php:6181
8466
  msgid "Error Enabling All Options Page"
8467
  msgstr ""
8468
 
8469
+ #: lib/wordfenceClass.php:6182
8470
  msgid "Error Restoring Defaults"
8471
  msgstr ""
8472
 
8473
+ #: lib/wordfenceClass.php:6183
8474
  msgid "Error Saving Option"
8475
  msgstr ""
8476
 
8477
+ #: lib/wordfenceClass.php:6184
8478
  msgid "Error Saving Options"
8479
  msgstr ""
8480
 
8481
+ #: lib/wordfenceClass.php:6185
8482
  msgid "Failed Login"
8483
  msgstr ""
8484
 
8485
+ #: lib/wordfenceClass.php:6186
8486
  msgid "Failed Login: Invalid Username"
8487
  msgstr ""
8488
 
8489
+ #: lib/wordfenceClass.php:6187
8490
  msgid "Failed Login: Valid Username"
8491
  msgstr ""
8492
 
8493
+ #: lib/wordfenceClass.php:6188
8494
  msgid "File hidden successfully"
8495
  msgstr ""
8496
 
8497
+ #: lib/wordfenceClass.php:6189
8498
  msgid "File restored OK"
8499
  msgstr ""
8500
 
8501
+ #: lib/wordfenceClass.php:6190
8502
  msgid "Filter Traffic"
8503
  msgstr ""
8504
 
8505
+ #: lib/wordfenceClass.php:6191
8506
  msgid "Firewall Response"
8507
  msgstr ""
8508
 
8509
+ #: lib/wordfenceClass.php:6192
8510
  #: views/scanner/issue-wpscan_fullPathDiscl.php:8
8511
  msgid "Full Path Disclosure"
8512
  msgstr ""
8513
 
8514
+ #: lib/wordfenceClass.php:6193
8515
  msgid "Google Bot"
8516
  msgstr ""
8517
 
8518
+ #: lib/wordfenceClass.php:6194
8519
  msgid "Google Crawlers"
8520
  msgstr ""
8521
 
8522
+ #: lib/wordfenceClass.php:6195
8523
  msgid "HTTP Response Code"
8524
  msgstr ""
8525
 
8526
+ #: lib/wordfenceClass.php:6197
8527
  msgid "Humans"
8528
  msgstr ""
8529
 
8530
+ #: lib/wordfenceClass.php:6199
8531
  msgid "Key:"
8532
  msgstr ""
8533
 
8534
  #. translators: Localized date.
8535
+ #: lib/wordfenceClass.php:6200
8536
  msgid "Last Updated: %s"
8537
  msgstr ""
8538
 
8539
  #. translators: Localized date.
8540
+ #: lib/wordfenceClass.php:6201
8541
  msgid "Learn more about repairing modified files."
8542
  msgstr ""
8543
 
8544
+ #: lib/wordfenceClass.php:6203
8545
  msgid "Locked Out"
8546
  msgstr ""
8547
 
8548
+ #: lib/wordfenceClass.php:6204
8549
  msgid "Locked out from logging in"
8550
  msgstr ""
8551
 
8552
+ #: lib/wordfenceClass.php:6205
8553
  msgid "Logged In"
8554
  msgstr ""
8555
 
8556
+ #: lib/wordfenceClass.php:6206
8557
  msgid "Logins"
8558
  msgstr ""
8559
 
8560
+ #: lib/wordfenceClass.php:6207
8561
  msgid "Logins and Logouts"
8562
  msgstr ""
8563
 
8564
  #. translators: Localized date.
8565
+ #: lib/wordfenceClass.php:6210
8566
  msgid "Next Update Check: %s"
8567
  msgstr ""
8568
 
8569
  #. translators: Localized date.
8570
+ #: lib/wordfenceClass.php:6211
8571
  msgid "No activity to report yet. Please complete your first scan."
8572
  msgstr ""
8573
 
8574
+ #: lib/wordfenceClass.php:6212
8575
  msgid "No issues have been ignored."
8576
  msgstr ""
8577
 
8578
+ #: lib/wordfenceClass.php:6213
8579
  msgid "No new issues have been found."
8580
  msgstr ""
8581
 
8582
+ #: lib/wordfenceClass.php:6214
8583
  msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory."
8584
  msgstr ""
8585
 
8586
+ #: lib/wordfenceClass.php:6215
8587
  msgid "No rules were updated. Please verify your website can reach the Wordfence servers."
8588
  msgstr ""
8589
 
8590
+ #: lib/wordfenceClass.php:6216
8591
  msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later."
8592
  msgstr ""
8593
 
8594
+ #: lib/wordfenceClass.php:6217
8595
  msgid "Note: Status will update when changes are saved"
8596
  msgstr ""
8597
 
8598
+ #: lib/wordfenceClass.php:6218
8599
  msgid "OK"
8600
  msgstr ""
8601
 
8602
+ #: lib/wordfenceClass.php:6219
8603
  msgid "Pages Not Found"
8604
  msgstr ""
8605
 
8606
+ #: lib/wordfenceClass.php:6220
8607
  msgid "Paid Members Only"
8608
  msgstr ""
8609
 
8610
+ #: lib/wordfenceClass.php:6222
8611
  msgid "Please enter a valid email address."
8612
  msgstr ""
8613
 
8614
+ #: lib/wordfenceClass.php:6223
8615
  msgid "Please include your support ticket number or forum username."
8616
  msgstr ""
8617
 
8618
+ #: lib/wordfenceClass.php:6224
8619
  msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:"
8620
  msgstr ""
8621
 
8622
+ #: lib/wordfenceClass.php:6225
8623
  msgid "Please specify a reason"
8624
  msgstr ""
8625
 
8626
+ #: lib/wordfenceClass.php:6226
8627
  msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."
8628
  msgstr ""
8629
 
8630
+ #: lib/wordfenceClass.php:6227
8631
  msgid "Please specify either an IP address range, Hostname or a web browser pattern to match."
8632
  msgstr ""
8633
 
8634
+ #: lib/wordfenceClass.php:6228
8635
  msgid "Recent Activity"
8636
  msgstr ""
8637
 
8638
+ #: lib/wordfenceClass.php:6229
8639
  msgid "Recovery Codes"
8640
  msgstr ""
8641
 
8642
+ #: lib/wordfenceClass.php:6230
8643
  msgid "Redirected"
8644
  msgstr ""
8645
 
8646
+ #: lib/wordfenceClass.php:6231
8647
  msgid "Redirected by Country Blocking bypass URL"
8648
  msgstr ""
8649
 
8650
+ #: lib/wordfenceClass.php:6232
8651
  msgid "Referer"
8652
  msgstr ""
8653
 
8654
+ #: lib/wordfenceClass.php:6233
8655
  msgid "Registered Users"
8656
  msgstr ""
8657
 
8658
+ #: lib/wordfenceClass.php:6235
8659
  msgid "Rule Update Failed"
8660
  msgstr ""
8661
 
8662
+ #: lib/wordfenceClass.php:6236
8663
  msgid "Rules Updated"
8664
  msgstr ""
8665
 
8666
+ #: lib/wordfenceClass.php:6238
8667
  msgid "Scan Complete."
8668
  msgstr ""
8669
 
8670
+ #: lib/wordfenceClass.php:6239
8671
  msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead."
8672
  msgstr ""
8673
 
8674
+ #: lib/wordfenceClass.php:6240
8675
  msgid "Security Event"
8676
  msgstr ""
8677
 
8678
+ #: lib/wordfenceClass.php:6241
8679
  msgid "Send"
8680
  msgstr ""
8681
 
8682
+ #: lib/wordfenceClass.php:6242
8683
  msgid "Sorry, but no data for that IP or domain was found."
8684
  msgstr ""
8685
 
8686
+ #: lib/wordfenceClass.php:6243
8687
  msgid "Specify a valid IP range"
8688
  msgstr ""
8689
 
8690
+ #: lib/wordfenceClass.php:6244
8691
  msgid "Specify a valid hostname"
8692
  msgstr ""
8693
 
8694
+ #: lib/wordfenceClass.php:6245
8695
  msgid "Specify an IP range, Hostname or Browser pattern"
8696
  msgstr ""
8697
 
8698
+ #: lib/wordfenceClass.php:6246
8699
  msgid "Success deleting file"
8700
  msgstr ""
8701
 
8702
+ #: lib/wordfenceClass.php:6247
8703
  msgid "Success removing option"
8704
  msgstr ""
8705
 
8706
+ #: lib/wordfenceClass.php:6248
8707
  msgid "Success restoring file"
8708
  msgstr ""
8709
 
8710
+ #: lib/wordfenceClass.php:6249
8711
  msgid "Success updating option"
8712
  msgstr ""
8713
 
8714
+ #: lib/wordfenceClass.php:6250
8715
  msgid "Successfully deleted admin"
8716
  msgstr ""
8717
 
8718
+ #: lib/wordfenceClass.php:6251
8719
  msgid "Successfully revoked admin"
8720
  msgstr ""
8721
 
8722
+ #: lib/wordfenceClass.php:6252
8723
  msgid "Test Email Sent"
8724
  msgstr ""
8725
 
8726
+ #: lib/wordfenceClass.php:6253
8727
  msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value."
8728
  msgstr ""
8729
 
8730
+ #: lib/wordfenceClass.php:6254
8731
  msgid "The Full Path disclosure issue has been fixed"
8732
  msgstr ""
8733
 
8734
  #. translators: WordPress username.
8735
+ #: lib/wordfenceClass.php:6255
8736
  msgid "The admin user %s was successfully deleted."
8737
  msgstr ""
8738
 
8739
  #. translators: File path.
8740
+ #: lib/wordfenceClass.php:6256
8741
  msgid "The file %s was successfully deleted."
8742
  msgstr ""
8743
 
8744
  #. translators: File path.
8745
+ #: lib/wordfenceClass.php:6257
8746
  msgid "The file %s was successfully hidden from public view."
8747
  msgstr ""
8748
 
8749
  #. translators: File path.
8750
+ #: lib/wordfenceClass.php:6258
8751
  msgid "The file %s was successfully restored."
8752
  msgstr ""
8753
 
8754
  #. translators: WordPress option.
8755
+ #: lib/wordfenceClass.php:6259
8756
  msgid "The option %s was successfully removed."
8757
  msgstr ""
8758
 
8759
  #. translators: WordPress option.
8760
+ #: lib/wordfenceClass.php:6260
8761
  msgid "The request has been allowlisted. Please try it again."
8762
  msgstr ""
8763
 
8764
+ #: lib/wordfenceClass.php:6261
8765
  msgid "There was an error while sending the email."
8766
  msgstr ""
8767
 
8768
+ #: lib/wordfenceClass.php:6262
8769
  msgid "This will be shown only once. Keep these codes somewhere safe."
8770
  msgstr ""
8771
 
8772
+ #: lib/wordfenceClass.php:6263
8773
  msgid "Throttled"
8774
  msgstr ""
8775
 
8776
+ #: lib/wordfenceClass.php:6264
8777
  msgid "Two Factor Status"
8778
  msgstr ""
8779
 
8780
  #. translators: HTTP client type.
8781
+ #: lib/wordfenceClass.php:6266
8782
  msgid "Type: %s"
8783
  msgstr ""
8784
 
8785
  #. translators: HTTP client type.
8786
+ #: lib/wordfenceClass.php:6267
8787
  #: views/scanner/issue-checkGSB.php:8
8788
  #: views/scanner/issue-commentBadURL.php:8
8789
  #: views/scanner/issue-configReadable.php:12
8803
  msgid "URL"
8804
  msgstr ""
8805
 
8806
+ #: lib/wordfenceClass.php:6268
8807
  msgid "Unable to automatically hide file"
8808
  msgstr ""
8809
 
8810
  #. translators: 2FA backup codes.
8811
+ #: lib/wordfenceClass.php:6269
8812
  msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
8813
  msgstr ""
8814
 
8815
  #. translators: 2FA backup codes.
8816
+ #: lib/wordfenceClass.php:6270
8817
  msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
8818
  msgstr ""
8819
 
8820
+ #: lib/wordfenceClass.php:6272
8821
  msgid "User ID"
8822
  msgstr ""
8823
 
8824
+ #: lib/wordfenceClass.php:6274
8825
  msgid "WHOIS LOOKUP"
8826
  msgstr ""
8827
 
8828
+ #: lib/wordfenceClass.php:6275
8829
  msgid "We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding."
8830
  msgstr ""
8831
 
8832
  #. translators: Error message.
8833
+ #: lib/wordfenceClass.php:6276
8834
  msgid "We can't modify your .htaccess file for you because: %s"
8835
  msgstr ""
8836
 
8837
  #. translators: Error message.
8838
+ #: lib/wordfenceClass.php:6277
8839
  msgid "We encountered a problem"
8840
  msgstr ""
8841
 
8842
  #. translators: URL.
8843
+ #: lib/wordfenceClass.php:6278
8844
  msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."
8845
  msgstr ""
8846
 
8847
  #. translators: URL.
8848
+ #: lib/wordfenceClass.php:6279
8849
  msgid "Wordfence is working..."
8850
  msgstr ""
8851
 
8852
+ #: lib/wordfenceClass.php:6280
8853
  msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."
8854
  msgstr ""
8855
 
8856
+ #: lib/wordfenceClass.php:6281
8857
  msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files."
8858
  msgstr ""
8859
 
8860
+ #: lib/wordfenceClass.php:6282
8861
  msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>"
8862
  msgstr ""
8863
 
8864
+ #: lib/wordfenceClass.php:6283
8865
  msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."
8866
  msgstr ""
8867
 
8868
+ #: lib/wordfenceClass.php:6284
8869
  msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost."
8870
  msgstr ""
8871
 
8872
+ #: lib/wordfenceClass.php:6285
8873
  msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally."
8874
  msgstr ""
8875
 
8876
  #. translators: Email address.
8877
+ #: lib/wordfenceClass.php:6286
8878
  msgid "Your Wordfence activity log was sent to %s"
8879
  msgstr ""
8880
 
8881
  #. translators: Email address.
8882
+ #: lib/wordfenceClass.php:6287
8883
  msgid "Your rules have been updated successfully."
8884
  msgstr ""
8885
 
8886
+ #: lib/wordfenceClass.php:6288
8887
  msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href=\"https://www.wordfence.com/wafUpdateRules1/wordfence-signup/\">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>"
8888
  msgstr ""
8889
 
8890
  #. translators: wp_mail() return value.
8891
+ #: lib/wordfenceClass.php:6289
8892
  msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."
8893
  msgstr ""
8894
 
8895
  #. translators: wp_mail() return value.
8896
+ #: lib/wordfenceClass.php:6290
8897
  msgid "blocked by firewall"
8898
  msgstr ""
8899
 
8900
  #. translators: Reason for firewall action.
8901
+ #: lib/wordfenceClass.php:6291
8902
  msgid "blocked by firewall for %s"
8903
  msgstr ""
8904
 
8905
  #. translators: Reason for firewall action.
8906
+ #: lib/wordfenceClass.php:6292
8907
  msgid "blocked by real-time IP blocklist"
8908
  msgstr ""
8909
 
8910
+ #: lib/wordfenceClass.php:6293
8911
  msgid "blocked by the Wordfence Security Network"
8912
  msgstr ""
8913
 
8914
  #. translators: Reason for firewall action.
8915
+ #: lib/wordfenceClass.php:6294
8916
  msgid "blocked for %s"
8917
  msgstr ""
8918
 
8919
  #. translators: Reason for firewall action.
8920
+ #: lib/wordfenceClass.php:6295
8921
  msgid "locked out from logging in"
8922
  msgstr ""
8923
 
8924
+ #: lib/wordfenceClass.php:6308
8925
  msgid "Wordfence generated an error on activation. The output we received during activation was:"
8926
  msgstr ""
8927
 
8928
+ #: lib/wordfenceClass.php:6315
8929
  msgid "Wordfence could not register with the Wordfence scanning servers when it activated."
8930
  msgstr ""
8931
 
8932
+ #: lib/wordfenceClass.php:6316
8933
  msgid "You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can't connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges."
8934
  msgstr ""
8935
 
8936
+ #: lib/wordfenceClass.php:6330
8937
  msgid "The Wordfence Web Application Firewall cannot run."
8938
  msgstr ""
8939
 
8940
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8941
+ #: lib/wordfenceClass.php:6333
8942
  msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href=\"%1$s\">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8943
  msgstr ""
8944
 
8945
+ #: lib/wordfenceClass.php:6339
8946
  msgid "The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead."
8947
  msgstr ""
8948
 
8949
+ #: lib/wordfenceClass.php:6352
8950
+ #: lib/wordfenceClass.php:6371
8951
  msgid "The Wordfence Web Application Firewall needs a configuration update."
8952
  msgstr ""
8953
 
8954
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8955
+ #: lib/wordfenceClass.php:6355
8956
  msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a>. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8957
  msgstr ""
8958
 
8959
  #. translators: 1. WordPress admin panel URL. 2. Support URL.
8960
+ #: lib/wordfenceClass.php:6374
8961
  msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a> or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
8962
  msgstr ""
8963
 
8964
+ #: lib/wordfenceClass.php:6380
8965
  msgid "The Wordfence Web Application Firewall is in read-only mode."
8966
  msgstr ""
8967
 
8968
+ #: lib/wordfenceClass.php:6389
8969
  msgid "This site is currently using PHP's built in REMOTE_ADDR."
8970
  msgstr ""
8971
 
8972
+ #: lib/wordfenceClass.php:6392
8973
  msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
8974
  msgstr ""
8975
 
8976
+ #: lib/wordfenceClass.php:6395
8977
  msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
8978
  msgstr ""
8979
 
8980
+ #: lib/wordfenceClass.php:6398
8981
  msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare."
8982
  msgstr ""
8983
 
8984
+ #: lib/wordfenceClass.php:6415
8985
  msgid "Your 'How does Wordfence get IPs' setting is misconfigured."
8986
  msgstr ""
8987
 
8988
+ #: lib/wordfenceClass.php:6417
8989
  msgid "Click here to use the recommended setting"
8990
  msgstr ""
8991
 
8992
+ #: lib/wordfenceClass.php:6419
8993
  #: views/onboarding/fresh-install.php:38
8994
  msgid "or"
8995
  msgstr ""
8996
 
8997
+ #: lib/wordfenceClass.php:6421
8998
  msgid "visit the options page"
8999
  msgstr ""
9000
 
9001
+ #: lib/wordfenceClass.php:6423
9002
  msgid "to manually update it."
9003
  msgstr ""
9004
 
9005
+ #: lib/wordfenceClass.php:6431
9006
  msgid "Do you want Wordfence to stay up-to-date automatically?"
9007
  msgstr ""
9008
 
9009
+ #: lib/wordfenceClass.php:6433
9010
  msgid "Yes, enable auto-update."
9011
  msgstr ""
9012
 
9013
+ #: lib/wordfenceClass.php:6435
9014
  msgid "No thanks."
9015
  msgstr ""
9016
 
9017
+ #: lib/wordfenceClass.php:6459
9018
  msgid "Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page."
9019
  msgstr ""
9020
 
9021
  #. translators: Localized date.
9022
+ #: lib/wordfenceClass.php:6568
9023
  msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then."
9024
  msgstr ""
9025
 
9026
  #. translators: 1. Localized date. 2. WordPress admin panel URL.
9027
+ #: lib/wordfenceClass.php:6576
9028
  msgid "You may wait for the next automatic attempt at %1$s or try to <a href=\"%2$s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
9029
  msgstr ""
9030
 
9031
  #. translators: WordPress admin panel URL.
9032
+ #: lib/wordfenceClass.php:6582
9033
  msgid "You may wait for the next automatic attempt or try to <a href=\"%s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
9034
  msgstr ""
9035
 
9036
  #. translators: WordPress admin panel URL.
9037
+ #: lib/wordfenceClass.php:6587
9038
  msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
9039
  msgstr ""
9040
 
9041
+ #: lib/wordfenceClass.php:6590
9042
  msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
9043
  msgstr ""
9044
 
9045
+ #: lib/wordfenceClass.php:6698
9046
  #: models/page/wfPage.php:101
9047
  msgid "Dashboard"
9048
  msgstr ""
9049
 
9050
+ #: lib/wordfenceClass.php:6742
9051
  msgid "Upgrade to Care"
9052
  msgstr ""
9053
 
9054
+ #: lib/wordfenceClass.php:6746
9055
  msgid "Upgrade to Response"
9056
  msgstr ""
9057
 
9058
  #. translators: Number of notifications.
9059
+ #: lib/wordfenceClass.php:6795
9060
  msgid "You have %d new Wordfence notification."
9061
  msgid_plural "You have %d new Wordfence notifications."
9062
  msgstr[0] ""
9063
  msgstr[1] ""
9064
 
9065
+ #: lib/wordfenceClass.php:6819
9066
  msgid "JavaScript Errors"
9067
  msgstr ""
9068
 
9069
+ #: lib/wordfenceClass.php:6825
9070
  msgid "Malware URLs"
9071
  msgstr ""
9072
 
9073
  #. translators: WordPress admin panel URL.
9074
+ #: lib/wordfenceClass.php:6943
9075
+ #: lib/wordfenceClass.php:7006
9076
  msgid "<a href=\"%s\">Click here</a> to rebuild the configuration file."
9077
  msgstr ""
9078
 
9079
  #. translators: File path.
9080
+ #: lib/wordfenceClass.php:6954
9081
+ #: lib/wordfenceClass.php:7017
9082
  msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it."
9083
  msgstr ""
9084
 
9085
+ #: lib/wordfenceClass.php:6964
9086
+ #: lib/wordfenceClass.php:7027
9087
  msgid "An error occured when fetching the WAF configuration from the database."
9088
  msgstr ""
9089
 
9090
  #. translators: Plugin name.
9091
+ #: lib/wordfenceClass.php:7049
9092
  msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic."
9093
  msgstr ""
9094
 
9095
  #. translators: 1. Plugin name.
9096
+ #: lib/wordfenceClass.php:7051
9097
  msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly."
9098
  msgstr ""
9099
 
9100
  #. translators: File path.
9101
+ #: lib/wordfenceClass.php:7112
9102
  msgid "The file <code>%s</code> was restored successfully."
9103
  msgstr ""
9104
 
9105
+ #: lib/wordfenceClass.php:7117
9106
  msgid "There was an error restoring the file."
9107
  msgstr ""
9108
 
9109
+ #: lib/wordfenceClass.php:7127
9110
+ #: lib/wordfenceClass.php:7150
9111
  msgid "Return to scan results"
9112
  msgstr ""
9113
 
9114
  #. translators: File path.
9115
+ #: lib/wordfenceClass.php:7136
9116
  msgid "The file <code>%s</code> was deleted successfully."
9117
  msgstr ""
9118
 
9119
+ #: lib/wordfenceClass.php:7140
9120
  msgid "There was an error deleting the file."
9121
  msgstr ""
9122
 
9123
  #. translators: IP address.
9124
+ #: lib/wordfenceClass.php:7208
9125
  msgid ""
9126
  "User IP: %s\n"
9127
  ""
9128
  msgstr ""
9129
 
9130
  #. translators: Domain name.
9131
+ #: lib/wordfenceClass.php:7211
9132
  msgid ""
9133
  "User hostname: %s\n"
9134
  ""
9135
  msgstr ""
9136
 
9137
+ #: lib/wordfenceClass.php:7215
9138
  msgid "User location: "
9139
  msgstr ""
9140
 
9141
  #. translators: WordPress admin panel URL.
9142
+ #: lib/wordfenceClass.php:7270
9143
  msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s"
9144
  msgstr ""
9145
 
9146
+ #: lib/wordfenceClass.php:7311
9147
  msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]"
9148
  msgstr ""
9149
 
9150
+ #: lib/wordfenceClass.php:7330
9151
  msgid "Invalid email address provided"
9152
  msgstr ""
9153
 
9154
+ #: lib/wordfenceClass.php:7335
9155
  msgid "Test email sent successfully"
9156
  msgstr ""
9157
 
9158
+ #: lib/wordfenceClass.php:7336
9159
  msgid "Test email failed to send"
9160
  msgstr ""
9161
 
9162
  #. translators: Localized date range.
9163
+ #: lib/wordfenceClass.php:7354
9164
  msgid "Wordfence activity in the past %s"
9165
  msgstr ""
9166
 
 
9167
  #: lib/wordfenceClass.php:7394
9168
+ #: lib/wordfenceClass.php:7398
9169
+ #: lib/wordfenceClass.php:7429
9170
  msgid "We could not find that user in the database."
9171
  msgstr ""
9172
 
9173
+ #: lib/wordfenceClass.php:7402
9174
  msgid "This user's email is the network admin email. It will need to be changed before deleting this user."
9175
  msgstr ""
9176
 
9177
+ #: lib/wordfenceClass.php:7466
9178
  msgid "Wordfence could not find your .htaccess file."
9179
  msgstr ""
9180
 
9181
+ #: lib/wordfenceClass.php:7482
9182
  msgid "Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server."
9183
  msgstr ""
9184
 
9185
+ #: lib/wordfenceClass.php:7488
9186
  msgid "There was an error writing to your .htaccess file."
9187
  msgstr ""
9188
 
9189
+ #: lib/wordfenceClass.php:7567
9190
  msgid "Required parameters not sent."
9191
  msgstr ""
9192
 
9193
+ #: lib/wordfenceClass.php:7577
9194
  msgid "The WAF is currently in read-only mode and will not save any configuration changes."
9195
  msgstr ""
9196
 
9197
+ #: lib/wordfenceClass.php:7615
9198
  #: views/waf/option-whitelist.php:60
9199
  msgid "Allowlisted via Firewall Options page"
9200
  msgstr ""
9201
 
9202
+ #: lib/wordfenceClass.php:7902
9203
  msgid "Allowlisted via Live Traffic"
9204
  msgstr ""
9205
 
9206
+ #: lib/wordfenceClass.php:8066
9207
+ #: lib/wordfenceClass.php:8163
9208
  msgid "A valid server configuration was not provided."
9209
  msgstr ""
9210
 
9211
+ #: lib/wordfenceClass.php:8077
9212
+ #: lib/wordfenceClass.php:8184
9213
  msgid "Filesystem Credentials Required"
9214
  msgstr ""
9215
 
9216
  #. translators: Support URL.
9217
+ #: lib/wordfenceClass.php:8079
9218
+ #: lib/wordfenceClass.php:8103
9219
+ #: lib/wordfenceClass.php:8147
9220
+ #: lib/wordfenceClass.php:9039
9221
  msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
9222
  msgstr ""
9223
 
9224
  #. translators: Support URL.
9225
+ #: lib/wordfenceClass.php:8080
9226
  msgid "Once you have entered credentials, click Continue to complete the setup."
9227
  msgstr ""
9228
 
9229
+ #: lib/wordfenceClass.php:8101
9230
+ #: lib/wordfenceClass.php:8209
9231
  msgid "Filesystem Permission Error"
9232
  msgstr ""
9233
 
9234
+ #: lib/wordfenceClass.php:8127
9235
  msgid "Manual Installation Instructions"
9236
  msgstr ""
9237
 
9238
+ #: lib/wordfenceClass.php:8134
9239
  msgid "Installation Successful"
9240
  msgstr ""
9241
 
9242
+ #: lib/wordfenceClass.php:8145
9243
  msgid "Installation Failed"
9244
  msgstr ""
9245
 
9246
  #. translators: Support URL.
9247
+ #: lib/wordfenceClass.php:8186
9248
+ #: lib/wordfenceClass.php:8211
9249
+ #: lib/wordfenceClass.php:8242
9250
+ #: lib/wordfenceClass.php:8271
9251
+ #: lib/wordfenceClass.php:8317
9252
  msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
9253
  msgstr ""
9254
 
9255
  #. translators: Support URL.
9256
+ #: lib/wordfenceClass.php:8187
9257
  msgid "Once you have entered credentials, click Continue to complete uninstallation."
9258
  msgstr ""
9259
 
9260
+ #: lib/wordfenceClass.php:8231
9261
  msgid "The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled."
9262
  msgstr ""
9263
 
9264
+ #: lib/wordfenceClass.php:8233
9265
  msgid "Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed."
9266
  msgstr ""
9267
 
9268
  #. translators: Time until.
9269
+ #: lib/wordfenceClass.php:8237
9270
  msgid "Waiting for it to take effect. This may take up to %s."
9271
  msgstr ""
9272
 
9273
+ #: lib/wordfenceClass.php:8240
9274
  msgid "Waiting for Changes"
9275
  msgstr ""
9276
 
9277
+ #: lib/wordfenceClass.php:8262
9278
  msgid "Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP."
9279
  msgstr ""
9280
 
9281
+ #: lib/wordfenceClass.php:8264
9282
  msgid "Retrying Failed."
9283
  msgstr ""
9284
 
9285
+ #: lib/wordfenceClass.php:8266
9286
  msgid "Try Again"
9287
  msgstr ""
9288
 
9289
+ #: lib/wordfenceClass.php:8269
9290
  msgid "Unable to Uninstall"
9291
  msgstr ""
9292
 
9293
+ #: lib/wordfenceClass.php:8305
9294
  msgid "Uninstallation Complete"
9295
  msgstr ""
9296
 
9297
+ #: lib/wordfenceClass.php:8315
9298
  msgid "Uninstallation Failed"
9299
  msgstr ""
9300
 
9301
  #. translators: 1. Number of attacks/blocks. 2. Time since.
9302
+ #: lib/wordfenceClass.php:8469
9303
  msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:"
9304
  msgstr ""
9305
 
9306
+ #: lib/wordfenceClass.php:9036
9307
  msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:"
9308
  msgstr ""
9309
 
9310
+ #: lib/wordfenceClass.php:9036
9311
  msgid "Click here to configure"
9312
  msgstr ""
9313
 
9314
+ #: lib/wordfenceClass.php:9045
9315
  #: views/waf/waf-install-success.php:14
9316
  msgid "Nice work! The firewall is now optimized."
9317
  msgstr ""
9318
 
9319
+ #: lib/wordfenceClass.php:9047
9320
+ #: lib/wordfenceClass.php:9059
9321
  #: views/waf/waf-install-success.php:16
9322
  #: views/waf/waf-uninstall-success.php:19
9323
  msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page."
9324
  msgstr ""
9325
 
9326
+ #: lib/wordfenceClass.php:9053
9327
  #: views/waf/waf-uninstall-success.php:15
9328
  msgid "Uninstallation was successful!"
9329
  msgstr ""
9330
 
9331
+ #: lib/wordfenceClass.php:9056
9332
  #: views/waf/waf-uninstall-success.php:17
9333
  msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation."
9334
  msgstr ""
9335
 
9336
+ #: lib/wordfenceClass.php:9064
9337
  msgid "The update was successful!"
9338
  msgstr ""
9339
 
9340
+ #: lib/wordfenceClass.php:9214
9341
  msgid "Auth grant is invalid."
9342
  msgstr ""
9343
 
9344
  #. translators: Error message.
9345
+ #: lib/wordfenceClass.php:9229
9346
  msgid "Invalid response from Wordfence Central: %s"
9347
  msgstr ""
9348
 
9349
  #. translators: JSON property.
9350
+ #: lib/wordfenceClass.php:9235
9351
+ #: lib/wordfenceClass.php:9248
9352
  msgid "Invalid response from Wordfence Central. Parameter %s not found in response."
9353
  msgstr ""
9354
 
9355
+ #: lib/wordfenceClass.php:9277
9356
+ #: lib/wordfenceClass.php:9414
9357
  msgid "Access token not found."
9358
  msgstr ""
9359
 
9360
+ #: lib/wordfenceClass.php:9322
9361
+ #: lib/wordfenceClass.php:9389
9362
  msgid "Invalid response from Wordfence Central."
9363
  msgstr ""
9364
 
9365
+ #: lib/wordfenceClass.php:9365
9366
  msgid "Auth grant not found."
9367
  msgstr ""
9368
 
9369
+ #: lib/wordfenceClass.php:9635
9370
  msgid "We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation."
9371
  msgstr ""
9372
 
9373
+ #: lib/wordfenceClass.php:9727
9374
+ #: lib/wordfenceClass.php:9798
9375
  msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation."
9376
  msgstr ""
9377
 
9378
  #. translators: File path.
9379
+ #: lib/wordfenceClass.php:9768
9380
+ #: lib/wordfenceClass.php:9816
9381
  msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation."
9382
  msgstr ""
9383
 
9384
+ #: lib/wordfenceClass.php:9832
9385
  msgid "We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal."
9386
  msgstr ""
9387
 
9700
  msgstr ""
9701
 
9702
  #. translators: Malware signature rule ID.
9703
+ #: lib/wordfenceScanner.php:371
9704
  msgid "Resuming malware scan at rule %s."
9705
  msgstr ""
9706
 
9707
+ #: lib/wordfenceScanner.php:405
9708
  msgid "This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans."
9709
  msgstr ""
9710
 
9711
+ #: lib/wordfenceScanner.php:416
9712
  msgid "File appears to be malicious or unsafe: %s"
9713
  msgstr ""
9714
 
9715
+ #: lib/wordfenceScanner.php:417
9716
  msgid "The matched text in this file is: %s"
9717
  msgstr ""
9718
 
9719
  #. translators: Scan result type.
9720
+ #: lib/wordfenceScanner.php:417
9721
  msgid "The issue type is: %s"
9722
  msgstr ""
9723
 
9724
  #. translators: Scan result description.
9725
+ #: lib/wordfenceScanner.php:417
9726
  msgid "Description: %s"
9727
  msgstr ""
9728
 
9729
  #. translators: Malware signature rule ID.
9730
+ #: lib/wordfenceScanner.php:435
9731
  msgid "Forking during malware scan (%s) to ensure continuity."
9732
  msgstr ""
9733
 
9734
+ #: lib/wordfenceScanner.php:457
9735
  msgid "This file may contain malicious executable code: "
9736
  msgstr ""
9737
 
9738
  #. translators: Malware signature matched text.
9739
+ #: lib/wordfenceScanner.php:458
9740
  msgid "This file is a PHP executable file and contains the word \"eval\" (without quotes) and the word \"%s\" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives."
9741
  msgstr ""
9742
 
9743
+ #: lib/wordfenceScanner.php:495
9744
  msgid "Asking Wordfence to check URLs against malware list."
9745
  msgstr ""
9746
 
9747
+ #: lib/wordfenceScanner.php:523
9748
+ #: lib/wordfenceScanner.php:565
9749
  msgid "File contains suspected malware URL: "
9750
  msgstr ""
9751
 
9752
  #. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL.
9753
+ #: lib/wordfenceScanner.php:526
9754
  msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
9755
  msgstr ""
9756
 
9757
+ #: lib/wordfenceScanner.php:547
9758
  msgid "File contains suspected phishing URL: "
9759
  msgstr ""
9760
 
9761
+ #: lib/wordfenceScanner.php:548
9762
  msgid "This file contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: "
9763
  msgstr ""
9764
 
9765
+ #: lib/wordfenceScanner.php:566
9766
  msgid "This file contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: "
9767
  msgstr ""
9768
 
9769
+ #: lib/wordfenceScanner.php:582
9770
  msgid "Finalizing malware scan results"
9771
  msgstr ""
9772
 
9773
  #. translators: 1. Number of fils. 2. Seconds in millisecond precision.
9774
+ #: lib/wordfenceScanner.php:604
9775
  msgid "Scanned contents of %1$d additional files at %2$.2f per second"
9776
  msgstr ""
9777
 
10542
  msgid "Separate multiple addresses with commas"
10543
  msgstr ""
10544
 
10545
+ #: views/dashboard/options-group-general.php:74
10546
+ msgid "If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities"
10547
+ msgstr ""
10548
+
10549
+ #: views/dashboard/options-group-general.php:121
10550
  msgid "Setting higher will reduce browser traffic but slow scan starts, live traffic &amp; status updates."
10551
  msgstr ""
10552
 
10553
+ #: views/dashboard/options-group-general.php:146
10554
  msgid "Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page."
10555
  msgstr ""
10556
 
11180
  #: views/scanner/issue-wfPluginUpgrade.php:16
11181
  #: views/scanner/issue-wfPluginUpgrade.php:32
11182
  #: views/scanner/issue-wfPluginVulnerable.php:15
11183
+ #: views/scanner/issue-wfPluginVulnerable.php:29
11184
  #: views/scanner/issue-wfThemeUpgrade.php:16
11185
  #: views/scanner/issue-wfThemeUpgrade.php:31
11186
  #: views/scanner/issue-wfUpgrade.php:15
11216
  #: views/scanner/issue-wfPluginAbandoned.php:23
11217
  #: views/scanner/issue-wfPluginRemoved.php:21
11218
  #: views/scanner/issue-wfPluginUpgrade.php:23
11219
+ #: views/scanner/issue-wfPluginVulnerable.php:21
11220
  #: views/scanner/issue-wfThemeUpgrade.php:22
11221
  #: views/scanner/issue-wfUpgrade.php:20
11222
  #: views/scanner/issue-wpscan_directoryList.php:19
11515
  #: views/scanner/issue-wfPluginUpgrade.php:12
11516
  #: views/scanner/issue-wfPluginUpgrade.php:28
11517
  #: views/scanner/issue-wfPluginVulnerable.php:12
11518
+ #: views/scanner/issue-wfPluginVulnerable.php:26
11519
  msgid "Plugin Name"
11520
  msgstr ""
11521
 
11526
  #: views/scanner/issue-wfPluginUpgrade.php:13
11527
  #: views/scanner/issue-wfPluginUpgrade.php:29
11528
  #: views/scanner/issue-wfPluginVulnerable.php:13
11529
+ #: views/scanner/issue-wfPluginVulnerable.php:27
11530
  msgid "Current Plugin Version"
11531
  msgstr ""
11532
 
11546
  #: views/scanner/issue-wfPluginRemoved.php:31
11547
  #: views/scanner/issue-wfPluginUpgrade.php:18
11548
  #: views/scanner/issue-wfPluginUpgrade.php:35
 
 
11549
  msgid "Plugin URL"
11550
  msgstr ""
11551
 
11552
  #: views/scanner/issue-wfPluginAbandoned.php:19
11553
  #: views/scanner/issue-wfPluginAbandoned.php:36
11554
  #: views/scanner/issue-wfPluginUpgrade.php:36
11555
+ #: views/scanner/issue-wfPluginVulnerable.php:17
 
11556
  msgid "Repository URL"
11557
  msgstr ""
11558
 
11559
  #: views/scanner/issue-wfPluginAbandoned.php:24
11560
  #: views/scanner/issue-wfPluginRemoved.php:22
11561
+ #: views/scanner/issue-wfPluginVulnerable.php:22
11562
  msgid "Manage Plugins"
11563
  msgstr ""
11564
 
11668
  msgid "Additional scan signatures (one per line)"
11669
  msgstr ""
11670
 
 
 
 
 
11671
  #: views/scanner/options-group-advanced.php:60
11672
  msgid "This option requires cURL. (This may have no effect on some old PHP or cURL versions.)"
11673
  msgstr ""
11721
  msgid "Scan Scheduling"
11722
  msgstr ""
11723
 
11724
+ #: views/scanner/scan-failed.php:15
11725
  msgid "Scan Failed"
11726
  msgstr ""
11727
 
11728
+ #: views/scanner/scan-failed.php:26
11729
  msgid "The error returned was:"
11730
  msgstr ""
11731
 
12079
  msgstr ""
12080
 
12081
  #: views/tools/options-group-live-traffic.php:123
12082
+ msgid "Maximum days to keep Live Traffic data (1-30 days)"
12083
  msgstr ""
12084
 
12085
  #: views/tools/options-group-live-traffic.php:135
lib/email_newIssues.php CHANGED
@@ -43,12 +43,6 @@
43
  </div>
44
  <?php endif ?>
45
 
46
- <?php if (wfConfig::get('betaThreatDefenseFeed')): ?>
47
- <div style="margin: 12px 0;padding: 8px; background-color: #ffffe0; border: 1px solid #ffd975; border-width: 1px 1px 1px 10px;">
48
- <?php esc_html_e('Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites.', 'wordfence'); echo ' '; esc_html_e('The Beta option can be turned off at the bottom of the Diagnostics page.', 'wordfence'); ?>
49
- </div>
50
- <?php endif; ?>
51
-
52
  <?php if ($timeLimitReached): ?>
53
  <div style="margin: 12px 0;padding: 8px; background-color: #ffffe0; border: 1px solid #ffd975; border-width: 1px 1px 1px 10px;">
54
  <em><?php echo wp_kses(sprintf(
@@ -103,7 +97,8 @@ foreach ($severitySections as $severityLevel => $severityLabel):
103
  echo '<p>';
104
  }
105
  if (!empty($i['tmplData']['vulnerable'])) {
106
- echo '<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong>';
 
107
  if (isset($i['tmplData']['vulnerabilityLink'])) {
108
  echo ' <a href="' . $i['tmplData']['vulnerabilityLink'] . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('Vulnerability Information', 'wordfence') . '</a>';
109
  }
@@ -160,5 +155,4 @@ if (count($sentences)) {
160
  <p><?php esc_html_e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
161
  <?php } ?>
162
 
163
- <p><!-- ##UNSUBSCRIBE## --></p>
164
-
43
  </div>
44
  <?php endif ?>
45
 
 
 
 
 
 
 
46
  <?php if ($timeLimitReached): ?>
47
  <div style="margin: 12px 0;padding: 8px; background-color: #ffffe0; border: 1px solid #ffd975; border-width: 1px 1px 1px 10px;">
48
  <em><?php echo wp_kses(sprintf(
97
  echo '<p>';
98
  }
99
  if (!empty($i['tmplData']['vulnerable'])) {
100
+ if (isset($i['tmplData']['updateAvailable']) && $i['tmplData']['updateAvailable'] !== false)
101
+ echo '<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong>';
102
  if (isset($i['tmplData']['vulnerabilityLink'])) {
103
  echo ' <a href="' . $i['tmplData']['vulnerabilityLink'] . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('Vulnerability Information', 'wordfence') . '</a>';
104
  }
155
  <p><?php esc_html_e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
156
  <?php } ?>
157
 
158
+ <p><!-- ##UNSUBSCRIBE## --></p>
 
lib/menu_options.php CHANGED
@@ -73,6 +73,7 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
73
  'wf-option-alertEmails' => __('Where to email alerts', 'wordfence'),
74
  'wf-option-howGetIPs' => __('How does Wordfence get IPs', 'wordfence'),
75
  'wf-option-howGetIPs-trusted-proxies' => __('Trusted Proxies', 'wordfence'),
 
76
  'wf-option-other-hideWPVersion' => __('Hide WordPress version', 'wordfence'),
77
  'wf-option-disableCodeExecutionUploads' => __('Disable Code Execution for Uploads directory', 'wordfence'),
78
  'wf-option-liveActivityPauseEnabled' => __('Pause live updates when window loses focus', 'wordfence'),
@@ -176,6 +177,8 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
176
  'wf-option-maxExecutionTime' => __('Maximum execution time for each scan stage', 'wordfence'),
177
  'wf-option-scan-exclude' => __('Exclude files from scan that match these wildcard patterns', 'wordfence'),
178
  'wf-option-scan-include-extra' => __('Additional scan signatures', 'wordfence'),
 
 
179
  'wf-option-liveTrafficEnabled' => __('Traffic logging mode (Live Traffic)', 'wordfence'),
180
  'wf-option-liveTraf-ignorePublishers' => __('Don\'t log signed-in users with publishing access', 'wordfence'),
181
  'wf-option-liveTraf-ignoreUsers' => __('List of comma separated usernames to ignore', 'wordfence'),
@@ -433,4 +436,4 @@ else if (wfConfig::get('touppPromptNeeded')) {
433
  </div> <!-- end content block -->
434
  </div> <!-- end row -->
435
  </div> <!-- end container -->
436
- </div>
73
  'wf-option-alertEmails' => __('Where to email alerts', 'wordfence'),
74
  'wf-option-howGetIPs' => __('How does Wordfence get IPs', 'wordfence'),
75
  'wf-option-howGetIPs-trusted-proxies' => __('Trusted Proxies', 'wordfence'),
76
+ 'wf-option-enableRemoteIpLookup' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
77
  'wf-option-other-hideWPVersion' => __('Hide WordPress version', 'wordfence'),
78
  'wf-option-disableCodeExecutionUploads' => __('Disable Code Execution for Uploads directory', 'wordfence'),
79
  'wf-option-liveActivityPauseEnabled' => __('Pause live updates when window loses focus', 'wordfence'),
177
  'wf-option-maxExecutionTime' => __('Maximum execution time for each scan stage', 'wordfence'),
178
  'wf-option-scan-exclude' => __('Exclude files from scan that match these wildcard patterns', 'wordfence'),
179
  'wf-option-scan-include-extra' => __('Additional scan signatures', 'wordfence'),
180
+ 'wf-option-scan-force-ipv4-start' => __('Use only IPv4 to start scans', 'wordfence'),
181
+ 'wf-option-scan-max-resume-attempts' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
182
  'wf-option-liveTrafficEnabled' => __('Traffic logging mode (Live Traffic)', 'wordfence'),
183
  'wf-option-liveTraf-ignorePublishers' => __('Don\'t log signed-in users with publishing access', 'wordfence'),
184
  'wf-option-liveTraf-ignoreUsers' => __('List of comma separated usernames to ignore', 'wordfence'),
436
  </div> <!-- end content block -->
437
  </div> <!-- end row -->
438
  </div> <!-- end container -->
439
+ </div>
lib/menu_scanner.php CHANGED
@@ -114,12 +114,6 @@ else if (wfConfig::get('touppPromptNeeded')) {
114
  <div class="wf-row">
115
  <div class="wf-col-xs-12">
116
  <div class="wf-block wf-active">
117
- <?php if (wfConfig::get('betaThreatDefenseFeed')): ?>
118
- <ul class="wf-block-banner">
119
- <li><?php esc_html_e('Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites.', 'wordfence'); ?></li>
120
- <li><a href="#" class="wf-btn wf-btn-default" id="wf-beta-disable" role="button"><?php esc_html_e('Turn Off Beta Signatures', 'wordfence'); ?></a></li>
121
- </ul>
122
- <?php endif; ?>
123
  <div class="wf-block-content">
124
  <ul class="wf-block-list">
125
  <li>
@@ -399,19 +393,4 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
399
  <div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
400
  </div>
401
  </script>
402
- <?php endif; ?>
403
-
404
- <script type="application/javascript">
405
- (function($) {
406
- $(function() {
407
- $('#wf-beta-disable').on('click', function(e) {
408
- e.preventDefault();
409
- e.stopPropagation();
410
-
411
- WFAD.setOption('betaThreatDefenseFeed', 0, function() {
412
- window.location.reload(true);
413
- });
414
- });
415
- });
416
- })(jQuery);
417
- </script>
114
  <div class="wf-row">
115
  <div class="wf-col-xs-12">
116
  <div class="wf-block wf-active">
 
 
 
 
 
 
117
  <div class="wf-block-content">
118
  <ul class="wf-block-list">
119
  <li>
393
  <div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
394
  </div>
395
  </script>
396
+ <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/menu_tools_diagnostic.php CHANGED
@@ -31,7 +31,7 @@ if (!isset($sendingDiagnosticEmail)) {
31
  <div class="wf-diagnostics-wrapper">
32
  <div class="wf-flex-row">
33
  <div class="wf-flex-row-1">
34
- <?php esc_html_e('This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment.', 'wordfence') ?>
35
  </div>
36
  <div class="wf-flex-row-0 wf-padding-add-left">
37
  <div id="sendByEmailThanks" class="hidden">
@@ -867,18 +867,6 @@ if (!isset($sendingDiagnosticEmail)) {
867
  ))->render();
868
  ?>
869
  </li>
870
- <li>
871
- <?php
872
- echo wfView::create('options/option-toggled', array(
873
- 'optionName' => 'betaThreatDefenseFeed',
874
- 'enabledValue' => 1,
875
- 'disabledValue' => 0,
876
- 'value' => $w->get('betaThreatDefenseFeed') ? 1 : 0,
877
- 'title' => __('Enable beta threat defense feed', 'wordfence'),
878
- 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_BETA_TDF),
879
- ))->render();
880
- ?>
881
- </li>
882
  <li>
883
  <?php
884
  echo wfView::create('options/option-toggled', array(
31
  <div class="wf-diagnostics-wrapper">
32
  <div class="wf-flex-row">
33
  <div class="wf-flex-row-1">
34
+ <?php echo wp_kses(sprintf(__('This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem. (<a href="%s" target="_blank" rel="noopener noreferrer">Learn More <span class="screen-reader-text">opens in new tab</span></a>)', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))) ?>
35
  </div>
36
  <div class="wf-flex-row-0 wf-padding-add-left">
37
  <div id="sendByEmailThanks" class="hidden">
867
  ))->render();
868
  ?>
869
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
870
  <li>
871
  <?php
872
  echo wfView::create('options/option-toggled', array(
lib/wfAPI.php CHANGED
@@ -197,8 +197,7 @@ class wfAPI {
197
 
198
  return self::buildQuery(array(
199
  'k' => $this->APIKey,
200
- 's' => wfUtils::base64url_encode(json_encode($values)),
201
- 'betaFeed' => (int) wfConfig::get('betaThreatDefenseFeed'),
202
  ));
203
  }
204
 
197
 
198
  return self::buildQuery(array(
199
  'k' => $this->APIKey,
200
+ 's' => wfUtils::base64url_encode(json_encode($values))
 
201
  ));
202
  }
203
 
lib/wfConfig.php CHANGED
@@ -98,6 +98,7 @@ class wfConfig {
98
  "notification_blogHighlights" => array('value' => true, 'autoload' => self::AUTOLOAD),
99
  "notification_productUpdates" => array('value' => true, 'autoload' => self::AUTOLOAD),
100
  "notification_scanStatus" => array('value' => true, 'autoload' => self::AUTOLOAD),
 
101
  "other_hideWPVersion" => array('value' => false, 'autoload' => self::AUTOLOAD),
102
  "other_blockBadPOST" => array('value' => false, 'autoload' => self::AUTOLOAD),
103
  "other_scanComments" => array('value' => true, 'autoload' => self::AUTOLOAD),
@@ -139,6 +140,7 @@ class wfConfig {
139
  'scan_exclude' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
140
  'scan_maxIssues' => array('value' => 1000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
141
  'scan_maxDuration' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
 
142
  'whitelisted' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
143
  'whitelistedServices' => array('value' => '{}', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_JSON)),
144
  'bannedURLs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
@@ -194,7 +196,6 @@ class wfConfig {
194
  'keyType' => array('value' => wfLicense::KEY_TYPE_FREE, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
195
  'isPaid' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
196
  'hasKeyConflict' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
197
- 'betaThreatDefenseFeed' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
198
  'timeoffset_wf_updated' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
199
  'cacheType' => array('value' => 'disabled', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
200
  'detectProxyRecommendation' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
@@ -1328,6 +1329,14 @@ Options -ExecCGI
1328
  $checked = true;
1329
  break;
1330
  }
 
 
 
 
 
 
 
 
1331
  }
1332
  }
1333
 
@@ -1713,16 +1722,6 @@ Options -ExecCGI
1713
  $saved = true;
1714
  break;
1715
  }
1716
- case 'betaThreatDefenseFeed':
1717
- {
1718
- $value = wfUtils::truthyToBoolean($value);
1719
- wfConfig::set($key, $value);
1720
- if (class_exists('wfWAFConfig')) {
1721
- wfWAFConfig::set('betaThreatDefenseFeed', $value, 'synced');
1722
- }
1723
- $saved = true;
1724
- break;
1725
- }
1726
  case 'liveTraf_maxAge':
1727
  {
1728
  $value = max(1, $value);
@@ -1892,6 +1891,7 @@ Options -ExecCGI
1892
  'notification_blogHighlights',
1893
  'notification_productUpdates',
1894
  'notification_scanStatus',
 
1895
  'other_hideWPVersion',
1896
  'other_bypassLitespeedNoabort',
1897
  'deleteTablesOnDeact',
@@ -2032,7 +2032,6 @@ Options -ExecCGI
2032
  'debugOn',
2033
  'startScansRemotely',
2034
  'ssl_verify',
2035
- 'betaThreatDefenseFeed',
2036
  'wordfenceI18n',
2037
  );
2038
  break;
98
  "notification_blogHighlights" => array('value' => true, 'autoload' => self::AUTOLOAD),
99
  "notification_productUpdates" => array('value' => true, 'autoload' => self::AUTOLOAD),
100
  "notification_scanStatus" => array('value' => true, 'autoload' => self::AUTOLOAD),
101
+ "enableRemoteIpLookup" => array('value' => true, 'autoload' => self::AUTOLOAD),
102
  "other_hideWPVersion" => array('value' => false, 'autoload' => self::AUTOLOAD),
103
  "other_blockBadPOST" => array('value' => false, 'autoload' => self::AUTOLOAD),
104
  "other_scanComments" => array('value' => true, 'autoload' => self::AUTOLOAD),
140
  'scan_exclude' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
141
  'scan_maxIssues' => array('value' => 1000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
142
  'scan_maxDuration' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
143
+ "scan_max_resume_attempts" => array('value' => wfScanMonitor::DEFAULT_RESUME_ATTEMPTS, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
144
  'whitelisted' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
145
  'whitelistedServices' => array('value' => '{}', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_JSON)),
146
  'bannedURLs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
196
  'keyType' => array('value' => wfLicense::KEY_TYPE_FREE, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
197
  'isPaid' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
198
  'hasKeyConflict' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
 
199
  'timeoffset_wf_updated' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
200
  'cacheType' => array('value' => 'disabled', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
201
  'detectProxyRecommendation' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
1329
  $checked = true;
1330
  break;
1331
  }
1332
+ case 'scan_max_resume_attempts':
1333
+ {
1334
+ $value = (int) $value;
1335
+ wfScanMonitor::validateResumeAttempts($value, $valid);
1336
+ if (!$valid)
1337
+ $errors[] = array('option' => $key, 'error' => sprintf(__('Invalid number of scan resume attempts specified: %d', 'wordfence'), $value));
1338
+ break;
1339
+ }
1340
  }
1341
  }
1342
 
1722
  $saved = true;
1723
  break;
1724
  }
 
 
 
 
 
 
 
 
 
 
1725
  case 'liveTraf_maxAge':
1726
  {
1727
  $value = max(1, $value);
1891
  'notification_blogHighlights',
1892
  'notification_productUpdates',
1893
  'notification_scanStatus',
1894
+ 'enableRemoteIpLookup',
1895
  'other_hideWPVersion',
1896
  'other_bypassLitespeedNoabort',
1897
  'deleteTablesOnDeact',
2032
  'debugOn',
2033
  'startScansRemotely',
2034
  'ssl_verify',
 
2035
  'wordfenceI18n',
2036
  );
2037
  break;
lib/wfDiagnostic.php CHANGED
@@ -129,7 +129,7 @@ class wfDiagnostic
129
  'connectToServer1' => __('Connecting to Wordfence servers (http)', 'wordfence'),
130
  'connectToServer2' => __('Connecting to Wordfence servers (https)', 'wordfence'),
131
  'connectToSelf' => __('Connecting back to this site', 'wordfence'),
132
- 'connectToSelfIpv6' => __('Connecting back to this site via IPv6', 'wordfence'),
133
  'serverIP' => __('IP(s) used by this server', 'wordfence'),
134
  )
135
  ),
@@ -460,7 +460,7 @@ class wfDiagnostic
460
  }
461
 
462
  $processOwner = posix_getpwuid(posix_geteuid());
463
- if ($processOwner !== null)
464
  {
465
  return array(
466
  'test' => true,
129
  'connectToServer1' => __('Connecting to Wordfence servers (http)', 'wordfence'),
130
  'connectToServer2' => __('Connecting to Wordfence servers (https)', 'wordfence'),
131
  'connectToSelf' => __('Connecting back to this site', 'wordfence'),
132
+ 'connectToSelfIpv6' => array('raw' => true, 'value' => wp_kses(sprintf(__('Connecting back to this site via IPv6 (not required; failure to connect may not be an issue on some sites) <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_IPV6)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())))),
133
  'serverIP' => __('IP(s) used by this server', 'wordfence'),
134
  )
135
  ),
460
  }
461
 
462
  $processOwner = posix_getpwuid(posix_geteuid());
463
+ if ($processOwner !== false)
464
  {
465
  return array(
466
  'test' => true,
lib/wfIpLocation.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class wfIpLocation {
4
+
5
+ const LANGUAGE_DEFAULT = 'en';
6
+ const LANGUAGE_SEPARATOR = '_';
7
+
8
+ private $record;
9
+
10
+ public function __construct($record) {
11
+ $this->record = is_array($record) ? $record : array();
12
+ }
13
+
14
+ public function getCountryRecord() {
15
+ if (array_key_exists('country', $this->record)) {
16
+ $country = $this->record['country'];
17
+ if (is_array($country))
18
+ return $country;
19
+ }
20
+ return array();
21
+ }
22
+
23
+ public function getCountryField($field) {
24
+ $country = $this->getCountryRecord();
25
+ if (array_key_exists($field, $country))
26
+ return $country[$field];
27
+ return null;
28
+ }
29
+
30
+ public function getCountryCode() {
31
+ $isoCode = $this->getCountryField('iso_code');
32
+ if (is_string($isoCode) && strlen($isoCode) === 2)
33
+ return $isoCode;
34
+ return null;
35
+ }
36
+
37
+ private function findBestLanguageMatch($options, $preferredLanguage = self::LANGUAGE_DEFAULT) {
38
+ $languages = array();
39
+ if (is_string($preferredLanguage))
40
+ $languages[] = $preferredLanguage;
41
+ if (strpos($preferredLanguage, self::LANGUAGE_SEPARATOR) !== false) {
42
+ $components = explode(self::LANGUAGE_SEPARATOR, $preferredLanguage);
43
+ $baseLanguage = $components[0];
44
+ if ($baseLanguage !== self::LANGUAGE_DEFAULT)
45
+ $languages[] = $baseLanguage;
46
+ }
47
+ if ($preferredLanguage !== self::LANGUAGE_DEFAULT)
48
+ $languages[] = self::LANGUAGE_DEFAULT;
49
+ foreach ($languages as $language) {
50
+ if (array_key_exists($language, $options))
51
+ return $options[$language];
52
+ }
53
+ if (!empty($options))
54
+ return reset($options);
55
+ return null;
56
+ }
57
+
58
+ public function getCountryName($preferredLanguage = self::LANGUAGE_DEFAULT) {
59
+ $names = $this->getCountryField('names');
60
+ if (is_array($names) && !empty($names))
61
+ return $this->findBestLanguageMatch($names, $preferredLanguage);
62
+ return null;
63
+ }
64
+
65
+ }
lib/wfIpLocator.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once __DIR__ . '/../vendor/autoload.php';
4
+
5
+ require_once __DIR__ . '/wfIpLocation.php';
6
+
7
+ use Wordfence\MmdbReader\Database;
8
+ use Wordfence\MmdbReader\Exception\MmdbThrowable;
9
+
10
+ class wfIpLocator {
11
+
12
+ const SOURCE_BUNDLED = 0;
13
+ const SOURCE_WFLOGS = 1;
14
+
15
+ const DATABASE_FILE_NAME = 'GeoLite2-Country.mmdb';
16
+
17
+ private static $instances = array();
18
+
19
+ private $database;
20
+ private $preferred;
21
+
22
+ private function __construct($database, $preferred) {
23
+ $this->database = $database;
24
+ $this->preferred = $preferred;
25
+ }
26
+
27
+ public function isPreferred() {
28
+ return $this->preferred;
29
+ }
30
+
31
+ private static function logError($message) {
32
+ if (class_exists('wfUtils'))
33
+ wfUtils::check_and_log_last_error('ip_locator', 'IP Location Error:', $message, 0);
34
+ }
35
+
36
+ public function locate($ip) {
37
+ if ($this->database !== null) {
38
+ try {
39
+ $record = $this->database->search($ip);
40
+ if ($record !== null)
41
+ return new wfIpLocation($record);
42
+ }
43
+ catch (MmdbThrowable $t) {
44
+ self::logError('Failed to locate IP address: ' . $t->getMessage());
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+
50
+ public function getCountryCode($ip, $default = '') {
51
+ $record = $this->locate($ip);
52
+ if ($record !== null)
53
+ return $record->getCountryCode();
54
+ return $default;
55
+ }
56
+
57
+ public function getDatabaseVersion() {
58
+ if ($this->database !== null) {
59
+ try {
60
+ return $this->database->getMetadata()->getBuildEpoch();
61
+ }
62
+ catch (MmdbThrowable $t) {
63
+ self::logError('Failed to retrieve database version: ' . $t->getMessage());
64
+ }
65
+ }
66
+ return null;
67
+ }
68
+
69
+ private static function getDatabaseDirectory($source) {
70
+ switch ($source) {
71
+ case self::SOURCE_BUNDLED:
72
+ return WFWAF_LOG_PATH;
73
+ case self::SOURCE_BUNDLED:
74
+ default:
75
+ return __DIR__;
76
+ }
77
+ }
78
+
79
+ private static function initializeDatabase($preferredSource, &$isPreferred) {
80
+ $sources = array();
81
+ if ($preferredSource !== self::SOURCE_BUNDLED)
82
+ $sources[] = $preferredSource;
83
+ $sources[] = self::SOURCE_BUNDLED;
84
+ $isPreferred = true;
85
+ foreach ($sources as $source) {
86
+ $directory = self::getDatabaseDirectory($source);
87
+ try {
88
+ $path = $directory . '/' . self::DATABASE_FILE_NAME;
89
+ if (file_exists($path)) //Preemptive check to prevent warnings
90
+ return Database::open($path);
91
+ }
92
+ catch (MmdbThrowable $t) {
93
+ self::logError('Failed to initialize IP location database: ' . $t->getMessage());
94
+ }
95
+ $preferred = false;
96
+ }
97
+ return null;
98
+ }
99
+
100
+ public static function getInstance($preferredSource = null) {
101
+ if ($preferredSource === null)
102
+ $preferredSource = self::SOURCE_WFLOGS;
103
+ if (!array_key_exists($preferredSource, self::$instances)) {
104
+ $database = self::initializeDatabase($preferredSource, $isPreferred);
105
+ self::$instances[$preferredSource] = new wfIpLocator($database, $isPreferred);
106
+ }
107
+ return self::$instances[$preferredSource];
108
+ }
109
+
110
+ }
lib/wfScan.php CHANGED
@@ -96,7 +96,9 @@ class wfScan {
96
  }
97
  wfConfig::set('currentCronKey', '');
98
  /* --------- end cronkey check ---------- */
99
-
 
 
100
  $scanMode = wfScanner::SCAN_TYPE_STANDARD;
101
  if (isset($_GET['scanMode']) && wfScanner::isValidScanType($_GET['scanMode'])) {
102
  $scanMode = $_GET['scanMode'];
@@ -106,6 +108,8 @@ class wfScan {
106
  wfConfig::remove('scanStartAttempt');
107
  $isFork = ($_GET['isFork'] == '1' ? true : false);
108
 
 
 
109
  if(! $isFork){
110
  self::status(4, 'info', __("Checking if scan is already running", 'wordfence'));
111
  if(! wfUtils::getScanLock()){
96
  }
97
  wfConfig::set('currentCronKey', '');
98
  /* --------- end cronkey check ---------- */
99
+
100
+ wfScanMonitor::logLastSuccess();
101
+
102
  $scanMode = wfScanner::SCAN_TYPE_STANDARD;
103
  if (isset($_GET['scanMode']) && wfScanner::isValidScanType($_GET['scanMode'])) {
104
  $scanMode = $_GET['scanMode'];
108
  wfConfig::remove('scanStartAttempt');
109
  $isFork = ($_GET['isFork'] == '1' ? true : false);
110
 
111
+ wfScanMonitor::handleStageStart($isFork);
112
+
113
  if(! $isFork){
114
  self::status(4, 'info', __("Checking if scan is already running", 'wordfence'));
115
  if(! wfUtils::getScanLock()){
lib/wfScanEngine.php CHANGED
@@ -448,6 +448,8 @@ class wfScanEngine {
448
  wfUtils::formatBytes($peakMemory)
449
  ));
450
 
 
 
451
  if ($this->isFullScan()) {
452
  $this->status(1, 'info', sprintf(
453
  /* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */
@@ -2112,26 +2114,38 @@ class wfScanEngine {
2112
  }
2113
  }
2114
 
2115
- //Other vulnerable plugins
2116
- //Disabled until we improve the data source to weed out false positives
2117
- /*if (count($allPlugins) > 0) {
2118
- foreach ($allPlugins as $plugin) {
2119
- if (!isset($plugin['vulnerable']) || !$plugin['vulnerable']) {
2120
- continue;
2121
- }
2122
-
2123
- $key = 'wfPluginVulnerable' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['Version'];
2124
- $shortMsg = "The Plugin \"" . $plugin['Name'] . "\" has an unpatched security vulnerability.";
2125
- $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" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>';
2126
- $added = $this->addIssue('wfPluginVulnerable', 1, $key, $key, $shortMsg, $longMsg, $plugin);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2127
  if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
2128
  else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
2129
 
2130
- if (isset($plugin['slug'])) {
2131
- unset($allPlugins[$plugin['slug']]);
2132
- }
2133
  }
2134
- }*/
2135
  }
2136
 
2137
  $this->updateCheck = false;
@@ -2368,6 +2382,7 @@ class wfScanEngine {
2368
  }
2369
 
2370
  public static function requestKill() {
 
2371
  wfConfig::set('wfKillRequested', time(), wfConfig::DONT_AUTOLOAD);
2372
  }
2373
 
@@ -2397,7 +2412,9 @@ class wfScanEngine {
2397
  return __("A scan is already running. Use the stop scan button if you would like to terminate the current scan.", 'wordfence');
2398
  }
2399
  wfConfig::set('currentCronKey', ''); //Ensure the cron key is cleared
 
2400
  }
 
2401
  $timeout = self::getMaxExecutionTime() - 2; //2 seconds shorter than max execution time which ensures that only 2 HTTP processes are ever occupied
2402
  $testURL = admin_url('admin-ajax.php?action=wordfence_testAjax');
2403
  $forceIpv4 = wfConfig::get('scan_force_ipv4_start');
@@ -2405,25 +2422,34 @@ class wfScanEngine {
2405
  if ($forceIpv4)
2406
  $interceptor->setOption(CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
2407
  if (!wfConfig::get('startScansRemotely', false)) {
2408
- try {
2409
- $testResult = $interceptor->intercept(function () use ($testURL, $timeout) {
2410
- return wp_remote_post($testURL, array(
2411
- 'timeout' => $timeout,
2412
- 'blocking' => true,
2413
- 'sslverify' => false,
2414
- 'headers' => array()
2415
- ));
2416
- });
2417
- } catch (Exception $e) {
2418
- //Fall through to the remote start test below
2419
- }
 
 
 
 
 
2420
 
2421
- wordfence::status(4, 'info', sprintf(/* translators: Support URL. */ __("Test result of scan start URL fetch: %s", 'wordfence'), var_export($testResult, true)));
 
 
 
 
2422
  }
2423
 
2424
  $cronKey = wfUtils::bigRandomHex();
2425
  wfConfig::set('currentCronKey', time() . ',' . $cronKey);
2426
- if ((!wfConfig::get('startScansRemotely', false)) && (!is_wp_error($testResult)) && (is_array($testResult) || $testResult instanceof ArrayAccess) && strstr($testResult['body'], 'WFSCANTESTOK') !== false) {
2427
  //ajax requests can be sent by the server to itself
2428
  $cronURL = self::_localStartURL($isFork, $scanMode, $cronKey);
2429
  $headers = array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/);
448
  wfUtils::formatBytes($peakMemory)
449
  ));
450
 
451
+ wfScanMonitor::endMonitoring();
452
+
453
  if ($this->isFullScan()) {
454
  $this->status(1, 'info', sprintf(
455
  /* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */
2114
  }
2115
  }
2116
 
2117
+ //Handle plugins that either do not exist in the repo or do not have updates available
2118
+ foreach ($allPlugins as $slug => $plugin) {
2119
+ if ($plugin['vulnerable']) {
2120
+ $key = implode(' ', array('wfPluginVulnerable', $plugin['pluginFile'], $plugin['Version']));
2121
+ $shortMsg = sprintf(__('The Plugin "%s" has a security vulnerability.', 'wordfence'), $plugin['Name']);
2122
+ $longMsg = sprintf(
2123
+ wp_kses(
2124
+ __('To protect your site from this vulnerability, the safest option is to deactivate and completely remove "%s" until a patched version is available. <a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'),
2125
+ array(
2126
+ 'a' => array(
2127
+ 'href' => array(),
2128
+ 'target' => array(),
2129
+ 'rel' => array(),
2130
+ ),
2131
+ 'span' => array(
2132
+ 'class' => array()
2133
+ )
2134
+ )
2135
+ ),
2136
+ $plugin['Name'],
2137
+ wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_VULNERABLE)
2138
+ );
2139
+ if (is_string($plugin['vulnerable']))
2140
+ $plugin['vulnerabilityLink'] = $plugin['vulnerable'];
2141
+ $plugin['updatedAvailable'] = false;
2142
+ $added = $this->addIssue('wfPluginVulnerable', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $plugin);
2143
  if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
2144
  else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
2145
 
2146
+ unset($allPlugins[$slug]);
 
 
2147
  }
2148
+ }
2149
  }
2150
 
2151
  $this->updateCheck = false;
2382
  }
2383
 
2384
  public static function requestKill() {
2385
+ wfScanMonitor::endMonitoring();
2386
  wfConfig::set('wfKillRequested', time(), wfConfig::DONT_AUTOLOAD);
2387
  }
2388
 
2412
  return __("A scan is already running. Use the stop scan button if you would like to terminate the current scan.", 'wordfence');
2413
  }
2414
  wfConfig::set('currentCronKey', ''); //Ensure the cron key is cleared
2415
+ wfScanMonitor::handleScanStart($scanMode);
2416
  }
2417
+ wfScanMonitor::logLastAttempt($isFork);
2418
  $timeout = self::getMaxExecutionTime() - 2; //2 seconds shorter than max execution time which ensures that only 2 HTTP processes are ever occupied
2419
  $testURL = admin_url('admin-ajax.php?action=wordfence_testAjax');
2420
  $forceIpv4 = wfConfig::get('scan_force_ipv4_start');
2422
  if ($forceIpv4)
2423
  $interceptor->setOption(CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
2424
  if (!wfConfig::get('startScansRemotely', false)) {
2425
+ if ($isFork) {
2426
+ $testSuccessful = (bool) wfConfig::get('scanAjaxTestSuccessful');
2427
+ wordfence::status(4, 'info', sprintf(__("Cached result for scan start test: %s", 'wordfence'), var_export($testSuccessful, true)));
2428
+ }
2429
+ else {
2430
+ try {
2431
+ $testResult = $interceptor->intercept(function () use ($testURL, $timeout) {
2432
+ return wp_remote_post($testURL, array(
2433
+ 'timeout' => $timeout,
2434
+ 'blocking' => true,
2435
+ 'sslverify' => false,
2436
+ 'headers' => array()
2437
+ ));
2438
+ });
2439
+ } catch (Exception $e) {
2440
+ //Fall through to the remote start test below
2441
+ }
2442
 
2443
+ wordfence::status(4, 'info', sprintf(/* translators: Scan start test result data. */ __("Test result of scan start URL fetch: %s", 'wordfence'), var_export($testResult, true)));
2444
+
2445
+ $testSuccessful = !is_wp_error($testResult) && (is_array($testResult) || $testResult instanceof ArrayAccess) && strstr($testResult['body'], 'WFSCANTESTOK') !== false;
2446
+ wfConfig::set('scanAjaxTestSuccessful', $testSuccessful);
2447
+ }
2448
  }
2449
 
2450
  $cronKey = wfUtils::bigRandomHex();
2451
  wfConfig::set('currentCronKey', time() . ',' . $cronKey);
2452
+ if ((!wfConfig::get('startScansRemotely', false)) && $testSuccessful) {
2453
  //ajax requests can be sent by the server to itself
2454
  $cronURL = self::_localStartURL($isFork, $scanMode, $cronKey);
2455
  $headers = array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/);
lib/wfScanMonitor.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class wfScanMonitor {
4
+
5
+ const CRON_INTERVAL_NAME = 'wf_scan_monitor_interval';
6
+ const CRON_INTERVAL_AMOUNT = 60; //Seconds
7
+ const CRON_HOOK = 'wf_scan_monitor';
8
+
9
+ const CONFIG_LAST_ATTEMPT = 'scanMonitorLastAttempt';
10
+ const CONFIG_LAST_ATTEMPT_WAS_FORK = 'scanMonitorLastAttemptWasFork';
11
+ const CONFIG_LAST_ATTEMPT_MODE = 'scanMonitorLastAttemptMode';
12
+ const CONFIG_LAST_SUCCESS = 'scanMonitorLastSuccess';
13
+ const CONFIG_MAX_RESUME_ATTEMPTS = 'scan_max_resume_attempts';
14
+ const CONFIG_REMAINING_RESUME_ATTEMPTS = 'scanMonitorRemainingResumeAttempts';
15
+
16
+ const DEFAULT_RESUME_ATTEMPTS = 2;
17
+ const MAX_RESUME_ATTEMPTS = 5;
18
+ const SCAN_START_TIMEOUT = 30; //Seconds
19
+
20
+ public static function beginMonitoring() {
21
+ if (wp_next_scheduled(self::CRON_HOOK))
22
+ return;
23
+ wp_schedule_event(time(), self::CRON_INTERVAL_NAME, self::CRON_HOOK);
24
+ }
25
+
26
+ public static function endMonitoring() {
27
+ $timestamp = wp_next_scheduled(self::CRON_HOOK);
28
+ if ($timestamp !== false)
29
+ wp_unschedule_event($timestamp, self::CRON_HOOK);
30
+ }
31
+
32
+ public static function validateResumeAttempts($attempts, &$valid = null) {
33
+ if ($attempts < 0 || $attempts > self::MAX_RESUME_ATTEMPTS) {
34
+ $valid = false;
35
+ return self::DEFAULT_RESUME_ATTEMPTS;
36
+ }
37
+ $valid = true;
38
+ return $attempts;
39
+ }
40
+
41
+ private static function setRemainingResumeAttempts($attempts) {
42
+ wfConfig::set(self::CONFIG_REMAINING_RESUME_ATTEMPTS, $attempts);
43
+ }
44
+
45
+ public static function getConfiguredResumeAttempts() {
46
+ $attempts = (int) wfConfig::get(self::CONFIG_MAX_RESUME_ATTEMPTS, self::DEFAULT_RESUME_ATTEMPTS);
47
+ return self::validateResumeAttempts($attempts);
48
+ }
49
+
50
+ private static function resetResumeAttemptCounter() {
51
+ $attempts = self::getConfiguredResumeAttempts();
52
+ self::setRemainingResumeAttempts($attempts);
53
+ return $attempts;
54
+ }
55
+
56
+ private static function getRemainingResumeAttempts() {
57
+ $attempts = (int) wfConfig::get(self::CONFIG_REMAINING_RESUME_ATTEMPTS, 0);
58
+ return self::validateResumeAttempts($attempts);
59
+ }
60
+
61
+ public static function handleScanStart($mode) {
62
+ wfConfig::set(self::CONFIG_LAST_ATTEMPT_MODE, $mode);
63
+ $maxAttempts = self::resetResumeAttemptCounter();
64
+ if ($maxAttempts > 0)
65
+ self::beginMonitoring();
66
+ }
67
+
68
+ public static function monitorScan() {
69
+ $remainingAttempts = self::getRemainingResumeAttempts();
70
+ if ($remainingAttempts > 0) {
71
+ $now = time();
72
+ $lastAttempt = wfConfig::get(self::CONFIG_LAST_ATTEMPT);
73
+ if ($lastAttempt === null || $now - $lastAttempt < self::SCAN_START_TIMEOUT)
74
+ return;
75
+ $lastSuccess = wfConfig::get(self::CONFIG_LAST_SUCCESS);
76
+ if ($lastSuccess === null || $lastAttempt > $lastSuccess) {
77
+ self::setRemainingResumeAttempts(--$remainingAttempts);
78
+ wordfence::status(2, 'info', sprintf(__('Attempting to resume scan stage (%d attempt(s) remaining)...', 'wordfence'), $remainingAttempts));
79
+ self::resumeScan();
80
+ }
81
+ }
82
+ else {
83
+ self::endMonitoring();
84
+ }
85
+ }
86
+
87
+ private static function resumeScan() {
88
+ $mode = wfConfig::get(self::CONFIG_LAST_ATTEMPT_MODE);
89
+ if (!wfScanner::isValidScanType($mode))
90
+ $mode = false;
91
+ wfScanEngine::startScan(wfConfig::get(self::CONFIG_LAST_ATTEMPT_WAS_FORK), $mode);
92
+ }
93
+
94
+ private static function logTimestamp($key) {
95
+ wfConfig::set($key, time());
96
+ }
97
+
98
+ public static function logLastAttempt($fork) {
99
+ self::logTimestamp(self::CONFIG_LAST_ATTEMPT);
100
+ wfConfig::set(self::CONFIG_LAST_ATTEMPT_WAS_FORK, $fork);
101
+ }
102
+
103
+ public static function logLastSuccess() {
104
+ self::logTimestamp(self::CONFIG_LAST_SUCCESS);
105
+ }
106
+
107
+ public static function handleStageStart($fork) {
108
+ if ($fork)
109
+ self::resetResumeAttemptCounter();
110
+ }
111
+
112
+ public static function registerCronInterval($schedules) {
113
+ if (!array_key_exists(self::CRON_INTERVAL_NAME, $schedules)) {
114
+ $schedules[self::CRON_INTERVAL_NAME] = array(
115
+ 'interval' => self::CRON_INTERVAL_AMOUNT,
116
+ 'display' => 'Wordfence Scan Monitor'
117
+ );
118
+ }
119
+ return $schedules;
120
+ }
121
+
122
+ public static function registerActions() {
123
+ add_filter('cron_schedules', array(get_class(), 'registerCronInterval'));
124
+ add_action(self::CRON_HOOK, array(get_class(), 'monitorScan'));
125
+ }
126
+
127
+ public static function handleDeactivation() {
128
+ self::endMonitoring();
129
+ }
130
+
131
+ }
lib/wfSupportController.php CHANGED
@@ -25,6 +25,8 @@ class wfSupportController {
25
 
26
  const ITEM_GDPR = 'gdpr';
27
  const ITEM_GDPR_DPA = 'gdpr-dpa';
 
 
28
 
29
  const ITEM_DASHBOARD = 'dashboard';
30
  const ITEM_DASHBOARD_STATUS_FIREWALL = 'dashboard-status-firewall';
@@ -135,6 +137,7 @@ class wfSupportController {
135
  const ITEM_SCAN_OPTION_STAGE_TIME_LIMIT = 'scan-option-stage-time-limit';
136
  const ITEM_SCAN_OPTION_EXCLUDE_PATTERNS = 'scan-option-exclude-patterns';
137
  const ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES = 'scan-option-custom-malware-signatures';
 
138
  const ITEM_SCAN_TIME_LIMIT = 'scan-time-limit';
139
  const ITEM_SCAN_FAILS = 'scan-fails';
140
  const ITEM_SCAN_FAILED_START = 'scan-failed-start';
@@ -151,6 +154,7 @@ class wfSupportController {
151
  const ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES = 'scan-result-repair-modified-files';
152
  const ITEM_SCAN_RESULT_MODIFIED_PLUGIN = 'scan-result-modified-plugin';
153
  const ITEM_SCAN_RESULT_MODIFIED_THEME = 'scan-result-modified-theme';
 
154
 
155
  const ITEM_TOOLS_TWO_FACTOR = 'tools-two-factor';
156
  const ITEM_TOOLS_LIVE_TRAFFIC = 'tools-live-traffic';
@@ -158,6 +162,7 @@ class wfSupportController {
158
  const ITEM_TOOLS_WHOIS_LOOKUP = 'tools-whois-lookup';
159
  const ITEM_TOOLS_IMPORT_EXPORT = 'tools-import-export';
160
 
 
161
  const ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION = 'diagnostics-system-configuration';
162
  const ITEM_DIAGNOSTICS_TEST_MEMORY = 'diagnostics-test-memory';
163
  const ITEM_DIAGNOSTICS_TEST_EMAIL = 'diagnostics-test-email';
@@ -169,6 +174,7 @@ class wfSupportController {
169
  const ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT = 'diagnostics-option-disable-php-input';
170
  const ITEM_DIAGNOSTICS_OPTION_BETA_TDF = 'diagnostics-option-beta-tdf';
171
  const ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS = 'diagnostics-option-wordfence-translations';
 
172
 
173
  const ITEM_MODULE_LOGIN_SECURITY = 'module-login-security';
174
  const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
@@ -208,6 +214,8 @@ class wfSupportController {
208
 
209
  case self::ITEM_GDPR:
210
  case self::ITEM_GDPR_DPA:
 
 
211
 
212
  case self::ITEM_DASHBOARD:
213
  case self::ITEM_DASHBOARD_STATUS_FIREWALL:
@@ -323,6 +331,7 @@ class wfSupportController {
323
  case self::ITEM_SCAN_OPTION_STAGE_TIME_LIMIT:
324
  case self::ITEM_SCAN_OPTION_EXCLUDE_PATTERNS:
325
  case self::ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES:
 
326
  case self::ITEM_SCAN_RESULT_PUBLIC_CONFIG:
327
  case self::ITEM_SCAN_RESULT_PLUGIN_ABANDONED:
328
  case self::ITEM_SCAN_RESULT_PLUGIN_REMOVED:
@@ -334,6 +343,7 @@ class wfSupportController {
334
  case self::ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES:
335
  case self::ITEM_SCAN_RESULT_MODIFIED_PLUGIN:
336
  case self::ITEM_SCAN_RESULT_MODIFIED_THEME:
 
337
 
338
  case self::ITEM_TOOLS_TWO_FACTOR:
339
  case self::ITEM_TOOLS_LIVE_TRAFFIC:
@@ -341,6 +351,7 @@ class wfSupportController {
341
  case self::ITEM_TOOLS_WHOIS_LOOKUP:
342
  case self::ITEM_TOOLS_IMPORT_EXPORT:
343
 
 
344
  case self::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION:
345
  case self::ITEM_DIAGNOSTICS_TEST_MEMORY:
346
  case self::ITEM_DIAGNOSTICS_TEST_EMAIL:
@@ -352,6 +363,7 @@ class wfSupportController {
352
  case self::ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT:
353
  case self::ITEM_DIAGNOSTICS_OPTION_BETA_TDF:
354
  case self::ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS:
 
355
 
356
  case self::ITEM_MODULE_LOGIN_SECURITY:
357
  case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
25
 
26
  const ITEM_GDPR = 'gdpr';
27
  const ITEM_GDPR_DPA = 'gdpr-dpa';
28
+
29
+ const ITEM_GENERAL_REMOTE_IP_LOOKUP = 'general-remote-ip-lookup';
30
 
31
  const ITEM_DASHBOARD = 'dashboard';
32
  const ITEM_DASHBOARD_STATUS_FIREWALL = 'dashboard-status-firewall';
137
  const ITEM_SCAN_OPTION_STAGE_TIME_LIMIT = 'scan-option-stage-time-limit';
138
  const ITEM_SCAN_OPTION_EXCLUDE_PATTERNS = 'scan-option-exclude-patterns';
139
  const ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES = 'scan-option-custom-malware-signatures';
140
+ const ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS = 'scan-option-max-resume-attempts';
141
  const ITEM_SCAN_TIME_LIMIT = 'scan-time-limit';
142
  const ITEM_SCAN_FAILS = 'scan-fails';
143
  const ITEM_SCAN_FAILED_START = 'scan-failed-start';
154
  const ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES = 'scan-result-repair-modified-files';
155
  const ITEM_SCAN_RESULT_MODIFIED_PLUGIN = 'scan-result-modified-plugin';
156
  const ITEM_SCAN_RESULT_MODIFIED_THEME = 'scan-result-modified-theme';
157
+ const ITEM_SCAN_RESULT_PLUGIN_VULNERABLE = 'scan-result-plugin-vulnerable';
158
 
159
  const ITEM_TOOLS_TWO_FACTOR = 'tools-two-factor';
160
  const ITEM_TOOLS_LIVE_TRAFFIC = 'tools-live-traffic';
162
  const ITEM_TOOLS_WHOIS_LOOKUP = 'tools-whois-lookup';
163
  const ITEM_TOOLS_IMPORT_EXPORT = 'tools-import-export';
164
 
165
+ const ITEM_DIAGNOSTICS = 'diagnostics';
166
  const ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION = 'diagnostics-system-configuration';
167
  const ITEM_DIAGNOSTICS_TEST_MEMORY = 'diagnostics-test-memory';
168
  const ITEM_DIAGNOSTICS_TEST_EMAIL = 'diagnostics-test-email';
174
  const ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT = 'diagnostics-option-disable-php-input';
175
  const ITEM_DIAGNOSTICS_OPTION_BETA_TDF = 'diagnostics-option-beta-tdf';
176
  const ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS = 'diagnostics-option-wordfence-translations';
177
+ const ITEM_DIAGNOSTICS_IPV6 = 'diagnostics-ipv6';
178
 
179
  const ITEM_MODULE_LOGIN_SECURITY = 'module-login-security';
180
  const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
214
 
215
  case self::ITEM_GDPR:
216
  case self::ITEM_GDPR_DPA:
217
+
218
+ case self::ITEM_GENERAL_REMOTE_IP_LOOKUP:
219
 
220
  case self::ITEM_DASHBOARD:
221
  case self::ITEM_DASHBOARD_STATUS_FIREWALL:
331
  case self::ITEM_SCAN_OPTION_STAGE_TIME_LIMIT:
332
  case self::ITEM_SCAN_OPTION_EXCLUDE_PATTERNS:
333
  case self::ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES:
334
+ case self::ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS:
335
  case self::ITEM_SCAN_RESULT_PUBLIC_CONFIG:
336
  case self::ITEM_SCAN_RESULT_PLUGIN_ABANDONED:
337
  case self::ITEM_SCAN_RESULT_PLUGIN_REMOVED:
343
  case self::ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES:
344
  case self::ITEM_SCAN_RESULT_MODIFIED_PLUGIN:
345
  case self::ITEM_SCAN_RESULT_MODIFIED_THEME:
346
+ case self::ITEM_SCAN_RESULT_PLUGIN_VULNERABLE:
347
 
348
  case self::ITEM_TOOLS_TWO_FACTOR:
349
  case self::ITEM_TOOLS_LIVE_TRAFFIC:
351
  case self::ITEM_TOOLS_WHOIS_LOOKUP:
352
  case self::ITEM_TOOLS_IMPORT_EXPORT:
353
 
354
+ case self::ITEM_DIAGNOSTICS:
355
  case self::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION:
356
  case self::ITEM_DIAGNOSTICS_TEST_MEMORY:
357
  case self::ITEM_DIAGNOSTICS_TEST_EMAIL:
363
  case self::ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT:
364
  case self::ITEM_DIAGNOSTICS_OPTION_BETA_TDF:
365
  case self::ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS:
366
+ case self::ITEM_DIAGNOSTICS_IPV6:
367
 
368
  case self::ITEM_MODULE_LOGIN_SECURITY:
369
  case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
lib/wfUpdateCheck.php CHANGED
@@ -110,6 +110,70 @@ class wfUpdateCheck {
110
  return $this;
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  /**
114
  * Check if any plugins need an update.
115
  *
@@ -121,22 +185,9 @@ class wfUpdateCheck {
121
  if($checkVulnerabilities)
122
  $this->plugin_updates = array();
123
 
124
- if (!function_exists('wp_update_plugins')) {
125
- require_once(ABSPATH . WPINC . '/update.php');
126
- }
127
 
128
- if (!function_exists('plugins_api')) {
129
- require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
130
- }
131
-
132
- $update_plugins = get_site_transient('update_plugins');
133
- if ($useCachedValued && isset($update_plugins->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_plugins->last_checked)) { //Duplicate of _maybe_update_plugins, which is a private call
134
- //Do nothing, use cached value
135
- }
136
- else {
137
- wp_update_plugins();
138
- $update_plugins = get_site_transient('update_plugins');
139
- }
140
 
141
  //Get the full plugin list
142
  if (!function_exists('get_plugins')) {
@@ -144,121 +195,37 @@ class wfUpdateCheck {
144
  }
145
  $installedPlugins = get_plugins();
146
 
 
 
147
  if ($update_plugins && !empty($update_plugins->response)) {
148
  foreach ($update_plugins->response as $plugin => $vals) {
149
- if (!function_exists('get_plugin_data')) {
150
- require_once(ABSPATH . '/wp-admin/includes/plugin.php');
151
- }
152
-
153
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
154
- if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled
155
- unset($installedPlugins[$plugin]);
156
- continue;
157
- }
158
-
159
- $valsArray = (array) $vals;
160
-
161
- $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
162
- if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
163
- if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) {
164
- $slug = $matches[1];
165
- }
166
- else if (preg_match('/^([^\/.]+)\.php$/', $pluginFile, $matches)) {
167
- $slug = $matches[1];
168
- }
169
- }
170
-
171
- $data = get_plugin_data($pluginFile);
172
- $data['pluginFile'] = $pluginFile;
173
- $data['newVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
174
- $data['slug'] = $slug;
175
- $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null);
176
-
177
- //Check the vulnerability database
178
- if ($slug !== null && isset($data['Version']) && $checkVulnerabilities) {
179
- $status = $this->isPluginVulnerable($slug, $data['Version']);
180
- $data['vulnerable'] = !!$status;
181
- if (is_string($status)) {
182
- $data['vulnerabilityLink'] = $status;
183
- }
184
- }
185
- else {
186
- $data['vulnerable'] = false;
187
- }
188
-
189
- if ($slug !== null) {
190
- $this->plugin_slugs[] = $slug;
191
- $this->all_plugins[$slug] = $data;
192
- }
193
 
194
- if($checkVulnerabilities)
195
  $this->plugin_updates[] = $data;
196
- unset($installedPlugins[$plugin]);
197
  }
198
  }
199
 
200
  //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
201
  if ($update_plugins && !empty($update_plugins->no_update)) {
202
  foreach ($update_plugins->no_update as $plugin => $vals) {
203
- if (!function_exists('get_plugin_data')) {
204
- require_once(ABSPATH . '/wp-admin/includes/plugin.php');
205
- }
206
-
207
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
208
- if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled
209
- unset($installedPlugins[$plugin]);
210
- continue;
211
- }
212
-
213
- $valsArray = (array) $vals;
214
-
215
- $data = get_plugin_data($pluginFile);
216
- $data['pluginFile'] = $pluginFile;
217
- $data['slug'] = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
218
- $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null);
219
-
220
- //Check the vulnerability database
221
- if (isset($valsArray['slug']) && isset($data['Version']) && $checkVulnerabilities) {
222
- $status = $this->isPluginVulnerable($valsArray['slug'], $data['Version']);
223
- $data['vulnerable'] = !!$status;
224
- if (is_string($status)) {
225
- $data['vulnerabilityLink'] = $status;
226
- }
227
- }
228
- else {
229
- $data['vulnerable'] = false;
230
- }
231
-
232
- if (isset($valsArray['slug'])) {
233
- $this->plugin_slugs[] = $valsArray['slug'];
234
- $this->all_plugins[$valsArray['slug']] = $data;
235
- }
236
-
237
- unset($installedPlugins[$plugin]);
238
  }
239
  }
240
 
241
  //Get the remaining plugins (not in the wordpress.org repo for whatever reason)
242
  foreach ($installedPlugins as $plugin => $data) {
243
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
244
- if (!file_exists($pluginFile)) { //Plugin has been removed since the list was generated
245
- continue;
246
- }
247
-
248
- $data = get_plugin_data($pluginFile);
249
-
250
- $slug = null;
251
- if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
252
- $slug = $matches[1];
253
- }
254
- else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
255
- $slug = $matches[1];
256
- }
257
-
258
- if ($slug !== null) {
259
- $this->plugin_slugs[] = $slug;
260
- $this->all_plugins[$slug] = $data;
261
- }
262
  }
263
 
264
  return $this;
@@ -322,17 +289,28 @@ class wfUpdateCheck {
322
  $this->checkThemeVulnerabilities();
323
  }
324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  /**
326
  * @param bool $initial if true, treat as the initial scan run
327
  */
328
  public function checkPluginVulnerabilities($initial=false) {
329
- if (!function_exists('wp_update_plugins')) {
330
- require_once(ABSPATH . WPINC . '/update.php');
331
- }
332
-
333
- if (!function_exists('plugins_api')) {
334
- require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
335
- }
336
 
337
  $vulnerabilities = array();
338
 
@@ -343,100 +321,24 @@ class wfUpdateCheck {
343
  $installedPlugins = get_plugins();
344
 
345
  //Get the info for plugins on wordpress.org
346
- $this->checkPluginUpdates(!$initial, false);
347
- $update_plugins = get_site_transient('update_plugins');
348
  if ($update_plugins) {
349
- if (!function_exists('get_plugin_data'))
350
- {
351
- require_once(ABSPATH . '/wp-admin/includes/plugin.php');
352
- }
353
-
354
  if (!empty($update_plugins->response)) {
355
  foreach ($update_plugins->response as $plugin => $vals) {
356
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
357
- if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled
358
- unset($installedPlugins[$plugin]);
359
- continue;
360
- }
361
-
362
- $valsArray = (array) $vals;
363
- $data = get_plugin_data($pluginFile);
364
-
365
- $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
366
- if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
367
- if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
368
- $slug = $matches[1];
369
- }
370
- else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
371
- $slug = $matches[1];
372
- }
373
- }
374
-
375
- $record = array();
376
- $record['slug'] = $slug;
377
- $record['toVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
378
- $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown');
379
- $record['vulnerable'] = false;
380
- $vulnerabilities[] = $record;
381
-
382
- unset($installedPlugins[$plugin]);
383
  }
384
  }
385
 
386
  if (!empty($update_plugins->no_update)) {
387
  foreach ($update_plugins->no_update as $plugin => $vals) {
388
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
389
- if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled
390
- unset($installedPlugins[$plugin]);
391
- continue;
392
- }
393
-
394
- $valsArray = (array) $vals;
395
- $data = get_plugin_data($pluginFile);
396
-
397
- $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null);
398
- if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess
399
- if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
400
- $slug = $matches[1];
401
- }
402
- else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
403
- $slug = $matches[1];
404
- }
405
- }
406
-
407
- $record = array();
408
- $record['slug'] = $slug;
409
- $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown');
410
- $record['vulnerable'] = false;
411
- $vulnerabilities[] = $record;
412
-
413
- unset($installedPlugins[$plugin]);
414
  }
415
  }
416
  }
417
 
418
  //Get the remaining plugins (not in the wordpress.org repo for whatever reason)
419
  foreach ($installedPlugins as $plugin => $data) {
420
- $pluginFile = wfUtils::getPluginBaseDir() . $plugin;
421
- if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled
422
- continue;
423
- }
424
-
425
- $data = get_plugin_data($pluginFile);
426
-
427
- $slug = null;
428
- if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
429
- $slug = $matches[1];
430
- }
431
- else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
432
- $slug = $matches[1];
433
- }
434
-
435
- $record = array();
436
- $record['slug'] = $slug;
437
- $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown');
438
- $record['vulnerable'] = false;
439
- $vulnerabilities[] = $record;
440
  }
441
 
442
  if (count($vulnerabilities) > 0) {
@@ -474,9 +376,7 @@ class wfUpdateCheck {
474
  require_once(ABSPATH . WPINC . '/update.php');
475
  }
476
 
477
- if (!function_exists('plugins_api')) {
478
- require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
479
- }
480
 
481
  $this->checkThemeUpdates(!$initial, false);
482
  $update_themes = get_site_transient('update_themes');
@@ -605,4 +505,4 @@ class wfUpdateCheck {
605
  public function getThemeUpdates() {
606
  return $this->theme_updates;
607
  }
608
- }
110
  return $this;
111
  }
112
 
113
+ private function checkPluginFile($plugin, &$installedPlugins) {
114
+ if (!array_key_exists($plugin, $installedPlugins))
115
+ return null;
116
+ $file = wfUtils::getPluginBaseDir() . $plugin;
117
+ if (!file_exists($file)) {
118
+ unset($installedPlugins[$plugin]);
119
+ return null;
120
+ }
121
+ return $file;
122
+ }
123
+
124
+ private function initializePluginUpdateData($plugin, &$installedPlugins, $checkVulnerabilities, $populator = null) {
125
+ $file = $this->checkPluginFile($plugin, $installedPlugins);
126
+ if ($file === null)
127
+ return null;
128
+ $data = $installedPlugins[$plugin];
129
+ $data['pluginFile'] = $file;
130
+ if ($populator !== null)
131
+ $populator($data, $file);
132
+ if (!array_key_exists('slug', $data) || empty($data['slug']))
133
+ $data['slug'] = $this->extractSlug($plugin);
134
+ $slug = $data['slug'];
135
+ if ($slug !== null) {
136
+ $vulnerable = $checkVulnerabilities ? $this->isPluginVulnerable($slug, $data['Version']) : null;
137
+ $data['vulnerable'] = !empty($vulnerable);
138
+ if ($data['vulnerable'] && is_string($vulnerable))
139
+ $data['vulnerabilityLink'] = $vulnerable;
140
+ $this->plugin_slugs[] = $slug;
141
+ $this->all_plugins[$slug] = $data;
142
+ }
143
+ unset($installedPlugins[$plugin]);
144
+ return $data;
145
+ }
146
+
147
+ public function extractSlug($plugin, $data = null) {
148
+ $slug = null;
149
+ if (is_array($data) && array_key_exists('slug', $data))
150
+ $slug = $data['slug'];
151
+ if (!is_string($slug) || empty($slug)) {
152
+ if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
153
+ $slug = $matches[1];
154
+ }
155
+ else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
156
+ $slug = $matches[1];
157
+ }
158
+ }
159
+ return $slug;
160
+ }
161
+
162
+ private static function requirePluginsApi() {
163
+ if (!function_exists('plugins_api'))
164
+ require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
165
+ }
166
+
167
+ private function fetchPluginUpdates($useCache = true) {
168
+ $update_plugins = get_site_transient('update_plugins');
169
+ if ($useCache && isset($update_plugins->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_plugins->last_checked)) //Duplicate of _maybe_update_plugins, which is a private call
170
+ return $update_plugins;
171
+ if (!function_exists('wp_update_plugins'))
172
+ require_once(ABSPATH . WPINC . '/update.php');
173
+ wp_update_plugins();
174
+ return get_site_transient('update_plugins');
175
+ }
176
+
177
  /**
178
  * Check if any plugins need an update.
179
  *
185
  if($checkVulnerabilities)
186
  $this->plugin_updates = array();
187
 
188
+ self::requirePluginsApi();
 
 
189
 
190
+ $update_plugins = $this->fetchPluginUpdates();
 
 
 
 
 
 
 
 
 
 
 
191
 
192
  //Get the full plugin list
193
  if (!function_exists('get_plugins')) {
195
  }
196
  $installedPlugins = get_plugins();
197
 
198
+ $context = $this;
199
+
200
  if ($update_plugins && !empty($update_plugins->response)) {
201
  foreach ($update_plugins->response as $plugin => $vals) {
202
+ $data = $this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities, function (&$data, $file) use ($context, $plugin, $vals) {
203
+ $vals = (array) $vals;
204
+ $data['slug'] = $context->extractSlug($plugin, $vals);
205
+ $data['newVersion'] = (isset($vals['new_version']) ? $vals['new_version'] : 'Unknown');
206
+ $data['wpURL'] = (isset($vals['url']) ? rtrim($vals['url'], '/') : null);
207
+ $data['updateAvailable'] = true;
208
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
 
210
+ if($checkVulnerabilities && $data !== null)
211
  $this->plugin_updates[] = $data;
 
212
  }
213
  }
214
 
215
  //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
216
  if ($update_plugins && !empty($update_plugins->no_update)) {
217
  foreach ($update_plugins->no_update as $plugin => $vals) {
218
+ $this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities, function (&$data, $file) use ($context, $plugin, $vals) {
219
+ $vals = (array) $vals;
220
+ $data['slug'] = $context->extractSlug($plugin, $vals);
221
+ $data['wpURL'] = (isset($vals['url']) ? rtrim($vals['url'], '/') : null);
222
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  }
224
  }
225
 
226
  //Get the remaining plugins (not in the wordpress.org repo for whatever reason)
227
  foreach ($installedPlugins as $plugin => $data) {
228
+ $data = $this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
230
 
231
  return $this;
289
  $this->checkThemeVulnerabilities();
290
  }
291
 
292
+ private function initializePluginVulnerabilityData($plugin, &$installedPlugins, &$records, $values = null, $update = false) {
293
+ $file = $this->checkPluginFile($plugin, $installedPlugins);
294
+ if ($file === null)
295
+ return null;
296
+ $data = $installedPlugins[$plugin];
297
+ $record = array(
298
+ 'slug' => $this->extractSlug($plugin, $values),
299
+ 'fromVersion' => isset($data['Version']) ? $data['Version'] : 'Unknown',
300
+ 'vulnerable' => false
301
+ );
302
+ if ($update && is_array($values))
303
+ $record['toVersion'] = isset($values['new_version']) ? $values['new_version'] : 'Unknown';
304
+ $records[] = $record;
305
+ unset($installedPlugins[$plugin]);
306
+ }
307
+
308
  /**
309
  * @param bool $initial if true, treat as the initial scan run
310
  */
311
  public function checkPluginVulnerabilities($initial=false) {
312
+
313
+ self::requirePluginsApi();
 
 
 
 
 
314
 
315
  $vulnerabilities = array();
316
 
321
  $installedPlugins = get_plugins();
322
 
323
  //Get the info for plugins on wordpress.org
324
+ $update_plugins = $this->fetchPluginUpdates();
 
325
  if ($update_plugins) {
 
 
 
 
 
326
  if (!empty($update_plugins->response)) {
327
  foreach ($update_plugins->response as $plugin => $vals) {
328
+ $this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, (array) $vals, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  }
330
  }
331
 
332
  if (!empty($update_plugins->no_update)) {
333
  foreach ($update_plugins->no_update as $plugin => $vals) {
334
+ $this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, (array) $vals);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  }
336
  }
337
  }
338
 
339
  //Get the remaining plugins (not in the wordpress.org repo for whatever reason)
340
  foreach ($installedPlugins as $plugin => $data) {
341
+ $this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, $data);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  }
343
 
344
  if (count($vulnerabilities) > 0) {
376
  require_once(ABSPATH . WPINC . '/update.php');
377
  }
378
 
379
+ self::requirePluginsApi();
 
 
380
 
381
  $this->checkThemeUpdates(!$initial, false);
382
  $update_themes = get_site_transient('update_themes');
505
  public function getThemeUpdates() {
506
  return $this->theme_updates;
507
  }
508
+ }
lib/wfUtils.php CHANGED
@@ -1443,46 +1443,68 @@ class wfUtils {
1443
  }
1444
  }
1445
  if(sizeof($toResolve) > 0){
1446
- $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
1447
- try {
1448
- $freshIPs = $api->call('resolve_ips', array(), array(
1449
- 'ips' => implode(',', $toResolve)
1450
- ));
1451
- if(is_array($freshIPs)){
1452
- foreach($freshIPs as $IP => $value){
1453
- $IP_bin = wfUtils::inet_pton($IP);
1454
- if($value == 'failed'){
1455
- $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed) values (%s, unix_timestamp(), 1)", $IP_bin);
1456
- $IPLocs[$IP] = false;
1457
- } else if(is_array($value)){
1458
- for($i = 0; $i <= 5; $i++){
1459
- //Prevent warnings in debug mode about uninitialized values
1460
- if(! isset($value[$i])){ $value[$i] = ''; }
1461
- }
1462
- $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed, city, region, countryName, countryCode, lat, lon) values (%s, unix_timestamp(), 0, '%s', '%s', '%s', '%s', %s, %s)",
1463
- $IP_bin,
1464
- $value[3], //city
1465
- $value[2], //region
1466
- $value[1], //countryName
1467
- $value[0],//countryCode
1468
- $value[4],//lat
1469
- $value[5]//lon
1470
- );
1471
- $IPLocs[$IP] = array(
1472
- 'IP' => $IP,
1473
- 'city' => $value[3],
1474
- 'region' => wfUtils::shouldDisplayRegion($value[1]) ? $value[2] : '',
1475
- 'countryName' => $value[1],
1476
- 'countryCode' => $value[0],
1477
- 'lat' => $value[4],
1478
- 'lon' => $value[5]
1479
- );
 
 
 
 
 
 
 
1480
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1481
  }
1482
  }
1483
- } catch(Exception $e){
1484
- wordfence::status(2, 'error', sprintf(/* translators: Error message. */ __("Call to Wordfence API to resolve IPs failed: %s", 'wordfence'), $e->getMessage()));
1485
- return array();
1486
  }
1487
  }
1488
  return $IPLocs;
@@ -1595,57 +1617,26 @@ class wfUtils {
1595
  $URL = preg_replace('/\?.*$/', '', $URL); //strip off query string
1596
  return $URL;
1597
  }
1598
- public static function IP2Country($IP){
1599
- if (version_compare(phpversion(), '5.4.0', '<')) {
1600
- return '';
1601
- }
1602
-
1603
- if (!class_exists('wfGeoIP2')) {
1604
- wfUtils::error_clear_last();
1605
- require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php');
1606
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1607
- }
1608
-
1609
- try {
1610
- wfUtils::error_clear_last();
1611
- $geoip = @wfGeoIP2::shared();
1612
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1613
- wfUtils::error_clear_last();
1614
- $code = @$geoip->countryCode($IP);
1615
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1616
- return is_string($code) ? $code : '';
1617
- }
1618
- catch (Exception $e) {
1619
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:', $e->getMessage());
1620
- }
1621
-
1622
- return '';
1623
  }
1624
  public static function geoIPVersion() {
1625
- if (version_compare(phpversion(), '5.4.0', '<')) {
1626
- return 0;
1627
- }
1628
-
1629
- if (!class_exists('wfGeoIP2')) {
1630
- wfUtils::error_clear_last();
1631
- require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php');
1632
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1633
- }
1634
-
1635
- try {
1636
- wfUtils::error_clear_last();
1637
- $geoip = @wfGeoIP2::shared();
1638
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1639
- wfUtils::error_clear_last();
1640
- $version = @$geoip->version();
1641
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:');
1642
- return $version;
1643
- }
1644
- catch (Exception $e) {
1645
- wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:', $e->getMessage());
1646
- }
1647
-
1648
- return 0;
1649
  }
1650
  public static function siteURLRelative(){
1651
  if(is_multisite()){
1443
  }
1444
  }
1445
  if(sizeof($toResolve) > 0){
1446
+ if (wfConfig::get('enableRemoteIpLookup', true)) {
1447
+ $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
1448
+ try {
1449
+ $freshIPs = $api->call('resolve_ips', array(), array(
1450
+ 'ips' => implode(',', $toResolve)
1451
+ ));
1452
+ } catch(Exception $e){
1453
+ wordfence::status(2, 'error', sprintf(/* translators: Error message. */ __("Call to Wordfence API to resolve IPs failed: %s", 'wordfence'), $e->getMessage()));
1454
+ return array();
1455
+ }
1456
+ }
1457
+ else {
1458
+ require_once(__DIR__ . '/wfIpLocator.php');
1459
+ $locator = wfIpLocator::getInstance();
1460
+ $freshIPs = array();
1461
+ $locale = get_locale();
1462
+ foreach ($toResolve as $ip) {
1463
+ $record = $locator->locate($ip);
1464
+ if ($record !== null) {
1465
+ $countryCode = $record->getCountryCode();
1466
+ if ($countryCode !== null) {
1467
+ $countryName = $record->getCountryName($locale);
1468
+ if ($countryName === null)
1469
+ $countryName = $countryCode;
1470
+ $freshIPs[$ip] = array($countryCode, $countryName);
1471
+ continue;
1472
+ }
1473
+ }
1474
+ $freshIPs[$ip] = 'failed';
1475
+ }
1476
+ }
1477
+ if(is_array($freshIPs)){
1478
+ foreach($freshIPs as $IP => $value){
1479
+ $IP_bin = wfUtils::inet_pton($IP);
1480
+ if($value == 'failed'){
1481
+ $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed) values (%s, unix_timestamp(), 1)", $IP_bin);
1482
+ $IPLocs[$IP] = false;
1483
+ } else if(is_array($value)){
1484
+ for($i = 0; $i <= 5; $i++){
1485
+ //Prevent warnings in debug mode about uninitialized values
1486
+ if(! isset($value[$i])){ $value[$i] = ''; }
1487
  }
1488
+ $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed, city, region, countryName, countryCode, lat, lon) values (%s, unix_timestamp(), 0, '%s', '%s', '%s', '%s', %s, %s)",
1489
+ $IP_bin,
1490
+ $value[3], //city
1491
+ $value[2], //region
1492
+ $value[1], //countryName
1493
+ $value[0],//countryCode
1494
+ $value[4],//lat
1495
+ $value[5]//lon
1496
+ );
1497
+ $IPLocs[$IP] = array(
1498
+ 'IP' => $IP,
1499
+ 'city' => $value[3],
1500
+ 'region' => wfUtils::shouldDisplayRegion($value[1]) ? $value[2] : '',
1501
+ 'countryName' => $value[1],
1502
+ 'countryCode' => $value[0],
1503
+ 'lat' => $value[4],
1504
+ 'lon' => $value[5]
1505
+ );
1506
  }
1507
  }
 
 
 
1508
  }
1509
  }
1510
  return $IPLocs;
1617
  $URL = preg_replace('/\?.*$/', '', $URL); //strip off query string
1618
  return $URL;
1619
  }
1620
+ public static function requireIpLocator() {
1621
+ /**
1622
+ * This is also used in the WAF so in certain site setups (i.e. nested sites in subdirectories)
1623
+ * it's possible for this to already have been loaded from a different installation of the
1624
+ * plugin and hence require_once doesn't help as it's a different file path. There is no guarantee
1625
+ * that the two plugin installations are the same version, so should the wfIpLocator class or any
1626
+ * of its dependencies change in a manner that is not backwards compatible, this may need to be
1627
+ * handled differently.
1628
+ */
1629
+ if (!class_exists('wfIpLocator'))
1630
+ require_once(__DIR__ . '/wfIpLocator.php');
1631
+ }
1632
+ public static function IP2Country($ip){
1633
+ self::requireIpLocator();
1634
+ return wfIpLocator::getInstance()->getCountryCode($ip);
 
 
 
 
 
 
 
 
 
 
1635
  }
1636
  public static function geoIPVersion() {
1637
+ self::requireIpLocator();
1638
+ $version = wfIpLocator::getInstance()->getDatabaseVersion();
1639
+ return $version === null ? 0 : $version;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1640
  }
1641
  public static function siteURLRelative(){
1642
  if(is_multisite()){
lib/wordfenceClass.php CHANGED
@@ -2,6 +2,7 @@
2
  require_once(dirname(__FILE__) . '/wordfenceConstants.php');
3
  require_once(dirname(__FILE__) . '/wfScanEngine.php');
4
  require_once(dirname(__FILE__) . '/wfScan.php');
 
5
  require_once(dirname(__FILE__) . '/wfCrawl.php');
6
  require_once(dirname(__FILE__) . '/Diff.php');
7
  require_once(dirname(__FILE__) . '/Diff/Renderer/Html/SideBySide.php');
@@ -122,6 +123,7 @@ class wordfence {
122
 
123
  //Remove all scheduled scans.
124
  wfScanner::shared()->unscheduleAllScans();
 
125
 
126
  // Remove cron for email summary
127
  wfActivityReport::clearCronJobs();
@@ -1387,6 +1389,8 @@ SQL
1387
  return $translation;
1388
  }, 10, 3);
1389
  }
 
 
1390
  }
1391
 
1392
  public static function showDisabledApplicationPasswordsMessage() {
@@ -2126,70 +2130,61 @@ SQL
2126
  }
2127
 
2128
  if ($allowSync) {
2129
- if (version_compare(phpversion(), '5.4.0', '>=')) {
2130
- if (!class_exists('wfGeoIP2')) {
2131
- require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php');
2132
- }
2133
-
2134
- try {
2135
- $wflogsGeoIP = @wfGeoIP2::shared(wfGeoIP2::DB_WFLOGS);
2136
- $bundledGeoIP = @wfGeoIP2::shared(wfGeoIP2::DB_BUNDLED);
2137
-
2138
- if ($wflogsGeoIP === false || $wflogsGeoIP->version() != $bundledGeoIP->version()) {
2139
- $source = dirname(__FILE__) . '/GeoLite2-Country.mmdb';
2140
- if (copy($source, $destination)) {
2141
- $shash = '';
2142
- $dhash = '';
2143
-
2144
- $sp = @fopen($source, "rb");
2145
- if ($sp) {
2146
- $scontext = hash_init('sha256');
2147
- while (!feof($sp)) {
2148
- $data = fread($sp, 65536);
2149
- if ($data === false) {
2150
- $scontext = false;
2151
- break;
2152
- }
2153
- hash_update($scontext, $data);
2154
- }
2155
- fclose($sp);
2156
- if ($scontext !== false) {
2157
- $shash = hash_final($scontext, false);
2158
  }
 
2159
  }
2160
-
2161
- $dp = @fopen($destination, "rb");
2162
- if ($dp) {
2163
- $dcontext = hash_init('sha256');
2164
- while (!feof($dp)) {
2165
- $data = fread($dp, 65536);
2166
- if ($data === false) {
2167
- $dcontext = false;
2168
- break;
2169
- }
2170
- hash_update($dcontext, $data);
2171
- }
2172
- fclose($dp);
2173
- if ($scontext !== false) {
2174
- $dhash = hash_final($dcontext, false);
2175
  }
 
2176
  }
2177
-
2178
- if (hash_equals($shash, $dhash)) {
2179
- wfConfig::remove('needsGeoIPSync');
2180
- delete_transient('wfSyncGeoIPActive');
2181
  }
2182
  }
2183
- }
2184
- else {
2185
- wfConfig::remove('needsGeoIPSync');
2186
- delete_transient('wfSyncGeoIPActive');
2187
  }
2188
  }
2189
- catch (Exception $e) {
2190
- //Ignore
 
2191
  }
2192
  }
 
 
 
2193
  }
2194
  }
2195
 
@@ -2285,7 +2280,6 @@ SQL
2285
  'pluginABSPATH' => ABSPATH,
2286
  'serverIPs' => json_encode(wfUtils::serverIPs()),
2287
  'blockCustomText' => wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))),
2288
- 'betaThreatDefenseFeed' => !!wfConfig::get('betaThreatDefenseFeed'),
2289
  'disableWAFIPBlocking' => wfConfig::get('disableWAFIPBlocking'),
2290
  'wordpressVersion' => wfConfig::get('wordpressVersion'),
2291
  'wordpressPluginVersions' => wfConfig::get_ser('wordpressPluginVersions'),
@@ -3197,8 +3191,6 @@ SQL
3197
  require(dirname(__FILE__) . '/wfLockedOut.php');
3198
  }
3199
  set_transient($tKey, $tries, wfConfig::get('loginSec_countFailMins') * 60);
3200
- } else if(is_object($authUser) && get_class($authUser) == 'WP_User'){
3201
- delete_transient($tKey); //reset counter on success
3202
  }
3203
  }
3204
  if(is_wp_error($authUser)){
@@ -3950,7 +3942,7 @@ SQL
3950
  if($r['type'] == 'error'){
3951
  $content .= "\n";
3952
  }
3953
- $content .= date(DATE_RFC822, $r['ctime'] + $timeOffset) . '::' . sprintf('%.4f', $r['ctime']) . ':' . $r['level'] . ':' . $r['type'] . '::' . wp_kses_data( (string) $r['msg']) . "\n";
3954
  }
3955
  $content .= "\n\n";
3956
  $content .= str_repeat('-', 80);
@@ -4984,8 +4976,20 @@ HTACCESS;
4984
  break;
4985
  case wfIssues::SCAN_FAILED_START_TIMEOUT:
4986
  case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED:
 
 
 
 
 
 
 
 
 
 
 
4987
  $scanFailedHTML = wfView::create('scanner/scan-failed', array(
4988
- 'messageHTML' => __('The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
 
4989
  'buttonTitle' => __('Close', 'wordfence'),
4990
  ))->render();
4991
  break;
@@ -5454,7 +5458,7 @@ HTACCESS;
5454
  $d['t'] = esc_html(wfUtils::makeTimeAgo(time() - $d['t']) . ' ago');
5455
  }
5456
  else {
5457
- $d['t'] = esc_html(date_i18n(get_option('date_format') . ' ' . get_option('time_format'), (int) $d['t']));
5458
  }
5459
  }
5460
  return array('ok' => 1, 'data' => $data);
2
  require_once(dirname(__FILE__) . '/wordfenceConstants.php');
3
  require_once(dirname(__FILE__) . '/wfScanEngine.php');
4
  require_once(dirname(__FILE__) . '/wfScan.php');
5
+ require_once(dirname(__FILE__) . '/wfScanMonitor.php');
6
  require_once(dirname(__FILE__) . '/wfCrawl.php');
7
  require_once(dirname(__FILE__) . '/Diff.php');
8
  require_once(dirname(__FILE__) . '/Diff/Renderer/Html/SideBySide.php');
123
 
124
  //Remove all scheduled scans.
125
  wfScanner::shared()->unscheduleAllScans();
126
+ wfScanMonitor::handleDeactivation();
127
 
128
  // Remove cron for email summary
129
  wfActivityReport::clearCronJobs();
1389
  return $translation;
1390
  }, 10, 3);
1391
  }
1392
+
1393
+ wfScanMonitor::registerActions();
1394
  }
1395
 
1396
  public static function showDisabledApplicationPasswordsMessage() {
2130
  }
2131
 
2132
  if ($allowSync) {
2133
+ wfUtils::requireIpLocator();
2134
+ try {
2135
+ $wflogsLocator = wfIpLocator::getInstance(wfIpLocator::SOURCE_WFLOGS);
2136
+ $bundledLocator = wfIpLocator::getInstance(wfIpLocator::SOURCE_BUNDLED);
2137
+ if (!$wflogsLocator->isPreferred() || $wflogsLocator->getDatabaseVersion() !== $bundledLocator->getDatabaseVersion()) {
2138
+ $source = dirname(__FILE__) . '/GeoLite2-Country.mmdb';
2139
+ if (copy($source, $destination)) {
2140
+ $shash = '';
2141
+ $dhash = '';
2142
+ $sp = @fopen($source, "rb");
2143
+ if ($sp) {
2144
+ $scontext = hash_init('sha256');
2145
+ while (!feof($sp)) {
2146
+ $data = fread($sp, 65536);
2147
+ if ($data === false) {
2148
+ $scontext = false;
2149
+ break;
 
 
 
 
 
 
 
 
 
 
 
 
2150
  }
2151
+ hash_update($scontext, $data);
2152
  }
2153
+ fclose($sp);
2154
+ if ($scontext !== false) {
2155
+ $shash = hash_final($scontext, false);
2156
+ }
2157
+ }
2158
+ $dp = @fopen($destination, "rb");
2159
+ if ($dp) {
2160
+ $dcontext = hash_init('sha256');
2161
+ while (!feof($dp)) {
2162
+ $data = fread($dp, 65536);
2163
+ if ($data === false) {
2164
+ $dcontext = false;
2165
+ break;
 
 
2166
  }
2167
+ hash_update($dcontext, $data);
2168
  }
2169
+ fclose($dp);
2170
+ if ($scontext !== false) {
2171
+ $dhash = hash_final($dcontext, false);
 
2172
  }
2173
  }
2174
+ if (hash_equals($shash, $dhash)) {
2175
+ wfConfig::remove('needsGeoIPSync');
2176
+ delete_transient('wfSyncGeoIPActive');
2177
+ }
2178
  }
2179
  }
2180
+ else {
2181
+ wfConfig::remove('needsGeoIPSync');
2182
+ delete_transient('wfSyncGeoIPActive');
2183
  }
2184
  }
2185
+ catch (Exception $e) {
2186
+ //Ignore
2187
+ }
2188
  }
2189
  }
2190
 
2280
  'pluginABSPATH' => ABSPATH,
2281
  'serverIPs' => json_encode(wfUtils::serverIPs()),
2282
  'blockCustomText' => wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))),
 
2283
  'disableWAFIPBlocking' => wfConfig::get('disableWAFIPBlocking'),
2284
  'wordpressVersion' => wfConfig::get('wordpressVersion'),
2285
  'wordpressPluginVersions' => wfConfig::get_ser('wordpressPluginVersions'),
3191
  require(dirname(__FILE__) . '/wfLockedOut.php');
3192
  }
3193
  set_transient($tKey, $tries, wfConfig::get('loginSec_countFailMins') * 60);
 
 
3194
  }
3195
  }
3196
  if(is_wp_error($authUser)){
3942
  if($r['type'] == 'error'){
3943
  $content .= "\n";
3944
  }
3945
+ $content .= date(DATE_RFC822, intval($r['ctime']) + $timeOffset) . '::' . sprintf('%.4f', $r['ctime']) . ':' . $r['level'] . ':' . $r['type'] . '::' . wp_kses_data( (string) $r['msg']) . "\n";
3946
  }
3947
  $content .= "\n\n";
3948
  $content .= str_repeat('-', 80);
4976
  break;
4977
  case wfIssues::SCAN_FAILED_START_TIMEOUT:
4978
  case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED:
4979
+ $resumeAttempts = wfScanMonitor::getConfiguredResumeAttempts();
4980
+ if ($resumeAttempts > 0) {
4981
+ if ($resumeAttempts === 1)
4982
+ $resumeMessage = __('Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful.', 'wordfence');
4983
+ else
4984
+ $resumeMessage = sprintf(__('Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful.', 'wordfence'), $resumeAttempts);
4985
+ $resumeMessage = " {$resumeMessage} ";
4986
+ }
4987
+ else {
4988
+ $resumeMessage = '';
4989
+ }
4990
  $scanFailedHTML = wfView::create('scanner/scan-failed', array(
4991
+ 'messageTitle' => __('Scan Stage Failed', 'wordfence'),
4992
+ 'messageHTML' => __('A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . $resumeMessage . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
4993
  'buttonTitle' => __('Close', 'wordfence'),
4994
  ))->render();
4995
  break;
5458
  $d['t'] = esc_html(wfUtils::makeTimeAgo(time() - $d['t']) . ' ago');
5459
  }
5460
  else {
5461
+ $d['t'] = esc_html(wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), (int) $d['t']));
5462
  }
5463
  }
5464
  return array('ok' => 1, 'data' => $data);
lib/wordfenceConstants.php CHANGED
@@ -29,4 +29,4 @@ if (!defined('WORDFENCE_PREFER_WP_HOME_FOR_WPML')) { define('WORDFENCE_PREFER_WP
29
  if (!defined('WORDFENCE_SCAN_MIN_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MIN_EXECUTION_TIME', 8); }
30
  if (!defined('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME', 90); }
31
  if (!defined('WORDFENCE_ALLOW_DIRECT_MYSQLI')) { define('WORDFENCE_ALLOW_DIRECT_MYSQLI', true); }
32
- if (!defined('WORDFENCE_NOC3_FAILED_BACKOFF_TIME')) { define('WORDFENCE_NOC3_FAILED_BACKOFF_TIME', 60); }
29
  if (!defined('WORDFENCE_SCAN_MIN_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MIN_EXECUTION_TIME', 8); }
30
  if (!defined('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME', 90); }
31
  if (!defined('WORDFENCE_ALLOW_DIRECT_MYSQLI')) { define('WORDFENCE_ALLOW_DIRECT_MYSQLI', true); }
32
+ if (!defined('WORDFENCE_NOC3_FAILED_BACKOFF_TIME')) { define('WORDFENCE_NOC3_FAILED_BACKOFF_TIME', 60); }
lib/wordfenceScanner.php CHANGED
@@ -352,8 +352,7 @@ class wordfenceScanner {
352
  'file' => $file,
353
  'realFile' => $record->realPath,
354
  'shac' => $record->SHAC,
355
- 'highSense' => $options['scansEnabled_highSense'],
356
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
357
  ), $dataForFile),
358
  ));
359
  break;
@@ -420,8 +419,7 @@ class wordfenceScanner {
420
  'file' => $file,
421
  'realFile' => $record->realPath,
422
  'shac' => $record->SHAC,
423
- 'highSense' => $options['scansEnabled_highSense'],
424
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
425
  ), $dataForFile),
426
  ));
427
  }
@@ -462,8 +460,7 @@ class wordfenceScanner {
462
  'file' => $file,
463
  'realFile' => $record->realPath,
464
  'shac' => $record->SHAC,
465
- 'highSense' => $options['scansEnabled_highSense'],
466
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
467
  ), $dataForFile),
468
  ));
469
  break;
@@ -537,8 +534,7 @@ class wordfenceScanner {
537
  'shac' => $record->SHAC,
538
  'badURL' => $result['URL'],
539
  'gsb' => 'goog-malware-shavar',
540
- 'highSense' => $options['scansEnabled_highSense'],
541
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
542
  ), $dataForFile),
543
  ));
544
  }
@@ -556,8 +552,7 @@ class wordfenceScanner {
556
  'shac' => $record->SHAC,
557
  'badURL' => $result['URL'],
558
  'gsb' => 'googpub-phish-shavar',
559
- 'highSense' => $options['scansEnabled_highSense'],
560
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
561
  ), $dataForFile),
562
  ));
563
  }
@@ -575,8 +570,7 @@ class wordfenceScanner {
575
  'shac' => $record->SHAC,
576
  'badURL' => $result['URL'],
577
  'gsb' => 'wordfence-dbl',
578
- 'highSense' => $options['scansEnabled_highSense'],
579
- 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'),
580
  ), $dataForFile),
581
  ));
582
  }
352
  'file' => $file,
353
  'realFile' => $record->realPath,
354
  'shac' => $record->SHAC,
355
+ 'highSense' => $options['scansEnabled_highSense']
 
356
  ), $dataForFile),
357
  ));
358
  break;
419
  'file' => $file,
420
  'realFile' => $record->realPath,
421
  'shac' => $record->SHAC,
422
+ 'highSense' => $options['scansEnabled_highSense']
 
423
  ), $dataForFile),
424
  ));
425
  }
460
  'file' => $file,
461
  'realFile' => $record->realPath,
462
  'shac' => $record->SHAC,
463
+ 'highSense' => $options['scansEnabled_highSense']
 
464
  ), $dataForFile),
465
  ));
466
  break;
534
  'shac' => $record->SHAC,
535
  'badURL' => $result['URL'],
536
  'gsb' => 'goog-malware-shavar',
537
+ 'highSense' => $options['scansEnabled_highSense']
 
538
  ), $dataForFile),
539
  ));
540
  }
552
  'shac' => $record->SHAC,
553
  'badURL' => $result['URL'],
554
  'gsb' => 'googpub-phish-shavar',
555
+ 'highSense' => $options['scansEnabled_highSense']
 
556
  ), $dataForFile),
557
  ));
558
  }
570
  'shac' => $record->SHAC,
571
  'badURL' => $result['URL'],
572
  'gsb' => 'wordfence-dbl',
573
+ 'highSense' => $options['scansEnabled_highSense']
 
574
  ), $dataForFile),
575
  ));
576
  }
models/common/wfGeoIP2.php DELETED
@@ -1,104 +0,0 @@
1
- <?php
2
- if (!defined('WORDFENCE_VERSION')) { exit; }
3
-
4
- require_once(dirname(__FILE__) . '/../../vendor/autoload.php');
5
-
6
- use GeoIp2\Database\Reader;
7
-
8
- class wfGeoIP2 {
9
- const DB_WFLOGS = 'wflogs';
10
- const DB_BUNDLED = 'bundled';
11
-
12
- static $_shared = array();
13
-
14
- private $_reader;
15
-
16
- /**
17
- * Returns the singleton wfGeoIP2, optionally forcing use of a specific database.
18
- *
19
- * @return wfGeoIP2|bool
20
- */
21
- public static function shared($whichDB = false) {
22
- try {
23
- if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb') && ($whichDB === false || $whichDB == self::DB_WFLOGS)) {
24
- if (isset(self::$_shared[self::DB_WFLOGS])) {
25
- return self::$_shared[self::DB_WFLOGS];
26
- }
27
-
28
- $reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb');
29
- self::$_shared[self::DB_WFLOGS] = new wfGeoIP2($reader);
30
- return self::$_shared[self::DB_WFLOGS];
31
- }
32
- }
33
- catch (Exception $e) {
34
- //Fall through to bundled copy
35
- }
36
-
37
- if ($whichDB == self::DB_WFLOGS) {
38
- return false;
39
- }
40
-
41
- if (isset(self::$_shared[self::DB_BUNDLED])) {
42
- return self::$_shared[self::DB_BUNDLED];
43
- }
44
- $reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it here
45
- self::$_shared[self::DB_BUNDLED] = new wfGeoIP2($reader);
46
- return self::$_shared[self::DB_BUNDLED];
47
- }
48
-
49
- /**
50
- * Automatically uses the wflogs version of the DB if present, otherwise uses the bundled one.
51
- *
52
- * @param \GeoIp2\Database\Reader $reader If provided, uses the reader passed instead.
53
- */
54
- public function __construct($reader = false) {
55
- if ($reader !== false) {
56
- $this->_reader = $reader;
57
- return;
58
- }
59
-
60
- try {
61
- if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb')) {
62
- $this->_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb');
63
- return;
64
- }
65
- }
66
- catch (Exception $e) {
67
- //Fall through to bundled copy
68
- }
69
-
70
- $this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
71
- }
72
-
73
- /**
74
- * Returns the database version in use. This is the timestamp of when it was packaged.
75
- *
76
- * @return null|int
77
- */
78
- public function version() {
79
- try {
80
- return $this->_reader->metadata()->buildEpoch;
81
- }
82
- catch (Exception $e) {
83
- //Fall through
84
- }
85
- return null;
86
- }
87
-
88
- /**
89
- * Returns the country code for the IP if known.
90
- *
91
- * @param string $ip
92
- * @return null|string
93
- */
94
- public function countryCode($ip) {
95
- try {
96
- $record = $this->_reader->country($ip);
97
- return $record->country->isoCode;
98
- }
99
- catch (Exception $e) {
100
- //Fall through
101
- }
102
- return null;
103
- }
104
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modules/login-security/css/{admin-global.1663593635.css → admin-global.1664811036.css} RENAMED
File without changes
modules/login-security/css/{admin.1663593635.css → admin.1664811036.css} RENAMED
File without changes
modules/login-security/css/{colorbox.1663593635.css → colorbox.1664811036.css} RENAMED
File without changes
modules/login-security/css/{font-awesome.1663593635.css → font-awesome.1664811036.css} RENAMED
File without changes
modules/login-security/css/{ionicons.1663593635.css → ionicons.1664811036.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.min.1663593635.css → jquery-ui.min.1664811036.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.structure.min.1663593635.css → jquery-ui.structure.min.1664811036.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.theme.min.1663593635.css → jquery-ui.theme.min.1664811036.css} RENAMED
File without changes
modules/login-security/css/{login.1663593635.css → login.1664811036.css} RENAMED
File without changes
modules/login-security/js/{admin-global.1663593635.js → admin-global.1664811036.js} RENAMED
File without changes
modules/login-security/js/{admin.1663593635.js → admin.1664811036.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.1663593635.js → jquery.colorbox.1664811036.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.min.1663593635.js → jquery.colorbox.min.1664811036.js} RENAMED
File without changes
modules/login-security/js/{jquery.qrcode.min.1663593635.js → jquery.qrcode.min.1664811036.js} RENAMED
File without changes
modules/login-security/js/{jquery.tmpl.min.1663593635.js → jquery.tmpl.min.1664811036.js} RENAMED
File without changes
modules/login-security/js/{login.1663593635.js → login.1664811036.js} RENAMED
File without changes
modules/login-security/wordfence-login-security.php CHANGED
@@ -26,8 +26,8 @@ if ($wfCoreActive && !(isset($wfCoreLoading) && $wfCoreLoading)) {
26
  else {
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
- define('WORDFENCE_LS_VERSION', '1.0.11-rc3');
30
- define('WORDFENCE_LS_BUILD_NUMBER', '1663593635');
31
 
32
  define('WORDFENCE_LS_PLUGIN_BASENAME', plugin_basename(__FILE__));
33
 
26
  else {
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
+ define('WORDFENCE_LS_VERSION', '1.0.11');
30
+ define('WORDFENCE_LS_BUILD_NUMBER', '1664811036');
31
 
32
  define('WORDFENCE_LS_PLUGIN_BASENAME', plugin_basename(__FILE__));
33
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: security, firewall, malware scanner, web application firewall, two factor
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
  Tested up to: 6.0
7
- Stable tag: 7.6.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -185,6 +185,21 @@ Secure your website with Wordfence.
185
 
186
  == Changelog ==
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  = 7.6.2 - September 19, 2022 =
189
  * Improvement: Hardened 2FA login flow to reduce exposure in cases where an attacker is able to obtain privileged information from the database
190
 
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
  Tested up to: 6.0
7
+ Stable tag: 7.7.0
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
185
 
186
  == Changelog ==
187
 
188
+ = 7.7.0 - October 3, 2022 =
189
+ * Improvement: Added configurable scan resume functionality to prevent scan failures on sites with intermittent connectivity issues
190
+ * Improvement: Added new scan result for vulnerabilities found in plugins that do not have patched versions available via WordPress.org
191
+ * Improvement: Implemented stand-alone MMDB reader for IP address lookups to prevent plugin conflicts and support additional PHP versions
192
+ * Improvement: Added option to disable looking up IP address locations via the Wordfence API
193
+ * Improvement: Prevented successful logins from resetting brute force counters
194
+ * Improvement: Clarified IPv6 diagnostic
195
+ * Improvement: Included maximum number of days in live traffic option text
196
+ * Fix: Made timezones consistent on firewall page
197
+ * Fix: Added "Use only IPv4 to start scans" option to search
198
+ * Fix: Prevented deprecation notices on PHP 8.1 when emailing the activity log
199
+ * Fix: Prevented warning on PHP 8 related to process owner diagnostic
200
+ * Fix: Prevented PHP Code Sniffer false positive related to T_BAD_CHARACTER
201
+ * Fix: Removed unsupported beta feed option
202
+
203
  = 7.6.2 - September 19, 2022 =
204
  * Improvement: Hardened 2FA login flow to reduce exposure in cases where an attacker is able to obtain privileged information from the database
205
 
vendor/autoload.php CHANGED
@@ -2,8 +2,8 @@
2
 
3
  // autoload.php @generated by Composer
4
 
5
- if (!class_exists('ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951')) {
6
  require_once __DIR__ . '/composer/autoload_real.php';
7
  }
8
 
9
- return ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951::getLoader();
2
 
3
  // autoload.php @generated by Composer
4
 
5
+ if (!class_exists('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155')) {
6
  require_once __DIR__ . '/composer/autoload_real.php';
7
  }
8
 
9
+ return ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -37,11 +37,13 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
45
  // PSR-4
46
  private $prefixLengthsPsr4 = array();
47
  private $prefixDirsPsr4 = array();
@@ -57,10 +59,17 @@ class ClassLoader
57
  private $missingClasses = array();
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
@@ -300,6 +309,17 @@ class ClassLoader
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
@@ -308,13 +328,17 @@ class ClassLoader
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
314
  * Loads the given class or interface.
315
  *
316
  * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
  */
319
  public function loadClass($class)
320
  {
@@ -323,6 +347,8 @@ class ClassLoader
323
 
324
  return true;
325
  }
 
 
326
  }
327
 
328
  /**
@@ -367,6 +393,16 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ private $vendorDir;
46
+
47
  // PSR-4
48
  private $prefixLengthsPsr4 = array();
49
  private $prefixDirsPsr4 = array();
59
  private $missingClasses = array();
60
  private $apcuPrefix;
61
 
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
72
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
  }
74
 
75
  return array();
309
  public function register($prepend = false)
310
  {
311
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ return;
315
+ }
316
+
317
+ if ($prepend) {
318
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
+ } else {
320
+ unset(self::$registeredLoaders[$this->vendorDir]);
321
+ self::$registeredLoaders[$this->vendorDir] = $this;
322
+ }
323
  }
324
 
325
  /**
328
  public function unregister()
329
  {
330
  spl_autoload_unregister(array($this, 'loadClass'));
331
+
332
+ if (null !== $this->vendorDir) {
333
+ unset(self::$registeredLoaders[$this->vendorDir]);
334
+ }
335
  }
336
 
337
  /**
338
  * Loads the given class or interface.
339
  *
340
  * @param string $class The name of the class
341
+ * @return true|null True if loaded, null otherwise
342
  */
343
  public function loadClass($class)
344
  {
347
 
348
  return true;
349
  }
350
+
351
+ return null;
352
  }
353
 
354
  /**
393
  return $file;
394
  }
395
 
396
+ /**
397
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
398
+ *
399
+ * @return self[]
400
+ */
401
+ public static function getRegisteredLoaders()
402
+ {
403
+ return self::$registeredLoaders;
404
+ }
405
+
406
  private function findFileWithExtension($class, $ext)
407
  {
408
  // PSR-4 lookup
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,337 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+ /**
19
+ * This class is copied in every Composer installed project and available to all
20
+ *
21
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
+ *
23
+ * To require it's presence, you can require `composer-runtime-api ^2.0`
24
+ */
25
+ class InstalledVersions
26
+ {
27
+ private static $installed;
28
+ private static $canGetVendors;
29
+ private static $installedByVendor = array();
30
+
31
+ /**
32
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
33
+ *
34
+ * @return string[]
35
+ * @psalm-return list<string>
36
+ */
37
+ public static function getInstalledPackages()
38
+ {
39
+ $packages = array();
40
+ foreach (self::getInstalled() as $installed) {
41
+ $packages[] = array_keys($installed['versions']);
42
+ }
43
+
44
+ if (1 === \count($packages)) {
45
+ return $packages[0];
46
+ }
47
+
48
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
49
+ }
50
+
51
+ /**
52
+ * Returns a list of all package names with a specific type e.g. 'library'
53
+ *
54
+ * @param string $type
55
+ * @return string[]
56
+ * @psalm-return list<string>
57
+ */
58
+ public static function getInstalledPackagesByType($type)
59
+ {
60
+ $packagesByType = array();
61
+
62
+ foreach (self::getInstalled() as $installed) {
63
+ foreach ($installed['versions'] as $name => $package) {
64
+ if (isset($package['type']) && $package['type'] === $type) {
65
+ $packagesByType[] = $name;
66
+ }
67
+ }
68
+ }
69
+
70
+ return $packagesByType;
71
+ }
72
+
73
+ /**
74
+ * Checks whether the given package is installed
75
+ *
76
+ * This also returns true if the package name is provided or replaced by another package
77
+ *
78
+ * @param string $packageName
79
+ * @param bool $includeDevRequirements
80
+ * @return bool
81
+ */
82
+ public static function isInstalled($packageName, $includeDevRequirements = true)
83
+ {
84
+ foreach (self::getInstalled() as $installed) {
85
+ if (isset($installed['versions'][$packageName])) {
86
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
87
+ }
88
+ }
89
+
90
+ return false;
91
+ }
92
+
93
+ /**
94
+ * Checks whether the given package satisfies a version constraint
95
+ *
96
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
97
+ *
98
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
99
+ *
100
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
101
+ * @param string $packageName
102
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
103
+ * @return bool
104
+ */
105
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
106
+ {
107
+ $constraint = $parser->parseConstraints($constraint);
108
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
109
+
110
+ return $provided->matches($constraint);
111
+ }
112
+
113
+ /**
114
+ * Returns a version constraint representing all the range(s) which are installed for a given package
115
+ *
116
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
117
+ * whether a given version of a package is installed, and not just whether it exists
118
+ *
119
+ * @param string $packageName
120
+ * @return string Version constraint usable with composer/semver
121
+ */
122
+ public static function getVersionRanges($packageName)
123
+ {
124
+ foreach (self::getInstalled() as $installed) {
125
+ if (!isset($installed['versions'][$packageName])) {
126
+ continue;
127
+ }
128
+
129
+ $ranges = array();
130
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
131
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
132
+ }
133
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
134
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
135
+ }
136
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
137
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
138
+ }
139
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
140
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
141
+ }
142
+
143
+ return implode(' || ', $ranges);
144
+ }
145
+
146
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
147
+ }
148
+
149
+ /**
150
+ * @param string $packageName
151
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
152
+ */
153
+ public static function getVersion($packageName)
154
+ {
155
+ foreach (self::getInstalled() as $installed) {
156
+ if (!isset($installed['versions'][$packageName])) {
157
+ continue;
158
+ }
159
+
160
+ if (!isset($installed['versions'][$packageName]['version'])) {
161
+ return null;
162
+ }
163
+
164
+ return $installed['versions'][$packageName]['version'];
165
+ }
166
+
167
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
168
+ }
169
+
170
+ /**
171
+ * @param string $packageName
172
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
173
+ */
174
+ public static function getPrettyVersion($packageName)
175
+ {
176
+ foreach (self::getInstalled() as $installed) {
177
+ if (!isset($installed['versions'][$packageName])) {
178
+ continue;
179
+ }
180
+
181
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
182
+ return null;
183
+ }
184
+
185
+ return $installed['versions'][$packageName]['pretty_version'];
186
+ }
187
+
188
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
189
+ }
190
+
191
+ /**
192
+ * @param string $packageName
193
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
194
+ */
195
+ public static function getReference($packageName)
196
+ {
197
+ foreach (self::getInstalled() as $installed) {
198
+ if (!isset($installed['versions'][$packageName])) {
199
+ continue;
200
+ }
201
+
202
+ if (!isset($installed['versions'][$packageName]['reference'])) {
203
+ return null;
204
+ }
205
+
206
+ return $installed['versions'][$packageName]['reference'];
207
+ }
208
+
209
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
210
+ }
211
+
212
+ /**
213
+ * @param string $packageName
214
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
215
+ */
216
+ public static function getInstallPath($packageName)
217
+ {
218
+ foreach (self::getInstalled() as $installed) {
219
+ if (!isset($installed['versions'][$packageName])) {
220
+ continue;
221
+ }
222
+
223
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
224
+ }
225
+
226
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
227
+ }
228
+
229
+ /**
230
+ * @return array
231
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
232
+ */
233
+ public static function getRootPackage()
234
+ {
235
+ $installed = self::getInstalled();
236
+
237
+ return $installed[0]['root'];
238
+ }
239
+
240
+ /**
241
+ * Returns the raw installed.php data for custom implementations
242
+ *
243
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
+ * @return array[]
245
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
246
+ */
247
+ public static function getRawData()
248
+ {
249
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
250
+
251
+ if (null === self::$installed) {
252
+ // only require the installed.php file if this file is loaded from its dumped location,
253
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
254
+ if (substr(__DIR__, -8, 1) !== 'C') {
255
+ self::$installed = include __DIR__ . '/installed.php';
256
+ } else {
257
+ self::$installed = array();
258
+ }
259
+ }
260
+
261
+ return self::$installed;
262
+ }
263
+
264
+ /**
265
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
+ *
267
+ * @return array[]
268
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
269
+ */
270
+ public static function getAllRawData()
271
+ {
272
+ return self::getInstalled();
273
+ }
274
+
275
+ /**
276
+ * Lets you reload the static array from another file
277
+ *
278
+ * This is only useful for complex integrations in which a project needs to use
279
+ * this class but then also needs to execute another project's autoloader in process,
280
+ * and wants to ensure both projects have access to their version of installed.php.
281
+ *
282
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
283
+ * the data it needs from this class, then call reload() with
284
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
285
+ * the project in which it runs can then also use this class safely, without
286
+ * interference between PHPUnit's dependencies and the project's dependencies.
287
+ *
288
+ * @param array[] $data A vendor/composer/installed.php data set
289
+ * @return void
290
+ *
291
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
292
+ */
293
+ public static function reload($data)
294
+ {
295
+ self::$installed = $data;
296
+ self::$installedByVendor = array();
297
+ }
298
+
299
+ /**
300
+ * @return array[]
301
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
302
+ */
303
+ private static function getInstalled()
304
+ {
305
+ if (null === self::$canGetVendors) {
306
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
307
+ }
308
+
309
+ $installed = array();
310
+
311
+ if (self::$canGetVendors) {
312
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
313
+ if (isset(self::$installedByVendor[$vendorDir])) {
314
+ $installed[] = self::$installedByVendor[$vendorDir];
315
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
316
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
317
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
318
+ self::$installed = $installed[count($installed) - 1];
319
+ }
320
+ }
321
+ }
322
+ }
323
+
324
+ if (null === self::$installed) {
325
+ // only require the installed.php file if this file is loaded from its dumped location,
326
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
327
+ if (substr(__DIR__, -8, 1) !== 'C') {
328
+ self::$installed = require __DIR__ . '/installed.php';
329
+ } else {
330
+ self::$installed = array();
331
+ }
332
+ }
333
+ $installed[] = self::$installed;
334
+
335
+ return $installed;
336
+ }
337
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  );
vendor/composer/autoload_psr4.php CHANGED
@@ -6,9 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'MaxMind\\WebService\\' => array($vendorDir . '/maxmind/web-service-common/src/WebService'),
10
- 'MaxMind\\Exception\\' => array($vendorDir . '/maxmind/web-service-common/src/Exception'),
11
- 'MaxMind\\Db\\' => array($vendorDir . '/maxmind-db/reader/src/MaxMind/Db'),
12
- 'GeoIp2\\' => array($vendorDir . '/geoip2/geoip2/src'),
13
- 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'),
14
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Wordfence\\MmdbReader\\' => array($vendorDir . '/wordfence/mmdb-reader/src'),
 
 
 
 
10
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951
6
  {
7
  private static $loader;
8
 
@@ -13,21 +13,24 @@ class ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951
13
  }
14
  }
15
 
 
 
 
16
  public static function getLoader()
17
  {
18
  if (null !== self::$loader) {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951', 'loadClassLoader'), true, true);
23
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6d00a11c4faa7bdc4bb08ac266cdf951', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
- require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit6d00a11c4faa7bdc4bb08ac266cdf951::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155
6
  {
7
  private static $loader;
8
 
13
  }
14
  }
15
 
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
  public static function getLoader()
20
  {
21
  if (null !== self::$loader) {
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155', 'loadClassLoader'), true, true);
26
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
+ require __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,53 +4,32 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit6d00a11c4faa7bdc4bb08ac266cdf951
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
- 'M' =>
11
  array (
12
- 'MaxMind\\WebService\\' => 19,
13
- 'MaxMind\\Exception\\' => 18,
14
- 'MaxMind\\Db\\' => 11,
15
- ),
16
- 'G' =>
17
- array (
18
- 'GeoIp2\\' => 7,
19
- ),
20
- 'C' =>
21
- array (
22
- 'Composer\\CaBundle\\' => 18,
23
  ),
24
  );
25
 
26
  public static $prefixDirsPsr4 = array (
27
- 'MaxMind\\WebService\\' =>
28
- array (
29
- 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/WebService',
30
- ),
31
- 'MaxMind\\Exception\\' =>
32
- array (
33
- 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/Exception',
34
- ),
35
- 'MaxMind\\Db\\' =>
36
- array (
37
- 0 => __DIR__ . '/..' . '/maxmind-db/reader/src/MaxMind/Db',
38
- ),
39
- 'GeoIp2\\' =>
40
  array (
41
- 0 => __DIR__ . '/..' . '/geoip2/geoip2/src',
42
- ),
43
- 'Composer\\CaBundle\\' =>
44
- array (
45
- 0 => __DIR__ . '/..' . '/composer/ca-bundle/src',
46
  ),
47
  );
48
 
 
 
 
 
49
  public static function getInitializer(ClassLoader $loader)
50
  {
51
  return \Closure::bind(function () use ($loader) {
52
- $loader->prefixLengthsPsr4 = ComposerStaticInit6d00a11c4faa7bdc4bb08ac266cdf951::$prefixLengthsPsr4;
53
- $loader->prefixDirsPsr4 = ComposerStaticInit6d00a11c4faa7bdc4bb08ac266cdf951::$prefixDirsPsr4;
 
54
 
55
  }, null, ClassLoader::class);
56
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit736008d0fa54169b3444ae0f3fc20155
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
+ 'W' =>
11
  array (
12
+ 'Wordfence\\MmdbReader\\' => 21,
 
 
 
 
 
 
 
 
 
 
13
  ),
14
  );
15
 
16
  public static $prefixDirsPsr4 = array (
17
+ 'Wordfence\\MmdbReader\\' =>
 
 
 
 
 
 
 
 
 
 
 
 
18
  array (
19
+ 0 => __DIR__ . '/..' . '/wordfence/mmdb-reader/src',
 
 
 
 
20
  ),
21
  );
22
 
23
+ public static $classMap = array (
24
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
25
+ );
26
+
27
  public static function getInitializer(ClassLoader $loader)
28
  {
29
  return \Closure::bind(function () use ($loader) {
30
+ $loader->prefixLengthsPsr4 = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$prefixLengthsPsr4;
31
+ $loader->prefixDirsPsr4 = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$prefixDirsPsr4;
32
+ $loader->classMap = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$classMap;
33
 
34
  }, null, ClassLoader::class);
35
  }
vendor/composer/ca-bundle/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (C) 2016 Composer
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of
4
- this software and associated documentation files (the "Software"), to deal in
5
- the Software without restriction, including without limitation the rights to
6
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
- of the Software, and to permit persons to whom the Software is furnished to do
8
- so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/ca-bundle/res/cacert.pem DELETED
@@ -1,3401 +0,0 @@
1
- ##
2
- ## Bundle of CA Root Certificates
3
- ##
4
- ## Certificate data from Mozilla as of: Wed Jan 23 04:12:09 2019 GMT
5
- ##
6
- ## This is a bundle of X.509 certificates of public Certificate Authorities
7
- ## (CA). These were automatically extracted from Mozilla's root certificates
8
- ## file (certdata.txt). This file can be found in the mozilla source tree:
9
- ## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
10
- ##
11
- ## It contains the certificates in PEM format and therefore
12
- ## can be directly used with curl / libcurl / php_curl, or with
13
- ## an Apache+mod_ssl webserver for SSL client authentication.
14
- ## Just configure this file as the SSLCACertificateFile.
15
- ##
16
- ## Conversion done with mk-ca-bundle.pl version 1.27.
17
- ## SHA256: 18372117493b5b7ec006c31d966143fc95a9464a2b5f8d5188e23c5557b2292d
18
- ##
19
-
20
-
21
- GlobalSign Root CA
22
- ==================
23
- -----BEGIN CERTIFICATE-----
24
- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
25
- GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
26
- b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
27
- BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
28
- VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
29
- DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
30
- THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
31
- Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
32
- c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
33
- gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
34
- HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
35
- AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
36
- Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
37
- j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
38
- hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
39
- X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
40
- -----END CERTIFICATE-----
41
-
42
- GlobalSign Root CA - R2
43
- =======================
44
- -----BEGIN CERTIFICATE-----
45
- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
46
- YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
47
- bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
48
- aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
49
- bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
50
- ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
51
- s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
52
- S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
53
- TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
54
- ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
55
- FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
56
- YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
57
- BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
58
- 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
59
- 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
60
- 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
61
- TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
62
- -----END CERTIFICATE-----
63
-
64
- Verisign Class 3 Public Primary Certification Authority - G3
65
- ============================================================
66
- -----BEGIN CERTIFICATE-----
67
- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
68
- UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
69
- cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
70
- IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
71
- dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
72
- CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
73
- dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
74
- cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
75
- Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
76
- ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
77
- EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
78
- cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
79
- EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
80
- 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
81
- ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
82
- j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
83
- /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
84
- xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
85
- t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
86
- -----END CERTIFICATE-----
87
-
88
- Entrust.net Premium 2048 Secure Server CA
89
- =========================================
90
- -----BEGIN CERTIFICATE-----
91
- MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
92
- ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
93
- bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
94
- BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
95
- NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
96
- d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
97
- MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
98
- ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
99
- MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
100
- Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
101
- hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
102
- nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
103
- VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
104
- BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
105
- KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
106
- T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
107
- zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
108
- J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
109
- nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
110
- -----END CERTIFICATE-----
111
-
112
- Baltimore CyberTrust Root
113
- =========================
114
- -----BEGIN CERTIFICATE-----
115
- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
116
- ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
117
- ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
118
- SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
119
- dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
120
- uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
121
- UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
122
- G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
123
- XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
124
- l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
125
- VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
126
- BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
127
- cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
128
- hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
129
- Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
130
- RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
- -----END CERTIFICATE-----
132
-
133
- AddTrust External Root
134
- ======================
135
- -----BEGIN CERTIFICATE-----
136
- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
137
- QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
138
- VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
139
- NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
140
- cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
141
- Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
142
- +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
143
- Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
144
- aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
145
- 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
146
- 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
147
- BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
148
- VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
149
- VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
150
- IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
151
- j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
152
- 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
153
- e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
154
- G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
155
- -----END CERTIFICATE-----
156
-
157
- Entrust Root Certification Authority
158
- ====================================
159
- -----BEGIN CERTIFICATE-----
160
- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
161
- BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
162
- b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
163
- A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
164
- MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
165
- MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
166
- Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
167
- dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
168
- ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
169
- A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
170
- Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
171
- j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
172
- rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
173
- DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
174
- MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
175
- hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
176
- A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
177
- Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
178
- v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
179
- W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
180
- tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
181
- -----END CERTIFICATE-----
182
-
183
- GeoTrust Global CA
184
- ==================
185
- -----BEGIN CERTIFICATE-----
186
- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
187
- Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
188
- MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
189
- LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
190
- CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
191
- BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
192
- 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
193
- T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
194
- vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
195
- AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
196
- DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
197
- zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
198
- d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
199
- mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
200
- XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
201
- Mw==
202
- -----END CERTIFICATE-----
203
-
204
- GeoTrust Universal CA
205
- =====================
206
- -----BEGIN CERTIFICATE-----
207
- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
208
- R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
209
- MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
210
- Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
211
- ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
212
- JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
213
- RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
214
- 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
215
- 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
216
- qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
217
- Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
218
- Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
219
- KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
220
- ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
221
- XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
222
- hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
223
- aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
224
- qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
225
- oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
226
- xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
227
- KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
228
- DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
229
- xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
230
- p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
231
- P/rmMuGNG2+k5o7Y+SlIis5z/iw=
232
- -----END CERTIFICATE-----
233
-
234
- GeoTrust Universal CA 2
235
- =======================
236
- -----BEGIN CERTIFICATE-----
237
- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
238
- R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
239
- MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
240
- SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
241
- A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
242
- DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
243
- j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
244
- JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
245
- QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
246
- WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
247
- 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
248
- ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
249
- SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
250
- 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
251
- +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
252
- BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
253
- dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
254
- 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
255
- mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
256
- A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
257
- Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
258
- pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
259
- FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
260
- gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
261
- X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
262
- -----END CERTIFICATE-----
263
-
264
- Comodo AAA Services root
265
- ========================
266
- -----BEGIN CERTIFICATE-----
267
- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
268
- R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
269
- TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
270
- MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
271
- c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
272
- BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
273
- ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
274
- C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
275
- i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
276
- Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
277
- Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
278
- Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
279
- BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
280
- cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
281
- LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
282
- 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
283
- Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
284
- 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
285
- 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
286
- -----END CERTIFICATE-----
287
-
288
- QuoVadis Root CA
289
- ================
290
- -----BEGIN CERTIFICATE-----
291
- MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
292
- ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
293
- eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
294
- MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
295
- cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
296
- EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
297
- AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
298
- J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
299
- F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
300
- YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
301
- AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
302
- PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
303
- ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
304
- MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
305
- YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
306
- ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
307
- Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
308
- Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
309
- BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
310
- FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
311
- aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
312
- tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
313
- fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
314
- LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
315
- gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
316
- 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
317
- 5nrQNiOKSnQ2+Q==
318
- -----END CERTIFICATE-----
319
-
320
- QuoVadis Root CA 2
321
- ==================
322
- -----BEGIN CERTIFICATE-----
323
- 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
- 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
- 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
- aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
327
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
338
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
349
- -----END CERTIFICATE-----
350
-
351
- QuoVadis Root CA 3
352
- ==================
353
- -----BEGIN CERTIFICATE-----
354
- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
355
- EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
356
- OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
357
- aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
358
- DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
359
- DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
360
- KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
361
- DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
362
- BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
363
- p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
364
- nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
365
- MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
366
- Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
367
- uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
368
- BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
369
- YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
370
- aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
371
- BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
372
- VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
373
- ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
374
- AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
375
- qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
376
- hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
377
- POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
378
- Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
379
- 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
380
- bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
381
- g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
382
- vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
383
- qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
384
- -----END CERTIFICATE-----
385
-
386
- Security Communication Root CA
387
- ==============================
388
- -----BEGIN CERTIFICATE-----
389
- MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
390
- U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
391
- HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
392
- U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
393
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
394
- 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
395
- DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
396
- 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
397
- DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
398
- JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
399
- DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
400
- 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
401
- mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
402
- s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
403
- 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
404
- FL39vmwLAw==
405
- -----END CERTIFICATE-----
406
-
407
- Sonera Class 2 Root CA
408
- ======================
409
- -----BEGIN CERTIFICATE-----
410
- MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
411
- U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
412
- NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
413
- IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
414
- /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
415
- dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
416
- f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
417
- tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
418
- nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
419
- XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
420
- 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
421
- cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
422
- Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
423
- EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
424
- llpwrN9M
425
- -----END CERTIFICATE-----
426
-
427
- XRamp Global CA Root
428
- ====================
429
- -----BEGIN CERTIFICATE-----
430
- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
431
- BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
432
- dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
433
- dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
434
- HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
435
- U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
436
- dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
437
- IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
438
- foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
439
- zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
440
- AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
441
- xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
442
- EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
443
- oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
444
- AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
445
- /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
446
- qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
447
- nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
448
- 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
449
- -----END CERTIFICATE-----
450
-
451
- Go Daddy Class 2 CA
452
- ===================
453
- -----BEGIN CERTIFICATE-----
454
- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
455
- VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
456
- ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
457
- A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
458
- RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
459
- ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
460
- 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
461
- qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
462
- YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
463
- vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
464
- BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
465
- atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
466
- MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
467
- A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
468
- PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
469
- I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
470
- HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
471
- Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
472
- vZ8=
473
- -----END CERTIFICATE-----
474
-
475
- Starfield Class 2 CA
476
- ====================
477
- -----BEGIN CERTIFICATE-----
478
- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
479
- U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
480
- Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
481
- MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
482
- A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
483
- SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
484
- bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
485
- JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
486
- epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
487
- F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
488
- MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
489
- hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
490
- bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
491
- QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
492
- afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
493
- PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
494
- xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
495
- KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
496
- QBFGmh95DmK/D5fs4C8fF5Q=
497
- -----END CERTIFICATE-----
498
-
499
- Taiwan GRCA
500
- ===========
501
- -----BEGIN CERTIFICATE-----
502
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
515
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
527
- -----END CERTIFICATE-----
528
-
529
- DigiCert Assured ID Root CA
530
- ===========================
531
- -----BEGIN CERTIFICATE-----
532
- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
533
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
534
- IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
535
- MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
536
- ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
537
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
538
- 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
539
- UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
540
- /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
541
- oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
542
- GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
543
- 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
544
- hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
545
- EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
546
- SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
547
- 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
548
- +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
549
- -----END CERTIFICATE-----
550
-
551
- DigiCert Global Root CA
552
- =======================
553
- -----BEGIN CERTIFICATE-----
554
- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
555
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
556
- HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
557
- MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
558
- dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
559
- hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
560
- TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
561
- BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
562
- 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
563
- 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
564
- o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
565
- 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
566
- BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
567
- EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
568
- tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
569
- UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
570
- CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
571
- -----END CERTIFICATE-----
572
-
573
- DigiCert High Assurance EV Root CA
574
- ==================================
575
- -----BEGIN CERTIFICATE-----
576
- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
577
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
578
- KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
579
- MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
580
- MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
581
- Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
582
- Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
583
- OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
584
- MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
585
- NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
586
- h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
587
- Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
588
- JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
589
- V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
590
- myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
591
- mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
592
- vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
593
- -----END CERTIFICATE-----
594
-
595
- Certplus Class 2 Primary CA
596
- ===========================
597
- -----BEGIN CERTIFICATE-----
598
- MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
599
- BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
600
- OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
601
- dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
602
- ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
603
- 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
604
- Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
605
- YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
606
- e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
607
- CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
608
- YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
609
- L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
610
- P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
611
- TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
612
- 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
613
- //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
614
- l7+ijrRU
615
- -----END CERTIFICATE-----
616
-
617
- DST Root CA X3
618
- ==============
619
- -----BEGIN CERTIFICATE-----
620
- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
621
- ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
622
- DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
623
- cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
624
- ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
625
- rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
626
- UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
627
- xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
628
- utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
629
- AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
630
- MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
631
- dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
632
- GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
633
- RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
634
- fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
635
- -----END CERTIFICATE-----
636
-
637
- SwissSign Gold CA - G2
638
- ======================
639
- -----BEGIN CERTIFICATE-----
640
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
649
- 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
- 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
- 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
- 7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
653
- 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
- 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
- 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
- L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
657
- 5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
658
- 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
- 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
- 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
- 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
- vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
663
- 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
- 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
- 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
666
- -----END CERTIFICATE-----
667
-
668
- SwissSign Silver CA - G2
669
- ========================
670
- -----BEGIN CERTIFICATE-----
671
- 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
- BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
673
- 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
- aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
675
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
685
- 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
- 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
- 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
- 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
- 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
- 3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
691
- 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
- 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
- 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
- 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
- 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
- DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
697
- -----END CERTIFICATE-----
698
-
699
- GeoTrust Primary Certification Authority
700
- ========================================
701
- -----BEGIN CERTIFICATE-----
702
- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
703
- EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
704
- ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
705
- CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
706
- cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
707
- CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
708
- b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
709
- nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
710
- RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
711
- tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
712
- AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
713
- hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
714
- Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
715
- NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
716
- Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
717
- 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
718
- -----END CERTIFICATE-----
719
-
720
- thawte Primary Root CA
721
- ======================
722
- -----BEGIN CERTIFICATE-----
723
- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
724
- BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
725
- aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
726
- cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
727
- MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
728
- SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
729
- KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
730
- FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
731
- oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
732
- 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
733
- q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
734
- aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
735
- afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
736
- VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
737
- AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
738
- uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
739
- xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
740
- jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
741
- z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
742
- -----END CERTIFICATE-----
743
-
744
- VeriSign Class 3 Public Primary Certification Authority - G5
745
- ============================================================
746
- -----BEGIN CERTIFICATE-----
747
- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
748
- BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
749
- ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
750
- IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
751
- ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
752
- yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
753
- biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
754
- dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
755
- YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
756
- ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
757
- j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
758
- Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
759
- Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
760
- fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
761
- BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
762
- Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
763
- aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
764
- SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
765
- X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
766
- KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
767
- Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
768
- ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
769
- -----END CERTIFICATE-----
770
-
771
- SecureTrust CA
772
- ==============
773
- -----BEGIN CERTIFICATE-----
774
- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
775
- EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
776
- dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
777
- BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
778
- ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
779
- OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
780
- DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
781
- GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
782
- 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
783
- ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
784
- BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
785
- aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
786
- KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
787
- SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
788
- mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
789
- nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
790
- 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
791
- -----END CERTIFICATE-----
792
-
793
- Secure Global CA
794
- ================
795
- -----BEGIN CERTIFICATE-----
796
- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
797
- EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
798
- bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
799
- MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
800
- Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
801
- YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
802
- bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
803
- 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
804
- HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
805
- 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
806
- EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
807
- oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
808
- MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
809
- OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
810
- CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
811
- 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
812
- f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
813
- -----END CERTIFICATE-----
814
-
815
- COMODO Certification Authority
816
- ==============================
817
- -----BEGIN CERTIFICATE-----
818
- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
819
- BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
820
- A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
821
- dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
822
- MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
823
- T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
824
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
825
- +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
826
- xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
827
- 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
828
- 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
829
- rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
830
- BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
831
- b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
832
- AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
833
- OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
834
- RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
835
- IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
836
- +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
837
- -----END CERTIFICATE-----
838
-
839
- Network Solutions Certificate Authority
840
- =======================================
841
- -----BEGIN CERTIFICATE-----
842
- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
843
- EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
844
- IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
845
- MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
846
- MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
847
- CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
848
- jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
849
- aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
850
- crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
851
- /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
852
- AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
853
- BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
854
- bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
855
- A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
856
- 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
857
- GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
858
- wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
859
- ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
860
- -----END CERTIFICATE-----
861
-
862
- COMODO ECC Certification Authority
863
- ==================================
864
- -----BEGIN CERTIFICATE-----
865
- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
866
- R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
867
- ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
868
- dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
869
- GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
870
- Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
871
- b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
872
- 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
873
- wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
874
- BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
875
- FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
876
- U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
877
- -----END CERTIFICATE-----
878
-
879
- OISTE WISeKey Global Root GA CA
880
- ===============================
881
- -----BEGIN CERTIFICATE-----
882
- MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
883
- BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
884
- A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
885
- bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
886
- VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
887
- IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
888
- IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
889
- Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
890
- Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
891
- d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
892
- /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
893
- LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
894
- AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
895
- KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
896
- MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
897
- +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
898
- hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
899
- okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
900
- -----END CERTIFICATE-----
901
-
902
- Certigna
903
- ========
904
- -----BEGIN CERTIFICATE-----
905
- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
906
- EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
907
- MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
908
- Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
909
- XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
910
- GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
911
- ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
912
- DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
913
- Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
914
- tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
915
- BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
916
- SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
917
- hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
918
- ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
919
- PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
920
- 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
921
- WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
922
- -----END CERTIFICATE-----
923
-
924
- Deutsche Telekom Root CA 2
925
- ==========================
926
- -----BEGIN CERTIFICATE-----
927
- MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
928
- RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
929
- A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
930
- MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
931
- A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
932
- b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
933
- bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
934
- KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
935
- AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
936
- Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
937
- jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
938
- HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
939
- E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
940
- zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
941
- rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
942
- dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
943
- Cm26OWMohpLzGITY+9HPBVZkVw==
944
- -----END CERTIFICATE-----
945
-
946
- Cybertrust Global Root
947
- ======================
948
- -----BEGIN CERTIFICATE-----
949
- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
950
- ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
951
- MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
952
- ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
953
- +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
954
- 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
955
- AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
956
- 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
957
- 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
958
- BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
959
- MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
960
- A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
961
- lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
962
- 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
963
- hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
964
- X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
965
- WL1WMRJOEcgh4LMRkWXbtKaIOM5V
966
- -----END CERTIFICATE-----
967
-
968
- ePKI Root Certification Authority
969
- =================================
970
- -----BEGIN CERTIFICATE-----
971
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
981
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
996
- 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
997
- -----END CERTIFICATE-----
998
-
999
- certSIGN ROOT CA
1000
- ================
1001
- -----BEGIN CERTIFICATE-----
1002
- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
1003
- VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
1004
- Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
1005
- CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
1006
- JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
1007
- rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
1008
- ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
1009
- 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
1010
- AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
1011
- Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
1012
- AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
1013
- SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
1014
- x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
1015
- vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
1016
- TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1017
- -----END CERTIFICATE-----
1018
-
1019
- GeoTrust Primary Certification Authority - G3
1020
- =============================================
1021
- -----BEGIN CERTIFICATE-----
1022
- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
1023
- BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
1024
- IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
1025
- eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
1026
- NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
1027
- YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
1028
- LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
1029
- hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
1030
- K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
1031
- c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
1032
- IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
1033
- dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
1034
- MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
1035
- 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
1036
- cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
1037
- Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
1038
- AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
1039
- t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
1040
- -----END CERTIFICATE-----
1041
-
1042
- thawte Primary Root CA - G2
1043
- ===========================
1044
- -----BEGIN CERTIFICATE-----
1045
- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
1046
- VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
1047
- IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
1048
- Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
1049
- MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
1050
- b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
1051
- IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
1052
- LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
1053
- 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
1054
- mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
1055
- G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
1056
- rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
1057
- -----END CERTIFICATE-----
1058
-
1059
- thawte Primary Root CA - G3
1060
- ===========================
1061
- -----BEGIN CERTIFICATE-----
1062
- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
1063
- BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1064
- aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1065
- cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
1066
- ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
1067
- d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
1068
- VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
1069
- A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1070
- MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
1071
- P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
1072
- +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
1073
- 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
1074
- vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
1075
- BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
1076
- KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
1077
- A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
1078
- t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
1079
- 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
1080
- er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
1081
- -----END CERTIFICATE-----
1082
-
1083
- GeoTrust Primary Certification Authority - G2
1084
- =============================================
1085
- -----BEGIN CERTIFICATE-----
1086
- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
1087
- VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
1088
- Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
1089
- ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
1090
- OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
1091
- MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
1092
- b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
1093
- BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
1094
- KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
1095
- VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
1096
- EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
1097
- ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
1098
- npaqBA+K
1099
- -----END CERTIFICATE-----
1100
-
1101
- VeriSign Universal Root Certification Authority
1102
- ===============================================
1103
- -----BEGIN CERTIFICATE-----
1104
- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
1105
- BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1106
- ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1107
- IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
1108
- IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
1109
- UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
1110
- cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
1111
- IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
1112
- aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
1113
- 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
1114
- MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
1115
- 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
1116
- AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
1117
- tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
1118
- CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
1119
- a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
1120
- DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
1121
- Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
1122
- Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
1123
- P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
1124
- wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
1125
- mJO37M2CYfE45k+XmCpajQ==
1126
- -----END CERTIFICATE-----
1127
-
1128
- VeriSign Class 3 Public Primary Certification Authority - G4
1129
- ============================================================
1130
- -----BEGIN CERTIFICATE-----
1131
- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
1132
- VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
1133
- b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
1134
- ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
1135
- YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
1136
- MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
1137
- cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
1138
- b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
1139
- IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
1140
- Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
1141
- rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
1142
- /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
1143
- HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
1144
- Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
1145
- A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
1146
- AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
1147
- -----END CERTIFICATE-----
1148
-
1149
- NetLock Arany (Class Gold) Főtanúsítvány
1150
- ========================================
1151
- -----BEGIN CERTIFICATE-----
1152
- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
1153
- A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
1154
- dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
1155
- cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
1156
- MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
1157
- ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
1158
- biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
1159
- c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
1160
- 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
1161
- /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
1162
- H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
1163
- fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
1164
- neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
1165
- BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
1166
- qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
1167
- YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
1168
- bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
1169
- NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
1170
- dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
1171
- -----END CERTIFICATE-----
1172
-
1173
- Staat der Nederlanden Root CA - G2
1174
- ==================================
1175
- -----BEGIN CERTIFICATE-----
1176
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
1191
- 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
- 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
- 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
- +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
- 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
- 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
- CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
1198
- 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
- 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
- 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
- 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
1202
- 66+KAQ==
1203
- -----END CERTIFICATE-----
1204
-
1205
- Hongkong Post Root CA 1
1206
- =======================
1207
- -----BEGIN CERTIFICATE-----
1208
- MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
1209
- DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
1210
- NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
1211
- IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
1212
- AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
1213
- ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
1214
- auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
1215
- qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
1216
- V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
1217
- HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
1218
- h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
1219
- l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
1220
- IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
1221
- T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
1222
- c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
1223
- -----END CERTIFICATE-----
1224
-
1225
- SecureSign RootCA11
1226
- ===================
1227
- -----BEGIN CERTIFICATE-----
1228
- MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
1229
- SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
1230
- b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
1231
- KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
1232
- cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
1233
- TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
1234
- wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
1235
- g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
1236
- O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
1237
- bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
1238
- t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
1239
- OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
1240
- bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
1241
- Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
1242
- y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
1243
- lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
1244
- -----END CERTIFICATE-----
1245
-
1246
- Microsec e-Szigno Root CA 2009
1247
- ==============================
1248
- -----BEGIN CERTIFICATE-----
1249
- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
1250
- MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
1251
- c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
1252
- dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
1253
- BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
1254
- U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
1255
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
1256
- fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
1257
- 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
1258
- pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
1259
- 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
1260
- AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
1261
- QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
1262
- FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
1263
- lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
1264
- I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
1265
- tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
1266
- yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
1267
- LXpUq3DDfSJlgnCW
1268
- -----END CERTIFICATE-----
1269
-
1270
- GlobalSign Root CA - R3
1271
- =======================
1272
- -----BEGIN CERTIFICATE-----
1273
- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
1274
- YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
1275
- bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
1276
- aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
1277
- bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
1278
- iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
1279
- 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
1280
- rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
1281
- OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
1282
- xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
1283
- FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
1284
- lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
1285
- EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
1286
- bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
1287
- YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
1288
- kpeDMdmztcpHWD9f
1289
- -----END CERTIFICATE-----
1290
-
1291
- Autoridad de Certificacion Firmaprofesional CIF A62634068
1292
- =========================================================
1293
- -----BEGIN CERTIFICATE-----
1294
- MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
1295
- BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
1296
- MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
1297
- QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
1298
- NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
1299
- Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
1300
- B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
1301
- 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
1302
- ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
1303
- plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
1304
- MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
1305
- LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
1306
- bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
1307
- vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
1308
- EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
1309
- DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
1310
- cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
1311
- bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
1312
- ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
1313
- 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
1314
- R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
1315
- T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
1316
- Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
1317
- osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
1318
- crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
1319
- saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
1320
- KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
1321
- 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
1322
- -----END CERTIFICATE-----
1323
-
1324
- Izenpe.com
1325
- ==========
1326
- -----BEGIN CERTIFICATE-----
1327
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
1338
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
1354
- -----END CERTIFICATE-----
1355
-
1356
- Chambers of Commerce Root - 2008
1357
- ================================
1358
- -----BEGIN CERTIFICATE-----
1359
- MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
1360
- MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
1361
- bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
1362
- QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
1363
- Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
1364
- ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
1365
- EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
1366
- cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
1367
- AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
1368
- XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
1369
- h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
1370
- ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
1371
- NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
1372
- D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
1373
- lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
1374
- 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
1375
- ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
1376
- EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
1377
- G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
1378
- BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
1379
- bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
1380
- bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
1381
- CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
1382
- AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
1383
- wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
1384
- 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
1385
- RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
1386
- M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
1387
- YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
1388
- 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
1389
- zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
1390
- nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
1391
- OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
1392
- -----END CERTIFICATE-----
1393
-
1394
- Global Chambersign Root - 2008
1395
- ==============================
1396
- -----BEGIN CERTIFICATE-----
1397
- MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
1398
- MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
1399
- bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
1400
- QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
1401
- NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
1402
- Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
1403
- QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
1404
- aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
1405
- VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
1406
- XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
1407
- ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
1408
- /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
1409
- TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
1410
- H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
1411
- Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
1412
- HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
1413
- wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
1414
- AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
1415
- BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
1416
- BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
1417
- aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
1418
- aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
1419
- 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
1420
- dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
1421
- /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
1422
- ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
1423
- dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
1424
- 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
1425
- foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
1426
- qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
1427
- P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
1428
- c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
1429
- 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
1430
- -----END CERTIFICATE-----
1431
-
1432
- Go Daddy Root Certificate Authority - G2
1433
- ========================================
1434
- -----BEGIN CERTIFICATE-----
1435
- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
1436
- B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
1437
- MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
1438
- MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
1439
- b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
1440
- A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
1441
- hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
1442
- 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
1443
- +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
1444
- fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
1445
- NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
1446
- MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
1447
- BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
1448
- vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
1449
- 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
1450
- N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
1451
- LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
1452
- -----END CERTIFICATE-----
1453
-
1454
- Starfield Root Certificate Authority - G2
1455
- =========================================
1456
- -----BEGIN CERTIFICATE-----
1457
- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
1458
- B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
1459
- b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
1460
- eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
1461
- DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
1462
- VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
1463
- dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
1464
- W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
1465
- bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
1466
- N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
1467
- ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
1468
- JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
1469
- AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
1470
- TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
1471
- 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
1472
- F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
1473
- pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
1474
- c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
1475
- -----END CERTIFICATE-----
1476
-
1477
- Starfield Services Root Certificate Authority - G2
1478
- ==================================================
1479
- -----BEGIN CERTIFICATE-----
1480
- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
1481
- B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
1482
- b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
1483
- IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
1484
- BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
1485
- dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
1486
- Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1487
- AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
1488
- h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
1489
- hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
1490
- LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
1491
- rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
1492
- AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
1493
- SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
1494
- E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
1495
- xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
1496
- iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
1497
- YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
1498
- -----END CERTIFICATE-----
1499
-
1500
- AffirmTrust Commercial
1501
- ======================
1502
- -----BEGIN CERTIFICATE-----
1503
- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
1504
- BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
1505
- MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
1506
- bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
1507
- AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
1508
- DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
1509
- C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
1510
- BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
1511
- MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
1512
- HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
1513
- AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
1514
- hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
1515
- qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
1516
- 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
1517
- sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
1518
- -----END CERTIFICATE-----
1519
-
1520
- AffirmTrust Networking
1521
- ======================
1522
- -----BEGIN CERTIFICATE-----
1523
- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
1524
- BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
1525
- MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
1526
- bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
1527
- AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
1528
- Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
1529
- dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
1530
- /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
1531
- h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
1532
- HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
1533
- AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
1534
- UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
1535
- 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
1536
- WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
1537
- /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
1538
- -----END CERTIFICATE-----
1539
-
1540
- AffirmTrust Premium
1541
- ===================
1542
- -----BEGIN CERTIFICATE-----
1543
- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
1544
- BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
1545
- OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
1546
- dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
1547
- MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
1548
- BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
1549
- 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
1550
- +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
1551
- GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
1552
- p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
1553
- S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
1554
- 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
1555
- /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
1556
- +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
1557
- /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
1558
- MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
1559
- Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
1560
- 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
1561
- L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
1562
- +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
1563
- BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
1564
- IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
1565
- g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
1566
- zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
1567
- -----END CERTIFICATE-----
1568
-
1569
- AffirmTrust Premium ECC
1570
- =======================
1571
- -----BEGIN CERTIFICATE-----
1572
- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
1573
- BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
1574
- MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
1575
- cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
1576
- IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
1577
- N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
1578
- BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
1579
- BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
1580
- 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
1581
- eQ==
1582
- -----END CERTIFICATE-----
1583
-
1584
- Certum Trusted Network CA
1585
- =========================
1586
- -----BEGIN CERTIFICATE-----
1587
- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
1588
- ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
1589
- biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
1590
- MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
1591
- ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1592
- MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
1593
- AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
1594
- l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
1595
- J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
1596
- fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
1597
- cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
1598
- Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
1599
- DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
1600
- jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
1601
- mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
1602
- Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
1603
- 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
1604
- -----END CERTIFICATE-----
1605
-
1606
- TWCA Root Certification Authority
1607
- =================================
1608
- -----BEGIN CERTIFICATE-----
1609
- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
1610
- VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
1611
- dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
1612
- EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
1613
- IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
1614
- AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
1615
- QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
1616
- oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
1617
- 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
1618
- y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
1619
- BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
1620
- 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
1621
- mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
1622
- QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
1623
- T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
1624
- Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
1625
- -----END CERTIFICATE-----
1626
-
1627
- Security Communication RootCA2
1628
- ==============================
1629
- -----BEGIN CERTIFICATE-----
1630
- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
1631
- U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
1632
- dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
1633
- SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
1634
- aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
1635
- ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
1636
- +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
1637
- 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
1638
- spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
1639
- EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
1640
- QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
1641
- CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
1642
- u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
1643
- 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
1644
- tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
1645
- mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
1646
- -----END CERTIFICATE-----
1647
-
1648
- EC-ACC
1649
- ======
1650
- -----BEGIN CERTIFICATE-----
1651
- MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
1652
- BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
1653
- ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
1654
- VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
1655
- CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
1656
- BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
1657
- MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
1658
- SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
1659
- Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
1660
- cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
1661
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
1662
- w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
1663
- ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
1664
- HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
1665
- E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
1666
- 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
1667
- BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
1668
- VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
1669
- Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
1670
- dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
1671
- lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
1672
- Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
1673
- l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
1674
- E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
1675
- 5EI=
1676
- -----END CERTIFICATE-----
1677
-
1678
- Hellenic Academic and Research Institutions RootCA 2011
1679
- =======================================================
1680
- -----BEGIN CERTIFICATE-----
1681
- MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
1682
- O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
1683
- aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
1684
- IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
1685
- AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
1686
- IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
1687
- IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
1688
- AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
1689
- 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
1690
- 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
1691
- 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
1692
- 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
1693
- MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
1694
- MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
1695
- b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
1696
- XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
1697
- TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
1698
- /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
1699
- 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
1700
- -----END CERTIFICATE-----
1701
-
1702
- Actalis Authentication Root CA
1703
- ==============================
1704
- -----BEGIN CERTIFICATE-----
1705
- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
1706
- BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
1707
- AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
1708
- MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
1709
- IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
1710
- IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
1711
- wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
1712
- by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
1713
- zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
1714
- YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
1715
- oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
1716
- EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
1717
- hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
1718
- EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
1719
- jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
1720
- iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
1721
- ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
1722
- WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
1723
- JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
1724
- K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
1725
- Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
1726
- 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
1727
- 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
1728
- lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
1729
- OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
1730
- vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
1731
- -----END CERTIFICATE-----
1732
-
1733
- Trustis FPS Root CA
1734
- ===================
1735
- -----BEGIN CERTIFICATE-----
1736
- MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
1737
- EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
1738
- IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
1739
- BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
1740
- KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
1741
- RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
1742
- H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
1743
- cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
1744
- o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
1745
- AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
1746
- BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
1747
- GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
1748
- yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
1749
- 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
1750
- l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
1751
- iB6XzCGcKQENZetX2fNXlrtIzYE=
1752
- -----END CERTIFICATE-----
1753
-
1754
- Buypass Class 2 Root CA
1755
- =======================
1756
- -----BEGIN CERTIFICATE-----
1757
- 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
- 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
- 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
- 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
- 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
- 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
- 9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
1764
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
1772
- 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
- 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
- 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
- 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
- DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
1777
- 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
- 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
- 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
- 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
1781
- rJgWVqA=
1782
- -----END CERTIFICATE-----
1783
-
1784
- Buypass Class 3 Root CA
1785
- =======================
1786
- -----BEGIN CERTIFICATE-----
1787
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
1805
- 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
- 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
- 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
- 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
- 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
- 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
1811
- Cp/HuZc=
1812
- -----END CERTIFICATE-----
1813
-
1814
- T-TeleSec GlobalRoot Class 3
1815
- ============================
1816
- -----BEGIN CERTIFICATE-----
1817
- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
1818
- IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
1819
- cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
1820
- MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
1821
- dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
1822
- ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
1823
- DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
1824
- 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
1825
- NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
1826
- iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
1827
- 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
1828
- MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
1829
- AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
1830
- fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
1831
- ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
1832
- P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
1833
- e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
1834
- -----END CERTIFICATE-----
1835
-
1836
- EE Certification Centre Root CA
1837
- ===============================
1838
- -----BEGIN CERTIFICATE-----
1839
- MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
1840
- EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
1841
- dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
1842
- MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
1843
- UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
1844
- ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
1845
- DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
1846
- TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
1847
- rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
1848
- 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
1849
- P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
1850
- AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
1851
- MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
1852
- BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
1853
- xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
1854
- lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
1855
- uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
1856
- 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
1857
- dcGWxZ0=
1858
- -----END CERTIFICATE-----
1859
-
1860
- D-TRUST Root Class 3 CA 2 2009
1861
- ==============================
1862
- -----BEGIN CERTIFICATE-----
1863
- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
1864
- DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
1865
- Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
1866
- LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
1867
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
1868
- ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
1869
- BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
1870
- KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
1871
- p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
1872
- AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
1873
- 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
1874
- eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
1875
- MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
1876
- PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
1877
- OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
1878
- 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
1879
- o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
1880
- dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
1881
- X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
1882
- -----END CERTIFICATE-----
1883
-
1884
- D-TRUST Root Class 3 CA 2 EV 2009
1885
- =================================
1886
- -----BEGIN CERTIFICATE-----
1887
- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
1888
- DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
1889
- OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
1890
- DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
1891
- OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
1892
- egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
1893
- zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
1894
- 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
1895
- sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
1896
- 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
1897
- cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
1898
- ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
1899
- MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
1900
- b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
1901
- c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
1902
- PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
1903
- nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
1904
- ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
1905
- NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
1906
- w9y4AyHqnxbxLFS1
1907
- -----END CERTIFICATE-----
1908
-
1909
- CA Disig Root R2
1910
- ================
1911
- -----BEGIN CERTIFICATE-----
1912
- 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
- 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
- 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
- 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
- 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
- w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia
1918
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV
1926
- 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
- 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
- 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
- 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
- dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8
1931
- 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
- mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01
1933
- 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
- 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
- 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
1936
- 7+ZtsH8tZ/3zbBt1RqPlShfppNcL
1937
- -----END CERTIFICATE-----
1938
-
1939
- ACCVRAIZ1
1940
- =========
1941
- -----BEGIN CERTIFICATE-----
1942
- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
1943
- SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
1944
- MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
1945
- UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
1946
- DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
1947
- jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
1948
- RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
1949
- aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
1950
- 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
1951
- WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
1952
- 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
1953
- 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
1954
- 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
1955
- Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
1956
- Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
1957
- Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
1958
- VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
1959
- Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
1960
- QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
1961
- AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
1962
- YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
1963
- AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
1964
- IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
1965
- aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
1966
- dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
1967
- MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
1968
- hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
1969
- R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
1970
- YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
1971
- nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
1972
- TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
1973
- sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
1974
- I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
1975
- Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
1976
- 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
1977
- EfbRD0tVNEYqi4Y7
1978
- -----END CERTIFICATE-----
1979
-
1980
- TWCA Global Root CA
1981
- ===================
1982
- -----BEGIN CERTIFICATE-----
1983
- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
1984
- CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
1985
- QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
1986
- EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
1987
- Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
1988
- nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
1989
- r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
1990
- Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
1991
- tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
1992
- KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
1993
- sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
1994
- yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
1995
- kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
1996
- zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
1997
- AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
1998
- cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
1999
- LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
2000
- 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
2001
- /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
2002
- lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
2003
- A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
2004
- i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
2005
- EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
2006
- zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
2007
- -----END CERTIFICATE-----
2008
-
2009
- TeliaSonera Root CA v1
2010
- ======================
2011
- -----BEGIN CERTIFICATE-----
2012
- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
2013
- CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
2014
- MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
2015
- VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
2016
- 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
2017
- 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
2018
- B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
2019
- Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
2020
- oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
2021
- F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
2022
- oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
2023
- gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
2024
- TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
2025
- AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
2026
- DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
2027
- zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
2028
- 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
2029
- pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
2030
- G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
2031
- c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
2032
- JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
2033
- qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
2034
- Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
2035
- WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
2036
- -----END CERTIFICATE-----
2037
-
2038
- E-Tugra Certification Authority
2039
- ===============================
2040
- -----BEGIN CERTIFICATE-----
2041
- MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
2042
- DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
2043
- ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
2044
- ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
2045
- NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
2046
- QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
2047
- cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
2048
- DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
2049
- MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
2050
- hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
2051
- CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
2052
- ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
2053
- BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
2054
- E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
2055
- rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
2056
- jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
2057
- rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
2058
- dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
2059
- /wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
2060
- MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
2061
- kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
2062
- XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
2063
- VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
2064
- a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
2065
- dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
2066
- KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
2067
- Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
2068
- 8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
2069
- C7TbO6Orb1wdtn7os4I07QZcJA==
2070
- -----END CERTIFICATE-----
2071
-
2072
- T-TeleSec GlobalRoot Class 2
2073
- ============================
2074
- -----BEGIN CERTIFICATE-----
2075
- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
2076
- IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
2077
- cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
2078
- MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
2079
- dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
2080
- ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
2081
- DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
2082
- SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
2083
- vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
2084
- 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
2085
- WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
2086
- MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
2087
- YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
2088
- r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
2089
- vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
2090
- 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
2091
- 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
2092
- -----END CERTIFICATE-----
2093
-
2094
- Atos TrustedRoot 2011
2095
- =====================
2096
- -----BEGIN CERTIFICATE-----
2097
- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
2098
- cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
2099
- MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
2100
- A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
2101
- hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
2102
- 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
2103
- DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
2104
- HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
2105
- z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
2106
- l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
2107
- bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
2108
- CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
2109
- k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
2110
- TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
2111
- 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
2112
- 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
2113
- -----END CERTIFICATE-----
2114
-
2115
- QuoVadis Root CA 1 G3
2116
- =====================
2117
- -----BEGIN CERTIFICATE-----
2118
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV
2128
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
2142
- hMJKzRwuJIczYOXD
2143
- -----END CERTIFICATE-----
2144
-
2145
- QuoVadis Root CA 2 G3
2146
- =====================
2147
- -----BEGIN CERTIFICATE-----
2148
- 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
- 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
- b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN
2151
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2172
- O3jtZsSOeWmD3n+M
2173
- -----END CERTIFICATE-----
2174
-
2175
- QuoVadis Root CA 3 G3
2176
- =====================
2177
- -----BEGIN CERTIFICATE-----
2178
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2202
- PpxxVJkES/1Y+Zj0
2203
- -----END CERTIFICATE-----
2204
-
2205
- DigiCert Assured ID Root G2
2206
- ===========================
2207
- -----BEGIN CERTIFICATE-----
2208
- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
2209
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
2210
- IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
2211
- MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
2212
- ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
2213
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
2214
- 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
2215
- bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
2216
- VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
2217
- YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
2218
- lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
2219
- w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
2220
- 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
2221
- d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
2222
- hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
2223
- jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
2224
- IhNzbM8m9Yop5w==
2225
- -----END CERTIFICATE-----
2226
-
2227
- DigiCert Assured ID Root G3
2228
- ===========================
2229
- -----BEGIN CERTIFICATE-----
2230
- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
2231
- UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
2232
- VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
2233
- MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
2234
- d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
2235
- BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
2236
- RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
2237
- KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
2238
- UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
2239
- YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
2240
- 1vUhZscv6pZjamVFkpUBtA==
2241
- -----END CERTIFICATE-----
2242
-
2243
- DigiCert Global Root G2
2244
- =======================
2245
- -----BEGIN CERTIFICATE-----
2246
- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
2247
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
2248
- HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
2249
- MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
2250
- dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
2251
- hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
2252
- kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
2253
- 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
2254
- BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
2255
- UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
2256
- o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
2257
- 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
2258
- F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
2259
- WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
2260
- QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
2261
- iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
2262
- MrY=
2263
- -----END CERTIFICATE-----
2264
-
2265
- DigiCert Global Root G3
2266
- =======================
2267
- -----BEGIN CERTIFICATE-----
2268
- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
2269
- UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
2270
- VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
2271
- MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
2272
- aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
2273
- AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
2274
- YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
2275
- BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
2276
- Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
2277
- 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
2278
- VOKa5Vt8sycX
2279
- -----END CERTIFICATE-----
2280
-
2281
- DigiCert Trusted Root G4
2282
- ========================
2283
- -----BEGIN CERTIFICATE-----
2284
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr
2302
- 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
- 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
- ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN
2305
- 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
- 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
- 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
- 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
2309
- 82Z+
2310
- -----END CERTIFICATE-----
2311
-
2312
- COMODO RSA Certification Authority
2313
- ==================================
2314
- -----BEGIN CERTIFICATE-----
2315
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
2331
- 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
- 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
- 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
- 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
- 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
- sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
2337
- 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
- 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
- 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
- 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
2341
- LaZRfyHBNVOFBkpdn627G190
2342
- -----END CERTIFICATE-----
2343
-
2344
- USERTrust RSA Certification Authority
2345
- =====================================
2346
- -----BEGIN CERTIFICATE-----
2347
- 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
- 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
- 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
- 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
- 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
- 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
- dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
2354
- 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
- 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
- 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
- +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
- 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
- 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
- lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
2361
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2373
- Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
2374
- -----END CERTIFICATE-----
2375
-
2376
- USERTrust ECC Certification Authority
2377
- =====================================
2378
- -----BEGIN CERTIFICATE-----
2379
- MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
2380
- VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
2381
- aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
2382
- biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
2383
- VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
2384
- aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
2385
- biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
2386
- 0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
2387
- nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
2388
- HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
2389
- HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
2390
- 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
2391
- -----END CERTIFICATE-----
2392
-
2393
- GlobalSign ECC Root CA - R4
2394
- ===========================
2395
- -----BEGIN CERTIFICATE-----
2396
- MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
2397
- R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
2398
- EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
2399
- R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
2400
- EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
2401
- OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
2402
- AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
2403
- MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
2404
- JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
2405
- -----END CERTIFICATE-----
2406
-
2407
- GlobalSign ECC Root CA - R5
2408
- ===========================
2409
- -----BEGIN CERTIFICATE-----
2410
- MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
2411
- R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
2412
- EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
2413
- R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
2414
- EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
2415
- SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
2416
- h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
2417
- BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
2418
- uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
2419
- yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
2420
- -----END CERTIFICATE-----
2421
-
2422
- Staat der Nederlanden Root CA - G3
2423
- ==================================
2424
- -----BEGIN CERTIFICATE-----
2425
- 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
- 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
- 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
- TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
2429
- ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
2430
- 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
- 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
- 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
- Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
2434
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
2444
- 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
- 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
- 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
- 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
- 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
- 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
2450
- -----END CERTIFICATE-----
2451
-
2452
- Staat der Nederlanden EV Root CA
2453
- ================================
2454
- -----BEGIN CERTIFICATE-----
2455
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
2469
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2479
- eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
2480
- -----END CERTIFICATE-----
2481
-
2482
- IdenTrust Commercial Root CA 1
2483
- ==============================
2484
- -----BEGIN CERTIFICATE-----
2485
- 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
- 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
- b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
2488
- 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
- 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
- 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
- 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
- 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
- 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
- 3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
2495
- 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
- WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
2497
- 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
- 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
- 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
- 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
- 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
- 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
- ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
2504
- 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
- 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
- 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
- 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
- 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
2509
- cGzM7vRX+Bi6hG6H
2510
- -----END CERTIFICATE-----
2511
-
2512
- IdenTrust Public Sector Root CA 1
2513
- =================================
2514
- -----BEGIN CERTIFICATE-----
2515
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
2528
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2539
- 3Wl9af0AVqW3rLatt8o+Ae+c
2540
- -----END CERTIFICATE-----
2541
-
2542
- Entrust Root Certification Authority - G2
2543
- =========================================
2544
- -----BEGIN CERTIFICATE-----
2545
- MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
2546
- BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
2547
- bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
2548
- b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
2549
- HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
2550
- DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
2551
- OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
2552
- eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
2553
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
2554
- /vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
2555
- HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
2556
- s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
2557
- TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
2558
- AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
2559
- 0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
2560
- iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
2561
- Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
2562
- nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
2563
- vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
2564
- e4pIb4tF9g==
2565
- -----END CERTIFICATE-----
2566
-
2567
- Entrust Root Certification Authority - EC1
2568
- ==========================================
2569
- -----BEGIN CERTIFICATE-----
2570
- MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
2571
- FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
2572
- YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
2573
- ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
2574
- IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
2575
- FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
2576
- LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
2577
- dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
2578
- IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
2579
- AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
2580
- 9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
2581
- FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
2582
- vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
2583
- kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
2584
- -----END CERTIFICATE-----
2585
-
2586
- CFCA EV ROOT
2587
- ============
2588
- -----BEGIN CERTIFICATE-----
2589
- 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
- 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
- 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
- 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
- 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
- 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
- 7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
2596
- 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
- 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
- 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
- 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
- gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
2601
- hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
2602
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2614
- -----END CERTIFICATE-----
2615
-
2616
- Certinomis - Root CA
2617
- ====================
2618
- -----BEGIN CERTIFICATE-----
2619
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00
2627
- 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
- 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
- 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
- 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
- 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
- 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
- YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I
2634
- 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
- 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
- WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw
2637
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2644
- hkIGuUE=
2645
- -----END CERTIFICATE-----
2646
-
2647
- OISTE WISeKey Global Root GB CA
2648
- ===============================
2649
- -----BEGIN CERTIFICATE-----
2650
- MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
2651
- EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
2652
- ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
2653
- MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
2654
- VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
2655
- b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
2656
- scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
2657
- rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
2658
- 9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
2659
- Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
2660
- GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
2661
- /zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
2662
- hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
2663
- dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
2664
- VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
2665
- HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
2666
- Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
2667
- -----END CERTIFICATE-----
2668
-
2669
- SZAFIR ROOT CA2
2670
- ===============
2671
- -----BEGIN CERTIFICATE-----
2672
- MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
2673
- A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
2674
- BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
2675
- BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
2676
- VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
2677
- qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
2678
- DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
2679
- 2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
2680
- ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
2681
- ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
2682
- AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
2683
- AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
2684
- O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
2685
- oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
2686
- 4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
2687
- +/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
2688
- -----END CERTIFICATE-----
2689
-
2690
- Certum Trusted Network CA 2
2691
- ===========================
2692
- -----BEGIN CERTIFICATE-----
2693
- MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
2694
- BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
2695
- bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
2696
- ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
2697
- TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
2698
- cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
2699
- IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
2700
- 7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
2701
- CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
2702
- Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
2703
- uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
2704
- GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
2705
- 9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
2706
- Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
2707
- hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
2708
- BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
2709
- AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
2710
- hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
2711
- Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
2712
- L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
2713
- clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
2714
- pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
2715
- w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
2716
- J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
2717
- ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
2718
- is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
2719
- zAYspsbiDrW5viSP
2720
- -----END CERTIFICATE-----
2721
-
2722
- Hellenic Academic and Research Institutions RootCA 2015
2723
- =======================================================
2724
- -----BEGIN CERTIFICATE-----
2725
- MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
2726
- BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
2727
- aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
2728
- YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
2729
- MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
2730
- QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
2731
- BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
2732
- MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
2733
- bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
2734
- iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
2735
- 6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
2736
- FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
2737
- i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
2738
- GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
2739
- fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
2740
- iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
2741
- Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
2742
- AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
2743
- hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
2744
- D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
2745
- d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
2746
- d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
2747
- 82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
2748
- davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
2749
- Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
2750
- J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
2751
- JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
2752
- p/UsQu0yrbYhnr68
2753
- -----END CERTIFICATE-----
2754
-
2755
- Hellenic Academic and Research Institutions ECC RootCA 2015
2756
- ===========================================================
2757
- -----BEGIN CERTIFICATE-----
2758
- MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
2759
- aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
2760
- cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
2761
- aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
2762
- MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
2763
- IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
2764
- VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
2765
- Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
2766
- dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
2767
- Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
2768
- BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
2769
- GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
2770
- dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
2771
- -----END CERTIFICATE-----
2772
-
2773
- ISRG Root X1
2774
- ============
2775
- -----BEGIN CERTIFICATE-----
2776
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2800
- m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
2801
- -----END CERTIFICATE-----
2802
-
2803
- AC RAIZ FNMT-RCM
2804
- ================
2805
- -----BEGIN CERTIFICATE-----
2806
- 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
- AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw
2808
- MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD
2809
- 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
- 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
- qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr
2812
- 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
- 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
- 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
- WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT
2816
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
2831
- -----END CERTIFICATE-----
2832
-
2833
- Amazon Root CA 1
2834
- ================
2835
- -----BEGIN CERTIFICATE-----
2836
- MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
2837
- VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
2838
- MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
2839
- bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
2840
- ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
2841
- FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
2842
- gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
2843
- dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
2844
- VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
2845
- /zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
2846
- DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
2847
- CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
2848
- 8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
2849
- 2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
2850
- xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
2851
- -----END CERTIFICATE-----
2852
-
2853
- Amazon Root CA 2
2854
- ================
2855
- -----BEGIN CERTIFICATE-----
2856
- MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD
2857
- VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1
2858
- MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
2859
- bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
2860
- ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4
2861
- kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp
2862
- N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9
2863
- AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd
2864
- fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx
2865
- kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS
2866
- btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0
2867
- Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN
2868
- c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+
2869
- 3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw
2870
- DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA
2871
- A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
2872
- +gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE
2873
- YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW
2874
- xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ
2875
- gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW
2876
- aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV
2877
- Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3
2878
- KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi
2879
- JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=
2880
- -----END CERTIFICATE-----
2881
-
2882
- Amazon Root CA 3
2883
- ================
2884
- -----BEGIN CERTIFICATE-----
2885
- MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
2886
- EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
2887
- NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
2888
- MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
2889
- f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
2890
- Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
2891
- rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
2892
- eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
2893
- -----END CERTIFICATE-----
2894
-
2895
- Amazon Root CA 4
2896
- ================
2897
- -----BEGIN CERTIFICATE-----
2898
- MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
2899
- EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
2900
- NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
2901
- MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
2902
- /sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
2903
- 83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
2904
- HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
2905
- MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
2906
- AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
2907
- -----END CERTIFICATE-----
2908
-
2909
- LuxTrust Global Root 2
2910
- ======================
2911
- -----BEGIN CERTIFICATE-----
2912
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2938
- -----END CERTIFICATE-----
2939
-
2940
- TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
2941
- =============================================
2942
- -----BEGIN CERTIFICATE-----
2943
- MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
2944
- D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
2945
- IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
2946
- TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
2947
- ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
2948
- VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
2949
- c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
2950
- bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
2951
- IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2952
- MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
2953
- 6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
2954
- wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
2955
- 3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
2956
- WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
2957
- ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
2958
- KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
2959
- AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
2960
- lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
2961
- e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
2962
- q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
2963
- -----END CERTIFICATE-----
2964
-
2965
- GDCA TrustAUTH R5 ROOT
2966
- ======================
2967
- -----BEGIN CERTIFICATE-----
2968
- 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
- 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
- DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow
2971
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
2993
- -----END CERTIFICATE-----
2994
-
2995
- TrustCor RootCert CA-1
2996
- ======================
2997
- -----BEGIN CERTIFICATE-----
2998
- MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP
2999
- MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
3000
- U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
3001
- dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx
3002
- MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu
3003
- YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe
3004
- VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy
3005
- dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq
3006
- jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4
3007
- pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0
3008
- JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h
3009
- gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw
3010
- /Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j
3011
- BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3012
- AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5
3013
- mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
3014
- ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C
3015
- qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P
3016
- 3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk=
3017
- -----END CERTIFICATE-----
3018
-
3019
- TrustCor RootCert CA-2
3020
- ======================
3021
- -----BEGIN CERTIFICATE-----
3022
- MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w
3023
- DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT
3024
- eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0
3025
- eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy
3026
- MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h
3027
- bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
3028
- cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0
3029
- IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb
3030
- ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk
3031
- RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1
3032
- oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb
3033
- XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1
3034
- /p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q
3035
- jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP
3036
- eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg
3037
- rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
3038
- 8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU
3039
- 2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD
3040
- VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h
3041
- Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp
3042
- kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv
3043
- 2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3
3044
- S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw
3045
- PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv
3046
- DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU
3047
- RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE
3048
- xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX
3049
- RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ
3050
- -----END CERTIFICATE-----
3051
-
3052
- TrustCor ECA-1
3053
- ==============
3054
- -----BEGIN CERTIFICATE-----
3055
- MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP
3056
- MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
3057
- U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
3058
- dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw
3059
- N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5
3060
- MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y
3061
- IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG
3062
- SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR
3063
- MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23
3064
- xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc
3065
- p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+
3066
- fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj
3067
- YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL
3068
- f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
3069
- AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u
3070
- /ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
3071
- hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs
3072
- J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC
3073
- jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g==
3074
- -----END CERTIFICATE-----
3075
-
3076
- SSL.com Root Certification Authority RSA
3077
- ========================================
3078
- -----BEGIN CERTIFICATE-----
3079
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
3105
- WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k=
3106
- -----END CERTIFICATE-----
3107
-
3108
- SSL.com Root Certification Authority ECC
3109
- ========================================
3110
- -----BEGIN CERTIFICATE-----
3111
- MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV
3112
- BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv
3113
- BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy
3114
- MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO
3115
- BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
3116
- bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
3117
- BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+
3118
- 8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR
3119
- hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT
3120
- jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW
3121
- e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z
3122
- 5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
3123
- -----END CERTIFICATE-----
3124
-
3125
- SSL.com EV Root Certification Authority RSA R2
3126
- ==============================================
3127
- -----BEGIN CERTIFICATE-----
3128
- MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w
3129
- DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u
3130
- MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
3131
- MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI
3132
- DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD
3133
- VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN
3134
- BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh
3135
- hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w
3136
- cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO
3137
- Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+
3138
- B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh
3139
- CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim
3140
- 9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto
3141
- RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm
3142
- JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48
3143
- +qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
3144
- HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp
3145
- qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1
3146
- ++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx
3147
- Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G
3148
- guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz
3149
- OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7
3150
- CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq
3151
- lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR
3152
- rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1
3153
- hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX
3154
- 9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
3155
- -----END CERTIFICATE-----
3156
-
3157
- SSL.com EV Root Certification Authority ECC
3158
- ===========================================
3159
- -----BEGIN CERTIFICATE-----
3160
- MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV
3161
- BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy
3162
- BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw
3163
- MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
3164
- EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM
3165
- LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
3166
- BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy
3167
- 3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O
3168
- BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
3169
- 5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ
3170
- N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
3171
- m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
3172
- -----END CERTIFICATE-----
3173
-
3174
- GlobalSign Root CA - R6
3175
- =======================
3176
- -----BEGIN CERTIFICATE-----
3177
- MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX
3178
- 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
- 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
- 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
- U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss
3182
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym
3196
- 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
- 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
- 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
- uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK
3200
- oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t
3201
- 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
3202
- -----END CERTIFICATE-----
3203
-
3204
- OISTE WISeKey Global Root GC CA
3205
- ===============================
3206
- -----BEGIN CERTIFICATE-----
3207
- MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
3208
- SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
3209
- MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
3210
- Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
3211
- ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
3212
- bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
3213
- VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
3214
- NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
3215
- BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
3216
- AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
3217
- AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
3218
- -----END CERTIFICATE-----
3219
-
3220
- GTS Root R1
3221
- ===========
3222
- -----BEGIN CERTIFICATE-----
3223
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
3233
- 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
- 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
- 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
- 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
- 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
- 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
- d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
3240
- fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
3241
- 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
- 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
- 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
- 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
- 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
- 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
3247
- CFF1pkgl
3248
- -----END CERTIFICATE-----
3249
-
3250
- GTS Root R2
3251
- ===========
3252
- -----BEGIN CERTIFICATE-----
3253
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
3271
- c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
3272
- 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
- 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
- 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
- 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
- gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
3277
- o/DUhgkC
3278
- -----END CERTIFICATE-----
3279
-
3280
- GTS Root R3
3281
- ===========
3282
- -----BEGIN CERTIFICATE-----
3283
- MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
3284
- UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
3285
- UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
3286
- ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
3287
- hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
3288
- Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
3289
- QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
3290
- 0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
3291
- glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
3292
- KaqW04MjyaR7YbPMAuhd
3293
- -----END CERTIFICATE-----
3294
-
3295
- GTS Root R4
3296
- ===========
3297
- -----BEGIN CERTIFICATE-----
3298
- MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
3299
- UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
3300
- UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
3301
- ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
3302
- hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
3303
- 6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
3304
- QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
3305
- 2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
3306
- N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
3307
- zPKwTdb+mciUqXWi4w==
3308
- -----END CERTIFICATE-----
3309
-
3310
- UCA Global G2 Root
3311
- ==================
3312
- -----BEGIN CERTIFICATE-----
3313
- MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG
3314
- EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x
3315
- NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU
3316
- cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3317
- MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT
3318
- oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV
3319
- 8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS
3320
- h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o
3321
- LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/
3322
- R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe
3323
- KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa
3324
- 4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc
3325
- OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97
3326
- 8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
3327
- BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo
3328
- 5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
3329
- 1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A
3330
- Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9
3331
- yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX
3332
- c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo
3333
- jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk
3334
- bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x
3335
- ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn
3336
- RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==
3337
- -----END CERTIFICATE-----
3338
-
3339
- UCA Extended Validation Root
3340
- ============================
3341
- -----BEGIN CERTIFICATE-----
3342
- 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
- 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
- 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
- A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi
3346
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
3358
- 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
- aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4
3360
- 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
- +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
- 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
- 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
- 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
- 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
3366
- dhh2n1ax
3367
- -----END CERTIFICATE-----
3368
-
3369
- Certigna Root CA
3370
- ================
3371
- -----BEGIN CERTIFICATE-----
3372
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16
3381
- 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
- 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
- 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
- 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
- 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
- /TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
3387
- 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
- 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
- dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h
3390
- 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
- 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
- OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP
3393
- 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
- 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
- 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
- 8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS
3397
- 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
- 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
- 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
- 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
3401
- -----END CERTIFICATE-----
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/ca-bundle/src/CaBundle.php DELETED
@@ -1,308 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of composer/ca-bundle.
5
- *
6
- * (c) Composer <https://github.com/composer>
7
- *
8
- * For the full copyright and license information, please view
9
- * the LICENSE file that was distributed with this source code.
10
- */
11
-
12
- namespace Composer\CaBundle;
13
-
14
- use Psr\Log\LoggerInterface;
15
- use Symfony\Component\Process\PhpProcess;
16
-
17
- /**
18
- * @author Chris Smith <chris@cs278.org>
19
- * @author Jordi Boggiano <j.boggiano@seld.be>
20
- */
21
- class CaBundle
22
- {
23
- private static $caPath;
24
- private static $caFileValidity = array();
25
- private static $useOpensslParse;
26
-
27
- /**
28
- * Returns the system CA bundle path, or a path to the bundled one
29
- *
30
- * This method was adapted from Sslurp.
31
- * https://github.com/EvanDotPro/Sslurp
32
- *
33
- * (c) Evan Coury <me@evancoury.com>
34
- *
35
- * For the full copyright and license information, please see below:
36
- *
37
- * Copyright (c) 2013, Evan Coury
38
- * All rights reserved.
39
- *
40
- * Redistribution and use in source and binary forms, with or without modification,
41
- * are permitted provided that the following conditions are met:
42
- *
43
- * * Redistributions of source code must retain the above copyright notice,
44
- * this list of conditions and the following disclaimer.
45
- *
46
- * * Redistributions in binary form must reproduce the above copyright notice,
47
- * this list of conditions and the following disclaimer in the documentation
48
- * and/or other materials provided with the distribution.
49
- *
50
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
51
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
52
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
53
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
54
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
55
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
56
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
57
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
58
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
59
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
60
- *
61
- * @param LoggerInterface $logger optional logger for information about which CA files were loaded
62
- * @return string path to a CA bundle file or directory
63
- */
64
- public static function getSystemCaRootBundlePath(LoggerInterface $logger = null)
65
- {
66
- if (self::$caPath !== null) {
67
- return self::$caPath;
68
- }
69
-
70
- // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that.
71
- // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
72
- $envCertFile = getenv('SSL_CERT_FILE');
73
- if ($envCertFile && is_readable($envCertFile) && static::validateCaFile($envCertFile, $logger)) {
74
- return self::$caPath = $envCertFile;
75
- }
76
-
77
- // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that.
78
- // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
79
- $envCertDir = getenv('SSL_CERT_DIR');
80
- if ($envCertDir && is_dir($envCertDir) && is_readable($envCertDir)) {
81
- return self::$caPath = $envCertDir;
82
- }
83
-
84
- $configured = ini_get('openssl.cafile');
85
- if ($configured && strlen($configured) > 0 && is_readable($configured) && static::validateCaFile($configured, $logger)) {
86
- return self::$caPath = $configured;
87
- }
88
-
89
- $configured = ini_get('openssl.capath');
90
- if ($configured && is_dir($configured) && is_readable($configured)) {
91
- return self::$caPath = $configured;
92
- }
93
-
94
- $caBundlePaths = array(
95
- '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package)
96
- '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package)
97
- '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package)
98
- '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package)
99
- '/usr/ssl/certs/ca-bundle.crt', // Cygwin
100
- '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package
101
- '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option)
102
- '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat?
103
- '/etc/ssl/cert.pem', // OpenBSD
104
- '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x
105
- '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package
106
- );
107
-
108
- foreach ($caBundlePaths as $caBundle) {
109
- if (@is_readable($caBundle) && static::validateCaFile($caBundle, $logger)) {
110
- return self::$caPath = $caBundle;
111
- }
112
- }
113
-
114
- foreach ($caBundlePaths as $caBundle) {
115
- $caBundle = dirname($caBundle);
116
- if (@is_dir($caBundle) && glob($caBundle.'/*')) {
117
- return self::$caPath = $caBundle;
118
- }
119
- }
120
-
121
- return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort
122
- }
123
-
124
- /**
125
- * Returns the path to the bundled CA file
126
- *
127
- * In case you don't want to trust the user or the system, you can use this directly
128
- *
129
- * @return string path to a CA bundle file
130
- */
131
- public static function getBundledCaBundlePath()
132
- {
133
- $caBundleFile = __DIR__.'/../res/cacert.pem';
134
-
135
- // cURL does not understand 'phar://' paths
136
- // see https://github.com/composer/ca-bundle/issues/10
137
- if (0 === strpos($caBundleFile, 'phar://')) {
138
- file_put_contents(
139
- $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'),
140
- file_get_contents($caBundleFile)
141
- );
142
-
143
- register_shutdown_function(function() use ($tempCaBundleFile) {
144
- @unlink($tempCaBundleFile);
145
- });
146
-
147
- $caBundleFile = $tempCaBundleFile;
148
- }
149
-
150
- return $caBundleFile;
151
- }
152
-
153
- /**
154
- * Validates a CA file using opensl_x509_parse only if it is safe to use
155
- *
156
- * @param string $filename
157
- * @param LoggerInterface $logger optional logger for information about which CA files were loaded
158
- *
159
- * @return bool
160
- */
161
- public static function validateCaFile($filename, LoggerInterface $logger = null)
162
- {
163
- static $warned = false;
164
-
165
- if (isset(self::$caFileValidity[$filename])) {
166
- return self::$caFileValidity[$filename];
167
- }
168
-
169
- $contents = file_get_contents($filename);
170
-
171
- // assume the CA is valid if php is vulnerable to
172
- // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html
173
- if (!static::isOpensslParseSafe()) {
174
- if (!$warned && $logger) {
175
- $logger->warning(sprintf(
176
- 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.',
177
- PHP_VERSION
178
- ));
179
- $warned = true;
180
- }
181
-
182
- $isValid = !empty($contents);
183
- } else {
184
- $isValid = (bool) openssl_x509_parse($contents);
185
- }
186
-
187
- if ($logger) {
188
- $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid'));
189
- }
190
-
191
- return self::$caFileValidity[$filename] = $isValid;
192
- }
193
-
194
- /**
195
- * Test if it is safe to use the PHP function openssl_x509_parse().
196
- *
197
- * This checks if OpenSSL extensions is vulnerable to remote code execution
198
- * via the exploit documented as CVE-2013-6420.
199
- *
200
- * @return bool
201
- */
202
- public static function isOpensslParseSafe()
203
- {
204
- if (null !== self::$useOpensslParse) {
205
- return self::$useOpensslParse;
206
- }
207
-
208
- if (PHP_VERSION_ID >= 50600) {
209
- return self::$useOpensslParse = true;
210
- }
211
-
212
- // Vulnerable:
213
- // PHP 5.3.0 - PHP 5.3.27
214
- // PHP 5.4.0 - PHP 5.4.22
215
- // PHP 5.5.0 - PHP 5.5.6
216
- if (
217
- (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328)
218
- || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423)
219
- || (PHP_VERSION_ID < 50600 && PHP_VERSION_ID >= 50507)
220
- ) {
221
- // This version of PHP has the fix for CVE-2013-6420 applied.
222
- return self::$useOpensslParse = true;
223
- }
224
-
225
- if (defined('PHP_WINDOWS_VERSION_BUILD')) {
226
- // Windows is probably insecure in this case.
227
- return self::$useOpensslParse = false;
228
- }
229
-
230
- $compareDistroVersionPrefix = function ($prefix, $fixedVersion) {
231
- $regex = '{^'.preg_quote($prefix).'([0-9]+)$}';
232
-
233
- if (preg_match($regex, PHP_VERSION, $m)) {
234
- return ((int) $m[1]) >= $fixedVersion;
235
- }
236
-
237
- return false;
238
- };
239
-
240
- // Hard coded list of PHP distributions with the fix backported.
241
- if (
242
- $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze)
243
- || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy)
244
- || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise)
245
- ) {
246
- return self::$useOpensslParse = true;
247
- }
248
-
249
- // Symfony Process component is missing so we assume it is unsafe at this point
250
- if (!class_exists('Symfony\Component\Process\PhpProcess')) {
251
- return self::$useOpensslParse = false;
252
- }
253
-
254
- // This is where things get crazy, because distros backport security
255
- // fixes the chances are on NIX systems the fix has been applied but
256
- // it's not possible to verify that from the PHP version.
257
- //
258
- // To verify exec a new PHP process and run the issue testcase with
259
- // known safe input that replicates the bug.
260
-
261
- // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415
262
- // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593
263
- $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K';
264
- $script = <<<'EOT'
265
-
266
- error_reporting(-1);
267
- $info = openssl_x509_parse(base64_decode('%s'));
268
- var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']);
269
-
270
- EOT;
271
- $script = '<'."?php\n".sprintf($script, $cert);
272
-
273
- try {
274
- $process = new PhpProcess($script);
275
- $process->mustRun();
276
- } catch (\Exception $e) {
277
- // In the case of any exceptions just accept it is not possible to
278
- // determine the safety of openssl_x509_parse and bail out.
279
- return self::$useOpensslParse = false;
280
- }
281
-
282
- $output = preg_split('{\r?\n}', trim($process->getOutput()));
283
- $errorOutput = trim($process->getErrorOutput());
284
-
285
- if (
286
- count($output) === 3
287
- && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION)
288
- && $output[1] === 'string(27) "stefan.esser@sektioneins.de"'
289
- && $output[2] === 'int(-1)'
290
- && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput)
291
- ) {
292
- // This PHP has the fix backported probably by a distro security team.
293
- return self::$useOpensslParse = true;
294
- }
295
-
296
- return self::$useOpensslParse = false;
297
- }
298
-
299
- /**
300
- * Resets the static caches
301
- */
302
- public static function reset()
303
- {
304
- self::$caFileValidity = array();
305
- self::$caPath = null;
306
- self::$useOpensslParse = null;
307
- }
308
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installed.json CHANGED
@@ -1,237 +1,63 @@
1
- [
2
- {
3
- "name": "composer/ca-bundle",
4
- "version": "1.1.4",
5
- "version_normalized": "1.1.4.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer/ca-bundle.git",
9
- "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
14
- "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "ext-openssl": "*",
19
- "ext-pcre": "*",
20
- "php": "^5.3.2 || ^7.0"
21
- },
22
- "require-dev": {
23
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
24
- "psr/log": "^1.0",
25
- "symfony/process": "^2.5 || ^3.0 || ^4.0"
26
- },
27
- "time": "2019-01-28T09:30:10+00:00",
28
- "type": "library",
29
- "extra": {
30
- "branch-alias": {
31
- "dev-master": "1.x-dev"
32
- }
33
- },
34
- "installation-source": "dist",
35
- "autoload": {
36
- "psr-4": {
37
- "Composer\\CaBundle\\": "src"
38
- }
39
- },
40
- "notification-url": "https://packagist.org/downloads/",
41
- "license": [
42
- "MIT"
43
- ],
44
- "authors": [
45
- {
46
- "name": "Jordi Boggiano",
47
- "email": "j.boggiano@seld.be",
48
- "homepage": "http://seld.be"
49
- }
50
- ],
51
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
52
- "keywords": [
53
- "cabundle",
54
- "cacert",
55
- "certificate",
56
- "ssl",
57
- "tls"
58
- ]
59
- },
60
- {
61
- "name": "geoip2/geoip2",
62
- "version": "v2.9.0",
63
- "version_normalized": "2.9.0.0",
64
- "source": {
65
- "type": "git",
66
- "url": "https://github.com/maxmind/GeoIP2-php.git",
67
- "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77"
68
- },
69
- "dist": {
70
- "type": "zip",
71
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/a807fbf65212eef5d8d2db1a1b31082b53633d77",
72
- "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77",
73
- "shasum": ""
74
- },
75
- "require": {
76
- "maxmind-db/reader": "~1.0",
77
- "maxmind/web-service-common": "~0.5",
78
- "php": ">=5.4"
79
- },
80
- "require-dev": {
81
- "friendsofphp/php-cs-fixer": "2.*",
82
- "phpunit/phpunit": "4.*",
83
- "squizlabs/php_codesniffer": "3.*"
84
- },
85
- "time": "2018-04-10T15:32:59+00:00",
86
- "type": "library",
87
- "installation-source": "dist",
88
- "autoload": {
89
- "psr-4": {
90
- "GeoIp2\\": "src"
91
- }
92
- },
93
- "notification-url": "https://packagist.org/downloads/",
94
- "license": [
95
- "Apache-2.0"
96
- ],
97
- "authors": [
98
- {
99
- "name": "Gregory J. Oschwald",
100
- "email": "goschwald@maxmind.com",
101
- "homepage": "http://www.maxmind.com/"
102
- }
103
- ],
104
- "description": "MaxMind GeoIP2 PHP API",
105
- "homepage": "https://github.com/maxmind/GeoIP2-php",
106
- "keywords": [
107
- "IP",
108
- "geoip",
109
- "geoip2",
110
- "geolocation",
111
- "maxmind"
112
- ]
113
- },
114
- {
115
- "name": "maxmind-db/reader",
116
- "version": "v1.4.1",
117
- "version_normalized": "1.4.1.0",
118
- "source": {
119
- "type": "git",
120
- "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
121
- "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74"
122
- },
123
- "dist": {
124
- "type": "zip",
125
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/eb83d0ee1c1f9b8a340206302136bc81ee02ae74",
126
- "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74",
127
- "shasum": ""
128
- },
129
- "require": {
130
- "php": ">=5.4"
131
- },
132
- "require-dev": {
133
- "friendsofphp/php-cs-fixer": "2.*",
134
- "phpunit/phpunit": "4.* || 5.*",
135
- "satooshi/php-coveralls": "1.0.*",
136
- "squizlabs/php_codesniffer": "3.*"
137
- },
138
- "suggest": {
139
- "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
140
- "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
141
- "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
142
- },
143
- "time": "2019-01-04T19:55:56+00:00",
144
- "type": "library",
145
- "installation-source": "dist",
146
- "autoload": {
147
- "psr-4": {
148
- "MaxMind\\Db\\": "src/MaxMind/Db"
149
- }
150
- },
151
- "notification-url": "https://packagist.org/downloads/",
152
- "license": [
153
- "Apache-2.0"
154
- ],
155
- "authors": [
156
- {
157
- "name": "Gregory J. Oschwald",
158
- "email": "goschwald@maxmind.com",
159
- "homepage": "http://www.maxmind.com/"
160
- }
161
- ],
162
- "description": "MaxMind DB Reader API",
163
- "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
164
- "keywords": [
165
- "database",
166
- "geoip",
167
- "geoip2",
168
- "geolocation",
169
- "maxmind"
170
- ]
171
- },
172
- {
173
- "name": "maxmind/web-service-common",
174
- "version": "v0.5.0",
175
- "version_normalized": "0.5.0.0",
176
- "source": {
177
- "type": "git",
178
- "url": "https://github.com/maxmind/web-service-common-php.git",
179
- "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b"
180
- },
181
- "dist": {
182
- "type": "zip",
183
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/61a9836fa3bb1743ab89752bae5005d71e78c73b",
184
- "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b",
185
- "shasum": ""
186
- },
187
- "require": {
188
- "composer/ca-bundle": "^1.0.3",
189
- "ext-curl": "*",
190
- "ext-json": "*",
191
- "php": ">=5.4"
192
- },
193
- "require-dev": {
194
- "friendsofphp/php-cs-fixer": "2.*",
195
- "phpunit/phpunit": "4.*",
196
- "squizlabs/php_codesniffer": "3.*"
197
- },
198
- "time": "2018-02-12T22:31:54+00:00",
199
- "type": "library",
200
- "installation-source": "dist",
201
- "autoload": {
202
- "psr-4": {
203
- "MaxMind\\Exception\\": "src/Exception",
204
- "MaxMind\\WebService\\": "src/WebService"
205
- }
206
- },
207
- "notification-url": "https://packagist.org/downloads/",
208
- "license": [
209
- "Apache-2.0"
210
- ],
211
- "authors": [
212
- {
213
- "name": "Gregory Oschwald",
214
- "email": "goschwald@maxmind.com"
215
- }
216
- ],
217
- "description": "Internal MaxMind Web Service API",
218
- "homepage": "https://github.com/maxmind/web-service-common-php"
219
- },
220
- {
221
- "name": "wordfence/wf-waf",
222
- "version": "1.0.0",
223
- "version_normalized": "1.0.0.0",
224
- "source": {
225
- "type": "git",
226
- "url": "https://github.com/wordfence/wf-waf.git",
227
- "reference": "origin/master"
228
- },
229
- "dist": {
230
- "type": "zip",
231
- "url": "https://github.com/wordfence/wf-waf/zipball/master",
232
- "reference": "origin/master"
233
- },
234
- "type": "library",
235
- "installation-source": "source"
236
- }
237
- ]
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "wordfence/mmdb-reader",
5
+ "version": "v1.0.0",
6
+ "version_normalized": "1.0.0.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "git@github.com:wordfence/mmdb-reader.git",
10
+ "reference": "f72435e75f6654da08c2f0983e527cb207ef1f2a"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/wordfence/mmdb-reader/zipball/f72435e75f6654da08c2f0983e527cb207ef1f2a",
15
+ "reference": "f72435e75f6654da08c2f0983e527cb207ef1f2a",
16
+ "shasum": ""
17
+ },
18
+ "time": "2022-09-23T20:02:31+00:00",
19
+ "type": "library",
20
+ "installation-source": "dist",
21
+ "autoload": {
22
+ "psr-4": {
23
+ "Wordfence\\MmdbReader\\": "src/"
24
+ }
25
+ },
26
+ "license": [
27
+ "proprietary"
28
+ ],
29
+ "authors": [
30
+ {
31
+ "name": "Alex Kenion",
32
+ "email": "alexk@wordfence.com"
33
+ }
34
+ ],
35
+ "description": "A MaxMind DB (MMDB) reader with no external dependencies that provides support for a wider range of PHP versions than the official library",
36
+ "support": {
37
+ "source": "https://github.com/wordfence/mmdb-reader/tree/v1.0.0",
38
+ "issues": "https://github.com/wordfence/mmdb-reader/issues"
39
+ },
40
+ "install-path": "../wordfence/mmdb-reader"
41
+ },
42
+ {
43
+ "name": "wordfence/wf-waf",
44
+ "version": "1.0.0",
45
+ "version_normalized": "1.0.0.0",
46
+ "source": {
47
+ "type": "git",
48
+ "url": "https://github.com/wordfence/wf-waf.git",
49
+ "reference": "origin/master"
50
+ },
51
+ "dist": {
52
+ "type": "zip",
53
+ "url": "https://github.com/wordfence/wf-waf/zipball/master",
54
+ "reference": "origin/master"
55
+ },
56
+ "type": "library",
57
+ "installation-source": "source",
58
+ "install-path": "../wordfence/wf-waf"
59
+ }
60
+ ],
61
+ "dev": true,
62
+ "dev-package-names": []
63
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installed.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array(
2
+ 'root' => array(
3
+ 'pretty_version' => 'dev-master',
4
+ 'version' => 'dev-master',
5
+ 'type' => 'library',
6
+ 'install_path' => __DIR__ . '/../../',
7
+ 'aliases' => array(),
8
+ 'reference' => 'f7e640f16c0caa9077e4eaf4f42a42c9d1c76a05',
9
+ 'name' => '__root__',
10
+ 'dev' => true,
11
+ ),
12
+ 'versions' => array(
13
+ '__root__' => array(
14
+ 'pretty_version' => 'dev-master',
15
+ 'version' => 'dev-master',
16
+ 'type' => 'library',
17
+ 'install_path' => __DIR__ . '/../../',
18
+ 'aliases' => array(),
19
+ 'reference' => 'f7e640f16c0caa9077e4eaf4f42a42c9d1c76a05',
20
+ 'dev_requirement' => false,
21
+ ),
22
+ 'wordfence/mmdb-reader' => array(
23
+ 'pretty_version' => 'v1.0.0',
24
+ 'version' => '1.0.0.0',
25
+ 'type' => 'library',
26
+ 'install_path' => __DIR__ . '/../wordfence/mmdb-reader',
27
+ 'aliases' => array(),
28
+ 'reference' => 'f72435e75f6654da08c2f0983e527cb207ef1f2a',
29
+ 'dev_requirement' => false,
30
+ ),
31
+ 'wordfence/wf-waf' => array(
32
+ 'pretty_version' => '1.0.0',
33
+ 'version' => '1.0.0.0',
34
+ 'type' => 'library',
35
+ 'install_path' => __DIR__ . '/../wordfence/wf-waf',
36
+ 'aliases' => array(),
37
+ 'reference' => 'origin/master',
38
+ 'dev_requirement' => false,
39
+ ),
40
+ ),
41
+ );
vendor/geoip2/geoip2/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "maxmind-db"]
2
- path = maxmind-db
3
- url = git://github.com/maxmind/MaxMind-DB.git
 
 
 
vendor/geoip2/geoip2/.php_cs DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
-
3
- return PhpCsFixer\Config::create()
4
- ->setRiskyAllowed(true)
5
- ->setRules([
6
- '@Symfony' => true,
7
- '@Symfony:risky' => true,
8
- 'array_syntax' => ['syntax' => 'short'],
9
- 'combine_consecutive_unsets' => true,
10
- 'concat_space' => [ 'spacing' => 'one'],
11
- 'heredoc_to_nowdoc' => true,
12
- 'increment_style' => false,
13
- 'list_syntax' => ['syntax' => 'long'],
14
- 'no_extra_consecutive_blank_lines' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block'],
15
- 'no_short_echo_tag' => true,
16
- 'no_unreachable_default_argument_value' => true,
17
- 'no_useless_else' => true,
18
- 'no_useless_return' => true,
19
- 'ordered_imports' => true,
20
- 'pre_increment' => false,
21
- 'php_unit_strict' => true,
22
- 'php_unit_test_class_requires_covers' => true,
23
- 'phpdoc_add_missing_param_annotation' => true,
24
- 'phpdoc_no_alias_tag' => false,
25
- 'phpdoc_order' => true,
26
- 'semicolon_after_instruction' => true,
27
- 'strict_comparison' => true,
28
- 'strict_param' => true,
29
- 'yoda_style' => false,
30
- ])
31
- ->setFinder(
32
- PhpCsFixer\Finder::create()
33
- ->in(__DIR__)
34
- )
35
- ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/LICENSE DELETED
@@ -1,202 +0,0 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
178
-
179
- APPENDIX: How to apply the Apache License to your work.
180
-
181
- To apply the Apache License to your work, attach the following
182
- boilerplate notice, with the fields enclosed by brackets "[]"
183
- replaced with your own identifying information. (Don't include
184
- the brackets!) The text should be enclosed in the appropriate
185
- comment syntax for the file format. We also recommend that a
186
- file or class name and description of purpose be included on the
187
- same "printed page" as the copyright notice for easier
188
- identification within third-party archives.
189
-
190
- Copyright [yyyy] [name of copyright owner]
191
-
192
- Licensed under the Apache License, Version 2.0 (the "License");
193
- you may not use this file except in compliance with the License.
194
- You may obtain a copy of the License at
195
-
196
- http://www.apache.org/licenses/LICENSE-2.0
197
-
198
- Unless required by applicable law or agreed to in writing, software
199
- distributed under the License is distributed on an "AS IS" BASIS,
200
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
- See the License for the specific language governing permissions and
202
- limitations under the License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Database/Reader.php DELETED
@@ -1,283 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Database;
4
-
5
- use GeoIp2\Exception\AddressNotFoundException;
6
- use GeoIp2\ProviderInterface;
7
- use MaxMind\Db\Reader as DbReader;
8
- use MaxMind\Db\Reader\InvalidDatabaseException;
9
-
10
- /**
11
- * Instances of this class provide a reader for the GeoIP2 database format.
12
- * IP addresses can be looked up using the database specific methods.
13
- *
14
- * ## Usage ##
15
- *
16
- * The basic API for this class is the same for every database. First, you
17
- * create a reader object, specifying a file name. You then call the method
18
- * corresponding to the specific database, passing it the IP address you want
19
- * to look up.
20
- *
21
- * If the request succeeds, the method call will return a model class for
22
- * the method you called. This model in turn contains multiple record classes,
23
- * each of which represents part of the data returned by the database. If
24
- * the database does not contain the requested information, the attributes
25
- * on the record class will have a `null` value.
26
- *
27
- * If the address is not in the database, an
28
- * {@link \GeoIp2\Exception\AddressNotFoundException} exception will be
29
- * thrown. If an invalid IP address is passed to one of the methods, a
30
- * SPL {@link \InvalidArgumentException} will be thrown. If the database is
31
- * corrupt or invalid, a {@link \MaxMind\Db\Reader\InvalidDatabaseException}
32
- * will be thrown.
33
- */
34
- class Reader implements ProviderInterface
35
- {
36
- private $dbReader;
37
- private $locales;
38
-
39
- /**
40
- * Constructor.
41
- *
42
- * @param string $filename the path to the GeoIP2 database file
43
- * @param array $locales list of locale codes to use in name property
44
- * from most preferred to least preferred
45
- *
46
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
47
- * is corrupt or invalid
48
- */
49
- public function __construct(
50
- $filename,
51
- $locales = ['en']
52
- ) {
53
- $this->dbReader = new DbReader($filename);
54
- $this->locales = $locales;
55
- }
56
-
57
- /**
58
- * This method returns a GeoIP2 City model.
59
- *
60
- * @param string $ipAddress an IPv4 or IPv6 address as a string
61
- *
62
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
63
- * not in the database
64
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
65
- * is corrupt or invalid
66
- *
67
- * @return \GeoIp2\Model\City
68
- */
69
- public function city($ipAddress)
70
- {
71
- return $this->modelFor('City', 'City', $ipAddress);
72
- }
73
-
74
- /**
75
- * This method returns a GeoIP2 Country model.
76
- *
77
- * @param string $ipAddress an IPv4 or IPv6 address as a string
78
- *
79
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
80
- * not in the database
81
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
82
- * is corrupt or invalid
83
- *
84
- * @return \GeoIp2\Model\Country
85
- */
86
- public function country($ipAddress)
87
- {
88
- return $this->modelFor('Country', 'Country', $ipAddress);
89
- }
90
-
91
- /**
92
- * This method returns a GeoIP2 Anonymous IP model.
93
- *
94
- * @param string $ipAddress an IPv4 or IPv6 address as a string
95
- *
96
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
97
- * not in the database
98
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
99
- * is corrupt or invalid
100
- *
101
- * @return \GeoIp2\Model\AnonymousIp
102
- */
103
- public function anonymousIp($ipAddress)
104
- {
105
- return $this->flatModelFor(
106
- 'AnonymousIp',
107
- 'GeoIP2-Anonymous-IP',
108
- $ipAddress
109
- );
110
- }
111
-
112
- /**
113
- * This method returns a GeoLite2 ASN model.
114
- *
115
- * @param string $ipAddress an IPv4 or IPv6 address as a string
116
- *
117
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
118
- * not in the database
119
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
120
- * is corrupt or invalid
121
- *
122
- * @return \GeoIp2\Model\Asn
123
- */
124
- public function asn($ipAddress)
125
- {
126
- return $this->flatModelFor(
127
- 'Asn',
128
- 'GeoLite2-ASN',
129
- $ipAddress
130
- );
131
- }
132
-
133
- /**
134
- * This method returns a GeoIP2 Connection Type model.
135
- *
136
- * @param string $ipAddress an IPv4 or IPv6 address as a string
137
- *
138
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
139
- * not in the database
140
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
141
- * is corrupt or invalid
142
- *
143
- * @return \GeoIp2\Model\ConnectionType
144
- */
145
- public function connectionType($ipAddress)
146
- {
147
- return $this->flatModelFor(
148
- 'ConnectionType',
149
- 'GeoIP2-Connection-Type',
150
- $ipAddress
151
- );
152
- }
153
-
154
- /**
155
- * This method returns a GeoIP2 Domain model.
156
- *
157
- * @param string $ipAddress an IPv4 or IPv6 address as a string
158
- *
159
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
160
- * not in the database
161
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
162
- * is corrupt or invalid
163
- *
164
- * @return \GeoIp2\Model\Domain
165
- */
166
- public function domain($ipAddress)
167
- {
168
- return $this->flatModelFor(
169
- 'Domain',
170
- 'GeoIP2-Domain',
171
- $ipAddress
172
- );
173
- }
174
-
175
- /**
176
- * This method returns a GeoIP2 Enterprise model.
177
- *
178
- * @param string $ipAddress an IPv4 or IPv6 address as a string
179
- *
180
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
181
- * not in the database
182
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
183
- * is corrupt or invalid
184
- *
185
- * @return \GeoIp2\Model\Enterprise
186
- */
187
- public function enterprise($ipAddress)
188
- {
189
- return $this->modelFor('Enterprise', 'Enterprise', $ipAddress);
190
- }
191
-
192
- /**
193
- * This method returns a GeoIP2 ISP model.
194
- *
195
- * @param string $ipAddress an IPv4 or IPv6 address as a string
196
- *
197
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address is
198
- * not in the database
199
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database
200
- * is corrupt or invalid
201
- *
202
- * @return \GeoIp2\Model\Isp
203
- */
204
- public function isp($ipAddress)
205
- {
206
- return $this->flatModelFor(
207
- 'Isp',
208
- 'GeoIP2-ISP',
209
- $ipAddress
210
- );
211
- }
212
-
213
- private function modelFor($class, $type, $ipAddress)
214
- {
215
- $record = $this->getRecord($class, $type, $ipAddress);
216
-
217
- $record['traits']['ip_address'] = $ipAddress;
218
- $class = 'GeoIp2\\Model\\' . $class;
219
-
220
- return new $class($record, $this->locales);
221
- }
222
-
223
- private function flatModelFor($class, $type, $ipAddress)
224
- {
225
- $record = $this->getRecord($class, $type, $ipAddress);
226
-
227
- $record['ip_address'] = $ipAddress;
228
- $class = 'GeoIp2\\Model\\' . $class;
229
-
230
- return new $class($record);
231
- }
232
-
233
- private function getRecord($class, $type, $ipAddress)
234
- {
235
- if (strpos($this->metadata()->databaseType, $type) === false) {
236
- $method = lcfirst($class);
237
- throw new \BadMethodCallException(
238
- "The $method method cannot be used to open a "
239
- . $this->metadata()->databaseType . ' database'
240
- );
241
- }
242
- $record = $this->dbReader->get($ipAddress);
243
- if ($record === null) {
244
- throw new AddressNotFoundException(
245
- "The address $ipAddress is not in the database."
246
- );
247
- }
248
- if (!is_array($record)) {
249
- // This can happen on corrupt databases. Generally,
250
- // MaxMind\Db\Reader will throw a
251
- // MaxMind\Db\Reader\InvalidDatabaseException, but occasionally
252
- // the lookup may result in a record that looks valid but is not
253
- // an array. This mostly happens when the user is ignoring all
254
- // exceptions and the more frequent InvalidDatabaseException
255
- // exceptions go unnoticed.
256
- throw new InvalidDatabaseException(
257
- "Expected an array when looking up $ipAddress but received: "
258
- . gettype($record)
259
- );
260
- }
261
-
262
- return $record;
263
- }
264
-
265
- /**
266
- * @throws \InvalidArgumentException if arguments are passed to the method
267
- * @throws \BadMethodCallException if the database has been closed
268
- *
269
- * @return \MaxMind\Db\Reader\Metadata object for the database
270
- */
271
- public function metadata()
272
- {
273
- return $this->dbReader->metadata();
274
- }
275
-
276
- /**
277
- * Closes the GeoIP2 database and returns the resources to the system.
278
- */
279
- public function close()
280
- {
281
- $this->dbReader->close();
282
- }
283
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents a generic error.
7
- */
8
- class AddressNotFoundException extends GeoIp2Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/AuthenticationException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents a generic error.
7
- */
8
- class AuthenticationException extends GeoIp2Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents a generic error.
7
- */
8
- class GeoIp2Exception extends \Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/HttpException.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents an HTTP transport error.
7
- */
8
- class HttpException extends GeoIp2Exception
9
- {
10
- /**
11
- * The URI queried.
12
- */
13
- public $uri;
14
-
15
- public function __construct(
16
- $message,
17
- $httpStatus,
18
- $uri,
19
- \Exception $previous = null
20
- ) {
21
- $this->uri = $uri;
22
- parent::__construct($message, $httpStatus, $previous);
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents an error returned by MaxMind's GeoIP2
7
- * web service.
8
- */
9
- class InvalidRequestException extends HttpException
10
- {
11
- /**
12
- * The code returned by the MaxMind web service.
13
- */
14
- public $error;
15
-
16
- public function __construct(
17
- $message,
18
- $error,
19
- $httpStatus,
20
- $uri,
21
- \Exception $previous = null
22
- ) {
23
- $this->error = $error;
24
- parent::__construct($message, $httpStatus, $uri, $previous);
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Exception;
4
-
5
- /**
6
- * This class represents a generic error.
7
- */
8
- class OutOfQueriesException extends GeoIp2Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/AbstractModel.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * @ignore
7
- */
8
- abstract class AbstractModel implements \JsonSerializable
9
- {
10
- protected $raw;
11
-
12
- /**
13
- * @ignore
14
- *
15
- * @param mixed $raw
16
- */
17
- public function __construct($raw)
18
- {
19
- $this->raw = $raw;
20
- }
21
-
22
- /**
23
- * @ignore
24
- *
25
- * @param mixed $field
26
- */
27
- protected function get($field)
28
- {
29
- if (isset($this->raw[$field])) {
30
- return $this->raw[$field];
31
- }
32
- if (preg_match('/^is_/', $field)) {
33
- return false;
34
- }
35
-
36
- return null;
37
- }
38
-
39
- /**
40
- * @ignore
41
- *
42
- * @param mixed $attr
43
- */
44
- public function __get($attr)
45
- {
46
- if ($attr !== 'instance' && property_exists($this, $attr)) {
47
- return $this->$attr;
48
- }
49
-
50
- throw new \RuntimeException("Unknown attribute: $attr");
51
- }
52
-
53
- /**
54
- * @ignore
55
- *
56
- * @param mixed $attr
57
- */
58
- public function __isset($attr)
59
- {
60
- return $attr !== 'instance' && isset($this->$attr);
61
- }
62
-
63
- public function jsonSerialize()
64
- {
65
- return $this->raw;
66
- }
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/AnonymousIp.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * This class provides the GeoIP2 Anonymous IP model.
7
- *
8
- * @property-read bool $isAnonymous This is true if the IP address belongs to
9
- * any sort of anonymous network.
10
- * @property-read bool $isAnonymousVpn This is true if the IP address belongs to
11
- * an anonymous VPN system.
12
- * @property-read bool $isHostingProvider This is true if the IP address belongs
13
- * to a hosting provider.
14
- * @property-read bool $isPublicProxy This is true if the IP address belongs to
15
- * a public proxy.
16
- * @property-read bool $isTorExitNode This is true if the IP address is a Tor
17
- * exit node.
18
- * @property-read string $ipAddress The IP address that the data in the model is
19
- * for.
20
- */
21
- class AnonymousIp extends AbstractModel
22
- {
23
- protected $isAnonymous;
24
- protected $isAnonymousVpn;
25
- protected $isHostingProvider;
26
- protected $isPublicProxy;
27
- protected $isTorExitNode;
28
- protected $ipAddress;
29
-
30
- /**
31
- * @ignore
32
- *
33
- * @param mixed $raw
34
- */
35
- public function __construct($raw)
36
- {
37
- parent::__construct($raw);
38
-
39
- $this->isAnonymous = $this->get('is_anonymous');
40
- $this->isAnonymousVpn = $this->get('is_anonymous_vpn');
41
- $this->isHostingProvider = $this->get('is_hosting_provider');
42
- $this->isPublicProxy = $this->get('is_public_proxy');
43
- $this->isTorExitNode = $this->get('is_tor_exit_node');
44
- $this->ipAddress = $this->get('ip_address');
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Asn.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * This class provides the GeoLite2 ASN model.
7
- *
8
- * @property-read int|null $autonomousSystemNumber The autonomous system number
9
- * associated with the IP address.
10
- * @property-read string|null $autonomousSystemOrganization The organization
11
- * associated with the registered autonomous system number for the IP
12
- * address.
13
- * @property-read string $ipAddress The IP address that the data in the model is
14
- * for.
15
- */
16
- class Asn extends AbstractModel
17
- {
18
- protected $autonomousSystemNumber;
19
- protected $autonomousSystemOrganization;
20
- protected $ipAddress;
21
-
22
- /**
23
- * @ignore
24
- *
25
- * @param mixed $raw
26
- */
27
- public function __construct($raw)
28
- {
29
- parent::__construct($raw);
30
- $this->autonomousSystemNumber = $this->get('autonomous_system_number');
31
- $this->autonomousSystemOrganization =
32
- $this->get('autonomous_system_organization');
33
- $this->ipAddress = $this->get('ip_address');
34
- }
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/City.php DELETED
@@ -1,133 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * Model class for the data returned by GeoIP2 City web service and database.
7
- *
8
- * The only difference between the City and Insights model classes is which
9
- * fields in each record may be populated. See
10
- * http://dev.maxmind.com/geoip/geoip2/web-services more details.
11
- *
12
- * @property-read \GeoIp2\Record\City $city City data for the requested IP
13
- * address.
14
- * @property-read \GeoIp2\Record\Continent $continent Continent data for the
15
- * requested IP address.
16
- * @property-read \GeoIp2\Record\Country $country Country data for the requested
17
- * IP address. This object represents the country where MaxMind believes the
18
- * end user is located.
19
- * @property-read \GeoIp2\Record\Location $location Location data for the
20
- * requested IP address.
21
- * @property-read \GeoIp2\Record\Postal $postal Postal data for the
22
- * requested IP address.
23
- * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind
24
- * account.
25
- * @property-read \GeoIp2\Record\Country $registeredCountry Registered country
26
- * data for the requested IP address. This record represents the country
27
- * where the ISP has registered a given IP block and may differ from the
28
- * user's country.
29
- * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry
30
- * Represented country data for the requested IP address. The represented
31
- * country is used for things like military bases. It is only present when
32
- * the represented country differs from the country.
33
- * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision}
34
- * objects representing the country subdivisions for the requested IP
35
- * address. The number and type of subdivisions varies by country, but a
36
- * subdivision is typically a state, province, county, etc. Subdivisions
37
- * are ordered from most general (largest) to most specific (smallest).
38
- * If the response did not contain any subdivisions, this method returns
39
- * an empty array.
40
- * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object
41
- * representing the most specific subdivision returned. If the response
42
- * did not contain any subdivisions, this method returns an empty
43
- * {@link \GeoIp2\Record\Subdivision} object.
44
- * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the
45
- * requested IP address.
46
- */
47
- class City extends Country
48
- {
49
- /**
50
- * @ignore
51
- */
52
- protected $city;
53
- /**
54
- * @ignore
55
- */
56
- protected $location;
57
- /**
58
- * @ignore
59
- */
60
- protected $postal;
61
- /**
62
- * @ignore
63
- */
64
- protected $subdivisions = [];
65
-
66
- /**
67
- * @ignore
68
- *
69
- * @param mixed $raw
70
- * @param mixed $locales
71
- */
72
- public function __construct($raw, $locales = ['en'])
73
- {
74
- parent::__construct($raw, $locales);
75
-
76
- $this->city = new \GeoIp2\Record\City($this->get('city'), $locales);
77
- $this->location = new \GeoIp2\Record\Location($this->get('location'));
78
- $this->postal = new \GeoIp2\Record\Postal($this->get('postal'));
79
-
80
- $this->createSubdivisions($raw, $locales);
81
- }
82
-
83
- private function createSubdivisions($raw, $locales)
84
- {
85
- if (!isset($raw['subdivisions'])) {
86
- return;
87
- }
88
-
89
- foreach ($raw['subdivisions'] as $sub) {
90
- array_push(
91
- $this->subdivisions,
92
- new \GeoIp2\Record\Subdivision($sub, $locales)
93
- );
94
- }
95
- }
96
-
97
- /**
98
- * @ignore
99
- *
100
- * @param mixed $attr
101
- */
102
- public function __get($attr)
103
- {
104
- if ($attr === 'mostSpecificSubdivision') {
105
- return $this->$attr();
106
- }
107
-
108
- return parent::__get($attr);
109
- }
110
-
111
- /**
112
- * @ignore
113
- *
114
- * @param mixed $attr
115
- */
116
- public function __isset($attr)
117
- {
118
- if ($attr === 'mostSpecificSubdivision') {
119
- // We always return a mostSpecificSubdivision, even if it is the
120
- // empty subdivision
121
- return true;
122
- }
123
-
124
- return parent::__isset($attr);
125
- }
126
-
127
- private function mostSpecificSubdivision()
128
- {
129
- return empty($this->subdivisions) ?
130
- new \GeoIp2\Record\Subdivision([], $this->locales) :
131
- end($this->subdivisions);
132
- }
133
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/ConnectionType.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * This class provides the GeoIP2 Connection-Type model.
7
- *
8
- * @property-read string|null $connectionType The connection type may take the
9
- * following values: "Dialup", "Cable/DSL", "Corporate", "Cellular".
10
- * Additional values may be added in the future.
11
- * @property-read string $ipAddress The IP address that the data in the model is
12
- * for.
13
- */
14
- class ConnectionType extends AbstractModel
15
- {
16
- protected $connectionType;
17
- protected $ipAddress;
18
-
19
- /**
20
- * @ignore
21
- *
22
- * @param mixed $raw
23
- */
24
- public function __construct($raw)
25
- {
26
- parent::__construct($raw);
27
-
28
- $this->connectionType = $this->get('connection_type');
29
- $this->ipAddress = $this->get('ip_address');
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Country.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * Model class for the data returned by GeoIP2 Country web service and database.
7
- *
8
- * The only difference between the City and Insights model classes is which
9
- * fields in each record may be populated. See
10
- * http://dev.maxmind.com/geoip/geoip2/web-services more details.
11
- *
12
- * @property-read \GeoIp2\Record\Continent $continent Continent data for the
13
- * requested IP address.
14
- * @property-read \GeoIp2\Record\Country $country Country data for the requested
15
- * IP address. This object represents the country where MaxMind believes the
16
- * end user is located.
17
- * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind
18
- * account.
19
- * @property-read \GeoIp2\Record\Country $registeredCountry Registered country
20
- * data for the requested IP address. This record represents the country
21
- * where the ISP has registered a given IP block and may differ from the
22
- * user's country.
23
- * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry
24
- * Represented country data for the requested IP address. The represented
25
- * country is used for things like military bases. It is only present when
26
- * the represented country differs from the country.
27
- * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the
28
- * requested IP address.
29
- */
30
- class Country extends AbstractModel
31
- {
32
- protected $continent;
33
- protected $country;
34
- protected $locales;
35
- protected $maxmind;
36
- protected $registeredCountry;
37
- protected $representedCountry;
38
- protected $traits;
39
-
40
- /**
41
- * @ignore
42
- *
43
- * @param mixed $raw
44
- * @param mixed $locales
45
- */
46
- public function __construct($raw, $locales = ['en'])
47
- {
48
- parent::__construct($raw);
49
-
50
- $this->continent = new \GeoIp2\Record\Continent(
51
- $this->get('continent'),
52
- $locales
53
- );
54
- $this->country = new \GeoIp2\Record\Country(
55
- $this->get('country'),
56
- $locales
57
- );
58
- $this->maxmind = new \GeoIp2\Record\MaxMind($this->get('maxmind'));
59
- $this->registeredCountry = new \GeoIp2\Record\Country(
60
- $this->get('registered_country'),
61
- $locales
62
- );
63
- $this->representedCountry = new \GeoIp2\Record\RepresentedCountry(
64
- $this->get('represented_country'),
65
- $locales
66
- );
67
- $this->traits = new \GeoIp2\Record\Traits($this->get('traits'));
68
-
69
- $this->locales = $locales;
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Domain.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * This class provides the GeoIP2 Domain model.
7
- *
8
- * @property-read string|null $domain The second level domain associated with the
9
- * IP address. This will be something like "example.com" or
10
- * "example.co.uk", not "foo.example.com".
11
- * @property-read string $ipAddress The IP address that the data in the model is
12
- * for.
13
- */
14
- class Domain extends AbstractModel
15
- {
16
- protected $domain;
17
- protected $ipAddress;
18
-
19
- /**
20
- * @ignore
21
- *
22
- * @param mixed $raw
23
- */
24
- public function __construct($raw)
25
- {
26
- parent::__construct($raw);
27
-
28
- $this->domain = $this->get('domain');
29
- $this->ipAddress = $this->get('ip_address');
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Enterprise.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * Model class for the data returned by GeoIP2 Enterprise database lookups.
7
- *
8
- * The only difference between the City and Enterprise model classes is which
9
- * fields in each record may be populated. See
10
- * http://dev.maxmind.com/geoip/geoip2/web-services more details.
11
- *
12
- * @property-read \GeoIp2\Record\City $city City data for the requested IP
13
- * address.
14
- * @property-read \GeoIp2\Record\Continent $continent Continent data for the
15
- * requested IP address.
16
- * @property-read \GeoIp2\Record\Country $country Country data for the requested
17
- * IP address. This object represents the country where MaxMind believes the
18
- * end user is located.
19
- * @property-read \GeoIp2\Record\Location $location Location data for the
20
- * requested IP address.
21
- * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind
22
- * account.
23
- * @property-read \GeoIp2\Record\Country $registeredCountry Registered country
24
- * data for the requested IP address. This record represents the country
25
- * where the ISP has registered a given IP block and may differ from the
26
- * user's country.
27
- * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry
28
- * Represented country data for the requested IP address. The represented
29
- * country is used for things like military bases. It is only present when
30
- * the represented country differs from the country.
31
- * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision}
32
- * objects representing the country subdivisions for the requested IP
33
- * address. The number and type of subdivisions varies by country, but a
34
- * subdivision is typically a state, province, county, etc. Subdivisions
35
- * are ordered from most general (largest) to most specific (smallest).
36
- * If the response did not contain any subdivisions, this method returns
37
- * an empty array.
38
- * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object
39
- * representing the most specific subdivision returned. If the response
40
- * did not contain any subdivisions, this method returns an empty
41
- * {@link \GeoIp2\Record\Subdivision} object.
42
- * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the
43
- * requested IP address.
44
- */
45
- class Enterprise extends City
46
- {
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Insights.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * Model class for the data returned by GeoIP2 Precision: Insights web service.
7
- *
8
- * The only difference between the City and Insights model classes is which
9
- * fields in each record may be populated. See
10
- * http://dev.maxmind.com/geoip/geoip2/web-services more details.
11
- *
12
- * @property-read \GeoIp2\Record\City $city City data for the requested IP
13
- * address.
14
- * @property-read \GeoIp2\Record\Continent $continent Continent data for the
15
- * requested IP address.
16
- * @property-read \GeoIp2\Record\Country $country Country data for the requested
17
- * IP address. This object represents the country where MaxMind believes the
18
- * end user is located.
19
- * @property-read \GeoIp2\Record\Location $location Location data for the
20
- * requested IP address.
21
- * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind
22
- * account.
23
- * @property-read \GeoIp2\Record\Country $registeredCountry Registered country
24
- * data for the requested IP address. This record represents the country
25
- * where the ISP has registered a given IP block and may differ from the
26
- * user's country.
27
- * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry
28
- * Represented country data for the requested IP address. The represented
29
- * country is used for things like military bases. It is only present when
30
- * the represented country differs from the country.
31
- * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision}
32
- * objects representing the country subdivisions for the requested IP
33
- * address. The number and type of subdivisions varies by country, but a
34
- * subdivision is typically a state, province, county, etc. Subdivisions
35
- * are ordered from most general (largest) to most specific (smallest).
36
- * If the response did not contain any subdivisions, this method returns
37
- * an empty array.
38
- * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object
39
- * representing the most specific subdivision returned. If the response
40
- * did not contain any subdivisions, this method returns an empty
41
- * {@link \GeoIp2\Record\Subdivision} object.
42
- * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the
43
- * requested IP address.
44
- */
45
- class Insights extends City
46
- {
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Model/Isp.php DELETED
@@ -1,44 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Model;
4
-
5
- /**
6
- * This class provides the GeoIP2 ISP model.
7
- *
8
- * @property-read int|null $autonomousSystemNumber The autonomous system number
9
- * associated with the IP address.
10
- * @property-read string|null $autonomousSystemOrganization The organization
11
- * associated with the registered autonomous system number for the IP
12
- * address.
13
- * @property-read string|null $isp The name of the ISP associated with the IP
14
- * address.
15
- * @property-read string|null $organization The name of the organization associated
16
- * with the IP address.
17
- * @property-read string $ipAddress The IP address that the data in the model is
18
- * for.
19
- */
20
- class Isp extends AbstractModel
21
- {
22
- protected $autonomousSystemNumber;
23
- protected $autonomousSystemOrganization;
24
- protected $isp;
25
- protected $organization;
26
- protected $ipAddress;
27
-
28
- /**
29
- * @ignore
30
- *
31
- * @param mixed $raw
32
- */
33
- public function __construct($raw)
34
- {
35
- parent::__construct($raw);
36
- $this->autonomousSystemNumber = $this->get('autonomous_system_number');
37
- $this->autonomousSystemOrganization =
38
- $this->get('autonomous_system_organization');
39
- $this->isp = $this->get('isp');
40
- $this->organization = $this->get('organization');
41
-
42
- $this->ipAddress = $this->get('ip_address');
43
- }
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/ProviderInterface.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2;
4
-
5
- interface ProviderInterface
6
- {
7
- /**
8
- * @param string $ipAddress an IPv4 or IPv6 address to lookup
9
- *
10
- * @return \GeoIp2\Model\Country a Country model for the requested IP address
11
- */
12
- public function country($ipAddress);
13
-
14
- /**
15
- * @param string $ipAddress an IPv4 or IPv6 address to lookup
16
- *
17
- * @return \GeoIp2\Model\City a City model for the requested IP address
18
- */
19
- public function city($ipAddress);
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- abstract class AbstractPlaceRecord extends AbstractRecord
6
- {
7
- private $locales;
8
-
9
- /**
10
- * @ignore
11
- *
12
- * @param mixed $record
13
- * @param mixed $locales
14
- */
15
- public function __construct($record, $locales = ['en'])
16
- {
17
- $this->locales = $locales;
18
- parent::__construct($record);
19
- }
20
-
21
- /**
22
- * @ignore
23
- *
24
- * @param mixed $attr
25
- */
26
- public function __get($attr)
27
- {
28
- if ($attr === 'name') {
29
- return $this->name();
30
- }
31
-
32
- return parent::__get($attr);
33
- }
34
-
35
- /**
36
- * @ignore
37
- *
38
- * @param mixed $attr
39
- */
40
- public function __isset($attr)
41
- {
42
- if ($attr === 'name') {
43
- return $this->firstSetNameLocale() === null ? false : true;
44
- }
45
-
46
- return parent::__isset($attr);
47
- }
48
-
49
- private function name()
50
- {
51
- $locale = $this->firstSetNameLocale();
52
-
53
- return $locale === null ? null : $this->names[$locale];
54
- }
55
-
56
- private function firstSetNameLocale()
57
- {
58
- foreach ($this->locales as $locale) {
59
- if (isset($this->names[$locale])) {
60
- return $locale;
61
- }
62
- }
63
-
64
- return null;
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/AbstractRecord.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- abstract class AbstractRecord implements \JsonSerializable
6
- {
7
- private $record;
8
-
9
- /**
10
- * @ignore
11
- *
12
- * @param mixed $record
13
- */
14
- public function __construct($record)
15
- {
16
- $this->record = isset($record) ? $record : [];
17
- }
18
-
19
- /**
20
- * @ignore
21
- *
22
- * @param mixed $attr
23
- */
24
- public function __get($attr)
25
- {
26
- // XXX - kind of ugly but greatly reduces boilerplate code
27
- $key = $this->attributeToKey($attr);
28
-
29
- if ($this->__isset($attr)) {
30
- return $this->record[$key];
31
- } elseif ($this->validAttribute($attr)) {
32
- if (preg_match('/^is_/', $key)) {
33
- return false;
34
- }
35
-
36
- return null;
37
- }
38
- throw new \RuntimeException("Unknown attribute: $attr");
39
- }
40
-
41
- public function __isset($attr)
42
- {
43
- return $this->validAttribute($attr) &&
44
- isset($this->record[$this->attributeToKey($attr)]);
45
- }
46
-
47
- private function attributeToKey($attr)
48
- {
49
- return strtolower(preg_replace('/([A-Z])/', '_\1', $attr));
50
- }
51
-
52
- private function validAttribute($attr)
53
- {
54
- return in_array($attr, $this->validAttributes, true);
55
- }
56
-
57
- public function jsonSerialize()
58
- {
59
- return $this->record;
60
- }
61
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/City.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * City-level data associated with an IP address.
7
- *
8
- * This record is returned by all location services and databases besides
9
- * Country.
10
- *
11
- * @property-read int|null $confidence A value from 0-100 indicating MaxMind's
12
- * confidence that the city is correct. This attribute is only available
13
- * from the Insights service and the GeoIP2 Enterprise database.
14
- * @property-read int|null $geonameId The GeoName ID for the city. This attribute
15
- * is returned by all location services and databases.
16
- * @property-read string|null $name The name of the city based on the locales list
17
- * passed to the constructor. This attribute is returned by all location
18
- * services and databases.
19
- * @property-read array|null $names A array map where the keys are locale codes
20
- * and the values are names. This attribute is returned by all location
21
- * services and databases.
22
- */
23
- class City extends AbstractPlaceRecord
24
- {
25
- /**
26
- * @ignore
27
- */
28
- protected $validAttributes = ['confidence', 'geonameId', 'names'];
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Continent.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the continent record associated with an IP address.
7
- *
8
- * This record is returned by all location services and databases.
9
- *
10
- * @property-read string|null $code A two character continent code like "NA" (North
11
- * America) or "OC" (Oceania). This attribute is returned by all location
12
- * services and databases.
13
- * @property-read int|null $geonameId The GeoName ID for the continent. This
14
- * attribute is returned by all location services and databases.
15
- * @property-read string|null $name Returns the name of the continent based on the
16
- * locales list passed to the constructor. This attribute is returned by all location
17
- * services and databases.
18
- * @property-read array|null $names An array map where the keys are locale codes
19
- * and the values are names. This attribute is returned by all location
20
- * services and databases.
21
- */
22
- class Continent extends AbstractPlaceRecord
23
- {
24
- /**
25
- * @ignore
26
- */
27
- protected $validAttributes = [
28
- 'code',
29
- 'geonameId',
30
- 'names',
31
- ];
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Country.php DELETED
@@ -1,41 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the country record associated with an IP address.
7
- *
8
- * This record is returned by all location services and databases.
9
- *
10
- * @property-read int|null $confidence A value from 0-100 indicating MaxMind's
11
- * confidence that the country is correct. This attribute is only available
12
- * from the Insights service and the GeoIP2 Enterprise database.
13
- * @property-read int|null $geonameId The GeoName ID for the country. This
14
- * attribute is returned by all location services and databases.
15
- * @property-read bool $isInEuropeanUnion This is true if the country is a
16
- * member state of the European Union. This attribute is returned by all
17
- * location services and databases.
18
- * @property-read string|null $isoCode The
19
- * {@link * http://en.wikipedia.org/wiki/ISO_3166-1 two-character ISO 3166-1 alpha
20
- * code} for the country. This attribute is returned by all location services
21
- * and databases.
22
- * @property-read string|null $name The name of the country based on the locales
23
- * list passed to the constructor. This attribute is returned by all location
24
- * services and databases.
25
- * @property-read array|null $names An array map where the keys are locale codes
26
- * and the values are names. This attribute is returned by all location
27
- * services and databases.
28
- */
29
- class Country extends AbstractPlaceRecord
30
- {
31
- /**
32
- * @ignore
33
- */
34
- protected $validAttributes = [
35
- 'confidence',
36
- 'geonameId',
37
- 'isInEuropeanUnion',
38
- 'isoCode',
39
- 'names',
40
- ];
41
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Location.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the location record associated with an IP address.
7
- *
8
- * This record is returned by all location services and databases besides
9
- * Country.
10
- *
11
- * @property-read int|null $averageIncome The average income in US dollars
12
- * associated with the requested IP address. This attribute is only available
13
- * from the Insights service.
14
- * @property-read int|null $accuracyRadius The approximate accuracy radius in
15
- * kilometers around the latitude and longitude for the IP address. This is
16
- * the radius where we have a 67% confidence that the device using the IP
17
- * address resides within the circle centered at the latitude and longitude
18
- * with the provided radius.
19
- * @property-read float|null $latitude The approximate latitude of the location
20
- * associated with the IP address. This value is not precise and should not be
21
- * used to identify a particular address or household.
22
- * @property-read float|null $longitude The approximate longitude of the location
23
- * associated with the IP address. This value is not precise and should not be
24
- * used to identify a particular address or household.
25
- * @property-read int|null $populationDensity The estimated population per square
26
- * kilometer associated with the IP address. This attribute is only available
27
- * from the Insights service.
28
- * @property-read int|null $metroCode The metro code of the location if the location
29
- * is in the US. MaxMind returns the same metro codes as the
30
- * {@link * https://developers.google.com/adwords/api/docs/appendix/cities-DMAregions
31
- * Google AdWords API}.
32
- * @property-read string|null $timeZone The time zone associated with location, as
33
- * specified by the {@link http://www.iana.org/time-zones IANA Time Zone
34
- * Database}, e.g., "America/New_York".
35
- */
36
- class Location extends AbstractRecord
37
- {
38
- /**
39
- * @ignore
40
- */
41
- protected $validAttributes = [
42
- 'averageIncome',
43
- 'accuracyRadius',
44
- 'latitude',
45
- 'longitude',
46
- 'metroCode',
47
- 'populationDensity',
48
- 'postalCode',
49
- 'postalConfidence',
50
- 'timeZone',
51
- ];
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/MaxMind.php DELETED
@@ -1,19 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data about your account.
7
- *
8
- * This record is returned by all location services and databases.
9
- *
10
- * @property-read int|null $queriesRemaining The number of remaining queries you
11
- * have for the service you are calling.
12
- */
13
- class MaxMind extends AbstractRecord
14
- {
15
- /**
16
- * @ignore
17
- */
18
- protected $validAttributes = ['queriesRemaining'];
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Postal.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the postal record associated with an IP address.
7
- *
8
- * This record is returned by all location databases and services besides
9
- * Country.
10
- *
11
- * @property-read string|null $code The postal code of the location. Postal codes
12
- * are not available for all countries. In some countries, this will only
13
- * contain part of the postal code. This attribute is returned by all location
14
- * databases and services besides Country.
15
- * @property-read int|null $confidence A value from 0-100 indicating MaxMind's
16
- * confidence that the postal code is correct. This attribute is only
17
- * available from the Insights service and the GeoIP2 Enterprise
18
- * database.
19
- */
20
- class Postal extends AbstractRecord
21
- {
22
- /**
23
- * @ignore
24
- */
25
- protected $validAttributes = ['code', 'confidence'];
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/RepresentedCountry.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the represented country associated with an IP address.
7
- *
8
- * This class contains the country-level data associated with an IP address
9
- * for the IP's represented country. The represented country is the country
10
- * represented by something like a military base.
11
- *
12
- * @property-read int|null $confidence A value from 0-100 indicating MaxMind's
13
- * confidence that the country is correct. This attribute is only available
14
- * from the Insights service and the GeoIP2 Enterprise database.
15
- * @property-read int|null $geonameId The GeoName ID for the country.
16
- * @property-read bool $isInEuropeanUnion This is true if the country is a
17
- * member state of the European Union. This attribute is returned by all
18
- * location services and databases.
19
- * @property-read string|null $isoCode The {@link http://en.wikipedia.org/wiki/ISO_3166-1
20
- * two-character ISO 3166-1 alpha code} for the country.
21
- * @property-read string|null $name The name of the country based on the locales list
22
- * passed to the constructor.
23
- * @property-read array|null $names An array map where the keys are locale codes and
24
- * the values are names.
25
- * @property-read string|null $type A string indicating the type of entity that is
26
- * representing the country. Currently we only return <code>military</code>
27
- * but this could expand to include other types in the future.
28
- */
29
- class RepresentedCountry extends Country
30
- {
31
- protected $validAttributes = [
32
- 'confidence',
33
- 'geonameId',
34
- 'isInEuropeanUnion',
35
- 'isoCode',
36
- 'names',
37
- 'type',
38
- ];
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Subdivision.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the subdivisions associated with an IP address.
7
- *
8
- * This record is returned by all location databases and services besides
9
- * Country.
10
- *
11
- * @property-read int|null $confidence This is a value from 0-100 indicating
12
- * MaxMind's confidence that the subdivision is correct. This attribute is
13
- * only available from the Insights service and the GeoIP2 Enterprise
14
- * database.
15
- * @property-read int|null $geonameId This is a GeoName ID for the subdivision.
16
- * This attribute is returned by all location databases and services besides
17
- * Country.
18
- * @property-read string|null $isoCode This is a string up to three characters long
19
- * contain the subdivision portion of the
20
- * {@link * http://en.wikipedia.org/wiki/ISO_3166-2 ISO 3166-2 code}. This attribute
21
- * is returned by all location databases and services except Country.
22
- * @property-read string|null $name The name of the subdivision based on the
23
- * locales list passed to the constructor. This attribute is returned by all
24
- * location databases and services besides Country.
25
- * @property-read array|null $names An array map where the keys are locale codes
26
- * and the values are names. This attribute is returned by all location
27
- * databases and services besides Country.
28
- */
29
- class Subdivision extends AbstractPlaceRecord
30
- {
31
- /**
32
- * @ignore
33
- */
34
- protected $validAttributes = [
35
- 'confidence',
36
- 'geonameId',
37
- 'isoCode',
38
- 'names',
39
- ];
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/Record/Traits.php DELETED
@@ -1,114 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\Record;
4
-
5
- /**
6
- * Contains data for the traits record associated with an IP address.
7
- *
8
- * This record is returned by all location services and databases.
9
- *
10
- * @property-read int|null $autonomousSystemNumber The
11
- * {@link * http://en.wikipedia.org/wiki/Autonomous_system_(Internet) autonomous
12
- * system number} associated with the IP address. This attribute is only
13
- * available from the City and Insights web service and the GeoIP2
14
- * Enterprise database.
15
- * @property-read string|null $autonomousSystemOrganization The organization
16
- * associated with the registered {@link * http://en.wikipedia.org/wiki/Autonomous_system_(Internet) autonomous
17
- * system number} for the IP address. This attribute is only available from
18
- * the City and Insights web service and the GeoIP2 Enterprise
19
- * database.
20
- * @property-read string|null $connectionType The connection type may take the
21
- * following values: "Dialup", "Cable/DSL", "Corporate", "Cellular".
22
- * Additional values may be added in the future. This attribute is only
23
- * available in the GeoIP2 Enterprise database.
24
- * @property-read string|null $domain The second level domain associated with the
25
- * IP address. This will be something like "example.com" or "example.co.uk",
26
- * not "foo.example.com". This attribute is only available from the
27
- * City and Insights web service and the GeoIP2 Enterprise
28
- * database.
29
- * @property-read string $ipAddress The IP address that the data in the model
30
- * is for. If you performed a "me" lookup against the web service, this
31
- * will be the externally routable IP address for the system the code is
32
- * running on. If the system is behind a NAT, this may differ from the IP
33
- * address locally assigned to it. This attribute is returned by all end
34
- * points.
35
- * @property-read bool $isAnonymous This is true if the IP address belongs to
36
- * any sort of anonymous network. This property is only available from GeoIP2
37
- * Precision Insights.
38
- * @property-read bool $isAnonymousProxy *Deprecated.* Please see our
39
- * {@link * https://www.maxmind.com/en/geoip2-anonymous-ip-database GeoIP2
40
- * Anonymous IP database} to determine whether the IP address is used by an
41
- * anonymizing service.
42
- * @property-read bool $isAnonymousVpn This is true if the IP address belongs to
43
- * an anonymous VPN system. This property is only available from GeoIP2
44
- * Precision Insights.
45
- * @property-read bool $isHostingProvider This is true if the IP address belongs
46
- * to a hosting provider. This property is only available from GeoIP2
47
- * Precision Insights.
48
- * @property-read bool $isLegitimateProxy This attribute is true if MaxMind
49
- * believes this IP address to be a legitimate proxy, such as an internal
50
- * VPN used by a corporation. This attribute is only available in the GeoIP2
51
- * Enterprise database.
52
- * @property-read bool $isPublicProxy This is true if the IP address belongs to
53
- * a public proxy. This property is only available from GeoIP2 Precision
54
- * Insights.
55
- * @property-read bool $isSatelliteProvider *Deprecated.* Due to the
56
- * increased coverage by mobile carriers, very few satellite providers now
57
- * serve multiple countries. As a result, the output does not provide
58
- * sufficiently relevant data for us to maintain it.
59
- * @property-read bool $isTorExitNode This is true if the IP address is a Tor
60
- * exit node. This property is only available from GeoIP2 Precision Insights.
61
- * @property-read string|null $isp The name of the ISP associated with the IP
62
- * address. This attribute is only available from the City and Insights web
63
- * services and the GeoIP2 Enterprise database.
64
- * @property-read string|null $organization The name of the organization associated
65
- * with the IP address. This attribute is only available from the City and
66
- * Insights web services and the GeoIP2 Enterprise database.
67
- * @property-read string|null $userType <p>The user type associated with the IP
68
- * address. This can be one of the following values:</p>
69
- * <ul>
70
- * <li>business
71
- * <li>cafe
72
- * <li>cellular
73
- * <li>college
74
- * <li>content_delivery_network
75
- * <li>dialup
76
- * <li>government
77
- * <li>hosting
78
- * <li>library
79
- * <li>military
80
- * <li>residential
81
- * <li>router
82
- * <li>school
83
- * <li>search_engine_spider
84
- * <li>traveler
85
- * </ul>
86
- * <p>
87
- * This attribute is only available from the Insights web service and the
88
- * GeoIP2 Enterprise database.
89
- * </p>
90
- */
91
- class Traits extends AbstractRecord
92
- {
93
- /**
94
- * @ignore
95
- */
96
- protected $validAttributes = [
97
- 'autonomousSystemNumber',
98
- 'autonomousSystemOrganization',
99
- 'connectionType',
100
- 'domain',
101
- 'ipAddress',
102
- 'isAnonymous',
103
- 'isAnonymousProxy',
104
- 'isAnonymousVpn',
105
- 'isHostingProvider',
106
- 'isLegitimateProxy',
107
- 'isp',
108
- 'isPublicProxy',
109
- 'isSatelliteProvider',
110
- 'isTorExitNode',
111
- 'organization',
112
- 'userType',
113
- ];
114
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/geoip2/geoip2/src/WebService/Client.php DELETED
@@ -1,239 +0,0 @@
1
- <?php
2
-
3
- namespace GeoIp2\WebService;
4
-
5
- use GeoIp2\Exception\AddressNotFoundException;
6
- use GeoIp2\Exception\AuthenticationException;
7
- use GeoIp2\Exception\GeoIp2Exception;
8
- use GeoIp2\Exception\HttpException;
9
- use GeoIp2\Exception\InvalidRequestException;
10
- use GeoIp2\Exception\OutOfQueriesException;
11
- use GeoIp2\ProviderInterface;
12
- use MaxMind\WebService\Client as WsClient;
13
-
14
- /**
15
- * This class provides a client API for all the GeoIP2 Precision web services.
16
- * The services are Country, City, and Insights. Each service returns a
17
- * different set of data about an IP address, with Country returning the
18
- * least data and Insights the most.
19
- *
20
- * Each web service is represented by a different model class, and these model
21
- * classes in turn contain multiple record classes. The record classes have
22
- * attributes which contain data about the IP address.
23
- *
24
- * If the web service does not return a particular piece of data for an IP
25
- * address, the associated attribute is not populated.
26
- *
27
- * The web service may not return any information for an entire record, in
28
- * which case all of the attributes for that record class will be empty.
29
- *
30
- * ## Usage ##
31
- *
32
- * The basic API for this class is the same for all of the web service end
33
- * points. First you create a web service object with your MaxMind `$accountId`
34
- * and `$licenseKey`, then you call the method corresponding to a specific end
35
- * point, passing it the IP address you want to look up.
36
- *
37
- * If the request succeeds, the method call will return a model class for
38
- * the service you called. This model in turn contains multiple record
39
- * classes, each of which represents part of the data returned by the web
40
- * service.
41
- *
42
- * If the request fails, the client class throws an exception.
43
- */
44
- class Client implements ProviderInterface
45
- {
46
- private $locales;
47
- private $client;
48
- private static $basePath = '/geoip/v2.1';
49
-
50
- const VERSION = 'v2.9.0';
51
-
52
- /**
53
- * Constructor.
54
- *
55
- * @param int $accountId your MaxMind account ID
56
- * @param string $licenseKey your MaxMind license key
57
- * @param array $locales list of locale codes to use in name property
58
- * from most preferred to least preferred
59
- * @param array $options array of options. Valid options include:
60
- * * `host` - The host to use when querying the web service.
61
- * * `timeout` - Timeout in seconds.
62
- * * `connectTimeout` - Initial connection timeout in seconds.
63
- * * `proxy` - The HTTP proxy to use. May include a schema, port,
64
- * username, and password, e.g.,
65
- * `http://username:password@127.0.0.1:10`.
66
- */
67
- public function __construct(
68
- $accountId,
69
- $licenseKey,
70
- $locales = ['en'],
71
- $options = []
72
- ) {
73
- $this->locales = $locales;
74
-
75
- // This is for backwards compatibility. Do not remove except for a
76
- // major version bump.
77
- if (is_string($options)) {
78
- $options = ['host' => $options];
79
- }
80
-
81
- if (!isset($options['host'])) {
82
- $options['host'] = 'geoip.maxmind.com';
83
- }
84
-
85
- $options['userAgent'] = $this->userAgent();
86
-
87
- $this->client = new WsClient($accountId, $licenseKey, $options);
88
- }
89
-
90
- private function userAgent()
91
- {
92
- return 'GeoIP2-API/' . self::VERSION;
93
- }
94
-
95
- /**
96
- * This method calls the GeoIP2 Precision: City service.
97
- *
98
- * @param string $ipAddress IPv4 or IPv6 address as a string. If no
99
- * address is provided, the address that the web service is called
100
- * from will be used.
101
- *
102
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address you
103
- * provided is not in our database (e.g., a private address).
104
- * @throws \GeoIp2\Exception\AuthenticationException if there is a problem
105
- * with the account ID or license key that you provided
106
- * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out
107
- * of queries
108
- * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
109
- * invalid for some other reason. This may indicate an issue
110
- * with this API. Please report the error to MaxMind.
111
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
112
- * This could indicate a problem with the connection between
113
- * your server and the web service or that the web service
114
- * returned an invalid document or 500 error code.
115
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
116
- * class to the above exceptions. It will be thrown directly
117
- * if a 200 status code is returned but the body is invalid.
118
- *
119
- * @return \GeoIp2\Model\City
120
- */
121
- public function city($ipAddress = 'me')
122
- {
123
- return $this->responseFor('city', 'City', $ipAddress);
124
- }
125
-
126
- /**
127
- * This method calls the GeoIP2 Precision: Country service.
128
- *
129
- * @param string $ipAddress IPv4 or IPv6 address as a string. If no
130
- * address is provided, the address that the web service is called
131
- * from will be used.
132
- *
133
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address you provided is not in our database (e.g.,
134
- * a private address).
135
- * @throws \GeoIp2\Exception\AuthenticationException if there is a problem
136
- * with the account ID or license key that you provided
137
- * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out of queries
138
- * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
139
- * invalid for some other reason. This may indicate an
140
- * issue with this API. Please report the error to MaxMind.
141
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error
142
- * code or message was returned. This could indicate a problem
143
- * with the connection between your server and the web service
144
- * or that the web service returned an invalid document or 500
145
- * error code.
146
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent class to the above exceptions. It
147
- * will be thrown directly if a 200 status code is returned but
148
- * the body is invalid.
149
- *
150
- * @return \GeoIp2\Model\Country
151
- */
152
- public function country($ipAddress = 'me')
153
- {
154
- return $this->responseFor('country', 'Country', $ipAddress);
155
- }
156
-
157
- /**
158
- * This method calls the GeoIP2 Precision: Insights service.
159
- *
160
- * @param string $ipAddress IPv4 or IPv6 address as a string. If no
161
- * address is provided, the address that the web service is called
162
- * from will be used.
163
- *
164
- * @throws \GeoIp2\Exception\AddressNotFoundException if the address you
165
- * provided is not in our database (e.g., a private address).
166
- * @throws \GeoIp2\Exception\AuthenticationException if there is a problem
167
- * with the account ID or license key that you provided
168
- * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out
169
- * of queries
170
- * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is
171
- * invalid for some other reason. This may indicate an
172
- * issue with this API. Please report the error to MaxMind.
173
- * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned.
174
- * This could indicate a problem with the connection between
175
- * your server and the web service or that the web service
176
- * returned an invalid document or 500 error code.
177
- * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent
178
- * class to the above exceptions. It will be thrown directly
179
- * if a 200 status code is returned but the body is invalid.
180
- *
181
- * @return \GeoIp2\Model\Insights
182
- */
183
- public function insights($ipAddress = 'me')
184
- {
185
- return $this->responseFor('insights', 'Insights', $ipAddress);
186
- }
187
-
188
- private function responseFor($endpoint, $class, $ipAddress)
189
- {
190
- $path = implode('/', [self::$basePath, $endpoint, $ipAddress]);
191
-
192
- try {
193
- $body = $this->client->get('GeoIP2 ' . $class, $path);
194
- } catch (\MaxMind\Exception\IpAddressNotFoundException $ex) {
195
- throw new AddressNotFoundException(
196
- $ex->getMessage(),
197
- $ex->getStatusCode(),
198
- $ex
199
- );
200
- } catch (\MaxMind\Exception\AuthenticationException $ex) {
201
- throw new AuthenticationException(
202
- $ex->getMessage(),
203
- $ex->getStatusCode(),
204
- $ex
205
- );
206
- } catch (\MaxMind\Exception\InsufficientFundsException $ex) {
207
- throw new OutOfQueriesException(
208
- $ex->getMessage(),
209
- $ex->getStatusCode(),
210
- $ex
211
- );
212
- } catch (\MaxMind\Exception\InvalidRequestException $ex) {
213
- throw new InvalidRequestException(
214
- $ex->getMessage(),
215
- $ex->getErrorCode(),
216
- $ex->getStatusCode(),
217
- $ex->getUri(),
218
- $ex
219
- );
220
- } catch (\MaxMind\Exception\HttpException $ex) {
221
- throw new HttpException(
222
- $ex->getMessage(),
223
- $ex->getStatusCode(),
224
- $ex->getUri(),
225
- $ex
226
- );
227
- } catch (\MaxMind\Exception\WebServiceException $ex) {
228
- throw new GeoIp2Exception(
229
- $ex->getMessage(),
230
- $ex->getCode(),
231
- $ex
232
- );
233
- }
234
-
235
- $class = 'GeoIp2\\Model\\' . $class;
236
-
237
- return new $class($body, $this->locales);
238
- }
239
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/LICENSE DELETED
@@ -1,202 +0,0 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
178
-
179
- APPENDIX: How to apply the Apache License to your work.
180
-
181
- To apply the Apache License to your work, attach the following
182
- boilerplate notice, with the fields enclosed by brackets "[]"
183
- replaced with your own identifying information. (Don't include
184
- the brackets!) The text should be enclosed in the appropriate
185
- comment syntax for the file format. We also recommend that a
186
- file or class name and description of purpose be included on the
187
- same "printed page" as the copyright notice for easier
188
- identification within third-party archives.
189
-
190
- Copyright [yyyy] [name of copyright owner]
191
-
192
- Licensed under the Apache License, Version 2.0 (the "License");
193
- you may not use this file except in compliance with the License.
194
- You may obtain a copy of the License at
195
-
196
- http://www.apache.org/licenses/LICENSE-2.0
197
-
198
- Unless required by applicable law or agreed to in writing, software
199
- distributed under the License is distributed on an "AS IS" BASIS,
200
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
- See the License for the specific language governing permissions and
202
- limitations under the License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/autoload.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * PSR-4 autoloader implementation for the MaxMind\DB namespace.
5
- * First we define the 'mmdb_autoload' function, and then we register
6
- * it with 'spl_autoload_register' so that PHP knows to use it.
7
- *
8
- * @param mixed $class
9
- */
10
-
11
- /**
12
- * Automatically include the file that defines <code>class</code>.
13
- *
14
- * @param string $class
15
- * the name of the class to load
16
- */
17
- function mmdb_autoload($class)
18
- {
19
- /*
20
- * A project-specific mapping between the namespaces and where
21
- * they're located. By convention, we include the trailing
22
- * slashes. The one-element array here simply makes things easy
23
- * to extend in the future if (for example) the test classes
24
- * begin to use one another.
25
- */
26
- $namespace_map = ['MaxMind\\Db\\' => __DIR__ . '/src/MaxMind/Db/'];
27
-
28
- foreach ($namespace_map as $prefix => $dir) {
29
- /* First swap out the namespace prefix with a directory... */
30
- $path = str_replace($prefix, $dir, $class);
31
-
32
- /* replace the namespace separator with a directory separator... */
33
- $path = str_replace('\\', '/', $path);
34
-
35
- /* and finally, add the PHP file extension to the result. */
36
- $path = $path . '.php';
37
-
38
- /* $path should now contain the path to a PHP file defining $class */
39
- if (file_exists($path)) {
40
- include $path;
41
- }
42
- }
43
- }
44
-
45
- spl_autoload_register('mmdb_autoload');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php DELETED
@@ -1,309 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Db;
4
-
5
- use MaxMind\Db\Reader\Decoder;
6
- use MaxMind\Db\Reader\InvalidDatabaseException;
7
- use MaxMind\Db\Reader\Metadata;
8
- use MaxMind\Db\Reader\Util;
9
-
10
- /**
11
- * Instances of this class provide a reader for the MaxMind DB format. IP
12
- * addresses can be looked up using the <code>get</code> method.
13
- */
14
- class Reader
15
- {
16
- private static $DATA_SECTION_SEPARATOR_SIZE = 16;
17
- private static $METADATA_START_MARKER = "\xAB\xCD\xEFMaxMind.com";
18
- private static $METADATA_START_MARKER_LENGTH = 14;
19
- private static $METADATA_MAX_SIZE = 131072; // 128 * 1024 = 128KB
20
-
21
- private $decoder;
22
- private $fileHandle;
23
- private $fileSize;
24
- private $ipV4Start;
25
- private $metadata;
26
-
27
- /**
28
- * Constructs a Reader for the MaxMind DB format. The file passed to it must
29
- * be a valid MaxMind DB file such as a GeoIp2 database file.
30
- *
31
- * @param string $database
32
- * the MaxMind DB file to use
33
- *
34
- * @throws \InvalidArgumentException for invalid database path or unknown arguments
35
- * @throws \MaxMind\Db\Reader\InvalidDatabaseException
36
- * if the database is invalid or there is an error reading
37
- * from it
38
- */
39
- public function __construct($database)
40
- {
41
- if (\func_num_args() !== 1) {
42
- throw new \InvalidArgumentException(
43
- 'The constructor takes exactly one argument.'
44
- );
45
- }
46
-
47
- if (!is_readable($database)) {
48
- throw new \InvalidArgumentException(
49
- "The file \"$database\" does not exist or is not readable."
50
- );
51
- }
52
- $this->fileHandle = @fopen($database, 'rb');
53
- if ($this->fileHandle === false) {
54
- throw new \InvalidArgumentException(
55
- "Error opening \"$database\"."
56
- );
57
- }
58
- $this->fileSize = @filesize($database);
59
- if ($this->fileSize === false) {
60
- throw new \UnexpectedValueException(
61
- "Error determining the size of \"$database\"."
62
- );
63
- }
64
-
65
- $start = $this->findMetadataStart($database);
66
- $metadataDecoder = new Decoder($this->fileHandle, $start);
67
- list($metadataArray) = $metadataDecoder->decode($start);
68
- $this->metadata = new Metadata($metadataArray);
69
- $this->decoder = new Decoder(
70
- $this->fileHandle,
71
- $this->metadata->searchTreeSize + self::$DATA_SECTION_SEPARATOR_SIZE
72
- );
73
- }
74
-
75
- /**
76
- * Looks up the <code>address</code> in the MaxMind DB.
77
- *
78
- * @param string $ipAddress
79
- * the IP address to look up
80
- *
81
- * @throws \BadMethodCallException if this method is called on a closed database
82
- * @throws \InvalidArgumentException if something other than a single IP address is passed to the method
83
- * @throws InvalidDatabaseException
84
- * if the database is invalid or there is an error reading
85
- * from it
86
- *
87
- * @return array the record for the IP address
88
- */
89
- public function get($ipAddress)
90
- {
91
- if (\func_num_args() !== 1) {
92
- throw new \InvalidArgumentException(
93
- 'Method takes exactly one argument.'
94
- );
95
- }
96
-
97
- if (!\is_resource($this->fileHandle)) {
98
- throw new \BadMethodCallException(
99
- 'Attempt to read from a closed MaxMind DB.'
100
- );
101
- }
102
-
103
- if (!filter_var($ipAddress, FILTER_VALIDATE_IP)) {
104
- throw new \InvalidArgumentException(
105
- "The value \"$ipAddress\" is not a valid IP address."
106
- );
107
- }
108
-
109
- if ($this->metadata->ipVersion === 4 && strrpos($ipAddress, ':')) {
110
- throw new \InvalidArgumentException(
111
- "Error looking up $ipAddress. You attempted to look up an"
112
- . ' IPv6 address in an IPv4-only database.'
113
- );
114
- }
115
- $pointer = $this->findAddressInTree($ipAddress);
116
- if ($pointer === 0) {
117
- return null;
118
- }
119
-
120
- return $this->resolveDataPointer($pointer);
121
- }
122
-
123
- private function findAddressInTree($ipAddress)
124
- {
125
- // XXX - could simplify. Done as a byte array to ease porting
126
- $rawAddress = array_merge(unpack('C*', inet_pton($ipAddress)));
127
-
128
- $bitCount = \count($rawAddress) * 8;
129
-
130
- // The first node of the tree is always node 0, at the beginning of the
131
- // value
132
- $node = $this->startNode($bitCount);
133
-
134
- for ($i = 0; $i < $bitCount; ++$i) {
135
- if ($node >= $this->metadata->nodeCount) {
136
- break;
137
- }
138
- $tempBit = 0xFF & $rawAddress[$i >> 3];
139
- $bit = 1 & ($tempBit >> 7 - ($i % 8));
140
-
141
- $node = $this->readNode($node, $bit);
142
- }
143
- if ($node === $this->metadata->nodeCount) {
144
- // Record is empty
145
- return 0;
146
- } elseif ($node > $this->metadata->nodeCount) {
147
- // Record is a data pointer
148
- return $node;
149
- }
150
- throw new InvalidDatabaseException('Something bad happened');
151
- }
152
-
153
- private function startNode($length)
154
- {
155
- // Check if we are looking up an IPv4 address in an IPv6 tree. If this
156
- // is the case, we can skip over the first 96 nodes.
157
- if ($this->metadata->ipVersion === 6 && $length === 32) {
158
- return $this->ipV4StartNode();
159
- }
160
- // The first node of the tree is always node 0, at the beginning of the
161
- // value
162
- return 0;
163
- }
164
-
165
- private function ipV4StartNode()
166
- {
167
- // This is a defensive check. There is no reason to call this when you
168
- // have an IPv4 tree.
169
- if ($this->metadata->ipVersion === 4) {
170
- return 0;
171
- }
172
-
173
- if ($this->ipV4Start) {
174
- return $this->ipV4Start;
175
- }
176
- $node = 0;
177
-
178
- for ($i = 0; $i < 96 && $node < $this->metadata->nodeCount; ++$i) {
179
- $node = $this->readNode($node, 0);
180
- }
181
- $this->ipV4Start = $node;
182
-
183
- return $node;
184
- }
185
-
186
- private function readNode($nodeNumber, $index)
187
- {
188
- $baseOffset = $nodeNumber * $this->metadata->nodeByteSize;
189
-
190
- // XXX - probably could condense this.
191
- switch ($this->metadata->recordSize) {
192
- case 24:
193
- $bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3);
194
- list(, $node) = unpack('N', "\x00" . $bytes);
195
-
196
- return $node;
197
- case 28:
198
- $middleByte = Util::read($this->fileHandle, $baseOffset + 3, 1);
199
- list(, $middle) = unpack('C', $middleByte);
200
- if ($index === 0) {
201
- $middle = (0xF0 & $middle) >> 4;
202
- } else {
203
- $middle = 0x0F & $middle;
204
- }
205
- $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 3);
206
- list(, $node) = unpack('N', \chr($middle) . $bytes);
207
-
208
- return $node;
209
- case 32:
210
- $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4);
211
- list(, $node) = unpack('N', $bytes);
212
-
213
- return $node;
214
- default:
215
- throw new InvalidDatabaseException(
216
- 'Unknown record size: '
217
- . $this->metadata->recordSize
218
- );
219
- }
220
- }
221
-
222
- private function resolveDataPointer($pointer)
223
- {
224
- $resolved = $pointer - $this->metadata->nodeCount
225
- + $this->metadata->searchTreeSize;
226
- if ($resolved > $this->fileSize) {
227
- throw new InvalidDatabaseException(
228
- "The MaxMind DB file's search tree is corrupt"
229
- );
230
- }
231
-
232
- list($data) = $this->decoder->decode($resolved);
233
-
234
- return $data;
235
- }
236
-
237
- /*
238
- * This is an extremely naive but reasonably readable implementation. There
239
- * are much faster algorithms (e.g., Boyer-Moore) for this if speed is ever
240
- * an issue, but I suspect it won't be.
241
- */
242
- private function findMetadataStart($filename)
243
- {
244
- $handle = $this->fileHandle;
245
- $fstat = fstat($handle);
246
- $fileSize = $fstat['size'];
247
- $marker = self::$METADATA_START_MARKER;
248
- $markerLength = self::$METADATA_START_MARKER_LENGTH;
249
- $metadataMaxLengthExcludingMarker
250
- = min(self::$METADATA_MAX_SIZE, $fileSize) - $markerLength;
251
-
252
- for ($i = 0; $i <= $metadataMaxLengthExcludingMarker; ++$i) {
253
- for ($j = 0; $j < $markerLength; ++$j) {
254
- fseek($handle, $fileSize - $i - $j - 1);
255
- $matchBit = fgetc($handle);
256
- if ($matchBit !== $marker[$markerLength - $j - 1]) {
257
- continue 2;
258
- }
259
- }
260
-
261
- return $fileSize - $i;
262
- }
263
- throw new InvalidDatabaseException(
264
- "Error opening database file ($filename). " .
265
- 'Is this a valid MaxMind DB file?'
266
- );
267
- }
268
-
269
- /**
270
- * @throws \InvalidArgumentException if arguments are passed to the method
271
- * @throws \BadMethodCallException if the database has been closed
272
- *
273
- * @return Metadata object for the database
274
- */
275
- public function metadata()
276
- {
277
- if (\func_num_args()) {
278
- throw new \InvalidArgumentException(
279
- 'Method takes no arguments.'
280
- );
281
- }
282
-
283
- // Not technically required, but this makes it consistent with
284
- // C extension and it allows us to change our implementation later.
285
- if (!\is_resource($this->fileHandle)) {
286
- throw new \BadMethodCallException(
287
- 'Attempt to read from a closed MaxMind DB.'
288
- );
289
- }
290
-
291
- return $this->metadata;
292
- }
293
-
294
- /**
295
- * Closes the MaxMind DB and returns resources to the system.
296
- *
297
- * @throws \Exception
298
- * if an I/O error occurs
299
- */
300
- public function close()
301
- {
302
- if (!\is_resource($this->fileHandle)) {
303
- throw new \BadMethodCallException(
304
- 'Attempt to close a closed MaxMind DB.'
305
- );
306
- }
307
- fclose($this->fileHandle);
308
- }
309
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php DELETED
@@ -1,341 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Db\Reader;
4
-
5
- // @codingStandardsIgnoreLine
6
- // We subtract 1 from the log to protect against precision loss.
7
- \define(__NAMESPACE__ . '\_MM_MAX_INT_BYTES', (log(PHP_INT_MAX, 2) - 1) / 8);
8
-
9
- class Decoder
10
- {
11
- private $fileStream;
12
- private $pointerBase;
13
- private $pointerBaseByteSize;
14
- // This is only used for unit testing
15
- private $pointerTestHack;
16
- private $switchByteOrder;
17
-
18
- const _EXTENDED = 0;
19
- const _POINTER = 1;
20
- const _UTF8_STRING = 2;
21
- const _DOUBLE = 3;
22
- const _BYTES = 4;
23
- const _UINT16 = 5;
24
- const _UINT32 = 6;
25
- const _MAP = 7;
26
- const _INT32 = 8;
27
- const _UINT64 = 9;
28
- const _UINT128 = 10;
29
- const _ARRAY = 11;
30
- const _CONTAINER = 12;
31
- const _END_MARKER = 13;
32
- const _BOOLEAN = 14;
33
- const _FLOAT = 15;
34
-
35
- public function __construct(
36
- $fileStream,
37
- $pointerBase = 0,
38
- $pointerTestHack = false
39
- ) {
40
- $this->fileStream = $fileStream;
41
- $this->pointerBase = $pointerBase;
42
-
43
- $this->pointerBaseByteSize = $pointerBase > 0 ? log($pointerBase, 2) / 8 : 0;
44
- $this->pointerTestHack = $pointerTestHack;
45
-
46
- $this->switchByteOrder = $this->isPlatformLittleEndian();
47
- }
48
-
49
- public function decode($offset)
50
- {
51
- list(, $ctrlByte) = unpack(
52
- 'C',
53
- Util::read($this->fileStream, $offset, 1)
54
- );
55
- ++$offset;
56
-
57
- $type = $ctrlByte >> 5;
58
-
59
- // Pointers are a special case, we don't read the next $size bytes, we
60
- // use the size to determine the length of the pointer and then follow
61
- // it.
62
- if ($type === self::_POINTER) {
63
- list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset);
64
-
65
- // for unit testing
66
- if ($this->pointerTestHack) {
67
- return [$pointer];
68
- }
69
-
70
- list($result) = $this->decode($pointer);
71
-
72
- return [$result, $offset];
73
- }
74
-
75
- if ($type === self::_EXTENDED) {
76
- list(, $nextByte) = unpack(
77
- 'C',
78
- Util::read($this->fileStream, $offset, 1)
79
- );
80
-
81
- $type = $nextByte + 7;
82
-
83
- if ($type < 8) {
84
- throw new InvalidDatabaseException(
85
- 'Something went horribly wrong in the decoder. An extended type '
86
- . 'resolved to a type number < 8 ('
87
- . $type
88
- . ')'
89
- );
90
- }
91
-
92
- ++$offset;
93
- }
94
-
95
- list($size, $offset) = $this->sizeFromCtrlByte($ctrlByte, $offset);
96
-
97
- return $this->decodeByType($type, $offset, $size);
98
- }
99
-
100
- private function decodeByType($type, $offset, $size)
101
- {
102
- switch ($type) {
103
- case self::_MAP:
104
- return $this->decodeMap($size, $offset);
105
- case self::_ARRAY:
106
- return $this->decodeArray($size, $offset);
107
- case self::_BOOLEAN:
108
- return [$this->decodeBoolean($size), $offset];
109
- }
110
-
111
- $newOffset = $offset + $size;
112
- $bytes = Util::read($this->fileStream, $offset, $size);
113
- switch ($type) {
114
- case self::_BYTES:
115
- case self::_UTF8_STRING:
116
- return [$bytes, $newOffset];
117
- case self::_DOUBLE:
118
- $this->verifySize(8, $size);
119
-
120
- return [$this->decodeDouble($bytes), $newOffset];
121
- case self::_FLOAT:
122
- $this->verifySize(4, $size);
123
-
124
- return [$this->decodeFloat($bytes), $newOffset];
125
- case self::_INT32:
126
- return [$this->decodeInt32($bytes, $size), $newOffset];
127
- case self::_UINT16:
128
- case self::_UINT32:
129
- case self::_UINT64:
130
- case self::_UINT128:
131
- return [$this->decodeUint($bytes, $size), $newOffset];
132
- default:
133
- throw new InvalidDatabaseException(
134
- 'Unknown or unexpected type: ' . $type
135
- );
136
- }
137
- }
138
-
139
- private function verifySize($expected, $actual)
140
- {
141
- if ($expected !== $actual) {
142
- throw new InvalidDatabaseException(
143
- "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)"
144
- );
145
- }
146
- }
147
-
148
- private function decodeArray($size, $offset)
149
- {
150
- $array = [];
151
-
152
- for ($i = 0; $i < $size; ++$i) {
153
- list($value, $offset) = $this->decode($offset);
154
- array_push($array, $value);
155
- }
156
-
157
- return [$array, $offset];
158
- }
159
-
160
- private function decodeBoolean($size)
161
- {
162
- return $size === 0 ? false : true;
163
- }
164
-
165
- private function decodeDouble($bits)
166
- {
167
- // This assumes IEEE 754 doubles, but most (all?) modern platforms
168
- // use them.
169
- //
170
- // We are not using the "E" format as that was only added in
171
- // 7.0.15 and 7.1.1. As such, we must switch byte order on
172
- // little endian machines.
173
- list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits));
174
-
175
- return $double;
176
- }
177
-
178
- private function decodeFloat($bits)
179
- {
180
- // This assumes IEEE 754 floats, but most (all?) modern platforms
181
- // use them.
182
- //
183
- // We are not using the "G" format as that was only added in
184
- // 7.0.15 and 7.1.1. As such, we must switch byte order on
185
- // little endian machines.
186
- list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits));
187
-
188
- return $float;
189
- }
190
-
191
- private function decodeInt32($bytes, $size)
192
- {
193
- switch ($size) {
194
- case 0:
195
- return 0;
196
- case 1:
197
- case 2:
198
- case 3:
199
- $bytes = str_pad($bytes, 4, "\x00", STR_PAD_LEFT);
200
- break;
201
- case 4:
202
- break;
203
- default:
204
- throw new InvalidDatabaseException(
205
- "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)"
206
- );
207
- }
208
-
209
- list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes));
210
-
211
- return $int;
212
- }
213
-
214
- private function decodeMap($size, $offset)
215
- {
216
- $map = [];
217
-
218
- for ($i = 0; $i < $size; ++$i) {
219
- list($key, $offset) = $this->decode($offset);
220
- list($value, $offset) = $this->decode($offset);
221
- $map[$key] = $value;
222
- }
223
-
224
- return [$map, $offset];
225
- }
226
-
227
- private function decodePointer($ctrlByte, $offset)
228
- {
229
- $pointerSize = (($ctrlByte >> 3) & 0x3) + 1;
230
-
231
- $buffer = Util::read($this->fileStream, $offset, $pointerSize);
232
- $offset = $offset + $pointerSize;
233
-
234
- switch ($pointerSize) {
235
- case 1:
236
- $packed = (pack('C', $ctrlByte & 0x7)) . $buffer;
237
- list(, $pointer) = unpack('n', $packed);
238
- $pointer += $this->pointerBase;
239
- break;
240
- case 2:
241
- $packed = "\x00" . (pack('C', $ctrlByte & 0x7)) . $buffer;
242
- list(, $pointer) = unpack('N', $packed);
243
- $pointer += $this->pointerBase + 2048;
244
- break;
245
- case 3:
246
- $packed = (pack('C', $ctrlByte & 0x7)) . $buffer;
247
-
248
- // It is safe to use 'N' here, even on 32 bit machines as the
249
- // first bit is 0.
250
- list(, $pointer) = unpack('N', $packed);
251
- $pointer += $this->pointerBase + 526336;
252
- break;
253
- case 4:
254
- // We cannot use unpack here as we might overflow on 32 bit
255
- // machines
256
- $pointerOffset = $this->decodeUint($buffer, $pointerSize);
257
-
258
- $byteLength = $pointerSize + $this->pointerBaseByteSize;
259
-
260
- if ($byteLength <= _MM_MAX_INT_BYTES) {
261
- $pointer = $pointerOffset + $this->pointerBase;
262
- } elseif (\extension_loaded('gmp')) {
263
- $pointer = gmp_strval(gmp_add($pointerOffset, $this->pointerBase));
264
- } elseif (\extension_loaded('bcmath')) {
265
- $pointer = bcadd($pointerOffset, $this->pointerBase);
266
- } else {
267
- throw new \RuntimeException(
268
- 'The gmp or bcmath extension must be installed to read this database.'
269
- );
270
- }
271
- }
272
-
273
- return [$pointer, $offset];
274
- }
275
-
276
- private function decodeUint($bytes, $byteLength)
277
- {
278
- if ($byteLength === 0) {
279
- return 0;
280
- }
281
-
282
- $integer = 0;
283
-
284
- for ($i = 0; $i < $byteLength; ++$i) {
285
- $part = \ord($bytes[$i]);
286
-
287
- // We only use gmp or bcmath if the final value is too big
288
- if ($byteLength <= _MM_MAX_INT_BYTES) {
289
- $integer = ($integer << 8) + $part;
290
- } elseif (\extension_loaded('gmp')) {
291
- $integer = gmp_strval(gmp_add(gmp_mul($integer, 256), $part));
292
- } elseif (\extension_loaded('bcmath')) {
293
- $integer = bcadd(bcmul($integer, 256), $part);
294
- } else {
295
- throw new \RuntimeException(
296
- 'The gmp or bcmath extension must be installed to read this database.'
297
- );
298
- }
299
- }
300
-
301
- return $integer;
302
- }
303
-
304
- private function sizeFromCtrlByte($ctrlByte, $offset)
305
- {
306
- $size = $ctrlByte & 0x1f;
307
-
308
- if ($size < 29) {
309
- return [$size, $offset];
310
- }
311
-
312
- $bytesToRead = $size - 28;
313
- $bytes = Util::read($this->fileStream, $offset, $bytesToRead);
314
-
315
- if ($size === 29) {
316
- $size = 29 + \ord($bytes);
317
- } elseif ($size === 30) {
318
- list(, $adjust) = unpack('n', $bytes);
319
- $size = 285 + $adjust;
320
- } elseif ($size > 30) {
321
- list(, $adjust) = unpack('N', "\x00" . $bytes);
322
- $size = ($adjust & (0x0FFFFFFF >> (32 - (8 * $bytesToRead))))
323
- + 65821;
324
- }
325
-
326
- return [$size, $offset + $bytesToRead];
327
- }
328
-
329
- private function maybeSwitchByteOrder($bytes)
330
- {
331
- return $this->switchByteOrder ? strrev($bytes) : $bytes;
332
- }
333
-
334
- private function isPlatformLittleEndian()
335
- {
336
- $testint = 0x00FF;
337
- $packed = pack('S', $testint);
338
-
339
- return $testint === current(unpack('v', $packed));
340
- }
341
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Db\Reader;
4
-
5
- /**
6
- * This class should be thrown when unexpected data is found in the database.
7
- */
8
- class InvalidDatabaseException extends \Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Db\Reader;
4
-
5
- /**
6
- * This class provides the metadata for the MaxMind DB file.
7
- *
8
- * @property int nodeCount This is an unsigned 32-bit integer indicating
9
- * the number of nodes in the search tree.
10
- * @property int recordSize This is an unsigned 16-bit integer. It
11
- * indicates the number of bits in a record in the search tree. Note that each
12
- * node consists of two records.
13
- * @property int ipVersion This is an unsigned 16-bit integer which is
14
- * always 4 or 6. It indicates whether the database contains IPv4 or IPv6
15
- * address data.
16
- * @property string databaseType This is a string that indicates the structure
17
- * of each data record associated with an IP address. The actual definition of
18
- * these structures is left up to the database creator.
19
- * @property array languages An array of strings, each of which is a language
20
- * code. A given record may contain data items that have been localized to
21
- * some or all of these languages. This may be undefined.
22
- * @property int binaryFormatMajorVersion This is an unsigned 16-bit
23
- * integer indicating the major version number for the database's binary
24
- * format.
25
- * @property int binaryFormatMinorVersion This is an unsigned 16-bit
26
- * integer indicating the minor version number for the database's binary format.
27
- * @property int buildEpoch This is an unsigned 64-bit integer that
28
- * contains the database build timestamp as a Unix epoch value.
29
- * @property array description This key will always point to a map
30
- * (associative array). The keys of that map will be language codes, and the
31
- * values will be a description in that language as a UTF-8 string. May be
32
- * undefined for some databases.
33
- */
34
- class Metadata
35
- {
36
- private $binaryFormatMajorVersion;
37
- private $binaryFormatMinorVersion;
38
- private $buildEpoch;
39
- private $databaseType;
40
- private $description;
41
- private $ipVersion;
42
- private $languages;
43
- private $nodeByteSize;
44
- private $nodeCount;
45
- private $recordSize;
46
- private $searchTreeSize;
47
-
48
- public function __construct($metadata)
49
- {
50
- $this->binaryFormatMajorVersion =
51
- $metadata['binary_format_major_version'];
52
- $this->binaryFormatMinorVersion =
53
- $metadata['binary_format_minor_version'];
54
- $this->buildEpoch = $metadata['build_epoch'];
55
- $this->databaseType = $metadata['database_type'];
56
- $this->languages = $metadata['languages'];
57
- $this->description = $metadata['description'];
58
- $this->ipVersion = $metadata['ip_version'];
59
- $this->nodeCount = $metadata['node_count'];
60
- $this->recordSize = $metadata['record_size'];
61
- $this->nodeByteSize = $this->recordSize / 4;
62
- $this->searchTreeSize = $this->nodeCount * $this->nodeByteSize;
63
- }
64
-
65
- public function __get($var)
66
- {
67
- return $this->$var;
68
- }
69
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Db\Reader;
4
-
5
- class Util
6
- {
7
- public static function read($stream, $offset, $numberOfBytes)
8
- {
9
- if ($numberOfBytes === 0) {
10
- return '';
11
- }
12
- if (fseek($stream, $offset) === 0) {
13
- $value = fread($stream, $numberOfBytes);
14
-
15
- // We check that the number of bytes read is equal to the number
16
- // asked for. We use ftell as getting the length of $value is
17
- // much slower.
18
- if (ftell($stream) - $offset === $numberOfBytes) {
19
- return $value;
20
- }
21
- }
22
- throw new InvalidDatabaseException(
23
- 'The MaxMind DB file contains bad data'
24
- );
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/LICENSE DELETED
@@ -1,202 +0,0 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
178
-
179
- APPENDIX: How to apply the Apache License to your work.
180
-
181
- To apply the Apache License to your work, attach the following
182
- boilerplate notice, with the fields enclosed by brackets "[]"
183
- replaced with your own identifying information. (Don't include
184
- the brackets!) The text should be enclosed in the appropriate
185
- comment syntax for the file format. We also recommend that a
186
- file or class name and description of purpose be included on the
187
- same "printed page" as the copyright notice for easier
188
- identification within third-party archives.
189
-
190
- Copyright [yyyy] [name of copyright owner]
191
-
192
- Licensed under the Apache License, Version 2.0 (the "License");
193
- you may not use this file except in compliance with the License.
194
- You may obtain a copy of the License at
195
-
196
- http://www.apache.org/licenses/LICENSE-2.0
197
-
198
- Unless required by applicable law or agreed to in writing, software
199
- distributed under the License is distributed on an "AS IS" BASIS,
200
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
- See the License for the specific language governing permissions and
202
- limitations under the License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * This class represents an error authenticating.
7
- */
8
- class AuthenticationException extends InvalidRequestException
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/HttpException.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * This class represents an HTTP transport error.
7
- */
8
- class HttpException extends WebServiceException
9
- {
10
- /**
11
- * The URI queried.
12
- */
13
- private $uri;
14
-
15
- /**
16
- * @param string $message a message describing the error
17
- * @param int $httpStatus the HTTP status code of the response
18
- * @param string $uri the URI used in the request
19
- * @param \Exception $previous the previous exception, if any
20
- */
21
- public function __construct(
22
- $message,
23
- $httpStatus,
24
- $uri,
25
- \Exception $previous = null
26
- ) {
27
- $this->uri = $uri;
28
- parent::__construct($message, $httpStatus, $previous);
29
- }
30
-
31
- public function getUri()
32
- {
33
- return $this->uri;
34
- }
35
-
36
- public function getStatusCode()
37
- {
38
- return $this->getCode();
39
- }
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * Thrown when the account is out of credits.
7
- */
8
- class InsufficientFundsException extends InvalidRequestException
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * This class represents an error in creating the request to be sent to the
7
- * web service. For example, if the array cannot be encoded as JSON or if there
8
- * is a missing or invalid field.
9
- */
10
- class InvalidInputException extends WebServiceException
11
- {
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * Thrown when a MaxMind web service returns an error relating to the request.
7
- */
8
- class InvalidRequestException extends HttpException
9
- {
10
- /**
11
- * The code returned by the MaxMind web service.
12
- */
13
- private $error;
14
-
15
- /**
16
- * @param string $message the exception message
17
- * @param int $error the error code returned by the MaxMind web service
18
- * @param int $httpStatus the HTTP status code of the response
19
- * @param string $uri the URI queries
20
- * @param \Exception $previous the previous exception, if any
21
- */
22
- public function __construct(
23
- $message,
24
- $error,
25
- $httpStatus,
26
- $uri,
27
- \Exception $previous = null
28
- ) {
29
- $this->error = $error;
30
- parent::__construct($message, $httpStatus, $uri, $previous);
31
- }
32
-
33
- public function getErrorCode()
34
- {
35
- return $this->error;
36
- }
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- class IpAddressNotFoundException extends InvalidRequestException
6
- {
7
- }
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * This exception is thrown when the service requires permission to access.
7
- */
8
- class PermissionRequiredException extends InvalidRequestException
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/Exception/WebServiceException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\Exception;
4
-
5
- /**
6
- * This class represents a generic web service error.
7
- */
8
- class WebServiceException extends \Exception
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/WebService/Client.php DELETED
@@ -1,472 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\WebService;
4
-
5
- use Composer\CaBundle\CaBundle;
6
- use MaxMind\Exception\AuthenticationException;
7
- use MaxMind\Exception\HttpException;
8
- use MaxMind\Exception\InsufficientFundsException;
9
- use MaxMind\Exception\InvalidInputException;
10
- use MaxMind\Exception\InvalidRequestException;
11
- use MaxMind\Exception\IpAddressNotFoundException;
12
- use MaxMind\Exception\PermissionRequiredException;
13
- use MaxMind\Exception\WebServiceException;
14
- use MaxMind\WebService\Http\RequestFactory;
15
-
16
- /**
17
- * This class is not intended to be used directly by an end-user of a
18
- * MaxMind web service. Please use the appropriate client API for the service
19
- * that you are using.
20
- *
21
- * @internal
22
- */
23
- class Client
24
- {
25
- const VERSION = '0.2.0';
26
-
27
- private $caBundle;
28
- private $connectTimeout;
29
- private $host = 'api.maxmind.com';
30
- private $httpRequestFactory;
31
- private $licenseKey;
32
- private $proxy;
33
- private $timeout;
34
- private $userAgentPrefix;
35
- private $accountId;
36
-
37
- /**
38
- * @param int $accountId your MaxMind account ID
39
- * @param string $licenseKey your MaxMind license key
40
- * @param array $options an array of options. Possible keys:
41
- * * `host` - The host to use when connecting to the web service.
42
- * * `userAgent` - The prefix of the User-Agent to use in the request.
43
- * * `caBundle` - The bundle of CA root certificates to use in the request.
44
- * * `connectTimeout` - The connect timeout to use for the request.
45
- * * `timeout` - The timeout to use for the request.
46
- * * `proxy` - The HTTP proxy to use. May include a schema, port,
47
- * username, and password, e.g., `http://username:password@127.0.0.1:10`.
48
- */
49
- public function __construct(
50
- $accountId,
51
- $licenseKey,
52
- $options = []
53
- ) {
54
- $this->accountId = $accountId;
55
- $this->licenseKey = $licenseKey;
56
-
57
- $this->httpRequestFactory = isset($options['httpRequestFactory'])
58
- ? $options['httpRequestFactory']
59
- : new RequestFactory();
60
-
61
- if (isset($options['host'])) {
62
- $this->host = $options['host'];
63
- }
64
- if (isset($options['userAgent'])) {
65
- $this->userAgentPrefix = $options['userAgent'] . ' ';
66
- }
67
-
68
- $this->caBundle = isset($options['caBundle']) ?
69
- $this->caBundle = $options['caBundle'] : $this->getCaBundle();
70
-
71
- if (isset($options['connectTimeout'])) {
72
- $this->connectTimeout = $options['connectTimeout'];
73
- }
74
- if (isset($options['timeout'])) {
75
- $this->timeout = $options['timeout'];
76
- }
77
-
78
- if (isset($options['proxy'])) {
79
- $this->proxy = $options['proxy'];
80
- }
81
- }
82
-
83
- /**
84
- * @param string $service name of the service querying
85
- * @param string $path the URI path to use
86
- * @param array $input the data to be posted as JSON
87
- *
88
- * @throws InvalidInputException when the request has missing or invalid
89
- * data
90
- * @throws AuthenticationException when there is an issue authenticating the
91
- * request
92
- * @throws InsufficientFundsException when your account is out of funds
93
- * @throws InvalidRequestException when the request is invalid for some
94
- * other reason, e.g., invalid JSON in the POST.
95
- * @throws HttpException when an unexpected HTTP error occurs
96
- * @throws WebServiceException when some other error occurs. This also
97
- * serves as the base class for the above exceptions.
98
- *
99
- * @return array The decoded content of a successful response
100
- */
101
- public function post($service, $path, $input)
102
- {
103
- $body = json_encode($input);
104
- if ($body === false) {
105
- throw new InvalidInputException(
106
- 'Error encoding input as JSON: '
107
- . $this->jsonErrorDescription()
108
- );
109
- }
110
-
111
- $request = $this->createRequest(
112
- $path,
113
- ['Content-Type: application/json']
114
- );
115
-
116
- list($statusCode, $contentType, $body) = $request->post($body);
117
-
118
- return $this->handleResponse(
119
- $statusCode,
120
- $contentType,
121
- $body,
122
- $service,
123
- $path
124
- );
125
- }
126
-
127
- public function get($service, $path)
128
- {
129
- $request = $this->createRequest($path);
130
-
131
- list($statusCode, $contentType, $body) = $request->get();
132
-
133
- return $this->handleResponse(
134
- $statusCode,
135
- $contentType,
136
- $body,
137
- $service,
138
- $path
139
- );
140
- }
141
-
142
- private function userAgent()
143
- {
144
- $curlVersion = curl_version();
145
-
146
- return $this->userAgentPrefix . 'MaxMind-WS-API/' . self::VERSION . ' PHP/' . PHP_VERSION .
147
- ' curl/' . $curlVersion['version'];
148
- }
149
-
150
- private function createRequest($path, $headers = [])
151
- {
152
- array_push(
153
- $headers,
154
- 'Authorization: Basic '
155
- . base64_encode($this->accountId . ':' . $this->licenseKey),
156
- 'Accept: application/json'
157
- );
158
-
159
- return $this->httpRequestFactory->request(
160
- $this->urlFor($path),
161
- [
162
- 'caBundle' => $this->caBundle,
163
- 'connectTimeout' => $this->connectTimeout,
164
- 'headers' => $headers,
165
- 'proxy' => $this->proxy,
166
- 'timeout' => $this->timeout,
167
- 'userAgent' => $this->userAgent(),
168
- ]
169
- );
170
- }
171
-
172
- /**
173
- * @param int $statusCode the HTTP status code of the response
174
- * @param string $contentType the Content-Type of the response
175
- * @param string $body the response body
176
- * @param string $service the name of the service
177
- * @param string $path the path used in the request
178
- *
179
- * @throws AuthenticationException when there is an issue authenticating the
180
- * request
181
- * @throws InsufficientFundsException when your account is out of funds
182
- * @throws InvalidRequestException when the request is invalid for some
183
- * other reason, e.g., invalid JSON in the POST.
184
- * @throws HttpException when an unexpected HTTP error occurs
185
- * @throws WebServiceException when some other error occurs. This also
186
- * serves as the base class for the above exceptions
187
- *
188
- * @return array The decoded content of a successful response
189
- */
190
- private function handleResponse(
191
- $statusCode,
192
- $contentType,
193
- $body,
194
- $service,
195
- $path
196
- ) {
197
- if ($statusCode >= 400 && $statusCode <= 499) {
198
- $this->handle4xx($statusCode, $contentType, $body, $service, $path);
199
- } elseif ($statusCode >= 500) {
200
- $this->handle5xx($statusCode, $service, $path);
201
- } elseif ($statusCode !== 200) {
202
- $this->handleUnexpectedStatus($statusCode, $service, $path);
203
- }
204
-
205
- return $this->handleSuccess($body, $service);
206
- }
207
-
208
- /**
209
- * @return string describing the JSON error
210
- */
211
- private function jsonErrorDescription()
212
- {
213
- $errno = json_last_error();
214
- switch ($errno) {
215
- case JSON_ERROR_DEPTH:
216
- return 'The maximum stack depth has been exceeded.';
217
- case JSON_ERROR_STATE_MISMATCH:
218
- return 'Invalid or malformed JSON.';
219
- case JSON_ERROR_CTRL_CHAR:
220
- return 'Control character error.';
221
- case JSON_ERROR_SYNTAX:
222
- return 'Syntax error.';
223
- case JSON_ERROR_UTF8:
224
- return 'Malformed UTF-8 characters.';
225
- default:
226
- return "Other JSON error ($errno).";
227
- }
228
- }
229
-
230
- /**
231
- * @param string $path the path to use in the URL
232
- *
233
- * @return string the constructed URL
234
- */
235
- private function urlFor($path)
236
- {
237
- return 'https://' . $this->host . $path;
238
- }
239
-
240
- /**
241
- * @param int $statusCode the HTTP status code
242
- * @param string $contentType the response content-type
243
- * @param string $body the response body
244
- * @param string $service the service name
245
- * @param string $path the path used in the request
246
- *
247
- * @throws AuthenticationException
248
- * @throws HttpException
249
- * @throws InsufficientFundsException
250
- * @throws InvalidRequestException
251
- */
252
- private function handle4xx(
253
- $statusCode,
254
- $contentType,
255
- $body,
256
- $service,
257
- $path
258
- ) {
259
- if (strlen($body) === 0) {
260
- throw new HttpException(
261
- "Received a $statusCode error for $service with no body",
262
- $statusCode,
263
- $this->urlFor($path)
264
- );
265
- }
266
- if (!strstr($contentType, 'json')) {
267
- throw new HttpException(
268
- "Received a $statusCode error for $service with " .
269
- 'the following body: ' . $body,
270
- $statusCode,
271
- $this->urlFor($path)
272
- );
273
- }
274
-
275
- $message = json_decode($body, true);
276
- if ($message === null) {
277
- throw new HttpException(
278
- "Received a $statusCode error for $service but could " .
279
- 'not decode the response as JSON: '
280
- . $this->jsonErrorDescription() . ' Body: ' . $body,
281
- $statusCode,
282
- $this->urlFor($path)
283
- );
284
- }
285
-
286
- if (!isset($message['code']) || !isset($message['error'])) {
287
- throw new HttpException(
288
- 'Error response contains JSON but it does not ' .
289
- 'specify code or error keys: ' . $body,
290
- $statusCode,
291
- $this->urlFor($path)
292
- );
293
- }
294
-
295
- $this->handleWebServiceError(
296
- $message['error'],
297
- $message['code'],
298
- $statusCode,
299
- $path
300
- );
301
- }
302
-
303
- /**
304
- * @param string $message the error message from the web service
305
- * @param string $code the error code from the web service
306
- * @param int $statusCode the HTTP status code
307
- * @param string $path the path used in the request
308
- *
309
- * @throws AuthenticationException
310
- * @throws InvalidRequestException
311
- * @throws InsufficientFundsException
312
- */
313
- private function handleWebServiceError(
314
- $message,
315
- $code,
316
- $statusCode,
317
- $path
318
- ) {
319
- switch ($code) {
320
- case 'IP_ADDRESS_NOT_FOUND':
321
- case 'IP_ADDRESS_RESERVED':
322
- throw new IpAddressNotFoundException(
323
- $message,
324
- $code,
325
- $statusCode,
326
- $this->urlFor($path)
327
- );
328
- case 'ACCOUNT_ID_REQUIRED':
329
- case 'ACCOUNT_ID_UNKNOWN':
330
- case 'AUTHORIZATION_INVALID':
331
- case 'LICENSE_KEY_REQUIRED':
332
- case 'USER_ID_REQUIRED':
333
- case 'USER_ID_UNKNOWN':
334
- throw new AuthenticationException(
335
- $message,
336
- $code,
337
- $statusCode,
338
- $this->urlFor($path)
339
- );
340
- case 'OUT_OF_QUERIES':
341
- case 'INSUFFICIENT_FUNDS':
342
- throw new InsufficientFundsException(
343
- $message,
344
- $code,
345
- $statusCode,
346
- $this->urlFor($path)
347
- );
348
- case 'PERMISSION_REQUIRED':
349
- throw new PermissionRequiredException(
350
- $message,
351
- $code,
352
- $statusCode,
353
- $this->urlFor($path)
354
- );
355
- default:
356
- throw new InvalidRequestException(
357
- $message,
358
- $code,
359
- $statusCode,
360
- $this->urlFor($path)
361
- );
362
- }
363
- }
364
-
365
- /**
366
- * @param int $statusCode the HTTP status code
367
- * @param string $service the service name
368
- * @param string $path the URI path used in the request
369
- *
370
- * @throws HttpException
371
- */
372
- private function handle5xx($statusCode, $service, $path)
373
- {
374
- throw new HttpException(
375
- "Received a server error ($statusCode) for $service",
376
- $statusCode,
377
- $this->urlFor($path)
378
- );
379
- }
380
-
381
- /**
382
- * @param int $statusCode the HTTP status code
383
- * @param string $service the service name
384
- * @param string $path the URI path used in the request
385
- *
386
- * @throws HttpException
387
- */
388
- private function handleUnexpectedStatus($statusCode, $service, $path)
389
- {
390
- throw new HttpException(
391
- 'Received an unexpected HTTP status ' .
392
- "($statusCode) for $service",
393
- $statusCode,
394
- $this->urlFor($path)
395
- );
396
- }
397
-
398
- /**
399
- * @param string $body the successful request body
400
- * @param string $service the service name
401
- *
402
- * @throws WebServiceException if the request body cannot be decoded as
403
- * JSON
404
- *
405
- * @return array the decoded request body
406
- */
407
- private function handleSuccess($body, $service)
408
- {
409
- if (strlen($body) === 0) {
410
- throw new WebServiceException(
411
- "Received a 200 response for $service but did not " .
412
- 'receive a HTTP body.'
413
- );
414
- }
415
-
416
- $decodedContent = json_decode($body, true);
417
- if ($decodedContent === null) {
418
- throw new WebServiceException(
419
- "Received a 200 response for $service but could " .
420
- 'not decode the response as JSON: '
421
- . $this->jsonErrorDescription() . ' Body: ' . $body
422
- );
423
- }
424
-
425
- return $decodedContent;
426
- }
427
-
428
- private function getCaBundle()
429
- {
430
- $curlVersion = curl_version();
431
-
432
- // On OS X, when the SSL version is "SecureTransport", the system's
433
- // keychain will be used.
434
- if ($curlVersion['ssl_version'] === 'SecureTransport') {
435
- return;
436
- }
437
- $cert = CaBundle::getSystemCaRootBundlePath();
438
-
439
- // Check if the cert is inside a phar. If so, we need to copy the cert
440
- // to a temp file so that curl can see it.
441
- if (substr($cert, 0, 7) === 'phar://') {
442
- $tempDir = sys_get_temp_dir();
443
- $newCert = tempnam($tempDir, 'geoip2-');
444
- if ($newCert === false) {
445
- throw new \RuntimeException(
446
- "Unable to create temporary file in $tempDir"
447
- );
448
- }
449
- if (!copy($cert, $newCert)) {
450
- throw new \RuntimeException(
451
- "Could not copy $cert to $newCert: "
452
- . var_export(error_get_last(), true)
453
- );
454
- }
455
-
456
- // We use a shutdown function rather than the destructor as the
457
- // destructor isn't called on a fatal error such as an uncaught
458
- // exception.
459
- register_shutdown_function(
460
- function () use ($newCert) {
461
- unlink($newCert);
462
- }
463
- );
464
- $cert = $newCert;
465
- }
466
- if (!file_exists($cert)) {
467
- throw new \RuntimeException("CA cert does not exist at $cert");
468
- }
469
-
470
- return $cert;
471
- }
472
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php DELETED
@@ -1,110 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\WebService\Http;
4
-
5
- use MaxMind\Exception\HttpException;
6
-
7
- /**
8
- * This class is for internal use only. Semantic versioning does not not apply.
9
- *
10
- * @internal
11
- */
12
- class CurlRequest implements Request
13
- {
14
- private $url;
15
- private $options;
16
-
17
- /**
18
- * @param $url
19
- * @param $options
20
- */
21
- public function __construct($url, $options)
22
- {
23
- $this->url = $url;
24
- $this->options = $options;
25
- }
26
-
27
- /**
28
- * @param $body
29
- *
30
- * @return array
31
- */
32
- public function post($body)
33
- {
34
- $curl = $this->createCurl();
35
-
36
- curl_setopt($curl, CURLOPT_POST, true);
37
- curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
38
-
39
- return $this->execute($curl);
40
- }
41
-
42
- public function get()
43
- {
44
- $curl = $this->createCurl();
45
-
46
- curl_setopt($curl, CURLOPT_HTTPGET, true);
47
-
48
- return $this->execute($curl);
49
- }
50
-
51
- /**
52
- * @return resource
53
- */
54
- private function createCurl()
55
- {
56
- $curl = curl_init($this->url);
57
-
58
- if (!empty($this->options['caBundle'])) {
59
- $opts[CURLOPT_CAINFO] = $this->options['caBundle'];
60
- }
61
- $opts[CURLOPT_SSL_VERIFYHOST] = 2;
62
- $opts[CURLOPT_FOLLOWLOCATION] = false;
63
- $opts[CURLOPT_SSL_VERIFYPEER] = true;
64
- $opts[CURLOPT_RETURNTRANSFER] = true;
65
-
66
- $opts[CURLOPT_HTTPHEADER] = $this->options['headers'];
67
- $opts[CURLOPT_USERAGENT] = $this->options['userAgent'];
68
- $opts[CURLOPT_PROXY] = $this->options['proxy'];
69
-
70
- // The defined()s are here as the *_MS opts are not available on older
71
- // cURL versions
72
- $connectTimeout = $this->options['connectTimeout'];
73
- if (defined('CURLOPT_CONNECTTIMEOUT_MS')) {
74
- $opts[CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000);
75
- } else {
76
- $opts[CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout);
77
- }
78
-
79
- $timeout = $this->options['timeout'];
80
- if (defined('CURLOPT_TIMEOUT_MS')) {
81
- $opts[CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000);
82
- } else {
83
- $opts[CURLOPT_TIMEOUT] = ceil($timeout);
84
- }
85
-
86
- curl_setopt_array($curl, $opts);
87
-
88
- return $curl;
89
- }
90
-
91
- private function execute($curl)
92
- {
93
- $body = curl_exec($curl);
94
- if ($errno = curl_errno($curl)) {
95
- $errorMessage = curl_error($curl);
96
-
97
- throw new HttpException(
98
- "cURL error ({$errno}): {$errorMessage}",
99
- 0,
100
- $this->url
101
- );
102
- }
103
-
104
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
105
- $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
106
- curl_close($curl);
107
-
108
- return [$statusCode, $contentType, $body];
109
- }
110
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/WebService/Http/Request.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\WebService\Http;
4
-
5
- /**
6
- * Interface Request.
7
- *
8
- * @internal
9
- */
10
- interface Request
11
- {
12
- /**
13
- * @param $url
14
- * @param $options
15
- */
16
- public function __construct($url, $options);
17
-
18
- /**
19
- * @param $body
20
- *
21
- * @return mixed
22
- */
23
- public function post($body);
24
-
25
- /**
26
- * @return mixed
27
- */
28
- public function get();
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- namespace MaxMind\WebService\Http;
4
-
5
- /**
6
- * Class RequestFactory.
7
- *
8
- * @internal
9
- */
10
- class RequestFactory
11
- {
12
- public function __construct()
13
- {
14
- }
15
-
16
- /**
17
- * @param $url
18
- * @param $options
19
- *
20
- * @return CurlRequest
21
- */
22
- public function request($url, $options)
23
- {
24
- return new CurlRequest($url, $options);
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wordfence/mmdb-reader/src/ControlByte.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ class ControlByte {
6
+
7
+ const TYPE_EXTENDED = 0;
8
+ const TYPE_POINTER = 1;
9
+ const TYPE_UTF8_STRING = 2;
10
+ const TYPE_DOUBLE = 3;
11
+ const TYPE_BYTES = 4;
12
+ const TYPE_UINT16 = 5;
13
+ const TYPE_UINT32 = 6;
14
+ const TYPE_MAP = 7;
15
+ const TYPE_INT32 = 8;
16
+ const TYPE_UINT64 = 9;
17
+ const TYPE_UINT128 = 10;
18
+ const TYPE_ARRAY = 11;
19
+ const TYPE_CONTAINER = 12;
20
+ const TYPE_END_MARKER = 13;
21
+ const TYPE_BOOLEAN = 14;
22
+ const TYPE_FLOAT = 15;
23
+
24
+ const EXTENSION_OFFSET = 7;
25
+ const SIZE_MASK = 31;
26
+ const MAX_SINGLE_BYTE_SIZE = 28;
27
+
28
+ private $type;
29
+ private $size;
30
+
31
+ public function __construct($type, $size) {
32
+ $this->type = $type;
33
+ $this->size = $size;
34
+ }
35
+
36
+ public function getType() {
37
+ return $this->type;
38
+ }
39
+
40
+ public function getTypeName() {
41
+ return self::mapTypeName($this->getType());
42
+ }
43
+
44
+ public function getSize() {
45
+ return $this->size;
46
+ }
47
+
48
+ public function is($type) {
49
+ return $this->type === $type;
50
+ }
51
+
52
+ public static function consume($handle) {
53
+ $byte = $handle->readByte();
54
+ $type = $byte >> 5;
55
+ if ($type === self::TYPE_EXTENDED)
56
+ $type = $handle->readByte() + self::EXTENSION_OFFSET;
57
+ $size = $byte & self::SIZE_MASK;
58
+ if ($size > self::MAX_SINGLE_BYTE_SIZE) {
59
+ $bytes = $size - self::MAX_SINGLE_BYTE_SIZE;
60
+ switch ($size) {
61
+ case 30:
62
+ $size = 285;
63
+ break;
64
+ case 31:
65
+ $size = 65821;
66
+ break;
67
+ default:
68
+ break;
69
+ }
70
+ $size += IntegerParser::parseUnsigned($handle, $bytes);
71
+ }
72
+ return new self($type, $size);
73
+ }
74
+
75
+ public static function mapTypeName($type) {
76
+ switch ($type) {
77
+ case self::TYPE_EXTENDED:
78
+ return 'TYPE_EXTENDED';
79
+ case self::TYPE_POINTER:
80
+ return 'TYPE_POINTER';
81
+ case self::TYPE_UTF8_STRING:
82
+ return 'TYPE_UTF8_STRING';
83
+ case self::TYPE_DOUBLE:
84
+ return 'TYPE_DOUBLE';
85
+ case self::TYPE_BYTES:
86
+ return 'TYPE_BYTES';
87
+ case self::TYPE_UINT16:
88
+ return 'TYPE_UINT16';
89
+ case self::TYPE_UINT32:
90
+ return 'TYPE_UINT32';
91
+ case self::TYPE_MAP:
92
+ return 'TYPE_MAP';
93
+ case self::TYPE_INT32:
94
+ return 'TYPE_INT32';
95
+ case self::TYPE_UINT64:
96
+ return 'TYPE_UINT64';
97
+ case self::TYPE_UINT128:
98
+ return 'TYPE_UINT128';
99
+ case self::TYPE_ARRAY:
100
+ return 'TYPE_ARRAY';
101
+ case self::TYPE_CONTAINER:
102
+ return 'TYPE_CONTAINER';
103
+ case self::TYPE_END_MARKER:
104
+ return 'TYPE_END_MARKER';
105
+ case self::TYPE_BOOLEAN:
106
+ return 'TYPE_BOOLEAN';
107
+ case self::TYPE_FLOAT:
108
+ return 'TYPE_FLOAT';
109
+ default:
110
+ return 'UNKNOWN';
111
+ }
112
+ }
113
+
114
+ public function __toString() {
115
+ return sprintf('%s(%d) of size %d', $this->getTypeName(), $this->getType(), $this->getSize());
116
+ }
117
+
118
+ }
vendor/wordfence/mmdb-reader/src/DataFieldParser.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ use Wordfence\MmdbReader\Exception\FormatException;
6
+ use Wordfence\MmdbReader\Exception\InvalidArgumentException;
7
+
8
+ class DataFieldParser {
9
+
10
+ private $handle;
11
+ private $sectionOffset;
12
+
13
+ public function __construct($handle, $sectionOffset = null) {
14
+ $this->handle = $handle;
15
+ $this->sectionOffset = $sectionOffset === null ? $this->handle->getPosition() : $sectionOffset;
16
+ }
17
+
18
+ public function processControlByte() {
19
+ return ControlByte::consume($this->handle);
20
+ }
21
+
22
+ private function readStandardField($controlByte) {
23
+ $size = $controlByte->getSize();
24
+ if ($size === 0)
25
+ return '';
26
+ return $this->handle->read($size);
27
+ }
28
+
29
+ private function parseUtf8String($controlByte) {
30
+ return $this->readStandardField($controlByte);
31
+ }
32
+
33
+ private function parseUnsignedInteger($controlByte) {
34
+ //TODO: Does this handle large-enough values gracefully?
35
+ return IntegerParser::parseUnsigned($this->handle, $controlByte->getSize());
36
+ }
37
+
38
+ private function parseMap($controlByte) {
39
+ $map = array();
40
+ for ($i = 0; $i < $controlByte->getSize(); $i++) {
41
+ $keyByte = $this->processControlByte();
42
+ $key = $this->parseField($keyByte);
43
+ if (!is_string($key))
44
+ throw new FormatException('Map keys must be strings, received ' . $keyByte . ' / ' . print_r($key, true) . ', map: ' . print_r($map, true));
45
+ $value = $this->parseField();
46
+ $map[$key] = $value;
47
+ }
48
+ return $map;
49
+ }
50
+
51
+ private function parseArray($controlByte) {
52
+ $array = array();
53
+ for ($i = 0; $i < $controlByte->getSize(); $i++) {
54
+ $array[$i] = $this->parseField();
55
+ }
56
+ return $array;
57
+ }
58
+
59
+ private function parseBoolean($controlByte) {
60
+ return (bool) $controlByte->getSize();
61
+ }
62
+
63
+ private static function unpackSingleValue($format, $data, $controlByte) {
64
+ $values = unpack($format, $data);
65
+ if ($values === false)
66
+ throw new FormatException("Unpacking field failed for {$controlByte}");
67
+ return reset($values);
68
+ }
69
+
70
+ private static function getPackedLength($formatCharacter) {
71
+ switch ($formatCharacter) {
72
+ case 'E':
73
+ return 8;
74
+ case 'G':
75
+ case 'l':
76
+ return 4;
77
+ }
78
+ throw new InvalidArgumentException("Unsupported format character: {$formatCharacter}");
79
+ }
80
+
81
+ private static function usesSystemByteOrder($formatCharacter) {
82
+ switch ($formatCharacter) {
83
+ case 'l':
84
+ return true;
85
+ default:
86
+ return false;
87
+ }
88
+ }
89
+
90
+ private function parseByUnpacking($controlByte, $format) {
91
+ //TODO: Is this reliable for float/double types, considering that the size for unpack is platform dependent?
92
+ $data = $this->readStandardField($controlByte);
93
+ $data = str_pad($data, self::getPackedLength($format), "\0", STR_PAD_LEFT);
94
+ if (self::usesSystemByteOrder($format))
95
+ $data = Endianness::convert($data, Endianness::BIG);
96
+ return $this->unpackSingleValue($format, $data, $controlByte);
97
+ }
98
+
99
+ private function parsePointer($controlByte) {
100
+ $data = $controlByte->getSize();
101
+ $size = $data >> 3;
102
+ $address = $data & 7;
103
+ if ($size === 3)
104
+ $address = 0;
105
+ for ($i = 0; $i < $size + 1; $i++) {
106
+ $address = ($address << 8) + $this->handle->readByte();
107
+ }
108
+ switch ($size) {
109
+ case 1:
110
+ $address += 2048;
111
+ break;
112
+ case 2:
113
+ $address += 526336;
114
+ break;
115
+ }
116
+ $previous = $this->handle->getPosition();
117
+ $this->handle->seek($this->sectionOffset + $address, SEEK_SET);
118
+ $referenceControlByte = $this->processControlByte();
119
+ if ($referenceControlByte->getType() === ControlByte::TYPE_POINTER)
120
+ throw new FormatException('Per the MMDB specification, pointers may not point to other pointers. This database does not comply with the specification.');
121
+ $value = $this->parseField($referenceControlByte);
122
+ $this->handle->seek($previous, SEEK_SET);
123
+ return $value;
124
+ }
125
+
126
+ private function parseSignedInteger($controlByte, $format) {
127
+ if ($controlByte->getSize() === 0)
128
+ return 0;
129
+ return $this->parseByUnpacking($controlByte, $format);
130
+ }
131
+
132
+ public function parseField(&$controlByte = null) {
133
+ if ($controlByte === null)
134
+ $controlByte = $this->processControlByte();
135
+ switch ($controlByte->getType()) {
136
+ case ControlByte::TYPE_POINTER:
137
+ return $this->parsePointer($controlByte);
138
+ case ControlByte::TYPE_UTF8_STRING:
139
+ return $this->parseUtf8String($controlByte);
140
+ case ControlByte::TYPE_DOUBLE:
141
+ $this->parseByUnpacking($controlByte, 'E');
142
+ case ControlByte::TYPE_BYTES:
143
+ case ControlByte::TYPE_CONTAINER:
144
+ return $this->readStandardField($controlByte);
145
+ case ControlByte::TYPE_UINT16:
146
+ case ControlByte::TYPE_UINT32:
147
+ case ControlByte::TYPE_UINT64:
148
+ case ControlByte::TYPE_UINT128:
149
+ return $this->parseUnsignedInteger($controlByte);
150
+ case ControlByte::TYPE_INT32:
151
+ return $this->parseSignedInteger($controlByte, 'l');
152
+ case ControlByte::TYPE_MAP:
153
+ return $this->parseMap($controlByte);
154
+ case ControlByte::TYPE_ARRAY:
155
+ return $this->parseArray($controlByte);
156
+ case ControlByte::TYPE_END_MARKER:
157
+ return null;
158
+ case ControlByte::TYPE_BOOLEAN:
159
+ return $this->parseBoolean($controlByte);
160
+ case ControlByte::TYPE_FLOAT:
161
+ $this->parseByUnpacking($controlByte, 'G');
162
+ default:
163
+ throw new FormatException("Unable to parse data field for {$controlByte}");
164
+ }
165
+ }
166
+
167
+ }
vendor/wordfence/mmdb-reader/src/Database.php ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ use Wordfence\MmdbReader\Exception\FormatException;
6
+ use Wordfence\MmdbReader\Exception\IncompatibleIpVersionException;
7
+ use Wordfence\MmdbReader\Exception\IncompatibleVersionException;
8
+ use Wordfence\MmdbReader\Exception\InvalidIpAddressException;
9
+ use Wordfence\MmdbReader\Exception\IoException;
10
+ use Wordfence\MmdbReader\Io\FileHandle;
11
+
12
+ class Database {
13
+
14
+ const SUPPORTED_MAJOR_VERSION = 2;
15
+ const DELIMITER_METADATA = "\xab\xcd\xefMaxMind.com";
16
+
17
+ private $handle;
18
+ private $metadata;
19
+ private $nodeSize;
20
+ private $nodeReader;
21
+ private $dataSectionParser;
22
+ private $startingNodes = array();
23
+
24
+ /**
25
+ * Bind to a MaxMind database using the provided handle
26
+ * @param resource $resource a valid stream resource that can be used to read the database
27
+ * @param bool $closeAutomtically if true, the provided resource will be closed automatically
28
+ * @throws MmdbThrowable if an error occurs while interacting with the database
29
+ */
30
+ protected function __construct($resource, $closeAutomatically) {
31
+ $this->handle = new FileHandle($resource, $closeAutomatically);
32
+ $this->initialize();
33
+ }
34
+
35
+ private function initialize() {
36
+ $this->loadMetadata();
37
+ }
38
+
39
+ private function loadMetadata() {
40
+ $this->handle->seek(0, SEEK_END);
41
+ $position = $this->handle->locateString(self::DELIMITER_METADATA, FileHandle::DIRECTION_REVERSE, DatabaseMetadata::MAX_LENGTH, true);
42
+ if ($position === null)
43
+ throw new FormatException("Unable to locate metadata in MMDB file");
44
+ $this->metadata = DatabaseMetadata::parse($this->handle);
45
+ if ($this->metadata->getMajorVersion() !== self::SUPPORTED_MAJOR_VERSION)
46
+ throw new IncompatibleVersionException(sprintf('This library only supports parsing version %d of the MMDB format, a version %d database was provided', self::SUPPORTED_MAJOR_VERSION, $this->metadata->getMajorVersion()));
47
+ }
48
+
49
+ private function computeNodeSize() {
50
+ $nodeSize = ($this->metadata->getRecordSize() * 2) / 8;
51
+ if (!is_int($nodeSize))
52
+ throw new FormatException("Node size must be an even number of bytes, computed {$this->nodeSize}");
53
+ return $nodeSize;
54
+ }
55
+
56
+ private function getNodeReader() {
57
+ if ($this->nodeReader === null)
58
+ $this->nodeReader = new NodeReader($this->handle, $this->computeNodeSize(), $this->metadata->getNodeCount());
59
+ return $this->nodeReader;
60
+ }
61
+
62
+ private function getDataSectionParser() {
63
+ if ($this->dataSectionParser === null) {
64
+ $offset = $this->getNodeReader()->getSearchTreeSectionSize() + 16; //16 null bytes separate the two sections
65
+ $this->dataSectionParser = new DataFieldParser($this->handle, $offset);
66
+ }
67
+ return $this->dataSectionParser;
68
+ }
69
+
70
+ /**
71
+ * Retrieve the metadata for this database
72
+ * @return DatabaseMetadata
73
+ */
74
+ public function getMetadata() {
75
+ return $this->metadata;
76
+ }
77
+
78
+ /**
79
+ * Search the database for the given IP address
80
+ * @param IpAddressInterface|string $ip the IP address for which to search
81
+ * A human readable (as accepted by inet_pton) or binary (as accepted by inet_ntop) string may be provided or an instance of IpAddressInterface
82
+ * @return array|null the matched record or null if no record was found
83
+ * @throws InvalidIpAddressException if $ip is a string that cannot be parsed as a valid IP address
84
+ * @throws IncompatibleVersionException if the database IP version and the version of the provided IP address are incompatible (specifically, if an IPv6 address is passed and the database only supports IPv4)
85
+ */
86
+ public function search($ip) {
87
+ if (is_string($ip)) {
88
+ $ip = IpAddress::createFromString($ip);
89
+ }
90
+ elseif (!$ip instanceof IpAddressInterface) {
91
+ throw new InvalidIpAddressException('IP address must be either a human readable string (presentation format), a binary string (network format), or an instance of Wordfence\MmdbReader\IpAddressInterface, received: ' . print_r($ip, true));
92
+ }
93
+ if ($this->metadata->getIpVersion() === IpAddress::TYPE_IPV4 && $ip->getType() === IpAddress::TYPE_IPV6)
94
+ throw new IncompatibleIpVersionException('This database only support IPv4 addresses, but the provided address is an IPv6 address');
95
+ return $this->searchNodes($ip);
96
+ }
97
+
98
+ private function resolveStartingNode($type) {
99
+ $node = $this->getNodeReader()->read(0);
100
+ if ($type === IpAddress::TYPE_IPV4 && $this->metadata->getIpVersion() === IpAddress::TYPE_IPV6) {
101
+ $skippedBits = (IpAddress::LENGTH_IPV6 - IpAddress::LENGTH_IPV4) * 8;
102
+ while ($skippedBits-- > 0) {
103
+ $record = $node->getLeft();
104
+ if ($record->isNodePointer()) {
105
+ $node = $record->getNextNode();
106
+ }
107
+ else {
108
+ return $record;
109
+ }
110
+ }
111
+ }
112
+ return $node;
113
+ }
114
+
115
+ private function getStartingNode($type) {
116
+ if (!array_key_exists($type, $this->startingNodes)) {
117
+ $this->startingNodes[$type] = $this->resolveStartingNode($type);
118
+ }
119
+ return $this->startingNodes[$type];
120
+ }
121
+
122
+ private function searchNodes($ip) {
123
+ $key = $ip->getBinary();
124
+ $byteCount = strlen($key);
125
+ $nodeReader = $this->getNodeReader();
126
+ $node = $this->getStartingNode($ip->getType());
127
+ $bits = '';
128
+ $record = null;
129
+ if ($node instanceof Node) {
130
+ for ($byteIndex = 0; $byteIndex < $byteCount; $byteIndex++) {
131
+ $byte = ord($key[$byteIndex]);
132
+ for ($bitOffset = 7; $bitOffset >= 0; $bitOffset--) {
133
+ $bit = ($byte >> $bitOffset) & 1;
134
+ $record = $node->getRecord($bit);
135
+ if ($record->isNodePointer()) {
136
+ $node = $record->getNextNode();
137
+ }
138
+ else {
139
+ break 2;
140
+ }
141
+ }
142
+ }
143
+ }
144
+ else {
145
+ $record = $node;
146
+ }
147
+ if ($record->isNullPointer()) {
148
+ return null;
149
+ }
150
+ elseif ($record->isDataPointer()) {
151
+ $this->handle->seek($record->getDataAddress(), SEEK_SET);
152
+ $data = $this->getDataSectionParser()->parseField();
153
+ return $data;
154
+ }
155
+ else {
156
+ return null;
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Open the MMDB file at the given path
162
+ * @param string $path the path of an MMDB file
163
+ * @throws IoException if unable to open the file at the provided path
164
+ * @throws MmdbThrowable if an error occurs while initializing the database
165
+ */
166
+ public static function open($path) {
167
+ $handle = fopen($path, 'rb');
168
+ if ($handle === false)
169
+ throw new IoException("Unable to open MMDB file at {$path}");
170
+ return new self($handle, true);
171
+ }
172
+
173
+ }
vendor/wordfence/mmdb-reader/src/DatabaseMetadata.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ use Wordfence\MmdbReader\Exception\FormatException;
6
+
7
+ class DatabaseMetadata {
8
+
9
+ const MAX_LENGTH = 131072; //128 * 1024;
10
+
11
+ const FIELD_MAJOR_VERSION = 'binary_format_major_version';
12
+ const FIELD_NODE_COUNT = 'node_count';
13
+ const FIELD_RECORD_SIZE = 'record_size';
14
+ const FIELD_IP_VERSION = 'ip_version';
15
+ const FIELD_BUILD_EPOCH = 'build_epoch';
16
+
17
+ private $data;
18
+
19
+ public function __construct($data) {
20
+ $this->data = $data;
21
+ }
22
+
23
+ private function getField($key, $default = null, &$exists = null) {
24
+ if (!array_key_exists($key, $this->data)) {
25
+ $exists = false;
26
+ return $default;
27
+ }
28
+ $exists = true;
29
+ return $this->data[$key];
30
+ }
31
+
32
+ private function requireField($key) {
33
+ $value = $this->getField($key, null, $exists);
34
+ if (!$exists)
35
+ throw new FormatException("Metadata field {$key} is missing");
36
+ return $value;
37
+ }
38
+
39
+ public function requireInteger($key) {
40
+ $value = $this->requireField($key);
41
+ if (!is_int($value))
42
+ throw new FormatException("Field {$key} should be an integer, received: " . print_r($value, true));
43
+ return $value;
44
+ }
45
+
46
+ public function getMajorVersion() {
47
+ return $this->requireInteger(self::FIELD_MAJOR_VERSION);
48
+ }
49
+
50
+ public function getNodeCount() {
51
+ return $this->requireInteger(self::FIELD_NODE_COUNT);
52
+ }
53
+
54
+ public function getRecordSize() {
55
+ return $this->requireInteger(self::FIELD_RECORD_SIZE);
56
+ }
57
+
58
+ public function getIpVersion() {
59
+ return $this->requireInteger(self::FIELD_IP_VERSION);
60
+ }
61
+
62
+ public function getBuildEpoch() {
63
+ return $this->requireInteger(self::FIELD_BUILD_EPOCH);
64
+ }
65
+
66
+ public static function parse($handle) {
67
+ $offset = $handle->getPosition();
68
+ $parser = new DataFieldParser($handle, $offset);
69
+ $value = $parser->parseField();
70
+ if (!is_array($value))
71
+ throw new FormatException('Unexpected field type found when metadata map was expected: ' . print_r($value, true));
72
+ return new self($value);
73
+ }
74
+
75
+ }
vendor/wordfence/mmdb-reader/src/Endianness.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ class Endianness {
6
+
7
+ const BIG = 0;
8
+ const LITTLE = 1;
9
+
10
+ private static $SYSTEM = null;
11
+
12
+ private static function detect() {
13
+ $test = unpack('S', "\x00\x01");
14
+ return $test[1] >> 8;
15
+ }
16
+
17
+ public static function get() {
18
+ if (self::$SYSTEM === null)
19
+ self::$SYSTEM = self::detect();
20
+ return self::$SYSTEM;
21
+ }
22
+
23
+ public static function isBig() {
24
+ return self::get() === self::BIG;
25
+ }
26
+
27
+ public static function isLittle() {
28
+ return self::get() === self::LITTLE;
29
+ }
30
+
31
+ public static function convert($value, $source, $target = null) {
32
+ if ($target === null)
33
+ $target = self::get();
34
+ if ($target === $source)
35
+ return $value;
36
+ return strrev($value);
37
+ }
38
+
39
+ }
vendor/wordfence/mmdb-reader/src/Exception/FormatException.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class FormatException extends RuntimeMmdbException {
6
+ }
vendor/wordfence/mmdb-reader/src/Exception/IncompatibleIpVersionException.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class IncompatibleIpVersionException extends MmdbException {
6
+ }
vendor/wordfence/mmdb-reader/src/Exception/IncompatibleVersionException.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class IncompatibleVersionException extends RuntimeMmdbException {
6
+
7
+ }
vendor/wordfence/mmdb-reader/src/Exception/InvalidArgumentException.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class InvalidArgumentException extends MmdbException {
6
+ }
vendor/wordfence/mmdb-reader/src/Exception/InvalidIpAddressException.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class InvalidIpAddressException extends MmdbException {
6
+ }
vendor/wordfence/mmdb-reader/src/Exception/InvalidOperationException.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class InvalidOperationException extends MmdbException {
6
+
7
+ }
vendor/wordfence/mmdb-reader/src/Exception/IoException.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ class IoException extends RuntimeMmdbException {
6
+ }
vendor/wordfence/mmdb-reader/src/Exception/MmdbException.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ use Exception;
6
+ use Throwable;
7
+
8
+ class MmdbException extends Exception implements MmdbThrowable {
9
+
10
+ /**
11
+ * @param string $message
12
+ * @param ?Throwable $previous
13
+ */
14
+ public function __construct($message, $previous = null) {
15
+ parent::__construct($message, 0, $previous);
16
+ }
17
+
18
+ }
vendor/wordfence/mmdb-reader/src/Exception/MmdbThrowable.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ use Throwable;
6
+
7
+ interface MmdbThrowable extends Throwable {
8
+ }
vendor/wordfence/mmdb-reader/src/Exception/RuntimeMmdbException.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Exception;
4
+
5
+ use RuntimeException;
6
+ use Throwable;
7
+
8
+ class RuntimeMmdbException extends RuntimeException implements MmdbThrowable {
9
+
10
+ /**
11
+ * @param string $message
12
+ * @param ?Throwable $previous
13
+ */
14
+ public function __construct($message, $previous = null) {
15
+ parent::__construct($message, 0, $previous);
16
+ }
17
+
18
+ }
vendor/wordfence/mmdb-reader/src/IntegerParser.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ class IntegerParser {
6
+
7
+ public static function parseUnsigned($handle, $length) {
8
+ $value = 0;
9
+ for ($i = 0; $i < $length; $i++) {
10
+ $byte = $handle->readByte();
11
+ $value = ($value << 8) + $byte;
12
+ }
13
+ return $value;
14
+ }
15
+
16
+ }
vendor/wordfence/mmdb-reader/src/Io/FileHandle.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader\Io;
4
+
5
+ use Wordfence\MmdbReader\Exception\IoException;
6
+
7
+ class FileHandle {
8
+
9
+ const POSITION_START = 0;
10
+
11
+ const DIRECTION_FORWARD = 1;
12
+ const DIRECTION_REVERSE = -1;
13
+
14
+ const CHUNK_SIZE_DEFAULT = 1024;
15
+
16
+ private $resource;
17
+ private $close;
18
+
19
+ public function __construct($resource, $close = true) {
20
+ $this->resource = $resource;
21
+ $this->close = $close;
22
+ }
23
+
24
+ public function __destruct() {
25
+ if ($this->close)
26
+ fclose($this->resource);
27
+ }
28
+
29
+ public function seek($offset, $whence = SEEK_SET) {
30
+ if (fseek($this->resource, $offset, $whence) !== 0)
31
+ throw new IoException("Seeking file to offset {$offset} failed");
32
+ }
33
+
34
+ public function getPosition() {
35
+ $position = ftell($this->resource);
36
+ if ($position === false)
37
+ throw new IoException('Retrieving current position in file failed');
38
+ return $position;
39
+ }
40
+
41
+ public function isAtStart() {
42
+ return $this->getPosition() === self::POSITION_START;
43
+ }
44
+
45
+ public function isAtEnd() {
46
+ return feof($this->resource);
47
+ }
48
+
49
+ public function read($length) {
50
+ $read = fread($this->resource, $length);
51
+ if ($read === false)
52
+ throw new IoException("Reading {$length} byte(s) from file failed");
53
+ return $read;
54
+ }
55
+
56
+ public function readByte() {
57
+ return ord($this->read(1));
58
+ }
59
+
60
+ public function readAll($chunkSize = self::CHUNK_SIZE_DEFAULT) {
61
+ $data = '';
62
+ do {
63
+ $chunk = $this->read($chunkSize);
64
+ if (empty($chunk))
65
+ break;
66
+ $data .= $chunk;
67
+ } while (true);
68
+ return $data;
69
+ }
70
+
71
+ public function locateString($string, $direction, $limit = null, $after = false) {
72
+ $searchStart = $limit === null ? null : $this->getPosition();
73
+ $length = strlen($string);
74
+ $position = $searchStart;
75
+ if ($direction === self::DIRECTION_REVERSE)
76
+ $position -= $length;
77
+ do {
78
+ try {
79
+ $this->seek($position, SEEK_SET);
80
+ }
81
+ catch (IoException $e) {
82
+ //This assumes that a seek failure means that the target position is out of range (and hence the search just needs to stop rather than throwing an exception)
83
+ break;
84
+ }
85
+ $test = $this->read($length);
86
+ if ($test === $string) {
87
+ return $position + ($after ? $length : 0);
88
+ }
89
+ $position += $direction;
90
+ } while ($limit === null || abs($position - $searchStart) < $limit);
91
+ return null;
92
+ }
93
+
94
+ }
vendor/wordfence/mmdb-reader/src/IpAddress.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ use Wordfence\MmdbReader\Exception\InvalidIpAddressException;
6
+
7
+ class IpAddress implements IpAddressInterface {
8
+
9
+ const TYPE_IPV4 = 4;
10
+ const TYPE_IPV6 = 6;
11
+
12
+ const LENGTH_IPV4 = 4;
13
+ const LENGTH_IPV6 = 16;
14
+
15
+ const SEPARATOR_IPV4 = '.';
16
+ const SEPARATOR_IPV6 = ':';
17
+
18
+ private static $SEPARATORS = array(
19
+ self::SEPARATOR_IPV4,
20
+ self::SEPARATOR_IPV6
21
+ );
22
+
23
+ private $humanReadable;
24
+ private $binary;
25
+ private $type;
26
+
27
+ protected function __construct($humanReadable, $binary) {
28
+ $this->humanReadable = $humanReadable;
29
+ $this->binary = $binary;
30
+ $this->type = self::resolveType($binary);
31
+ }
32
+
33
+ public function getHumanReadable() {
34
+ return $this->humanReadable;
35
+ }
36
+
37
+ public function getBinary() {
38
+ return $this->binary;
39
+ }
40
+
41
+ public function getType() {
42
+ return $this->type;
43
+ }
44
+
45
+ private static function resolveType($binary) {
46
+ return strlen($binary) === self::LENGTH_IPV6 ? self::TYPE_IPV6 : self::TYPE_IPV4;
47
+ }
48
+
49
+ /**
50
+ * Create an IpAddress instance from a human-readable string
51
+ * @param string $humanReadable a human readable IP address
52
+ * @return IpAddress
53
+ * @throws InvalidIpAddressException if $humanReadable is not a valid human-readable IP address
54
+ */
55
+ public static function createFromHumanReadable($humanReadable) {
56
+ $binary = inet_pton($humanReadable);
57
+ if ($binary === false)
58
+ throw new InvalidIpAddressException("IP address \"{$humanReadable}\" is malformed");
59
+ return new self($humanReadable, $binary);
60
+ }
61
+
62
+ /**
63
+ * Create an IpAddress instance from a binary string
64
+ * @param string $binary a binary IP address
65
+ * @return IpAddress
66
+ * @throws InvalidIpAddressException if $binary is not a valid binary IP address
67
+ */
68
+ public static function createFromBinary($binary) {
69
+ $humanReadable = inet_ntop($binary);
70
+ if ($humanReadable === false)
71
+ throw new InvalidIpAddressException("Binary IP address data is invalid: " . bin2hex($binary));
72
+ return new self($humanReadable, $binary);
73
+ }
74
+
75
+ /**
76
+ * Create an IpAddress instance from an unknown string representation
77
+ * @param string $string either a human-readable or binary IP address
78
+ * @return IpAddress
79
+ * @throws InvalidIpAddressException if $string cannot be parsed as a valid IP address
80
+ */
81
+ public static function createFromString($string) {
82
+ foreach (self::$SEPARATORS as $separator) {
83
+ if (strpos($string, $separator) !== false) {
84
+ try {
85
+ return self::createFromHumanReadable($string);
86
+ }
87
+ catch (InvalidIpAddressException $e) {
88
+ break;
89
+ }
90
+ }
91
+ }
92
+ return self::createFromBinary($string);
93
+ }
94
+
95
+ public function __toString() {
96
+ return $this->getHumanReadable();
97
+ }
98
+
99
+ }
vendor/wordfence/mmdb-reader/src/IpAddressInterface.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ interface IpAddressInterface {
6
+
7
+ /**
8
+ * Get the human-readable (presentation format) version of the address
9
+ * @return string
10
+ * @see inet_ntop
11
+ */
12
+ public function getHumanReadable();
13
+
14
+ /**
15
+ * Get the binary (network format) version of the address
16
+ * @return string
17
+ * @see inet_pton
18
+ */
19
+ public function getBinary();
20
+
21
+ /**
22
+ * Get the type of the address (IPv4 or IPv6)
23
+ * @return int 4 for IPv4 and 6 for IPv6
24
+ */
25
+ public function getType();
26
+
27
+ }
vendor/wordfence/mmdb-reader/src/Node.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ class Node {
6
+
7
+ const SIDE_LEFT = 0;
8
+ const SIDE_RIGHT = 1;
9
+
10
+ private $reader;
11
+ private $data;
12
+ private $left, $right;
13
+
14
+ public function __construct($reader, $data) {
15
+ $this->reader = $reader;
16
+ $this->data = $data;
17
+ }
18
+
19
+ public function getRecord($side) {
20
+ $value = $this->reader->extractRecord($this->data, $side);
21
+ return new NodeRecord($this->reader, $value);
22
+ }
23
+
24
+ public function getLeft() {
25
+ return $this->getRecord(self::SIDE_LEFT);
26
+ }
27
+
28
+ public function getRight() {
29
+ return $this->getRecord(self::SIDE_RIGHT);
30
+ }
31
+
32
+ }
vendor/wordfence/mmdb-reader/src/NodeReader.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ class NodeReader {
6
+
7
+ const SHARED_MASK_LEFT = 240; //0b11110000
8
+ const SHARED_MASK_RIGHT = 15; //0b00001111
9
+
10
+ private $handle;
11
+ private $nodeSize, $nodeCount;
12
+ private $searchTreeSectionSize;
13
+ private $recordWholeBytes, $recordBits;
14
+ private $sharedByteOffset;
15
+
16
+ public function __construct($handle, $nodeSize, $nodeCount) {
17
+ $this->handle = $handle;
18
+ $this->nodeSize = $nodeSize;
19
+ $this->nodeCount = $nodeCount;
20
+ $this->searchTreeSectionSize = $nodeSize * $nodeCount;
21
+ $this->computeRecordSizes();
22
+ }
23
+
24
+ private function computeRecordSizes() {
25
+ $this->recordWholeBytes = (int) ($this->nodeSize / 2);
26
+ $this->recordBits = $this->nodeSize % 2;
27
+ if ($this->recordBits > 0)
28
+ $this->sharedByteOffset = $this->recordWholeBytes + 1;
29
+ }
30
+
31
+ public function read($position = 0) {
32
+ if ($position > $this->nodeCount)
33
+ throw new InvalidOperationException("Read requested for node at {$position}, but only {$this->nodeCount} nodes are present");
34
+ $offset = $position * $this->nodeSize;
35
+ $this->handle->seek($offset, SEEK_SET);
36
+ $data = $this->handle->read($this->nodeSize);
37
+ return new Node($this, $data);
38
+ }
39
+
40
+ private function hasSharedByte() {
41
+ return $this->sharedByteOffset !== null;
42
+ }
43
+
44
+ private function getWholeByteOffset($side) {
45
+ return $side === Node::SIDE_LEFT ? 0 : ($this->hasSharedByte() ? $this->sharedByteOffset : $this->recordWholeBytes);
46
+ }
47
+
48
+ public function extractRecord($nodeData, $side) {
49
+ if ($this->hasSharedByte()) {
50
+ $sharedByte = ord($nodeData[$this->sharedByteOffset]);
51
+ if ($side === Node::SIDE_LEFT) {
52
+ $value = $sharedByte >> 4;
53
+ }
54
+ else {
55
+ $value = $sharedByte & self::SHARED_MASK_RIGHT;
56
+ }
57
+ }
58
+ else {
59
+ $value = 0;
60
+ }
61
+ $offset = $this->getWholeByteOffset($side);
62
+ $end = $offset + $this->recordWholeBytes;
63
+ for ($i = $offset; $i < $end; $i++) {
64
+ $byte = ord($nodeData[$i]);
65
+ $value = ($value << 8) | $byte;
66
+ }
67
+ return $value;
68
+ }
69
+
70
+ public function getNodeCount() {
71
+ return $this->nodeCount;
72
+ }
73
+
74
+ public function getSearchTreeSectionSize() {
75
+ return $this->searchTreeSectionSize;
76
+ }
77
+
78
+ }
vendor/wordfence/mmdb-reader/src/NodeRecord.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Wordfence\MmdbReader;
4
+
5
+ use Wordfence\MmdbReader\Exception\InvalidOperationException;
6
+
7
+ class NodeRecord {
8
+
9
+ private $reader;
10
+ private $value;
11
+
12
+ public function __construct($reader, $value) {
13
+ $this->reader = $reader;
14
+ $this->value = $value;
15
+ }
16
+
17
+ public function getValue() {
18
+ return $this->value;
19
+ }
20
+
21
+ public function isNodePointer() {
22
+ return $this->value < $this->reader->getNodeCount();
23
+ }
24
+
25
+ public function getNextNode() {
26
+ if (!$this->isNodePointer())
27
+ throw new InvalidOperationException('The next node was requested for a record that is not a node pointer');
28
+ try {
29
+ return $this->reader->read($this->getValue());
30
+ }
31
+ catch (InvalidOperationException $e) {
32
+ throw new FormatException('Invalid node pointer found in database', $e);
33
+ }
34
+ }
35
+
36
+ public function isNullPointer() {
37
+ return $this->value === $this->reader->getNodeCount();
38
+ }
39
+
40
+ public function isDataPointer() {
41
+ return $this->value > $this->reader->getNodeCount();
42
+ }
43
+
44
+ public function getDataAddress() {
45
+ if (!$this->isDataPointer())
46
+ throw new InvalidOperationException('The data address was requested for a record that is not a data pointer');
47
+ return $this->value - $this->reader->getNodeCount() + $this->reader->getSearchTreeSectionSize();
48
+ }
49
+
50
+ }
vendor/wordfence/wf-waf/src/lib/rules.php CHANGED
@@ -951,7 +951,7 @@ class wfWAFRuleComparison implements wfWAFRuleInterface {
951
  if ($fh === false)
952
  return false;
953
  //T_BAD_CHARACTER is only available since PHP 7.4.0 and before 7.0.0
954
- $T_BAD_CHARACTER = defined('T_BAD_CHARACTER') ? T_BAD_CHARACTER : 10001;
955
  $phpBlock = null;
956
  $wrappedTokenCheckBytes = '';
957
  $maxTokenSize = 15; //__halt_compiler
951
  if ($fh === false)
952
  return false;
953
  //T_BAD_CHARACTER is only available since PHP 7.4.0 and before 7.0.0
954
+ $T_BAD_CHARACTER = defined('T_BAD_CHARACTER') ? constant('T_BAD_CHARACTER') : 10001;
955
  $phpBlock = null;
956
  $wrappedTokenCheckBytes = '';
957
  $maxTokenSize = 15; //__halt_compiler
vendor/wordfence/wf-waf/src/lib/storage/mysql.php CHANGED
@@ -576,7 +576,6 @@ class wfWAFStorageMySQL implements wfWAFStorageInterface {
576
  'disableWAFIPBlocking',
577
  'advancedBlockingEnabled',
578
  'blockCustomText',
579
- 'betaThreatDefenseFeed',
580
  'whitelistedServiceIPs'
581
  ),
582
  );
576
  'disableWAFIPBlocking',
577
  'advancedBlockingEnabled',
578
  'blockCustomText',
 
579
  'whitelistedServiceIPs'
580
  ),
581
  );
vendor/wordfence/wf-waf/src/lib/waf.php CHANGED
@@ -510,7 +510,6 @@ auEa+7b+FGTKs7dUo2BNGR7OVifK4GZ8w/ajS0TelhrSRi3BBQCGXLzUO/UURUAh
510
  'blockCustomText' => 'synced',
511
  'timeoffset_wf' => 'synced',
512
  'advancedBlockingEnabled' => 'synced',
513
- 'betaThreatDefenseFeed' => 'synced',
514
  'disableWAFIPBlocking' => 'synced',
515
  'patternBlocks' => 'synced',
516
  'countryBlocks' => 'synced',
@@ -1887,7 +1886,6 @@ class wfWAFCronFetchRulesEvent extends wfWAFCronEvent {
1887
  's' => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
1888
  'h' => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
1889
  'openssl' => $waf->hasOpenSSL() ? 1 : 0,
1890
- 'betaFeed' => (int) $waf->getStorageEngine()->getConfig('betaThreatDefenseFeed', null, 'synced'),
1891
  'lang' => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
1892
  );
1893
  $lastRuleHash=$this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastRuleHash', null, 'transient');
@@ -1950,7 +1948,6 @@ class wfWAFCronFetchRulesEvent extends wfWAFCronEvent {
1950
  's' => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
1951
  'h' => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
1952
  'openssl' => $waf->hasOpenSSL() ? 1 : 0,
1953
- 'betaFeed' => (int) $waf->getStorageEngine()->getConfig('betaThreatDefenseFeed', null, 'synced'),
1954
  'hash' => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHash', null, 'transient'),
1955
  'cs-hash' => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHashCommonStrings', null, 'transient'),
1956
  'lang' => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced')
510
  'blockCustomText' => 'synced',
511
  'timeoffset_wf' => 'synced',
512
  'advancedBlockingEnabled' => 'synced',
 
513
  'disableWAFIPBlocking' => 'synced',
514
  'patternBlocks' => 'synced',
515
  'countryBlocks' => 'synced',
1886
  's' => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
1887
  'h' => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
1888
  'openssl' => $waf->hasOpenSSL() ? 1 : 0,
 
1889
  'lang' => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
1890
  );
1891
  $lastRuleHash=$this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastRuleHash', null, 'transient');
1948
  's' => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
1949
  'h' => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
1950
  'openssl' => $waf->hasOpenSSL() ? 1 : 0,
 
1951
  'hash' => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHash', null, 'transient'),
1952
  'cs-hash' => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHashCommonStrings', null, 'transient'),
1953
  'lang' => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced')
views/dashboard/options-group-general.php CHANGED
@@ -63,6 +63,19 @@ if (!isset($collapseable)) {
63
  echo wfView::create('dashboard/option-howgetips')->render();
64
  ?>
65
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <li>
67
  <?php
68
  echo wfView::create('options/option-toggled', array(
63
  echo wfView::create('dashboard/option-howgetips')->render();
64
  ?>
65
  </li>
66
+ <li>
67
+ <?php
68
+ echo wfView::create('options/option-toggled', array(
69
+ 'optionName' => 'enableRemoteIpLookup',
70
+ 'enabledValue' => 1,
71
+ 'disabledValue' => 0,
72
+ 'value' => wfConfig::get('enableRemoteIpLookup', true) ? 1 : 0,
73
+ 'title' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
74
+ 'subtitle' => __('If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities', 'wordfence'),
75
+ 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_GENERAL_REMOTE_IP_LOOKUP)
76
+ ))->render();
77
+ ?>
78
+ </li>
79
  <li>
80
  <?php
81
  echo wfView::create('options/option-toggled', array(
views/scanner/issue-base.php CHANGED
@@ -22,7 +22,7 @@ if (!isset($textOutput) || !is_array($textOutput)):
22
  {{if severity == <?php echo wfIssues::SEVERITY_CRITICAL ?>}}wf-issue-severity-critical{{/if}}
23
  {{if severity == <?php echo wfIssues::SEVERITY_HIGH ?>}}wf-issue-severity-high{{/if}}
24
  {{if severity == <?php echo wfIssues::SEVERITY_MEDIUM ?>}}wf-issue-severity-medium{{/if}}
25
- {{if severity == <?php echo wfIssues::SEVERITY_LOW ?>}}wf-issue-severity-low{{/if}}" data-issue-id="${id}" data-issue-type="<?php echo $internalType; ?>" data-issue-severity="${severity}" data-high-sensitivity="{{if (data.highSense == '1')}}1{{else}}0{{/if}}" data-beta-signatures="{{if (data.betaSigs == '1')}}1{{else}}0{{/if}}">
26
  <li class="wf-issue-summary">
27
  <ul>
28
  <li class="wf-issue-icon"><?php echo $iconSVG; ?></li>
22
  {{if severity == <?php echo wfIssues::SEVERITY_CRITICAL ?>}}wf-issue-severity-critical{{/if}}
23
  {{if severity == <?php echo wfIssues::SEVERITY_HIGH ?>}}wf-issue-severity-high{{/if}}
24
  {{if severity == <?php echo wfIssues::SEVERITY_MEDIUM ?>}}wf-issue-severity-medium{{/if}}
25
+ {{if severity == <?php echo wfIssues::SEVERITY_LOW ?>}}wf-issue-severity-low{{/if}}" data-issue-id="${id}" data-issue-type="<?php echo $internalType; ?>" data-issue-severity="${severity}" data-high-sensitivity="{{if (data.highSense == '1')}}1{{else}}0{{/if}}">
26
  <li class="wf-issue-summary">
27
  <ul>
28
  <li class="wf-issue-icon"><?php echo $iconSVG; ?></li>
views/scanner/issue-wfPluginVulnerable.php CHANGED
@@ -14,7 +14,6 @@ echo wfView::create('scanner/issue-base', array(
14
  null,
15
  __('Details', 'wordfence') => '{{html longMsg}}',
16
  null,
17
- __('Plugin URL', 'wordfence') => array('data.PluginURI', '<a href="${data.PluginURI}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.PluginURI}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
18
  __('Repository URL', 'wordfence') => array('data.wpURL', '<a href="${data.wpURL}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
19
  __('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
20
  ),
@@ -29,8 +28,6 @@ echo wfView::create('scanner/issue-base', array(
29
  null,
30
  __('Details', 'wordfence') => '$longMsg',
31
  null,
32
- __('Plugin URL', 'wordfence') => '$data.PluginURI',
33
- __('Repository URL', 'wordfence') => '$data.wpURL',
34
  __('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
35
  ),
36
  ))->render();
14
  null,
15
  __('Details', 'wordfence') => '{{html longMsg}}',
16
  null,
 
17
  __('Repository URL', 'wordfence') => array('data.wpURL', '<a href="${data.wpURL}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
18
  __('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
19
  ),
28
  null,
29
  __('Details', 'wordfence') => '$longMsg',
30
  null,
 
 
31
  __('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
32
  ),
33
  ))->render();
views/scanner/options-group-advanced.php CHANGED
@@ -64,6 +64,21 @@ if (!isset($collapseable)) {
64
  ))->render();
65
  ?>
66
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  </ul>
68
  </div>
69
  </div>
64
  ))->render();
65
  ?>
66
  </li>
67
+ <li>
68
+ <?php
69
+ $options = array();
70
+ foreach (range(0, wfScanMonitor::MAX_RESUME_ATTEMPTS) as $number) {
71
+ $options[] = array('value' => $number, 'label' => $number > 0 ? $number : '0 (Disabled)');
72
+ }
73
+ echo wfView::create('options/option-select', array(
74
+ 'selectOptionName' => 'scan_max_resume_attempts',
75
+ 'selectOptions' => $options,
76
+ 'selectValue' => wfConfig::get('scan_max_resume_attempts', wfScanMonitor::DEFAULT_RESUME_ATTEMPTS),
77
+ 'title' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
78
+ 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS),
79
+ ))->render();
80
+ ?>
81
+ </li>
82
  </ul>
83
  </div>
84
  </div>
views/scanner/scan-failed.php CHANGED
@@ -6,16 +6,21 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
6
  *
7
  * Expects $messageHTML and $buttonTitle.
8
  *
 
9
  * @var string $messageHTML The message to show.
10
  * @var string $buttonTitle The title of the kill/reset button.
11
  */
 
 
 
 
12
  ?>
13
  <ul class="wf-flex-horizontal wf-flex-full-width wf-no-top">
14
  <li>
15
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 116.93 108.46"><path d="M115.82,96.14,65.76,4.37a8.33,8.33,0,0,0-3.06-3.2,8.24,8.24,0,0,0-8.47,0,8.34,8.34,0,0,0-3.07,3.2L1.11,96.14a7.78,7.78,0,0,0,.13,8.21,8.16,8.16,0,0,0,3,3,8.13,8.13,0,0,0,4.14,1.11H108.52a8.36,8.36,0,0,0,7.17-4.11,7.78,7.78,0,0,0,.13-8.21Zm-49-6.52a2.09,2.09,0,0,1-.62,1.53,2,2,0,0,1-1.46.62H52.21a2,2,0,0,1-1.46-.62,2.08,2.08,0,0,1-.62-1.53V77.24a2.08,2.08,0,0,1,.62-1.53,2,2,0,0,1,1.46-.62H64.72a2,2,0,0,1,1.47.62,2.09,2.09,0,0,1,.62,1.53V89.62Zm-.13-24.37A1.45,1.45,0,0,1,66,66.32a2.66,2.66,0,0,1-1.53.42H52.4a2.81,2.81,0,0,1-1.56-.42,1.25,1.25,0,0,1-.65-1.08L49.08,35.46a1.56,1.56,0,0,1,.65-1.37,2.52,2.52,0,0,1,1.56-.72H65.64a2.51,2.51,0,0,1,1.57.72,1.43,1.43,0,0,1,.65,1.24Zm0,0"/></svg>
16
  </li>
17
  <li>
18
- <h4><?php esc_html_e('Scan Failed', 'wordfence'); ?></h4>
19
  <p><?php echo $messageHTML; ?></p>
20
  <?php if (isset($rawErrorHTML) && !empty($rawErrorHTML)): ?>
21
  <p class="wf-add-top"><?php esc_html_e('The error returned was:', 'wordfence'); ?></p>
6
  *
7
  * Expects $messageHTML and $buttonTitle.
8
  *
9
+ * @var string $messageTitle The title for the message (optional, defaults to 'Scan Failed')
10
  * @var string $messageHTML The message to show.
11
  * @var string $buttonTitle The title of the kill/reset button.
12
  */
13
+
14
+ if (!isset($messageTitle))
15
+ $messageTitle = __('Scan Failed', 'wordfence');
16
+
17
  ?>
18
  <ul class="wf-flex-horizontal wf-flex-full-width wf-no-top">
19
  <li>
20
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 116.93 108.46"><path d="M115.82,96.14,65.76,4.37a8.33,8.33,0,0,0-3.06-3.2,8.24,8.24,0,0,0-8.47,0,8.34,8.34,0,0,0-3.07,3.2L1.11,96.14a7.78,7.78,0,0,0,.13,8.21,8.16,8.16,0,0,0,3,3,8.13,8.13,0,0,0,4.14,1.11H108.52a8.36,8.36,0,0,0,7.17-4.11,7.78,7.78,0,0,0,.13-8.21Zm-49-6.52a2.09,2.09,0,0,1-.62,1.53,2,2,0,0,1-1.46.62H52.21a2,2,0,0,1-1.46-.62,2.08,2.08,0,0,1-.62-1.53V77.24a2.08,2.08,0,0,1,.62-1.53,2,2,0,0,1,1.46-.62H64.72a2,2,0,0,1,1.47.62,2.09,2.09,0,0,1,.62,1.53V89.62Zm-.13-24.37A1.45,1.45,0,0,1,66,66.32a2.66,2.66,0,0,1-1.53.42H52.4a2.81,2.81,0,0,1-1.56-.42,1.25,1.25,0,0,1-.65-1.08L49.08,35.46a1.56,1.56,0,0,1,.65-1.37,2.52,2.52,0,0,1,1.56-.72H65.64a2.51,2.51,0,0,1,1.57.72,1.43,1.43,0,0,1,.65,1.24Zm0,0"/></svg>
21
  </li>
22
  <li>
23
+ <h4><?php echo esc_html($messageTitle); ?></h4>
24
  <p><?php echo $messageHTML; ?></p>
25
  <?php if (isset($rawErrorHTML) && !empty($rawErrorHTML)): ?>
26
  <p class="wf-add-top"><?php esc_html_e('The error returned was:', 'wordfence'); ?></p>
views/tools/options-group-live-traffic.php CHANGED
@@ -120,7 +120,7 @@ if (!isset($hideShowMenuItem)) {
120
  echo wfView::create('options/option-text', array(
121
  'textOptionName' => 'liveTraf_maxAge',
122
  'textValue' => wfConfig::get('liveTraf_maxAge'),
123
- 'title' => __('Maximum days to keep Live Traffic data (minimum: 1)', 'wordfence'),
124
  ))->render();
125
  ?>
126
  </li>
120
  echo wfView::create('options/option-text', array(
121
  'textOptionName' => 'liveTraf_maxAge',
122
  'textValue' => wfConfig::get('liveTraf_maxAge'),
123
+ 'title' => __('Maximum days to keep Live Traffic data (1-30 days)', 'wordfence'),
124
  ))->render();
125
  ?>
126
  </li>
waf/wfWAFGeoIP2.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
-
3
- require_once(dirname(__FILE__) . '/../vendor/autoload.php');
4
-
5
- use GeoIp2\Database\Reader;
6
-
7
- if (!defined('WFWAF_RUN_COMPLETE')) {
8
- class wfWAFGeoIP2 {
9
- private $_reader;
10
-
11
- /**
12
- * Returns the singleton wfWAFGeoIP2.
13
- *
14
- * @return wfWAFGeoIP2
15
- */
16
- public static function shared() {
17
- static $_geoip = null;
18
- if ($_geoip === null) {
19
- $_geoip = new wfWAFGeoIP2();
20
- }
21
- return $_geoip;
22
- }
23
-
24
- public function __construct() {
25
- try {
26
- if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb')) {
27
- $this->_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb');
28
- return;
29
- }
30
- }
31
- catch (Exception $e) {
32
- //Fall through to bundled copy
33
- }
34
-
35
- $this->_reader = new Reader(__DIR__ . '/../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
36
- }
37
-
38
- /**
39
- * Returns the database version in use. This is the timestamp of when it was packaged.
40
- *
41
- * @return null|int
42
- */
43
- public function version() {
44
- try {
45
- return $this->_reader->metadata()->buildEpoch;
46
- }
47
- catch (Exception $e) {
48
- //Fall through
49
- }
50
- return null;
51
- }
52
-
53
- /**
54
- * Returns the country code for the IP if known.
55
- *
56
- * @param string $ip
57
- * @return null|string
58
- */
59
- public function countryCode($ip) {
60
- try {
61
- $record = $this->_reader->country($ip);
62
- return $record->country->isoCode;
63
- }
64
- catch (Exception $e) {
65
- //Fall through
66
- }
67
- return null;
68
- }
69
- }
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
waf/wfWAFIPBlocksController.php CHANGED
@@ -480,22 +480,13 @@ class wfWAFIPBlocksController
480
  }
481
 
482
  protected function ip2Country($ip) {
483
- if (version_compare(phpversion(), '5.4.0', '<')) {
484
- return '';
485
- }
486
-
487
- require_once(dirname(__FILE__) . '/wfWAFGeoIP2.php');
488
-
489
- try {
490
- $geoip = @wfWAFGeoIP2::shared();
491
- $code = @$geoip->countryCode($ip);
492
- return is_string($code) ? $code : '';
493
- }
494
- catch (Exception $e) {
495
- //Ignore
496
- }
497
-
498
- return '';
499
  }
500
 
501
  /**
480
  }
481
 
482
  protected function ip2Country($ip) {
483
+ /**
484
+ * It's possible this class is already loaded from a different installation of the plugin
485
+ * by the time this is reached. See wfUtils::requireIpLocator for additional details.
486
+ */
487
+ if (!class_exists('wfIpLocator'))
488
+ require_once __DIR__ . '/../lib/wfIpLocator.php';
489
+ return wfIpLocator::getInstance()->getCountryCode($ip);
 
 
 
 
 
 
 
 
 
490
  }
491
 
492
  /**
wordfence.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Wordfence Security
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
- Version: 7.6.2
8
  Author URI: http://www.wordfence.com/
9
  Text Domain: wordfence
10
  Domain Path: /languages
@@ -38,8 +38,8 @@ if(defined('WP_INSTALLING') && WP_INSTALLING){
38
  if (!defined('ABSPATH')) {
39
  exit;
40
  }
41
- define('WORDFENCE_VERSION', '7.6.2');
42
- define('WORDFENCE_BUILD_NUMBER', '1663593635');
43
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
44
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
45
 
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
+ Version: 7.7.0
8
  Author URI: http://www.wordfence.com/
9
  Text Domain: wordfence
10
  Domain Path: /languages
38
  if (!defined('ABSPATH')) {
39
  exit;
40
  }
41
+ define('WORDFENCE_VERSION', '7.7.0');
42
+ define('WORDFENCE_BUILD_NUMBER', '1664811036');
43
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
44
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
45