CVE-2020-11094 (published 2020-06-04T00:15Z)

The October CMS debugbar plugin before version 3.1.0 contains a feature where it will log all requests (and all information pertaining to each request including session data) whenever it is enabled. This presents a problem if the plugin is ever enabled on a system that is open to untrusted users as the potential exists for them to use this feature to view all requests being made to the application and obtain sensitive information from those requests. There even exists the potential for account takeovers of authenticated users by non-authenticated public users, which would then lead to a number of other potential issues as an attacker could theoretically get full access to the system if the required conditions existed. Issue has been patched in v3.1.0 by locking down access to the debugbar to all users; it now requires an authenticated backend user with a specifically enabled permission before it is even usable, and the feature that allows access to stored request information is restricted behind a different permission that's more restrictive.

Severity: MEDIUM
CVSS v2 base score: 6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P)
CVSS v3 base score: 9.8, CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

Weakness information:
cwe_id: CWE-532
cwe_name: Insertion of Sensitive Information into Log File
description: Information written to log files can be of a sensitive nature and give valuable guidance to an attacker or expose sensitive user information.
extended_description: 
            While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.
            Different log files may be produced and stored for:
            
               Server log files (e.g. server.log).  This can give information on whatever application left the file. Usually this can give full path names and system information, and sometimes usernames and passwords.
               log files that are used for debugging
            
         
         

Fix information:
repo_url: https://github.com/rainlab/debugbar-plugin
commit_details: repo_url: https://github.com/rainlab/debugbar-plugin
author: Luke Towers
author_date: 2020-05-31 15:13:58-06:00
msg: 3.1.1 styling improvements and security fix
repository: repo_url: https://github.com/rainlab/debugbar-plugin
repo_name: rainlab/debugbar-plugin
description: Integrates PHP Debugbar with October CMS
repo_language: Less
owner: rainlab
file_changes: filename: Plugin.php
change_type: ModificationType.MODIFY
diff: @@ -3,13 +3,17 @@
 use App;
 use Event;
 use Config;
-use Debugbar;
 use BackendAuth;
+use Backend\Models\UserRole;
 use System\Classes\PluginBase;
+use System\Classes\CombineAssets;
 use Illuminate\Foundation\AliasLoader;
 
 /**
  * Debugbar Plugin Information File
+ *
+ * TODO:
+ * - Fix styling by scoping a html reset to phpdebugbar-openhandler and phpdebugbar
  */
 class Plugin extends PluginBase
 {
@@ -26,10 +30,10 @@ class Plugin extends PluginBase
     public function pluginDetails()
     {
         return [
-            'name'        => 'Debugbar',
-            'description' => 'Debugbar integration for OctoberCMS.',
+            'name'        => 'rainlab.debugbar::lang.plugin.name',
+            'description' => 'rainlab.debugbar::lang.plugin.description',
             'author'      => 'RainLab',
-            'icon'        => 'icon-cog',
+            'icon'        => 'icon-bug',
             'homepage'    => 'https://github.com/rainlab/debugbar-plugin'
         ];
     }
@@ -43,7 +47,7 @@ class Plugin extends PluginBase
         Config::set('debugbar', Config::get('rainlab.debugbar::config'));
 
         // Service provider
-        App::register('\Barryvdh\Debugbar\ServiceProvider');
+        App::register(\RainLab\Debugbar\Classes\ServiceProvider::class);
 
         // Register alias
         $alias = AliasLoader::getInstance();
@@ -51,15 +55,20 @@ class Plugin extends PluginBase
 
         // Register middleware
         if (Config::get('app.debugAjax', false)) {
-            $this->app['Illuminate\Contracts\Http\Kernel']->pushMiddleware('\RainLab\Debugbar\Middleware\Debugbar');
+            $this->app['Illuminate\Contracts\Http\Kernel']->pushMiddleware('\RainLab\Debugbar\Middleware\InterpretsAjaxExceptions');
         }
 
-        Event::listen('cms.page.beforeDisplay', function ($controller, $url, $page) {
-            // Only show for authenticated backend users
-            if (!BackendAuth::check()) {
-                Debugbar::disable();
+        // Add styling
+        $addResources = function ($controller) {
+            $debugBar = $this->app->make('Barryvdh\Debugbar\LaravelDebugbar');
+            if ($debugBar->isEnabled()) {
+                $controller->addCss(url(Config::get('cms.pluginsPath', '/plugins') . '/rainlab/debugbar/assets/css/debugbar.css'));
             }
+        };
+        Event::listen('backend.page.beforeDisplay', $addResources, PHP_INT_MAX);
+        Event::listen('cms.page.beforeDisplay', $addResources, PHP_INT_MAX);
 
+        Event::listen('cms.page.beforeDisplay', function ($controller, $url, $page) {
             // Twig extensions
             $twig = $controller->getTwig();
             if (!$twig->hasExtension(\Barryvdh\Debugbar\Twig\Extension\Debug::class)) {
@@ -68,4 +77,38 @@ class Plugin extends PluginBase
             }
         });
     }
+
+    /**
+     * Register the
+     */
+    public function register()
+    {
+        /*
+         * Register asset bundles
+         */
+        CombineAssets::registerCallback(function ($combiner) {
+            $combiner->registerBundle('$/rainlab/debugbar/assets/css/debugbar.less');
+        });
+    }
+
+    /**
+     * Register the permissions used by the plugin
+     *
+     * @return array
+     */
+    public function registerPermissions()
+    {
+        return [
+            'rainlab.debugbar.access_debugbar' => [
+                'tab' => 'rainlab.debugbar::lang.plugin.name',
+                'label' => 'rainlab.debugbar::lang.plugin.access_debugbar',
+                'roles' => UserRole::CODE_DEVELOPER,
+            ],
+            'rainlab.debugbar.access_stored_requests' => [
+                'tab' => 'rainlab.debugbar::lang.plugin.name',
+                'label' => 'rainlab.debugbar::lang.plugin.access_stored_requests',
+                'roles' => UserRole::CODE_DEVELOPER,
+            ],
+        ];
+    }
 }

programming_language: PHP
filename: README.md
change_type: ModificationType.MODIFY
diff: @@ -14,6 +14,8 @@ To install it with Composer, run `composer require rainlab/debugbar-plugin` from
 
 ### Usage
 
-Set `debug` to `true` in `config/app.php`, and the debugbar should appear in your backend. See [barryvdh/laravel-debugbar](https://github.com/barryvdh/laravel-debugbar) for more usage instructions and documentation.
+Set `debug` to `true` in `config/app.php`, and the debugbar should appear on your site to all authenticated backend users with the `rainlab.debugbar.access_debugbar` permission. If you would like to make the debugbar accessible to all users regardless of authentication & permissions, then set `allow_public_access` to `true` in `config/rainlab/debugbar/config.php`.
+
+See [barryvdh/laravel-debugbar](https://github.com/barryvdh/laravel-debugbar) for more usage instructions and documentation.
 
 To include exceptions in the response header of ajax calls set `debugAjax` to `true` in `config/app.php`.
\ No newline at end of file

programming_language: Markdown
filename: debugbar.css
change_type: ModificationType.ADD
diff: @@ -0,0 +1,544 @@
+div.phpdebugbar-openhandler .phpdebugbar-openhandler-header a {line-height:1}
+.phpdebugbar {}
+.phpdebugbar dl.phpdebugbar-widgets-kvlist dt {width:350px}
+.phpdebugbar dl.phpdebugbar-widgets-kvlist dd {margin-left:360px}
+.phpdebugbar,
+.phpdebugbar-openhandler {}
+.phpdebugbar p,
+.phpdebugbar-openhandler p {display:block;-webkit-margin-before:1__qem;-webkit-margin-after:1__qem;-webkit-margin-start:0;-webkit-margin-end:0}
+.phpdebugbar div,
+.phpdebugbar-openhandler div {display:block}
+.phpdebugbar layer,
+.phpdebugbar-openhandler layer {display:block}
+.phpdebugbar article,
+.phpdebugbar-openhandler article,
+.phpdebugbar aside,
+.phpdebugbar-openhandler aside,
+.phpdebugbar footer,
+.phpdebugbar-openhandler footer,
+.phpdebugbar header,
+.phpdebugbar-openhandler header,
+.phpdebugbar hgroup,
+.phpdebugbar-openhandler hgroup,
+.phpdebugbar main,
+.phpdebugbar-openhandler main,
+.phpdebugbar nav,
+.phpdebugbar-openhandler nav,
+.phpdebugbar section,
+.phpdebugbar-openhandler section {display:block}
+.phpdebugbar marquee,
+.phpdebugbar-openhandler marquee {display:inline-block}
+.phpdebugbar address,
+.phpdebugbar-openhandler address {display:block}
+.phpdebugbar blockquote,
+.phpdebugbar-openhandler blockquote {display:block;-webkit-margin-before:1__qem;-webkit-margin-after:1em;-webkit-margin-start:40px;-webkit-margin-end:40px}
+.phpdebugbar figcaption,
+.phpdebugbar-openhandler figcaption {display:block}
+.phpdebugbar figure,
+.phpdebugbar-openhandler figure {display:block;-webkit-margin-before:1em;-webkit-margin-after:1em;-webkit-margin-start:40px;-webkit-margin-end:40px}
+.phpdebugbar q,
+.phpdebugbar-openhandler q {display:inline}
+.phpdebugbar q:before,
+.phpdebugbar-openhandler q:before {content:open-quote}
+.phpdebugbar q:after,
+.phpdebugbar-openhandler q:after {content:close-quote}
+.phpdebugbar center,
+.phpdebugbar-openhandler center {display:block;text-align:-webkit-center}
+.phpdebugbar hr,
+.phpdebugbar-openhandler hr {display:block;-webkit-margin-before:0.5em;-webkit-margin-after:0.5em;-webkit-margin-start:auto;-webkit-margin-end:auto;border-style:inset;border-width:1px}
+.phpdebugbar map,
+.phpdebugbar-openhandler map {display:inline}
+.phpdebugbar video,
+.phpdebugbar-openhandler video {object-fit:contain}
+.phpdebugbar h1,
+.phpdebugbar-openhandler h1 {display:block;font-size:2em;-webkit-margin-before:0.67__qem;-webkit-margin-after:0.67em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar :-webkit-any(article,aside,nav,section) h1,
+.phpdebugbar-openhandler :-webkit-any(article,aside,nav,section) h1 {font-size:1.5em;-webkit-margin-before:0.83__qem;-webkit-margin-after:0.83em}
+.phpdebugbar :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1,
+.phpdebugbar-openhandler :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {font-size:1.17em;-webkit-margin-before:1__qem;-webkit-margin-after:1em}
+.phpdebugbar :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1,
+.phpdebugbar-openhandler :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {font-size:1.0em;-webkit-margin-before:1.33__qem;-webkit-margin-after:1.33em}
+.phpdebugbar :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1,
+.phpdebugbar-openhandler :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {font-size:.83em;-webkit-margin-before:1.67__qem;-webkit-margin-after:1.67em}
+.phpdebugbar :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1,
+.phpdebugbar-openhandler :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {font-size:.67em;-webkit-margin-before:2.33__qem;-webkit-margin-after:2.33em}
+.phpdebugbar h2,
+.phpdebugbar-openhandler h2 {display:block;font-size:1.5em;-webkit-margin-before:0.83__qem;-webkit-margin-after:0.83em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar h3,
+.phpdebugbar-openhandler h3 {display:block;font-size:1.17em;-webkit-margin-before:1__qem;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar h4,
+.phpdebugbar-openhandler h4 {display:block;-webkit-margin-before:1.33__qem;-webkit-margin-after:1.33em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar h5,
+.phpdebugbar-openhandler h5 {display:block;font-size:.83em;-webkit-margin-before:1.67__qem;-webkit-margin-after:1.67em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar h6,
+.phpdebugbar-openhandler h6 {display:block;font-size:.67em;-webkit-margin-before:2.33__qem;-webkit-margin-after:2.33em;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:bold}
+.phpdebugbar table,
+.phpdebugbar-openhandler table {display:table;border-collapse:separate;border-spacing:2px;border-color:gray}
+.phpdebugbar thead,
+.phpdebugbar-openhandler thead {display:table-header-group;vertical-align:middle;border-color:inherit}
+.phpdebugbar tbody,
+.phpdebugbar-openhandler tbody {display:table-row-group;vertical-align:middle;border-color:inherit}
+.phpdebugbar tfoot,
+.phpdebugbar-openhandler tfoot {display:table-footer-group;vertical-align:middle;border-color:inherit}
+.phpdebugbar table >tr,
+.phpdebugbar-openhandler table >tr {vertical-align:middle}
+.phpdebugbar col,
+.phpdebugbar-openhandler col {display:table-column}
+.phpdebugbar colgroup,
+.phpdebugbar-openhandler colgroup {display:table-column-group}
+.phpdebugbar tr,
+.phpdebugbar-openhandler tr {display:table-row;vertical-align:inherit;border-color:inherit}
+.phpdebugbar td,
+.phpdebugbar-openhandler td,
+.phpdebugbar th,
+.phpdebugbar-openhandler th {display:table-cell;vertical-align:inherit}
+.phpdebugbar th,
+.phpdebugbar-openhandler th {font-weight:bold}
+.phpdebugbar caption,
+.phpdebugbar-openhandler caption {display:table-caption;text-align:-webkit-center}
+.phpdebugbar ul,
+.phpdebugbar-openhandler ul,
+.phpdebugbar ol,
+.phpdebugbar-openhandler ol,
+.phpdebugbar dl,
+.phpdebugbar-openhandler dl {font-size:1em}
+.phpdebugbar ul,
+.phpdebugbar-openhandler ul,
+.phpdebugbar menu,
+.phpdebugbar-openhandler menu,
+.phpdebugbar dir,
+.phpdebugbar-openhandler dir {display:block;list-style-type:disc;-webkit-margin-before:1__qem;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0;-webkit-padding-start:40px}
+.phpdebugbar ol,
+.phpdebugbar-openhandler ol {display:block;list-style-type:decimal;-webkit-margin-before:1__qem;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0;-webkit-padding-start:40px}
+.phpdebugbar li,
+.phpdebugbar-openhandler li {display:list-item;text-align:-webkit-match-parent}
+.phpdebugbar ul ul,
+.phpdebugbar-openhandler ul ul,
+.phpdebugbar ol ul,
+.phpdebugbar-openhandler ol ul {list-style-type:circle}
+.phpdebugbar ol ol ul,
+.phpdebugbar-openhandler ol ol ul,
+.phpdebugbar ol ul ul,
+.phpdebugbar-openhandler ol ul ul,
+.phpdebugbar ul ol ul,
+.phpdebugbar-openhandler ul ol ul,
+.phpdebugbar ul ul ul,
+.phpdebugbar-openhandler ul ul ul {list-style-type:square}
+.phpdebugbar dd,
+.phpdebugbar-openhandler dd {display:block;-webkit-margin-start:40px}
+.phpdebugbar dl,
+.phpdebugbar-openhandler dl {display:block;-webkit-margin-before:1__qem;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0}
+.phpdebugbar dt,
+.phpdebugbar-openhandler dt {display:block}
+.phpdebugbar ol ul,
+.phpdebugbar-openhandler ol ul,
+.phpdebugbar ul ol,
+.phpdebugbar-openhandler ul ol,
+.phpdebugbar ul ul,
+.phpdebugbar-openhandler ul ul,
+.phpdebugbar ol ol,
+.phpdebugbar-openhandler ol ol {-webkit-margin-before:0;-webkit-margin-after:0}
+.phpdebugbar form,
+.phpdebugbar-openhandler form {display:block;margin-top:0__qem}
+.phpdebugbar label,
+.phpdebugbar-openhandler label {cursor:default}
+.phpdebugbar legend,
+.phpdebugbar-openhandler legend {display:block;-webkit-padding-start:2px;-webkit-padding-end:2px;border:none}
+.phpdebugbar fieldset,
+.phpdebugbar-openhandler fieldset {display:block;-webkit-margin-start:2px;-webkit-margin-end:2px;-webkit-padding-before:0.35em;-webkit-padding-start:0.75em;-webkit-padding-end:0.75em;-webkit-padding-after:0.625em;border:2px groove ThreeDFace;min-width:-webkit-min-content}
+.phpdebugbar button,
+.phpdebugbar-openhandler button {-webkit-appearance:button}
+.phpdebugbar input,
+.phpdebugbar-openhandler input,
+.phpdebugbar textarea,
+.phpdebugbar-openhandler textarea,
+.phpdebugbar keygen,
+.phpdebugbar-openhandler keygen,
+.phpdebugbar select,
+.phpdebugbar-openhandler select,
+.phpdebugbar button,
+.phpdebugbar-openhandler button,
+.phpdebugbar meter,
+.phpdebugbar-openhandler meter,
+.phpdebugbar progress,
+.phpdebugbar-openhandler progress {-webkit-writing-mode:horizontal-tb !important}
+.phpdebugbar input,
+.phpdebugbar-openhandler input,
+.phpdebugbar textarea,
+.phpdebugbar-openhandler textarea,
+.phpdebugbar keygen,
+.phpdebugbar-openhandler keygen,
+.phpdebugbar select,
+.phpdebugbar-openhandler select,
+.phpdebugbar button,
+.phpdebugbar-openhandler button {margin:0__qem;font:-webkit-small-control;color:initial;letter-spacing:normal;word-spacing:normal;line-height:normal;text-transform:none;text-indent:0;text-shadow:none;display:inline-block;text-align:start;width:initial;height:initial}
+.phpdebugbar input[type="hidden"],
+.phpdebugbar-openhandler input[type="hidden"] {display:none}
+.phpdebugbar input,
+.phpdebugbar-openhandler input,
+.phpdebugbar input[type="password"],
+.phpdebugbar-openhandler input[type="password"],
+.phpdebugbar input[type="search"],
+.phpdebugbar-openhandler input[type="search"] {-webkit-appearance:textfield;padding:1px;background-color:white;border:2px inset;-webkit-rtl-ordering:logical;-webkit-user-select:text;cursor:auto}
+.phpdebugbar input[type="search"],
+.phpdebugbar-openhandler input[type="search"] {-webkit-appearance:searchfield;box-sizing:border-box}
+.phpdebugbar input::-webkit-textfield-decoration-container,
+.phpdebugbar-openhandler input::-webkit-textfield-decoration-container {display:flex;align-items:center;-webkit-user-modify:read-only !important;content:none !important}
+.phpdebugbar input[type="search"]::-webkit-textfield-decoration-container,
+.phpdebugbar-openhandler input[type="search"]::-webkit-textfield-decoration-container {direction:ltr}
+.phpdebugbar input::-webkit-clear-button,
+.phpdebugbar-openhandler input::-webkit-clear-button {-webkit-appearance:searchfield-cancel-button;display:inline-block;flex:none;-webkit-user-modify:read-only !important;-webkit-margin-start:2px;opacity:0;pionter-events:none}
+.phpdebugbar input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button,
+.phpdebugbar-openhandler input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button {opacity:1;pointer-events:auto}
+.phpdebugbar input[type="search"]::-webkit-search-cancel-button,
+.phpdebugbar-openhandler input[type="search"]::-webkit-search-cancel-button {-webkit-appearance:searchfield-cancel-button;display:block;flex:none;-webkit-user-modify:read-only !important;-webkit-margin-start:1px;opacity:0;pointer-events:none}
+.phpdebugbar input[type="search"]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button,
+.phpdebugbar-openhandler input[type="search"]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button {opacity:1;pointer-events:auto}
+.phpdebugbar input[type="search"]::-webkit-search-decoration,
+.phpdebugbar-openhandler input[type="search"]::-webkit-search-decoration {-webkit-appearance:searchfield-decoration;display:block;flex:none;-webkit-user-modify:read-only !important;-webkit-align-self:flex-start;margin:auto 0}
+.phpdebugbar input[type="search"]::-webkit-search-results-decoration,
+.phpdebugbar-openhandler input[type="search"]::-webkit-search-results-decoration {-webkit-appearance:searchfield-results-decoration;display:block;flex:none;-webkit-user-modify:read-only !important;-webkit-align-self:flex-start;margin:auto 0}
+.phpdebugbar input::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input::-webkit-inner-spin-button {-webkit-appearance:inner-spin-button;display:inline-block;cursor:default;flex:none;align-self:stretch;-webkit-user-select:none;-webkit-user-modify:read-only !important;opacity:0;pointer-events:none}
+.phpdebugbar input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button {opacity:1;pointer-events:auto}
+.phpdebugbar keygen,
+.phpdebugbar-openhandler keygen,
+.phpdebugbar select,
+.phpdebugbar-openhandler select {border-radius:5px}
+.phpdebugbar keygen::-webkit-keygen-select,
+.phpdebugbar-openhandler keygen::-webkit-keygen-select {margin:0}
+.phpdebugbar textarea,
+.phpdebugbar-openhandler textarea {-webkit-appearance:textarea;background-color:white;border:1px solid;-webkit-rtl-ordering:logical;-webkit-user-select:text;flex-direction:column;resize:auto;cursor:auto;padding:2px;white-space:pre-wrap;word-wrap:break-word}
+.phpdebugbar ::-webkit-input-placeholder,
+.phpdebugbar-openhandler ::-webkit-input-placeholder {-webkit-text-security:none;color:darkGray;display:block !important;pointer-events:none !important}
+.phpdebugbar input::-webkit-input-placeholder,
+.phpdebugbar-openhandler input::-webkit-input-placeholder {white-space:pre;word-wrap:normal;overflow:hidden;-webkit-user-modify:read-only !important}
+.phpdebugbar input[type="password"],
+.phpdebugbar-openhandler input[type="password"] {-webkit-text-security:disc !important}
+.phpdebugbar input[type="hidden"],
+.phpdebugbar-openhandler input[type="hidden"],
+.phpdebugbar input[type="image"],
+.phpdebugbar-openhandler input[type="image"],
+.phpdebugbar input[type="file"],
+.phpdebugbar-openhandler input[type="file"] {-webkit-appearance:initial;padding:initial;background-color:initial;border:initial}
+.phpdebugbar input[type="file"],
+.phpdebugbar-openhandler input[type="file"] {align-items:baseline;color:inherit;text-align:start !important}
+.phpdebugbar input:-webkit-autofill,
+.phpdebugbar-openhandler input:-webkit-autofill,
+.phpdebugbar textarea:-webkit-autofill,
+.phpdebugbar-openhandler textarea:-webkit-autofill,
+.phpdebugbar select:-webkit-autofill,
+.phpdebugbar-openhandler select:-webkit-autofill {background-color:#FAFFBD !important;background-image:none !important;color:#000 !important}
+.phpdebugbar input[type="radio"],
+.phpdebugbar-openhandler input[type="radio"],
+.phpdebugbar input[type="checkbox"],
+.phpdebugbar-openhandler input[type="checkbox"] {margin:3px 0.5ex;padding:initial;background-color:initial;border:initial}
+.phpdebugbar input[type="button"],
+.phpdebugbar-openhandler input[type="button"],
+.phpdebugbar input[type="submit"],
+.phpdebugbar-openhandler input[type="submit"],
+.phpdebugbar input[type="reset"],
+.phpdebugbar-openhandler input[type="reset"] {-webkit-appearance:push-button;-webkit-user-select:none;white-space:pre}
+.phpdebugbar input[type="file"]::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]::-webkit-file-upload-button {-webkit-appearance:push-button;-webkit-user-modify:read-only !important;white-space:nowrap;margin:0;font-size:inherit}
+.phpdebugbar input[type="button"],
+.phpdebugbar-openhandler input[type="button"],
+.phpdebugbar input[type="submit"],
+.phpdebugbar-openhandler input[type="submit"],
+.phpdebugbar input[type="reset"],
+.phpdebugbar-openhandler input[type="reset"],
+.phpdebugbar input[type="file"]::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]::-webkit-file-upload-button,
+.phpdebugbar button,
+.phpdebugbar-openhandler button {align-items:flex-start;text-align:center;cursor:default;color:ButtonText;padding:2px 6px 3px 6px;border:2px outset ButtonFace;background-color:ButtonFace;box-sizing:border-box}
+.phpdebugbar input[type="range"],
+.phpdebugbar-openhandler input[type="range"] {-webkit-appearance:slider-horizontal;padding:initial;border:initial;margin:2px;color:#909090}
+.phpdebugbar input[type="range"]::-webkit-slider-container,
+.phpdebugbar-openhandler input[type="range"]::-webkit-slider-container,
+.phpdebugbar input[type="range"]::-webkit-media-slider-container,
+.phpdebugbar-openhandler input[type="range"]::-webkit-media-slider-container {flex:1;box-sizing:border-box;-webkit-user-modify:read-only !important;display:flex;-webkit-align-contents:center}
+.phpdebugbar input[type="range"]::-webkit-slider-runnable-track,
+.phpdebugbar-openhandler input[type="range"]::-webkit-slider-runnable-track {flex:1;-webkit-align-self:center;box-sizing:border-box;-webkit-user-modify:read-only !important;display:block}
+.phpdebugbar input[type="range"]::-webkit-slider-thumb,
+.phpdebugbar-openhandler input[type="range"]::-webkit-slider-thumb,
+.phpdebugbar input[type="range"]::-webkit-media-slider-thumb,
+.phpdebugbar-openhandler input[type="range"]::-webkit-media-slider-thumb {-webkit-appearance:sliderthumb-horizontal;box-sizing:border-box;-webkit-user-modify:read-only !important;display:block}
+.phpdebugbar input[type="button"]:disabled,
+.phpdebugbar-openhandler input[type="button"]:disabled,
+.phpdebugbar input[type="submit"]:disabled,
+.phpdebugbar-openhandler input[type="submit"]:disabled,
+.phpdebugbar input[type="reset"]:disabled,
+.phpdebugbar-openhandler input[type="reset"]:disabled,
+.phpdebugbar input[type="file"]:disabled::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]:disabled::-webkit-file-upload-button,
+.phpdebugbar button:disabled,
+.phpdebugbar-openhandler button:disabled,
+.phpdebugbar select:disabled,
+.phpdebugbar-openhandler select:disabled,
+.phpdebugbar keygen:disabled,
+.phpdebugbar-openhandler keygen:disabled,
+.phpdebugbar optgroup:disabled,
+.phpdebugbar-openhandler optgroup:disabled,
+.phpdebugbar option:disabled,
+.phpdebugbar-openhandler option:disabled,
+.phpdebugbar select[disabled] >option,
+.phpdebugbar-openhandler select[disabled] >option {color:GrayText}
+.phpdebugbar input[type="button"]:active,
+.phpdebugbar-openhandler input[type="button"]:active,
+.phpdebugbar input[type="submit"]:active,
+.phpdebugbar-openhandler input[type="submit"]:active,
+.phpdebugbar input[type="reset"]:active,
+.phpdebugbar-openhandler input[type="reset"]:active,
+.phpdebugbar input[type="file"]:active::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]:active::-webkit-file-upload-button,
+.phpdebugbar button:active,
+.phpdebugbar-openhandler button:active {border-style:inset}
+.phpdebugbar input[type="button"]:active:disabled,
+.phpdebugbar-openhandler input[type="button"]:active:disabled,
+.phpdebugbar input[type="submit"]:active:disabled,
+.phpdebugbar-openhandler input[type="submit"]:active:disabled,
+.phpdebugbar input[type="reset"]:active:disabled,
+.phpdebugbar-openhandler input[type="reset"]:active:disabled,
+.phpdebugbar input[type="file"]:active:disabled::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]:active:disabled::-webkit-file-upload-button,
+.phpdebugbar button:active:disabled,
+.phpdebugbar-openhandler button:active:disabled {border-style:outset}
+.phpdebugbar option:-internal-spatial-navigation-focus,
+.phpdebugbar-openhandler option:-internal-spatial-navigation-focus {outline:black dashed 1px;outline-offset:-1px}
+.phpdebugbar datalist,
+.phpdebugbar-openhandler datalist {display:none}
+.phpdebugbar area,
+.phpdebugbar-openhandler area {display:inline}
+.phpdebugbar param,
+.phpdebugbar-openhandler param {display:none}
+.phpdebugbar input[type="checkbox"],
+.phpdebugbar-openhandler input[type="checkbox"] {-webkit-appearance:checkbox;box-sizing:border-box}
+.phpdebugbar input[type="radio"],
+.phpdebugbar-openhandler input[type="radio"] {-webkit-appearance:radio;box-sizing:border-box}
+.phpdebugbar input[type="color"],
+.phpdebugbar-openhandler input[type="color"] {-webkit-appearance:square-button;width:44px;height:23px;background-color:ButtonFace;border:1px #a9a9a9 solid;padding:1px 2px}
+.phpdebugbar input[type="color"]::-webkit-color-swatch-wrapper,
+.phpdebugbar-openhandler input[type="color"]::-webkit-color-swatch-wrapper {display:flex;padding:4px 2px;box-sizing:border-box;-webkit-user-modify:read-only !important;width:100%;height:100%}
+.phpdebugbar input[type="color"]::-webkit-color-swatch,
+.phpdebugbar-openhandler input[type="color"]::-webkit-color-swatch {background-color:#000;border:1px solid #777;flex:1;-webkit-user-modify:read-only !important}
+.phpdebugbar input[type="color"][list],
+.phpdebugbar-openhandler input[type="color"][list] {-webkit-appearance:menulist;width:88px;height:23px}
+.phpdebugbar input[type="color"][list]::-webkit-color-swatch-wrapper,
+.phpdebugbar-openhandler input[type="color"][list]::-webkit-color-swatch-wrapper {padding-left:8px;padding-right:24px}
+.phpdebugbar input[type="color"][list]::-webkit-color-swatch,
+.phpdebugbar-openhandler input[type="color"][list]::-webkit-color-swatch {border-color:#000}
+.phpdebugbar input::-webkit-calendar-picker-indicator,
+.phpdebugbar-openhandler input::-webkit-calendar-picker-indicator {display:inline-block;width:0.66em;height:0.66em;padding:0.17em 0.34em;-webkit-user-modify:read-only !important;opacity:0;pointer-events:none}
+.phpdebugbar input::-webkit-calendar-picker-indicator:hover,
+.phpdebugbar-openhandler input::-webkit-calendar-picker-indicator:hover {background-color:#eee}
+.phpdebugbar input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-calendar-picker-indicator,
+.phpdebugbar-openhandler input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-calendar-picker-indicator,
+.phpdebugbar input::-webkit-calendar-picker-indicator:focus,
+.phpdebugbar-openhandler input::-webkit-calendar-picker-indicator:focus {opacity:1;pointer-events:auto}
+.phpdebugbar input[type="date"]:disabled::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="date"]:disabled::-webkit-clear-button,
+.phpdebugbar input[type="date"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="date"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar input[type="datetime-local"]:disabled::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="datetime-local"]:disabled::-webkit-clear-button,
+.phpdebugbar input[type="datetime-local"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="datetime-local"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar input[type="month"]:disabled::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="month"]:disabled::-webkit-clear-button,
+.phpdebugbar input[type="month"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="month"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar input[type="week"]:disabled::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="week"]:disabled::-webkit-clear-button,
+.phpdebugbar input[type="week"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="week"]:disabled::-webkit-inner-spin-button,
+.phpdebugbar input:disabled::-webkit-calendar-picker-indicator,
+.phpdebugbar-openhandler input:disabled::-webkit-calendar-picker-indicator,
+.phpdebugbar input[type="date"][readonly]::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="date"][readonly]::-webkit-clear-button,
+.phpdebugbar input[type="date"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="date"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar input[type="datetime-local"][readonly]::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="datetime-local"][readonly]::-webkit-clear-button,
+.phpdebugbar input[type="datetime-local"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="datetime-local"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar input[type="month"][readonly]::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="month"][readonly]::-webkit-clear-button,
+.phpdebugbar input[type="month"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="month"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar input[type="week"][readonly]::-webkit-clear-button,
+.phpdebugbar-openhandler input[type="week"][readonly]::-webkit-clear-button,
+.phpdebugbar input[type="week"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar-openhandler input[type="week"][readonly]::-webkit-inner-spin-button,
+.phpdebugbar input[readonly]::-webkit-calendar-picker-indicator,
+.phpdebugbar-openhandler input[readonly]::-webkit-calendar-picker-indicator {visibility:hidden}
+.phpdebugbar select,
+.phpdebugbar-openhandler select {-webkit-appearance:menulist;box-sizing:border-box;align-items:center;border:1px solid;white-space:pre;-webkit-rtl-ordering:logical;color:black;background-color:white;cursor:default}
+.phpdebugbar select:-internal-list-box,
+.phpdebugbar-openhandler select:-internal-list-box {-webkit-appearance:listbox;align-items:flex-start;border:1px inset gray;border-radius:initial;overflow-x:hidden;overflow-y:scroll;vertical-align:text-bottom;-webkit-user-select:none;white-space:nowrap}
+.phpdebugbar optgroup,
+.phpdebugbar-openhandler optgroup {font-weight:bolder;display:block}
+.phpdebugbar option,
+.phpdebugbar-openhandler option {font-weight:normal;display:block;padding:0 2px 1px 2px;white-space:pre;min-height:1.2em}
+.phpdebugbar select:-internal-list-box option,
+.phpdebugbar-openhandler select:-internal-list-box option,
+.phpdebugbar select:-internal-list-box optgroup,
+.phpdebugbar-openhandler select:-internal-list-box optgroup {line-height:initial !important}
+.phpdebugbar select:-internal-list-box:focus option:checked,
+.phpdebugbar-openhandler select:-internal-list-box:focus option:checked {background-color:-internal-active-list-box-selection !important;color:-internal-active-list-box-selection-text !important}
+.phpdebugbar select:-internal-list-box option:checked,
+.phpdebugbar-openhandler select:-internal-list-box option:checked {background-color:-internal-inactive-list-box-selection !important;color:-internal-inactive-list-box-selection-text !important}
+.phpdebugbar select:-internal-list-box:disabled option:checked,
+.phpdebugbar-openhandler select:-internal-list-box:disabled option:checked,
+.phpdebugbar select:-internal-list-box option:checked:disabled,
+.phpdebugbar-openhandler select:-internal-list-box option:checked:disabled {color:gray !important}
+.phpdebugbar output,
+.phpdebugbar-openhandler output {display:inline}
+.phpdebugbar meter,
+.phpdebugbar-openhandler meter {-webkit-appearance:meter;box-sizing:border-box;display:inline-block;height:1em;width:5em;vertical-align:-0.2em}
+.phpdebugbar meter::-webkit-meter-inner-element,
+.phpdebugbar-openhandler meter::-webkit-meter-inner-element {-webkit-appearance:inherit;box-sizing:inherit;-webkit-user-modify:read-only !important;height:100%;width:100%}
+.phpdebugbar meter::-webkit-meter-bar,
+.phpdebugbar-openhandler meter::-webkit-meter-bar {background:linear-gradient(to bottom,#ddd,#eee 20%,#ccc 45%,#ccc 55%,#ddd);height:100%;width:100%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar meter::-webkit-meter-optimum-value,
+.phpdebugbar-openhandler meter::-webkit-meter-optimum-value {background:linear-gradient(to bottom,#ad7,#cea 20%,#7a3 45%,#7a3 55%,#ad7);height:100%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar meter::-webkit-meter-suboptimum-value,
+.phpdebugbar-openhandler meter::-webkit-meter-suboptimum-value {background:linear-gradient(to bottom,#fe7,#ffc 20%,#db3 45%,#db3 55%,#fe7);height:100%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar meter::-webkit-meter-even-less-good-value,
+.phpdebugbar-openhandler meter::-webkit-meter-even-less-good-value {background:linear-gradient(to bottom,#f77,#fcc 20%,#d44 45%,#d44 55%,#f77);height:100%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar progress,
+.phpdebugbar-openhandler progress {-webkit-appearance:progress-bar;box-sizing:border-box;display:inline-block;height:1em;width:10em;vertical-align:-0.2em}
+.phpdebugbar progress::-webkit-progress-inner-element,
+.phpdebugbar-openhandler progress::-webkit-progress-inner-element {-webkit-appearance:inherit;box-sizing:inherit;-webkit-user-modify:read-only;height:100%;width:100%}
+.phpdebugbar progress::-webkit-progress-bar,
+.phpdebugbar-openhandler progress::-webkit-progress-bar {background-color:gray;height:100%;width:100%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar progress::-webkit-progress-value,
+.phpdebugbar-openhandler progress::-webkit-progress-value {background-color:green;height:100%;width:50%;-webkit-user-modify:read-only !important;box-sizing:border-box}
+.phpdebugbar u,
+.phpdebugbar-openhandler u,
+.phpdebugbar ins,
+.phpdebugbar-openhandler ins {text-decoration:underline}
+.phpdebugbar strong,
+.phpdebugbar-openhandler strong,
+.phpdebugbar b,
+.phpdebugbar-openhandler b {font-weight:bold}
+.phpdebugbar cite,
+.phpdebugbar-openhandler cite,
+.phpdebugbar em,
+.phpdebugbar-openhandler em,
+.phpdebugbar var,
+.phpdebugbar-openhandler var,
+.phpdebugbar address,
+.phpdebugbar-openhandler address,
+.phpdebugbar dfn,
+.phpdebugbar-openhandler dfn {font-style:italic}
+.phpdebugbar tt,
+.phpdebugbar-openhandler tt,
+.phpdebugbar code,
+.phpdebugbar-openhandler code,
+.phpdebugbar kbd,
+.phpdebugbar-openhandler kbd,
+.phpdebugbar samp,
+.phpdebugbar-openhandler samp {font-family:monospace}
+.phpdebugbar pre,
+.phpdebugbar-openhandler pre,
+.phpdebugbar xmp,
+.phpdebugbar-openhandler xmp,
+.phpdebugbar plaintext,
+.phpdebugbar-openhandler plaintext,
+.phpdebugbar listing,
+.phpdebugbar-openhandler listing {display:block;font-family:monospace;white-space:pre;margin:1 __qem 0}
+.phpdebugbar mark,
+.phpdebugbar-openhandler mark {background-color:yellow;color:black}
+.phpdebugbar big,
+.phpdebugbar-openhandler big {font-size:larger}
+.phpdebugbar small,
+.phpdebugbar-openhandler small {font-size:smaller}
+.phpdebugbar s,
+.phpdebugbar-openhandler s,
+.phpdebugbar strike,
+.phpdebugbar-openhandler strike,
+.phpdebugbar del,
+.phpdebugbar-openhandler del {text-decoration:line-through}
+.phpdebugbar sub,
+.phpdebugbar-openhandler sub {vertical-align:sub;font-size:smaller}
+.phpdebugbar sup,
+.phpdebugbar-openhandler sup {vertical-align:super;font-size:smaller}
+.phpdebugbar nobr,
+.phpdebugbar-openhandler nobr {white-space:nowrap}
+.phpdebugbar :focus,
+.phpdebugbar-openhandler :focus {outline:auto 5px -webkit-focus-ring-color}
+.phpdebugbar html:focus,
+.phpdebugbar-openhandler html:focus,
+.phpdebugbar body:focus,
+.phpdebugbar-openhandler body:focus,
+.phpdebugbar input[readonly]:focus,
+.phpdebugbar-openhandler input[readonly]:focus {outline:none}
+.phpdebugbar applet:focus,
+.phpdebugbar-openhandler applet:focus,
+.phpdebugbar embed:focus,
+.phpdebugbar-openhandler embed:focus,
+.phpdebugbar iframe:focus,
+.phpdebugbar-openhandler iframe:focus,
+.phpdebugbar object:focus,
+.phpdebugbar-openhandler object:focus {outline:none}
+.phpdebugbar input:focus,
+.phpdebugbar-openhandler input:focus,
+.phpdebugbar textarea:focus,
+.phpdebugbar-openhandler textarea:focus,
+.phpdebugbar keygen:focus,
+.phpdebugbar-openhandler keygen:focus,
+.phpdebugbar select:focus,
+.phpdebugbar-openhandler select:focus {outline-offset:-2px}
+.phpdebugbar input[type="button"]:focus,
+.phpdebugbar-openhandler input[type="button"]:focus,
+.phpdebugbar input[type="checkbox"]:focus,
+.phpdebugbar-openhandler input[type="checkbox"]:focus,
+.phpdebugbar input[type="file"]:focus,
+.phpdebugbar-openhandler input[type="file"]:focus,
+.phpdebugbar input[type="hidden"]:focus,
+.phpdebugbar-openhandler input[type="hidden"]:focus,
+.phpdebugbar input[type="image"]:focus,
+.phpdebugbar-openhandler input[type="image"]:focus,
+.phpdebugbar input[type="radio"]:focus,
+.phpdebugbar-openhandler input[type="radio"]:focus,
+.phpdebugbar input[type="reset"]:focus,
+.phpdebugbar-openhandler input[type="reset"]:focus,
+.phpdebugbar input[type="search"]:focus,
+.phpdebugbar-openhandler input[type="search"]:focus,
+.phpdebugbar input[type="submit"]:focus,
+.phpdebugbar-openhandler input[type="submit"]:focus,
+.phpdebugbar input[type="file"]:focus::-webkit-file-upload-button,
+.phpdebugbar-openhandler input[type="file"]:focus::-webkit-file-upload-button {outline-offset:0}
+.phpdebugbar a:-webkit-any-link,
+.phpdebugbar-openhandler a:-webkit-any-link {color:-webkit-link;text-decoration:underline;cursor:auto}
+.phpdebugbar a:-webkit-any-link:active,
+.phpdebugbar-openhandler a:-webkit-any-link:active {color:-webkit-activelink}
+.phpdebugbar ruby,
+.phpdebugbar-openhandler ruby,
+.phpdebugbar rt,
+.phpdebugbar-openhandler rt {text-indent:0}
+.phpdebugbar rt,
+.phpdebugbar-openhandler rt {line-height:normal;-webkit-text-emphasis:none}
+.phpdebugbar ruby >rt,
+.phpdebugbar-openhandler ruby >rt {display:block;font-size:50%;text-align:start}
+.phpdebugbar ruby >rp,
+.phpdebugbar-openhandler ruby >rp {display:none}
+.phpdebugbar noframes,
+.phpdebugbar-openhandler noframes {display:none}
+.phpdebugbar frameset,
+.phpdebugbar-openhandler frameset,
+.phpdebugbar frame,
+.phpdebugbar-openhandler frame {display:block}
+.phpdebugbar frameset,
+.phpdebugbar-openhandler frameset {border-color:inherit}
+.phpdebugbar iframe,
+.phpdebugbar-openhandler iframe {border:2px inset}
+.phpdebugbar details,
+.phpdebugbar-openhandler details {display:block}
+.phpdebugbar summary,
+.phpdebugbar-openhandler summary {display:block}
+.phpdebugbar summary::-webkit-details-marker,
+.phpdebugbar-openhandler summary::-webkit-details-marker {display:inline-block;width:0.66em;height:0.66em;-webkit-margin-end:0.4em}
+.phpdebugbar textarea[dir=auto],
+.phpdebugbar-openhandler textarea[dir=auto] {unicode-bidi:-webkit-plaintext}
\ No newline at end of file

programming_language: CSS
filename: debugbar.less
change_type: ModificationType.ADD
diff: @@ -0,0 +1,1036 @@
+/* Fix the close icon in the open handler popup */
+div.phpdebugbar-openhandler .phpdebugbar-openhandler-header a {
+    line-height: 1;
+}
+
+.phpdebugbar {
+    /* Better styling for model collector */
+    dl.phpdebugbar-widgets-kvlist dt {
+        width: 350px;
+    }
+    dl.phpdebugbar-widgets-kvlist dd {
+        margin-left: 360px;
+    }
+}
+
+.phpdebugbar,
+.phpdebugbar-openhandler {
+    /*
+    * The default style sheet used to render HTML.
+    *
+    * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
+    * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
+    *
+    * This library is free software; you can redistribute it and/or
+    * modify it under the terms of the GNU Library General Public
+    * License as published by the Free Software Foundation; either
+    * version 2 of the License, or (at your option) any later version.
+    *
+    * This library is distributed in the hope that it will be useful,
+    * but WITHOUT ANY WARRANTY; without even the implied warranty of
+    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    * Library General Public License for more details.
+    *
+    * You should have received a copy of the GNU Library General Public License
+    * along with this library; see the file COPYING.LIB.  If not, write to
+    * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    * Boston, MA 02110-1301, USA.
+    *
+    */
+
+    /* generic block-level elements */
+
+    p {
+        display: block;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1__qem;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+    }
+
+    div {
+        display: block
+    }
+
+    layer {
+        display: block
+    }
+
+    article, aside, footer, header, hgroup, main, nav, section {
+        display: block
+    }
+
+    marquee {
+        display: inline-block;
+    }
+
+    address {
+        display: block
+    }
+
+    blockquote {
+        display: block;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 40px;
+        -webkit-margin-end: 40px;
+    }
+
+    figcaption {
+        display: block
+    }
+
+    figure {
+        display: block;
+        -webkit-margin-before: 1em;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 40px;
+        -webkit-margin-end: 40px;
+    }
+
+    q {
+        display: inline
+    }
+
+    q:before {
+        content: open-quote;
+    }
+
+    q:after {
+        content: close-quote;
+    }
+
+    center {
+        display: block;
+        /* special centering to be able to emulate the html4/netscape behaviour */
+        text-align: -webkit-center
+    }
+
+    hr {
+        display: block;
+        -webkit-margin-before: 0.5em;
+        -webkit-margin-after: 0.5em;
+        -webkit-margin-start: auto;
+        -webkit-margin-end: auto;
+        border-style: inset;
+        border-width: 1px
+    }
+
+    map {
+        display: inline
+    }
+
+    video {
+        object-fit: contain;
+    }
+
+    /* heading elements */
+
+    h1 {
+        display: block;
+        font-size: 2em;
+        -webkit-margin-before: 0.67__qem;
+        -webkit-margin-after: 0.67em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    :-webkit-any(article,aside,nav,section) h1 {
+        font-size: 1.5em;
+        -webkit-margin-before: 0.83__qem;
+        -webkit-margin-after: 0.83em;
+    }
+
+    :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+        font-size: 1.17em;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+    }
+
+    :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+        font-size: 1.00em;
+        -webkit-margin-before: 1.33__qem;
+        -webkit-margin-after: 1.33em;
+    }
+
+    :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+        font-size: .83em;
+        -webkit-margin-before: 1.67__qem;
+        -webkit-margin-after: 1.67em;
+    }
+
+    :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+        font-size: .67em;
+        -webkit-margin-before: 2.33__qem;
+        -webkit-margin-after: 2.33em;
+    }
+
+    h2 {
+        display: block;
+        font-size: 1.5em;
+        -webkit-margin-before: 0.83__qem;
+        -webkit-margin-after: 0.83em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    h3 {
+        display: block;
+        font-size: 1.17em;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    h4 {
+        display: block;
+        -webkit-margin-before: 1.33__qem;
+        -webkit-margin-after: 1.33em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    h5 {
+        display: block;
+        font-size: .83em;
+        -webkit-margin-before: 1.67__qem;
+        -webkit-margin-after: 1.67em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    h6 {
+        display: block;
+        font-size: .67em;
+        -webkit-margin-before: 2.33__qem;
+        -webkit-margin-after: 2.33em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        font-weight: bold
+    }
+
+    /* tables */
+
+    table {
+        display: table;
+        border-collapse: separate;
+        border-spacing: 2px;
+        border-color: gray
+    }
+
+    thead {
+        display: table-header-group;
+        vertical-align: middle;
+        border-color: inherit
+    }
+
+    tbody {
+        display: table-row-group;
+        vertical-align: middle;
+        border-color: inherit
+    }
+
+    tfoot {
+        display: table-footer-group;
+        vertical-align: middle;
+        border-color: inherit
+    }
+
+    /* for tables without table section elements (can happen with XHTML or dynamically created tables) */
+    table > tr {
+        vertical-align: middle;
+    }
+
+    col {
+        display: table-column
+    }
+
+    colgroup {
+        display: table-column-group
+    }
+
+    tr {
+        display: table-row;
+        vertical-align: inherit;
+        border-color: inherit
+    }
+
+    td, th {
+        display: table-cell;
+        vertical-align: inherit
+    }
+
+    th {
+        font-weight: bold
+    }
+
+    caption {
+        display: table-caption;
+        text-align: -webkit-center
+    }
+
+    /* lists */
+
+    ul, ol, dl {
+        font-size: 1em;
+    }
+
+    ul, menu, dir {
+        display: block;
+        list-style-type: disc;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        -webkit-padding-start: 40px
+    }
+
+    ol {
+        display: block;
+        list-style-type: decimal;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+        -webkit-padding-start: 40px
+    }
+
+    li {
+        display: list-item;
+        text-align: -webkit-match-parent;
+    }
+
+    ul ul, ol ul {
+        list-style-type: circle
+    }
+
+    ol ol ul, ol ul ul, ul ol ul, ul ul ul {
+        list-style-type: square
+    }
+
+    dd {
+        display: block;
+        -webkit-margin-start: 40px
+    }
+
+    dl {
+        display: block;
+        -webkit-margin-before: 1__qem;
+        -webkit-margin-after: 1em;
+        -webkit-margin-start: 0;
+        -webkit-margin-end: 0;
+    }
+
+    dt {
+        display: block
+    }
+
+    ol ul, ul ol, ul ul, ol ol {
+        -webkit-margin-before: 0;
+        -webkit-margin-after: 0
+    }
+
+    /* form elements */
+
+    form {
+        display: block;
+        margin-top: 0__qem;
+    }
+
+    label {
+        cursor: default;
+    }
+
+    legend {
+        display: block;
+        -webkit-padding-start: 2px;
+        -webkit-padding-end: 2px;
+        border: none
+    }
+
+    fieldset {
+        display: block;
+        -webkit-margin-start: 2px;
+        -webkit-margin-end: 2px;
+        -webkit-padding-before: 0.35em;
+        -webkit-padding-start: 0.75em;
+        -webkit-padding-end: 0.75em;
+        -webkit-padding-after: 0.625em;
+        border: 2px groove ThreeDFace;
+        min-width: -webkit-min-content;
+    }
+
+    button {
+        -webkit-appearance: button;
+    }
+
+    /* Form controls don't go vertical. */
+    input, textarea, keygen, select, button, meter, progress {
+        -webkit-writing-mode: horizontal-tb !important;
+    }
+
+    input, textarea, keygen, select, button {
+        margin: 0__qem;
+        font: -webkit-small-control;
+        color: initial;
+        letter-spacing: normal;
+        word-spacing: normal;
+        line-height: normal;
+        text-transform: none;
+        text-indent: 0;
+        text-shadow: none;
+        display: inline-block;
+        text-align: start;
+        width: initial;
+        height: initial;
+    }
+
+    input[type="hidden"] {
+        display: none
+    }
+
+    input, input[type="password"], input[type="search"] {
+        -webkit-appearance: textfield;
+        padding: 1px;
+        background-color: white;
+        border: 2px inset;
+        -webkit-rtl-ordering: logical;
+        -webkit-user-select: text;
+        cursor: auto;
+    }
+
+    input[type="search"] {
+        -webkit-appearance: searchfield;
+        box-sizing: border-box;
+    }
+
+    input::-webkit-textfield-decoration-container {
+        display: flex;
+        align-items: center;
+        -webkit-user-modify: read-only !important;
+        content: none !important;
+    }
+
+    input[type="search"]::-webkit-textfield-decoration-container {
+        direction: ltr;
+    }
+
+    input::-webkit-clear-button {
+        -webkit-appearance: searchfield-cancel-button;
+        display: inline-block;
+        flex: none;
+        -webkit-user-modify: read-only !important;
+        -webkit-margin-start: 2px;
+        opacity: 0;
+        pionter-events: none;
+    }
+
+    input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button {
+        opacity: 1;
+        pointer-events: auto;
+    }
+
+    input[type="search"]::-webkit-search-cancel-button {
+        -webkit-appearance: searchfield-cancel-button;
+        display: block;
+        flex: none;
+        -webkit-user-modify: read-only !important;
+        -webkit-margin-start: 1px;
+        opacity: 0;
+        pointer-events: none;
+    }
+
+    input[type="search"]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button {
+        opacity: 1;
+        pointer-events: auto;
+    }
+
+    input[type="search"]::-webkit-search-decoration {
+        -webkit-appearance: searchfield-decoration;
+        display: block;
+        flex: none;
+        -webkit-user-modify: read-only !important;
+        -webkit-align-self: flex-start;
+        margin: auto 0;
+    }
+
+    input[type="search"]::-webkit-search-results-decoration {
+        -webkit-appearance: searchfield-results-decoration;
+        display: block;
+        flex: none;
+        -webkit-user-modify: read-only !important;
+        -webkit-align-self: flex-start;
+        margin: auto 0;
+    }
+
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: inner-spin-button;
+        display: inline-block;
+        cursor: default;
+        flex: none;
+        align-self: stretch;
+        -webkit-user-select: none;
+        -webkit-user-modify: read-only !important;
+        opacity: 0;
+        pointer-events: none;
+    }
+
+    input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button {
+        opacity: 1;
+        pointer-events: auto;
+    }
+
+    keygen, select {
+        border-radius: 5px;
+    }
+
+    keygen::-webkit-keygen-select {
+        margin: 0px;
+    }
+
+    textarea {
+        -webkit-appearance: textarea;
+        background-color: white;
+        border: 1px solid;
+        -webkit-rtl-ordering: logical;
+        -webkit-user-select: text;
+        flex-direction: column;
+        resize: auto;
+        cursor: auto;
+        padding: 2px;
+        white-space: pre-wrap;
+        word-wrap: break-word;
+    }
+
+    ::-webkit-input-placeholder {
+        -webkit-text-security: none;
+        color: darkGray;
+        display: block !important;
+        pointer-events: none !important;
+    }
+
+    input::-webkit-input-placeholder {
+        white-space: pre;
+        word-wrap: normal;
+        overflow: hidden;
+        -webkit-user-modify: read-only !important;
+    }
+
+    input[type="password"] {
+        -webkit-text-security: disc !important;
+    }
+
+    input[type="hidden"], input[type="image"], input[type="file"] {
+        -webkit-appearance: initial;
+        padding: initial;
+        background-color: initial;
+        border: initial;
+    }
+
+    input[type="file"] {
+        align-items: baseline;
+        color: inherit;
+        text-align: start !important;
+    }
+
+    input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
+        background-color: #FAFFBD !important;
+        background-image:none !important;
+        color: #000000 !important;
+    }
+
+    input[type="radio"], input[type="checkbox"] {
+        margin: 3px 0.5ex;
+        padding: initial;
+        background-color: initial;
+        border: initial;
+    }
+
+    input[type="button"], input[type="submit"], input[type="reset"] {
+        -webkit-appearance: push-button;
+        -webkit-user-select: none;
+        white-space: pre
+    }
+
+    input[type="file"]::-webkit-file-upload-button {
+        -webkit-appearance: push-button;
+        -webkit-user-modify: read-only !important;
+        white-space: nowrap;
+        margin: 0;
+        font-size: inherit;
+    }
+
+    input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
+        align-items: flex-start;
+        text-align: center;
+        cursor: default;
+        color: ButtonText;
+        padding: 2px 6px 3px 6px;
+        border: 2px outset ButtonFace;
+        background-color: ButtonFace;
+        box-sizing: border-box
+    }
+
+    input[type="range"] {
+        -webkit-appearance: slider-horizontal;
+        padding: initial;
+        border: initial;
+        margin: 2px;
+        color: #909090;
+    }
+
+    input[type="range"]::-webkit-slider-container, input[type="range"]::-webkit-media-slider-container {
+        flex: 1;
+        box-sizing: border-box;
+        -webkit-user-modify: read-only !important;
+        display: flex;
+        -webkit-align-contents: center;
+    }
+
+    input[type="range"]::-webkit-slider-runnable-track {
+        flex: 1;
+        -webkit-align-self: center;
+
+        box-sizing: border-box;
+        -webkit-user-modify: read-only !important;
+        display: block;
+    }
+
+    input[type="range"]::-webkit-slider-thumb, input[type="range"]::-webkit-media-slider-thumb {
+        -webkit-appearance: sliderthumb-horizontal;
+        box-sizing: border-box;
+        -webkit-user-modify: read-only !important;
+        display: block;
+    }
+
+    input[type="button"]:disabled, input[type="submit"]:disabled, input[type="reset"]:disabled,
+    input[type="file"]:disabled::-webkit-file-upload-button, button:disabled,
+    select:disabled, keygen:disabled, optgroup:disabled, option:disabled,
+    select[disabled]>option {
+        color: GrayText
+    }
+
+    input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active, input[type="file"]:active::-webkit-file-upload-button, button:active {
+        border-style: inset
+    }
+
+    input[type="button"]:active:disabled, input[type="submit"]:active:disabled, input[type="reset"]:active:disabled, input[type="file"]:active:disabled::-webkit-file-upload-button, button:active:disabled {
+        border-style: outset
+    }
+
+    option:-internal-spatial-navigation-focus {
+        outline: black dashed 1px;
+        outline-offset: -1px;
+    }
+
+    datalist {
+        display: none
+    }
+
+    area {
+        display: inline
+    }
+
+    param {
+        display: none
+    }
+
+    input[type="checkbox"] {
+        -webkit-appearance: checkbox;
+        box-sizing: border-box;
+    }
+
+    input[type="radio"] {
+        -webkit-appearance: radio;
+        box-sizing: border-box;
+    }
+
+    input[type="color"] {
+        -webkit-appearance: square-button;
+        width: 44px;
+        height: 23px;
+        background-color: ButtonFace;
+        /* Same as native_theme_base. */
+        border: 1px #a9a9a9 solid;
+        padding: 1px 2px;
+    }
+
+    input[type="color"]::-webkit-color-swatch-wrapper {
+        display:flex;
+        padding: 4px 2px;
+        box-sizing: border-box;
+        -webkit-user-modify: read-only !important;
+        width: 100%;
+        height: 100%
+    }
+
+    input[type="color"]::-webkit-color-swatch {
+        background-color: #000000;
+        border: 1px solid #777777;
+        flex: 1;
+        -webkit-user-modify: read-only !important;
+    }
+
+    input[type="color"][list] {
+        -webkit-appearance: menulist;
+        width: 88px;
+        height: 23px
+    }
+
+    input[type="color"][list]::-webkit-color-swatch-wrapper {
+        padding-left: 8px;
+        padding-right: 24px;
+    }
+
+    input[type="color"][list]::-webkit-color-swatch {
+        border-color: #000000;
+    }
+
+    input::-webkit-calendar-picker-indicator {
+        display: inline-block;
+        width: 0.66em;
+        height: 0.66em;
+        padding: 0.17em 0.34em;
+        -webkit-user-modify: read-only !important;
+        opacity: 0;
+        pointer-events: none;
+    }
+
+    input::-webkit-calendar-picker-indicator:hover {
+        background-color: #eee;
+    }
+
+    input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-calendar-picker-indicator,
+    input::-webkit-calendar-picker-indicator:focus {
+        opacity: 1;
+        pointer-events: auto;
+    }
+
+    input[type="date"]:disabled::-webkit-clear-button,
+    input[type="date"]:disabled::-webkit-inner-spin-button,
+    input[type="datetime-local"]:disabled::-webkit-clear-button,
+    input[type="datetime-local"]:disabled::-webkit-inner-spin-button,
+    input[type="month"]:disabled::-webkit-clear-button,
+    input[type="month"]:disabled::-webkit-inner-spin-button,
+    input[type="week"]:disabled::-webkit-clear-button,
+    input[type="week"]:disabled::-webkit-inner-spin-button,
+    input:disabled::-webkit-calendar-picker-indicator,
+    input[type="date"][readonly]::-webkit-clear-button,
+    input[type="date"][readonly]::-webkit-inner-spin-button,
+    input[type="datetime-local"][readonly]::-webkit-clear-button,
+    input[type="datetime-local"][readonly]::-webkit-inner-spin-button,
+    input[type="month"][readonly]::-webkit-clear-button,
+    input[type="month"][readonly]::-webkit-inner-spin-button,
+    input[type="week"][readonly]::-webkit-clear-button,
+    input[type="week"][readonly]::-webkit-inner-spin-button,
+    input[readonly]::-webkit-calendar-picker-indicator {
+        visibility: hidden;
+    }
+
+    select {
+        -webkit-appearance: menulist;
+        box-sizing: border-box;
+        align-items: center;
+        border: 1px solid;
+        white-space: pre;
+        -webkit-rtl-ordering: logical;
+        color: black;
+        background-color: white;
+        cursor: default;
+    }
+
+    select:-internal-list-box {
+        -webkit-appearance: listbox;
+        align-items: flex-start;
+        border: 1px inset gray;
+        border-radius: initial;
+        overflow-x: hidden;
+        overflow-y: scroll;
+        vertical-align: text-bottom;
+        -webkit-user-select: none;
+        white-space: nowrap;
+    }
+
+    optgroup {
+        font-weight: bolder;
+        display: block;
+    }
+
+    option {
+        font-weight: normal;
+        display: block;
+        padding: 0 2px 1px 2px;
+        white-space: pre;
+        min-height: 1.2em;
+    }
+
+    select:-internal-list-box option,
+    select:-internal-list-box optgroup {
+        line-height: initial !important;
+    }
+
+    select:-internal-list-box:focus option:checked {
+        background-color: -internal-active-list-box-selection !important;
+        color: -internal-active-list-box-selection-text !important;
+    }
+
+    select:-internal-list-box option:checked {
+        background-color: -internal-inactive-list-box-selection !important;
+        color: -internal-inactive-list-box-selection-text !important;
+    }
+
+    select:-internal-list-box:disabled option:checked,
+    select:-internal-list-box option:checked:disabled {
+        color: gray !important;
+    }
+
+
+    output {
+        display: inline;
+    }
+
+    /* meter */
+
+    meter {
+        -webkit-appearance: meter;
+        box-sizing: border-box;
+        display: inline-block;
+        height: 1em;
+        width: 5em;
+        vertical-align: -0.2em;
+    }
+
+    meter::-webkit-meter-inner-element {
+        -webkit-appearance: inherit;
+        box-sizing: inherit;
+        -webkit-user-modify: read-only !important;
+        height: 100%;
+        width: 100%;
+    }
+
+    meter::-webkit-meter-bar {
+        background: linear-gradient(to bottom, #ddd, #eee 20%, #ccc 45%, #ccc 55%, #ddd);
+        height: 100%;
+        width: 100%;
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    meter::-webkit-meter-optimum-value {
+        background: linear-gradient(to bottom, #ad7, #cea 20%, #7a3 45%, #7a3 55%, #ad7);
+        height: 100%;
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    meter::-webkit-meter-suboptimum-value {
+        background: linear-gradient(to bottom, #fe7, #ffc 20%, #db3 45%, #db3 55%, #fe7);
+        height: 100%;
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    meter::-webkit-meter-even-less-good-value {
+        background: linear-gradient(to bottom, #f77, #fcc 20%, #d44 45%, #d44 55%, #f77);
+        height: 100%;
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    /* progress */
+
+    progress {
+        -webkit-appearance: progress-bar;
+        box-sizing: border-box;
+        display: inline-block;
+        height: 1em;
+        width: 10em;
+        vertical-align: -0.2em;
+    }
+
+    progress::-webkit-progress-inner-element {
+        -webkit-appearance: inherit;
+        box-sizing: inherit;
+        -webkit-user-modify: read-only;
+        height: 100%;
+        width: 100%;
+    }
+
+    progress::-webkit-progress-bar {
+        background-color: gray;
+        height: 100%;
+        width: 100%;
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    progress::-webkit-progress-value {
+        background-color: green;
+        height: 100%;
+        width: 50%; /* should be removed later */
+        -webkit-user-modify: read-only !important;
+        box-sizing: border-box;
+    }
+
+    /* inline elements */
+
+    u, ins {
+        text-decoration: underline
+    }
+
+    strong, b {
+        font-weight: bold
+    }
+
+    cite, em, var, address, dfn {
+        font-style: italic
+    }
+
+    tt, code, kbd, samp {
+        font-family: monospace
+    }
+
+    pre, xmp, plaintext, listing {
+        display: block;
+        font-family: monospace;
+        white-space: pre;
+        margin: 1__qem 0
+    }
+
+    mark {
+        background-color: yellow;
+        color: black
+    }
+
+    big {
+        font-size: larger
+    }
+
+    small {
+        font-size: smaller
+    }
+
+    s, strike, del {
+        text-decoration: line-through
+    }
+
+    sub {
+        vertical-align: sub;
+        font-size: smaller
+    }
+
+    sup {
+        vertical-align: super;
+        font-size: smaller
+    }
+
+    nobr {
+        white-space: nowrap
+    }
+
+    /* states */
+
+    :focus {
+        outline: auto 5px -webkit-focus-ring-color
+    }
+
+    /* Read-only text fields do not show a focus ring but do still receive focus */
+    html:focus, body:focus, input[readonly]:focus {
+        outline: none
+    }
+
+    applet:focus, embed:focus, iframe:focus, object:focus {
+        outline: none
+    }
+
+    input:focus, textarea:focus, keygen:focus, select:focus {
+        outline-offset: -2px
+    }
+
+    input[type="button"]:focus,
+    input[type="checkbox"]:focus,
+    input[type="file"]:focus,
+    input[type="hidden"]:focus,
+    input[type="image"]:focus,
+    input[type="radio"]:focus,
+    input[type="reset"]:focus,
+    input[type="search"]:focus,
+    input[type="submit"]:focus,
+    input[type="file"]:focus::-webkit-file-upload-button {
+        outline-offset: 0
+    }
+
+    a:-webkit-any-link {
+        color: -webkit-link;
+        text-decoration: underline;
+        cursor: auto;
+    }
+
+    a:-webkit-any-link:active {
+        color: -webkit-activelink
+    }
+
+    /* HTML5 ruby elements */
+
+    ruby, rt {
+        text-indent: 0; /* blocks used for ruby rendering should not trigger this */
+    }
+
+    rt {
+        line-height: normal;
+        -webkit-text-emphasis: none;
+    }
+
+    ruby > rt {
+        display: block;
+        font-size: 50%;
+        text-align: start;
+    }
+
+    ruby > rp {
+        display: none;
+    }
+
+    /* other elements */
+
+    noframes {
+        display: none
+    }
+
+    frameset, frame {
+        display: block
+    }
+
+    frameset {
+        border-color: inherit
+    }
+
+    iframe {
+        border: 2px inset
+    }
+
+    details {
+        display: block
+    }
+
+    summary {
+        display: block
+    }
+
+    summary::-webkit-details-marker {
+        display: inline-block;
+        width: 0.66em;
+        height: 0.66em;
+        -webkit-margin-end: 0.4em;
+    }
+
+    textarea[dir=auto] {
+        unicode-bidi: -webkit-plaintext;
+    }
+}
\ No newline at end of file

programming_language: CSS
filename: ServiceProvider.php
change_type: ModificationType.ADD
diff: @@ -0,0 +1,20 @@
+<?php namespace RainLab\Debugbar\Classes;
+
+use Illuminate\Contracts\Http\Kernel;
+use Barryvdh\Debugbar\ServiceProvider as BaseServiceProvider;
+
+use RainLab\Debugbar\Middleware\InjectDebugbar;
+
+class ServiceProvider extends BaseServiceProvider
+{
+    /**
+     * Register the Debugbar Middleware
+     *
+     * @param  string $middleware
+     */
+    protected function registerMiddleware($middleware)
+    {
+        $kernel = $this->app[Kernel::class];
+        $kernel->pushMiddleware(InjectDebugbar::class);
+    }
+}
\ No newline at end of file

programming_language: PHP
filename: composer.json
change_type: ModificationType.MODIFY
diff: @@ -19,7 +19,13 @@
         }
     ],
     "require": {
-        "php": ">=7.0.0",
         "barryvdh/laravel-debugbar": "~3.0"
+    },
+    "extra": {
+        "laravel": {
+            "dont-discover": [
+                "barryvdh/laravel-debugbar"
+            ]
+        }
     }
 }

programming_language: JavaScript
filename: config.php
change_type: ModificationType.MODIFY
diff: @@ -4,7 +4,7 @@ return [
 
     /*
      |--------------------------------------------------------------------------
-     | Debugbar Settings
+     | Debugbar Status
      |--------------------------------------------------------------------------
      |
      | Debugbar is enabled by default, when debug is set to true in app.php.
@@ -13,6 +13,34 @@ return [
      */
 
     'enabled' => env('DEBUGBAR_ENABLED', null),
+
+    /*
+     |--------------------------------------------------------------------------
+     | Allow public access
+     |--------------------------------------------------------------------------
+     |
+     | By default the debugbar requires an authenticated backend user with the
+     | rainlab.debugbar.access_debugbar permission in order to view the debugbar
+     |
+     | Set this to true to bypass that authentication check.
+     |
+     | >**NOTE**: There is no way to bypass the permission check that controls
+     | access to viewing stored requests (rainlab.debugbar.access_stored_requests)
+     | as that can be abused to takeover accounts and steal sensitive information.
+     |
+     */
+
+    'allow_public_access' => false,
+
+    /*
+     |--------------------------------------------------------------------------
+     | Routes to exclude
+     |--------------------------------------------------------------------------
+     |
+     | Specify the routes that the debugbar is not to be included on
+     |
+     */
+
     'except' => [
         'telescope*'
     ],
@@ -117,13 +145,13 @@ return [
         'symfony_request' => true,  // Only one can be enabled..
         'mail'            => true,  // Catch mail messages
         'laravel'         => false, // Laravel version and environment
-        'events'          => false, // All events fired
+        'events'          => true, // All events fired
         'default_request' => false, // Regular or special Symfony request logger
         'logs'            => false, // Add the latest log messages
         'files'           => false, // Show the included files
         'config'          => false, // Display config settings
         'cache'           => false, // Display cache events
-        'models'          => false, // Display models
+        'models'          => true, // Display models
     ],
 
     /*

programming_language: PHP
filename: lang.php
change_type: ModificationType.ADD
diff: @@ -0,0 +1,8 @@
+<?php return [
+    'plugin' => [
+        'name'                   => 'Debugbar',
+        'description'            => 'Integrates the PHP Debugbar with October CMS',
+        'access_debugbar'        => 'Access the debugbar',
+        'access_stored_requests' => 'Access stored requests (dangerous)'
+    ],
+];
\ No newline at end of file

programming_language: PHP
filename: InjectDebugbar.php
change_type: ModificationType.ADD
diff: @@ -0,0 +1,58 @@
+<?php namespace RainLab\Debugbar\Middleware;
+
+use Config;
+use Request;
+use Closure;
+use Exception;
+use BackendAuth;
+use Symfony\Component\Debug\Exception\FatalThrowableError;
+use Barryvdh\Debugbar\Middleware\InjectDebugbar as BaseMiddleware;
+
+class InjectDebugbar extends BaseMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  Request  $request
+     * @param  Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        if (!$this->debugbar->isEnabled() || $this->inExceptArray($request)) {
+            return $next($request);
+        }
+
+        $this->debugbar->boot();
+
+        try {
+            /** @var \Illuminate\Http\Response $response */
+            $response = $next($request);
+        } catch (Exception $e) {
+            $response = $this->handleException($request, $e);
+        } catch (Error $error) {
+            $e = new FatalThrowableError($error);
+            $response = $this->handleException($request, $e);
+        }
+
+        $user = BackendAuth::getUser();
+
+        if (!$user || !$user->hasAccess('rainlab.debugbar.access_stored_requests')) {
+            // Disable stored requests
+            // Note: this will completely disable storing requests from any users
+            // without the required permission. If that functionality is desired again
+            // in the future then we can look at overriding the OpenHandler controller
+            $this->debugbar->setStorage(null);
+        }
+
+        // Modify the response to add the Debugbar if allowed
+        if (
+            ($user && $user->hasAccess('rainlab.debugbar.access_debugbar')) ||
+            Config::get('rainlab.debugbar::allow_public_access', false)
+        ) {
+            $this->debugbar->modifyResponse($request, $response);
+        }
+
+        return $response;
+    }
+}

programming_language: PHP
filename: InterpretsAjaxExceptions.php
change_type: ModificationType.RENAME
diff: @@ -1,15 +1,16 @@
 <?php namespace RainLab\Debugbar\Middleware;
 
+use Request;
 use Closure;
+use Response;
+use Exception;
 use Illuminate\Foundation\Application;
-use Illuminate\Contracts\Routing\Middleware;
-use Illuminate\Http\Response;
+use October\Rain\Exception\ErrorHandler;
 use October\Rain\Exception\AjaxException;
 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 
-class Debugbar implements Middleware
+class InterpretsAjaxExceptions
 {
-
     /**
      * The Laravel Application
      *
@@ -39,19 +40,19 @@ class Debugbar implements Middleware
     {
         /** @var \Barryvdh\Debugbar\LaravelDebugbar $debugbar */
         $debugbar = $this->app['debugbar'];
+
         try {
             return $next($request);
-        } catch (\Exception $ex) {
-            if (!\Request::ajax()) {
+        } catch (Exception $ex) {
+            if (!Request::ajax()) {
                 throw $ex;
             }
             $debugbar->addException($ex);
             $message = $ex instanceof AjaxException
-                ? $ex->getContents() : \October\Rain\Exception\ErrorHandler::getDetailedMessage($ex);
+                ? $ex->getContents() : ErrorHandler::getDetailedMessage($ex);
 
-            return \Response::make($message, $this->getStatusCode($ex), $debugbar->getDataAsHeaders());
+            return Response::make($message, $this->getStatusCode($ex), $debugbar->getDataAsHeaders());
         }
-
     }
 
     /**
@@ -63,15 +64,12 @@ class Debugbar implements Middleware
     {
         if ($exception instanceof HttpExceptionInterface) {
             $code = $exception->getStatusCode();
-        }
-        elseif ($exception instanceof AjaxException) {
+        } elseif ($exception instanceof AjaxException) {
             $code = 406;
-        }
-        else {
+        } else {
             $code = 500;
         }
 
         return $code;
     }
-
 }

programming_language: PHP
filename: version.yaml
change_type: ModificationType.MODIFY
diff: @@ -9,4 +9,5 @@
 2.0.0: !!! Upgrade for compatibility with Laravel 5.5 (PHP 7+, October 420+)
 2.0.1: Add config file to prevent exceptions from being thrown (credit alxy)
 3.0.0: Switched vendor to RainLab from Bedard, upgraded for compatibility with Laravel 6.x
-3.0.1: Fixed bug that caused 502 errors on AJAX requests
\ No newline at end of file
+3.0.1: Fixed bug that caused 502 errors on AJAX requests
+3.1.0: Important security update and improved styling.
\ No newline at end of file

programming_language: Markdown