[TASK] Add support for "outdated" extensions 20/21620/2
authorJigal van Hemert <jigal.van.hemert@typo3.org>
Sun, 23 Jun 2013 18:50:20 +0000 (20:50 +0200)
committerJigal van Hemert <jigal.van.hemert@typo3.org>
Mon, 24 Jun 2013 12:24:16 +0000 (14:24 +0200)
Extension Manager displays installed extensions which are marked as
"outdated" with different styling. Reports module also checks for
installed and available "outdated" extensions.

Change-Id: I3050f3f7142e4153954f1b7f76b4bf64a3066223
Resolves: #49350
Releases: 6.2, 6.1, 6.0, 4.7, 4.5
Reviewed-on: https://review.typo3.org/21620
Reviewed-by: Philipp Gampe
Tested-by: Philipp Gampe
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
typo3/sysext/extensionmanager/Classes/Report/ExtensionStatus.php
typo3/sysext/extensionmanager/Resources/Private/Language/locallang.xlf
typo3/sysext/extensionmanager/Resources/Private/Scss/main.scss
typo3/sysext/extensionmanager/Resources/Private/Scss/page/_base.scss
typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html
typo3/sysext/extensionmanager/Resources/Public/Css/main.css

index 027822c..a5f03be 100644 (file)
@@ -85,6 +85,8 @@ class ExtensionStatus implements \TYPO3\CMS\Reports\StatusProviderInterface {
                $extensionStatus = $this->getSecurityStatusOfExtensions();
                $status['extensionsSecurityStatusInstalled'] = $extensionStatus->loaded;
                $status['extensionsSecurityStatusNotInstalled'] = $extensionStatus->existing;
+               $status['extensionsOutdatedStatusInstalled'] = $extensionStatus->loadedoutdated;
+               $status['extensionsOutdatedStatusNotInstalled'] = $extensionStatus->existingoutdated;
 
                return $status;
        }
@@ -133,6 +135,8 @@ class ExtensionStatus implements \TYPO3\CMS\Reports\StatusProviderInterface {
                $extensionInformation = $this->listUtility->getAvailableAndInstalledExtensionsWithAdditionalInformation();
                $loadedInsecure = array();
                $existingInsecure = array();
+               $loadedOutdated = array();
+               $existingOutdated = array();
                foreach ($extensionInformation as $extensionKey => $information) {
                        if (
                                array_key_exists('terObject', $information)
@@ -156,6 +160,21 @@ class ExtensionStatus implements \TYPO3\CMS\Reports\StatusProviderInterface {
                                                        'version' => $terObject->getVersion(),
                                                );
                                        }
+                               } elseif ($insecureStatus === -2) {
+                                       if (
+                                               array_key_exists('installed', $information)
+                                               && $information['installed'] === TRUE
+                                       ) {
+                                               $loadedOutdated[] = array(
+                                                       'extensionKey' => $extensionKey,
+                                                       'version' => $terObject->getVersion(),
+                                               );
+                                       } else {
+                                               $existingOutdated[] = array(
+                                                       'extensionKey' => $extensionKey,
+                                                       'version' => $terObject->getVersion(),
+                                               );
+                                       }
                                }
                        }
                }
@@ -224,6 +243,68 @@ class ExtensionStatus implements \TYPO3\CMS\Reports\StatusProviderInterface {
                        $severity
                );
 
+               if (count($loadedOutdated) === 0) {
+                       $value = $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.loadedOutdatedExtensions.noOutdatedExtensionLoaded.value');
+                       $message = '';
+                       $severity = \TYPO3\CMS\Reports\Status::OK;
+               } else {
+                       $value = sprintf(
+                               $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.value'),
+                               count($loadedOutdated)
+                       );
+                       $extensionList = array();
+                       foreach ($loadedOutdated as $outdatedExtension) {
+                               $extensionList[] = sprintf(
+                                       $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message.extension'),
+                                       $outdatedExtension['extensionKey'],
+                                       $outdatedExtension['version']
+                               );
+                       }
+                       $message = sprintf(
+                               $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message'),
+                               implode('', $extensionList)
+                       );
+                       $severity = \TYPO3\CMS\Reports\Status::WARNING;
+               }
+               $result->loadedoutdated = $this->objectManager->get(
+                       'TYPO3\\CMS\\Reports\\Status',
+                       $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.loadedOutdatedExtensions.title'),
+                       $value,
+                       $message,
+                       $severity
+               );
+
+               if (count($existingOutdated) === 0) {
+                       $value = $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.existingOutdatedExtensions.noOutdatedExtensionExists.value');
+                       $message = '';
+                       $severity = \TYPO3\CMS\Reports\Status::OK;
+               } else {
+                       $value = sprintf(
+                               $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.existingOutdatedExtensions.outdatedExtensionExists.value'),
+                               count($existingOutdated)
+                       );
+                       $extensionList = array();
+                       foreach ($existingOutdated as $outdatedExtension) {
+                               $extensionList[] = sprintf(
+                                       $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.existingOutdatedExtensions.outdatedExtensionExists.message.extension'),
+                                       $outdatedExtension['extensionKey'],
+                                       $outdatedExtension['version']
+                               );
+                       }
+                       $message = sprintf(
+                               $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.existingOutdatedExtensions.outdatedExtensionExists.message'),
+                               implode('', $extensionList)
+                       );
+                       $severity = \TYPO3\CMS\Reports\Status::WARNING;
+               }
+               $result->existingoutdated = $this->objectManager->get(
+                       'TYPO3\\CMS\\Reports\\Status',
+                       $GLOBALS['LANG']->sL('LLL:EXT:extensionmanager/Resources/Private/Language/locallang.xlf:report.status.existingOutdatedExtensions.title'),
+                       $value,
+                       $message,
+                       $severity
+               );
+
                return $result;
        }
 }
index 0773a3e..7dd96bd 100644 (file)
                        <trans-unit id="report.status.existingExtensions.insecureExtensionExists.message.extension" xml:space="preserve">
                                <source>&lt;strong&gt;%1s&lt;/strong&gt; (version %2s)&lt;br&gt;</source>
                        </trans-unit>
+                       <trans-unit id="report.status.loadedOutdatedExtensions.title" xml:space="preserve">
+                               <source>Outdated status of loaded extensions</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.loadedOutdatedExtensions.noOutdatedExtensionLoaded.value" xml:space="preserve">
+                               <source>OK</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.value" xml:space="preserve">
+                               <source>%s outdated extension(s) found</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message" xml:space="preserve">
+                               <source>The following extensions are outdated and may not be compatible with your installation. Please make sure these extensions are compatible and ask the extension author to publish updates:&lt;br&gt;&lt;br&gt;%s</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message.extension" xml:space="preserve">
+                               <source>&lt;strong&gt;%1s&lt;/strong&gt; (version %2s)&lt;br&gt;</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.existingOutdatedExtensions.title" xml:space="preserve">
+                               <source>Outdated status of existing, but not loaded extensions</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.existingOutdatedExtensions.noOutdatedExtensionExists.value" xml:space="preserve">
+                               <source>OK</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.existingOutdatedExtensions.outdatedExtensionExists.value" xml:space="preserve">
+                               <source>%s outdated extension(s) found</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.existingOutdatedExtensions.outdatedExtensionExists.message" xml:space="preserve">
+                               <source>The following extensions were found on your system, but are currently not installed. Please make sure they are compatible with your system before installing them:&lt;br&gt;&lt;br&gt;%s</source>
+                       </trans-unit>
+                       <trans-unit id="report.status.existingOutdatedExtensions.outdatedExtensionExists.message.extension" xml:space="preserve">
+                               <source>&lt;strong&gt;%1s&lt;/strong&gt; (version %2s)&lt;br&gt;</source>
+                       </trans-unit>
                </body>
        </file>
 </xliff>
index 3e69750..977117a 100644 (file)
@@ -17,5 +17,5 @@
 // Appearance of the page
 @import "page/base",
                "page/manage",
-               "page/get"
+               "page/get";
 
index e468f94..ecf52fa 100644 (file)
        color: #ff2262;
 }
 
+.typo3-extension-manager .outdated {
+       color: #0c08ff;
+}
+
 .typo3-extension-list .inactive {
        color: rgb(170, 170, 170);
 }
index c8ace0d..4e53e54 100644 (file)
@@ -38,7 +38,7 @@
                        <f:for each="{extensions}" as="extension" key="extensionKey">
                                <f:if condition="{extension.terObject}">
                                        <f:then>
-                                               <tr id="{extensionKey}" class="{f:if(condition:'{extension.terObject.reviewState} >= 0', then:'', else:'insecure')} {f:if(condition:'{extension.installed}', then: '', else: 'inactive')}">
+                                               <tr id="{extensionKey}" class="{f:if(condition:'{extension.terObject.reviewState} == -1', then:'insecure')}{f:if(condition:'{extension.terObject.reviewState} == -2', then:'outdated')} {f:if(condition:'{extension.installed}', then: '', else: 'inactive')}">
                                        </f:then>
                                        <f:else>
                                                <tr id="{extensionKey}" class="{f:if(condition:'{extension.installed}', then: '', else: 'inactive')}">
index 900b045..3315833 100644 (file)
 /* Layout helpers
 ----------------------------------*/
 .ui-helper-hidden {
-  display: none; }
+  display: none;
+}
 
 .ui-helper-hidden-accessible {
   position: absolute !important;
   clip: rect(1px 1px 1px 1px);
-  clip: rect(1px, 1px, 1px, 1px); }
+  clip: rect(1px, 1px, 1px, 1px);
+}
 
 .ui-helper-reset {
   margin: 0;
   line-height: 1.3;
   text-decoration: none;
   font-size: 100%;
-  list-style: none; }
+  list-style: none;
+}
 
 .ui-helper-clearfix:before, .ui-helper-clearfix:after {
   content: "";
-  display: table; }
+  display: table;
+}
 
 .ui-helper-clearfix:after {
-  clear: both; }
+  clear: both;
+}
 
 .ui-helper-clearfix {
-  zoom: 1; }
+  zoom: 1;
+}
 
 .ui-helper-zfix {
   width: 100%;
   left: 0;
   position: absolute;
   opacity: 0;
-  filter: Alpha(Opacity=0); }
+  filter: Alpha(Opacity=0);
+}
 
 /* Interaction Cues
 ----------------------------------*/
 .ui-state-disabled {
-  cursor: default !important; }
+  cursor: default !important;
+}
 
 /* Icons
 ----------------------------------*/
@@ -66,7 +74,8 @@
   display: block;
   text-indent: -99999px;
   overflow: hidden;
-  background-repeat: no-repeat; }
+  background-repeat: no-repeat;
+}
 
 /* Misc visuals
 ----------------------------------*/
@@ -76,7 +85,8 @@
   top: 0;
   left: 0;
   width: 100%;
-  height: 100%; }
+  height: 100%;
+}
 
 /*
  * jQuery UI CSS Framework 1.8.17
 ----------------------------------*/
 .ui-widget {
   font-family: Verdana,Arial,sans-serif;
-  font-size: 1.4em; }
+  font-size: 1.4em;
+}
 
 .ui-widget .ui-widget {
-  font-size: 1em; }
+  font-size: 1em;
+}
 
 .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
   font-family: Verdana,Arial,sans-serif;
-  font-size: 1em; }
+  font-size: 1em;
+}
 
 .ui-widget-content {
   border: 1px solid #aaaaaa;
   background: white url(../Images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
-  color: #222222; }
+  color: #222222;
+}
 
 .ui-widget-content a {
-  color: #222222; }
+  color: #222222;
+}
 
 .ui-widget-header {
   border: 1px solid #aaa;
   background: #cccccc url(../Images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
   color: #222222;
-  font-weight: bold; }
+  font-weight: bold;
+}
 
 .ui-widget-header a {
-  color: #222222; }
+  color: #222222;
+}
 
 /* Interaction states
 ----------------------------------*/
   border: 1px solid #d3d3d3;
   background: #e6e6e6 url(../Images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
   font-weight: normal;
-  color: #555555; }
+  color: #555555;
+}
 
 .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
   color: #555555;
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
   border: 1px solid #999999;
   background: #f6af23 url(../Images/ui-bg_glass_75_f6af23_1x400.png) 50% 50% repeat-x;
   font-weight: normal;
-  color: #212121; }
+  color: #212121;
+}
 
 .ui-state-hover a, .ui-state-hover a:hover {
   color: #212121;
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
   border: 1px solid #aaaaaa;
   background: white url(../Images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
   font-weight: normal;
-  color: #212121; }
+  color: #212121;
+}
 
 .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
   color: #212121;
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .ui-widget :active {
-  outline: none; }
+  outline: none;
+}
 
 /* Interaction Cues
 ----------------------------------*/
 .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
   border: 1px solid #fcefa1;
   background: #fdd66d url(../Images/ui-bg_highlight-soft_55_fdd66d_1x100.png) 50% top repeat-x;
-  color: #363636; }
+  color: #363636;
+}
 
 .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
-  color: #363636; }
+  color: #363636;
+}
 
 .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
   border: 1px solid #cd0a0a;
   background: #fef1ec url(../Images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x;
-  color: #cd0a0a; }
+  color: #cd0a0a;
+}
 
 .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a {
-  color: #cd0a0a; }
+  color: #cd0a0a;
+}
 
 .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text {
-  color: #cd0a0a; }
+  color: #cd0a0a;
+}
 
 .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary {
-  font-weight: bold; }
+  font-weight: bold;
+}
 
 .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary {
   opacity: .7;
   filter: Alpha(Opacity=70);
-  font-weight: normal; }
+  font-weight: normal;
+}
 
 .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
   opacity: .35;
   filter: Alpha(Opacity=35);
-  background-image: none; }
+  background-image: none;
+}
 
 /* Icons
 ----------------------------------*/
 .ui-icon {
   width: 16px;
   height: 16px;
-  background-image: url(../Images/ui-icons_222222_256x240.png); }
+  background-image: url(../Images/ui-icons_222222_256x240.png);
+}
 
 .ui-widget-content .ui-icon {
-  background-image: url(../Images/ui-icons_222222_256x240.png); }
+  background-image: url(../Images/ui-icons_222222_256x240.png);
+}
 
 .ui-widget-header .ui-icon {
-  background-image: url(../Images/ui-icons_222222_256x240.png); }
+  background-image: url(../Images/ui-icons_222222_256x240.png);
+}
 
 .ui-state-default .ui-icon {
-  background-image: url(../Images/ui-icons_ffffff_256x240.png); }
+  background-image: url(../Images/ui-icons_ffffff_256x240.png);
+}
 
 .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {
-  background-image: url(../Images/ui-icons_454545_256x240.png); }
+  background-image: url(../Images/ui-icons_454545_256x240.png);
+}
 
 .ui-state-active .ui-icon {
-  background-image: url(../Images/ui-icons_454545_256x240.png); }
+  background-image: url(../Images/ui-icons_454545_256x240.png);
+}
 
 .ui-state-highlight .ui-icon {
-  background-image: url(../Images/ui-icons_2e83ff_256x240.png); }
+  background-image: url(../Images/ui-icons_2e83ff_256x240.png);
+}
 
 .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {
-  background-image: url(../Images/ui-icons_cd0a0a_256x240.png); }
+  background-image: url(../Images/ui-icons_cd0a0a_256x240.png);
+}
 
 /* positioning */
 .ui-icon-carat-1-n {
-  background-position: 0 0; }
+  background-position: 0 0;
+}
 
 .ui-icon-carat-1-ne {
-  background-position: -16px 0; }
+  background-position: -16px 0;
+}
 
 .ui-icon-carat-1-e {
-  background-position: -32px 0; }
+  background-position: -32px 0;
+}
 
 .ui-icon-carat-1-se {
-  background-position: -48px 0; }
+  background-position: -48px 0;
+}
 
 .ui-icon-carat-1-s {
-  background-position: -64px 0; }
+  background-position: -64px 0;
+}
 
 .ui-icon-carat-1-sw {
-  background-position: -80px 0; }
+  background-position: -80px 0;
+}
 
 .ui-icon-carat-1-w {
-  background-position: -96px 0; }
+  background-position: -96px 0;
+}
 
 .ui-icon-carat-1-nw {
-  background-position: -112px 0; }
+  background-position: -112px 0;
+}
 
 .ui-icon-carat-2-n-s {
-  background-position: -128px 0; }
+  background-position: -128px 0;
+}
 
 .ui-icon-carat-2-e-w {
-  background-position: -144px 0; }
+  background-position: -144px 0;
+}
 
 .ui-icon-triangle-1-n {
-  background-position: 0 -16px; }
+  background-position: 0 -16px;
+}
 
 .ui-icon-triangle-1-ne {
-  background-position: -16px -16px; }
+  background-position: -16px -16px;
+}
 
 .ui-icon-triangle-1-e {
-  background-position: -32px -16px; }
+  background-position: -32px -16px;
+}
 
 .ui-icon-triangle-1-se {
-  background-position: -48px -16px; }
+  background-position: -48px -16px;
+}
 
 .ui-icon-triangle-1-s {
-  background-position: -64px -16px; }
+  background-position: -64px -16px;
+}
 
 .ui-icon-triangle-1-sw {
-  background-position: -80px -16px; }
+  background-position: -80px -16px;
+}
 
 .ui-icon-triangle-1-w {
-  background-position: -96px -16px; }
+  background-position: -96px -16px;
+}
 
 .ui-icon-triangle-1-nw {
-  background-position: -112px -16px; }
+  background-position: -112px -16px;
+}
 
 .ui-icon-triangle-2-n-s {
-  background-position: -128px -16px; }
+  background-position: -128px -16px;
+}
 
 .ui-icon-triangle-2-e-w {
-  background-position: -144px -16px; }
+  background-position: -144px -16px;
+}
 
 .ui-icon-arrow-1-n {
-  background-position: 0 -32px; }
+  background-position: 0 -32px;
+}
 
 .ui-icon-arrow-1-ne {
-  background-position: -16px -32px; }
+  background-position: -16px -32px;
+}
 
 .ui-icon-arrow-1-e {
-  background-position: -32px -32px; }
+  background-position: -32px -32px;
+}
 
 .ui-icon-arrow-1-se {
-  background-position: -48px -32px; }
+  background-position: -48px -32px;
+}
 
 .ui-icon-arrow-1-s {
-  background-position: -64px -32px; }
+  background-position: -64px -32px;
+}
 
 .ui-icon-arrow-1-sw {
-  background-position: -80px -32px; }
+  background-position: -80px -32px;
+}
 
 .ui-icon-arrow-1-w {
-  background-position: -96px -32px; }
+  background-position: -96px -32px;
+}
 
 .ui-icon-arrow-1-nw {
-  background-position: -112px -32px; }
+  background-position: -112px -32px;
+}
 
 .ui-icon-arrow-2-n-s {
-  background-position: -128px -32px; }
+  background-position: -128px -32px;
+}
 
 .ui-icon-arrow-2-ne-sw {
-  background-position: -144px -32px; }
+  background-position: -144px -32px;
+}
 
 .ui-icon-arrow-2-e-w {
-  background-position: -160px -32px; }
+  background-position: -160px -32px;
+}
 
 .ui-icon-arrow-2-se-nw {
-  background-position: -176px -32px; }
+  background-position: -176px -32px;
+}
 
 .ui-icon-arrowstop-1-n {
-  background-position: -192px -32px; }
+  background-position: -192px -32px;
+}
 
 .ui-icon-arrowstop-1-e {
-  background-position: -208px -32px; }
+  background-position: -208px -32px;
+}
 
 .ui-icon-arrowstop-1-s {
-  background-position: -224px -32px; }
+  background-position: -224px -32px;
+}
 
 .ui-icon-arrowstop-1-w {
-  background-position: -240px -32px; }
+  background-position: -240px -32px;
+}
 
 .ui-icon-arrowthick-1-n {
-  background-position: 0 -48px; }
+  background-position: 0 -48px;
+}
 
 .ui-icon-arrowthick-1-ne {
-  background-position: -16px -48px; }
+  background-position: -16px -48px;
+}
 
 .ui-icon-arrowthick-1-e {
-  background-position: -32px -48px; }
+  background-position: -32px -48px;
+}
 
 .ui-icon-arrowthick-1-se {
-  background-position: -48px -48px; }
+  background-position: -48px -48px;
+}
 
 .ui-icon-arrowthick-1-s {
-  background-position: -64px -48px; }
+  background-position: -64px -48px;
+}
 
 .ui-icon-arrowthick-1-sw {
-  background-position: -80px -48px; }
+  background-position: -80px -48px;
+}
 
 .ui-icon-arrowthick-1-w {
-  background-position: -96px -48px; }
+  background-position: -96px -48px;
+}
 
 .ui-icon-arrowthick-1-nw {
-  background-position: -112px -48px; }
+  background-position: -112px -48px;
+}
 
 .ui-icon-arrowthick-2-n-s {
-  background-position: -128px -48px; }
+  background-position: -128px -48px;
+}
 
 .ui-icon-arrowthick-2-ne-sw {
-  background-position: -144px -48px; }
+  background-position: -144px -48px;
+}
 
 .ui-icon-arrowthick-2-e-w {
-  background-position: -160px -48px; }
+  background-position: -160px -48px;
+}
 
 .ui-icon-arrowthick-2-se-nw {
-  background-position: -176px -48px; }
+  background-position: -176px -48px;
+}
 
 .ui-icon-arrowthickstop-1-n {
-  background-position: -192px -48px; }
+  background-position: -192px -48px;
+}
 
 .ui-icon-arrowthickstop-1-e {
-  background-position: -208px -48px; }
+  background-position: -208px -48px;
+}
 
 .ui-icon-arrowthickstop-1-s {
-  background-position: -224px -48px; }
+  background-position: -224px -48px;
+}
 
 .ui-icon-arrowthickstop-1-w {
-  background-position: -240px -48px; }
+  background-position: -240px -48px;
+}
 
 .ui-icon-arrowreturnthick-1-w {
-  background-position: 0 -64px; }
+  background-position: 0 -64px;
+}
 
 .ui-icon-arrowreturnthick-1-n {
-  background-position: -16px -64px; }
+  background-position: -16px -64px;
+}
 
 .ui-icon-arrowreturnthick-1-e {
-  background-position: -32px -64px; }
+  background-position: -32px -64px;
+}
 
 .ui-icon-arrowreturnthick-1-s {
-  background-position: -48px -64px; }
+  background-position: -48px -64px;
+}
 
 .ui-icon-arrowreturn-1-w {
-  background-position: -64px -64px; }
+  background-position: -64px -64px;
+}
 
 .ui-icon-arrowreturn-1-n {
-  background-position: -80px -64px; }
+  background-position: -80px -64px;
+}
 
 .ui-icon-arrowreturn-1-e {
-  background-position: -96px -64px; }
+  background-position: -96px -64px;
+}
 
 .ui-icon-arrowreturn-1-s {
-  background-position: -112px -64px; }
+  background-position: -112px -64px;
+}
 
 .ui-icon-arrowrefresh-1-w {
-  background-position: -128px -64px; }
+  background-position: -128px -64px;
+}
 
 .ui-icon-arrowrefresh-1-n {
-  background-position: -144px -64px; }
+  background-position: -144px -64px;
+}
 
 .ui-icon-arrowrefresh-1-e {
-  background-position: -160px -64px; }
+  background-position: -160px -64px;
+}
 
 .ui-icon-arrowrefresh-1-s {
-  background-position: -176px -64px; }
+  background-position: -176px -64px;
+}
 
 .ui-icon-arrow-4 {
-  background-position: 0 -80px; }
+  background-position: 0 -80px;
+}
 
 .ui-icon-arrow-4-diag {
-  background-position: -16px -80px; }
+  background-position: -16px -80px;
+}
 
 .ui-icon-extlink {
-  background-position: -32px -80px; }
+  background-position: -32px -80px;
+}
 
 .ui-icon-newwin {
-  background-position: -48px -80px; }
+  background-position: -48px -80px;
+}
 
 .ui-icon-refresh {
-  background-position: -64px -80px; }
+  background-position: -64px -80px;
+}
 
 .ui-icon-shuffle {
-  background-position: -80px -80px; }
+  background-position: -80px -80px;
+}
 
 .ui-icon-transfer-e-w {
-  background-position: -96px -80px; }
+  background-position: -96px -80px;
+}
 
 .ui-icon-transferthick-e-w {
-  background-position: -112px -80px; }
+  background-position: -112px -80px;
+}
 
 .ui-icon-folder-collapsed {
-  background-position: 0 -96px; }
+  background-position: 0 -96px;
+}
 
 .ui-icon-folder-open {
-  background-position: -16px -96px; }
+  background-position: -16px -96px;
+}
 
 .ui-icon-document {
-  background-position: -32px -96px; }
+  background-position: -32px -96px;
+}
 
 .ui-icon-document-b {
-  background-position: -48px -96px; }
+  background-position: -48px -96px;
+}
 
 .ui-icon-note {
-  background-position: -64px -96px; }
+  background-position: -64px -96px;
+}
 
 .ui-icon-mail-closed {
-  background-position: -80px -96px; }
+  background-position: -80px -96px;
+}
 
 .ui-icon-mail-open {
-  background-position: -96px -96px; }
+  background-position: -96px -96px;
+}
 
 .ui-icon-suitcase {
-  background-position: -112px -96px; }
+  background-position: -112px -96px;
+}
 
 .ui-icon-comment {
-  background-position: -128px -96px; }
+  background-position: -128px -96px;
+}
 
 .ui-icon-person {
-  background-position: -144px -96px; }
+  background-position: -144px -96px;
+}
 
 .ui-icon-print {
-  background-position: -160px -96px; }
+  background-position: -160px -96px;
+}
 
 .ui-icon-trash {
-  background-position: -176px -96px; }
+  background-position: -176px -96px;
+}
 
 .ui-icon-locked {
-  background-position: -192px -96px; }
+  background-position: -192px -96px;
+}
 
 .ui-icon-unlocked {
-  background-position: -208px -96px; }
+  background-position: -208px -96px;
+}
 
 .ui-icon-bookmark {
-  background-position: -224px -96px; }
+  background-position: -224px -96px;
+}
 
 .ui-icon-tag {
-  background-position: -240px -96px; }
+  background-position: -240px -96px;
+}
 
 .ui-icon-home {
-  background-position: 0 -112px; }
+  background-position: 0 -112px;
+}
 
 .ui-icon-flag {
-  background-position: -16px -112px; }
+  background-position: -16px -112px;
+}
 
 .ui-icon-calendar {
-  background-position: -32px -112px; }
+  background-position: -32px -112px;
+}
 
 .ui-icon-cart {
-  background-position: -48px -112px; }
+  background-position: -48px -112px;
+}
 
 .ui-icon-pencil {
-  background-position: -64px -112px; }
+  background-position: -64px -112px;
+}
 
 .ui-icon-clock {
-  background-position: -80px -112px; }
+  background-position: -80px -112px;
+}
 
 .ui-icon-disk {
-  background-position: -96px -112px; }
+  background-position: -96px -112px;
+}
 
 .ui-icon-calculator {
-  background-position: -112px -112px; }
+  background-position: -112px -112px;
+}
 
 .ui-icon-zoomin {
-  background-position: -128px -112px; }
+  background-position: -128px -112px;
+}
 
 .ui-icon-zoomout {
-  background-position: -144px -112px; }
+  background-position: -144px -112px;
+}
 
 .ui-icon-search {
-  background-position: -160px -112px; }
+  background-position: -160px -112px;
+}
 
 .ui-icon-wrench {
-  background-position: -176px -112px; }
+  background-position: -176px -112px;
+}
 
 .ui-icon-gear {
-  background-position: -192px -112px; }
+  background-position: -192px -112px;
+}
 
 .ui-icon-heart {
-  background-position: -208px -112px; }
+  background-position: -208px -112px;
+}
 
 .ui-icon-star {
-  background-position: -224px -112px; }
+  background-position: -224px -112px;
+}
 
 .ui-icon-link {
-  background-position: -240px -112px; }
+  background-position: -240px -112px;
+}
 
 .ui-icon-cancel {
-  background-position: 0 -128px; }
+  background-position: 0 -128px;
+}
 
 .ui-icon-plus {
-  background-position: -16px -128px; }
+  background-position: -16px -128px;
+}
 
 .ui-icon-plusthick {
-  background-position: -32px -128px; }
+  background-position: -32px -128px;
+}
 
 .ui-icon-minus {
-  background-position: -48px -128px; }
+  background-position: -48px -128px;
+}
 
 .ui-icon-minusthick {
-  background-position: -64px -128px; }
+  background-position: -64px -128px;
+}
 
 .ui-icon-close {
-  background-position: -80px -128px; }
+  background-position: -80px -128px;
+}
 
 .ui-icon-closethick {
-  background-position: -96px -128px; }
+  background-position: -96px -128px;
+}
 
 .ui-icon-key {
-  background-position: -112px -128px; }
+  background-position: -112px -128px;
+}
 
 .ui-icon-lightbulb {
-  background-position: -128px -128px; }
+  background-position: -128px -128px;
+}
 
 .ui-icon-scissors {
-  background-position: -144px -128px; }
+  background-position: -144px -128px;
+}
 
 .ui-icon-clipboard {
-  background-position: -160px -128px; }
+  background-position: -160px -128px;
+}
 
 .ui-icon-copy {
-  background-position: -176px -128px; }
+  background-position: -176px -128px;
+}
 
 .ui-icon-contact {
-  background-position: -192px -128px; }
+  background-position: -192px -128px;
+}
 
 .ui-icon-image {
-  background-position: -208px -128px; }
+  background-position: -208px -128px;
+}
 
 .ui-icon-video {
-  background-position: -224px -128px; }
+  background-position: -224px -128px;
+}
 
 .ui-icon-script {
-  background-position: -240px -128px; }
+  background-position: -240px -128px;
+}
 
 .ui-icon-alert {
-  background-position: 0 -144px; }
+  background-position: 0 -144px;
+}
 
 .ui-icon-info {
-  background-position: -16px -144px; }
+  background-position: -16px -144px;
+}
 
 .ui-icon-notice {
-  background-position: -32px -144px; }
+  background-position: -32px -144px;
+}
 
 .ui-icon-help {
-  background-position: -48px -144px; }
+  background-position: -48px -144px;
+}
 
 .ui-icon-check {
-  background-position: -64px -144px; }
+  background-position: -64px -144px;
+}
 
 .ui-icon-bullet {
-  background-position: -80px -144px; }
+  background-position: -80px -144px;
+}
 
 .ui-icon-radio-off {
-  background-position: -96px -144px; }
+  background-position: -96px -144px;
+}
 
 .ui-icon-radio-on {
-  background-position: -112px -144px; }
+  background-position: -112px -144px;
+}
 
 .ui-icon-pin-w {
-  background-position: -128px -144px; }
+  background-position: -128px -144px;
+}
 
 .ui-icon-pin-s {
-  background-position: -144px -144px; }
+  background-position: -144px -144px;
+}
 
 .ui-icon-play {
-  background-position: 0 -160px; }
+  background-position: 0 -160px;
+}
 
 .ui-icon-pause {
-  background-position: -16px -160px; }
+  background-position: -16px -160px;
+}
 
 .ui-icon-seek-next {
-  background-position: -32px -160px; }
+  background-position: -32px -160px;
+}
 
 .ui-icon-seek-prev {
-  background-position: -48px -160px; }
+  background-position: -48px -160px;
+}
 
 .ui-icon-seek-end {
-  background-position: -64px -160px; }
+  background-position: -64px -160px;
+}
 
 .ui-icon-seek-start {
-  background-position: -80px -160px; }
+  background-position: -80px -160px;
+}
 
 /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
 .ui-icon-seek-first {
-  background-position: -80px -160px; }
+  background-position: -80px -160px;
+}
 
 .ui-icon-stop {
-  background-position: -96px -160px; }
+  background-position: -96px -160px;
+}
 
 .ui-icon-eject {
-  background-position: -112px -160px; }
+  background-position: -112px -160px;
+}
 
 .ui-icon-volume-off {
-  background-position: -128px -160px; }
+  background-position: -128px -160px;
+}
 
 .ui-icon-volume-on {
-  background-position: -144px -160px; }
+  background-position: -144px -160px;
+}
 
 .ui-icon-power {
-  background-position: 0 -176px; }
+  background-position: 0 -176px;
+}
 
 .ui-icon-signal-diag {
-  background-position: -16px -176px; }
+  background-position: -16px -176px;
+}
 
 .ui-icon-signal {
-  background-position: -32px -176px; }
+  background-position: -32px -176px;
+}
 
 .ui-icon-battery-0 {
-  background-position: -48px -176px; }
+  background-position: -48px -176px;
+}
 
 .ui-icon-battery-1 {
-  background-position: -64px -176px; }
+  background-position: -64px -176px;
+}
 
 .ui-icon-battery-2 {
-  background-position: -80px -176px; }
+  background-position: -80px -176px;
+}
 
 .ui-icon-battery-3 {
-  background-position: -96px -176px; }
+  background-position: -96px -176px;
+}
 
 .ui-icon-circle-plus {
-  background-position: 0 -192px; }
+  background-position: 0 -192px;
+}
 
 .ui-icon-circle-minus {
-  background-position: -16px -192px; }
+  background-position: -16px -192px;
+}
 
 .ui-icon-circle-close {
-  background-position: -32px -192px; }
+  background-position: -32px -192px;
+}
 
 .ui-icon-circle-triangle-e {
-  background-position: -48px -192px; }
+  background-position: -48px -192px;
+}
 
 .ui-icon-circle-triangle-s {
-  background-position: -64px -192px; }
+  background-position: -64px -192px;
+}
 
 .ui-icon-circle-triangle-w {
-  background-position: -80px -192px; }
+  background-position: -80px -192px;
+}
 
 .ui-icon-circle-triangle-n {
-  background-position: -96px -192px; }
+  background-position: -96px -192px;
+}
 
 .ui-icon-circle-arrow-e {
-  background-position: -112px -192px; }
+  background-position: -112px -192px;
+}
 
 .ui-icon-circle-arrow-s {
-  background-position: -128px -192px; }
+  background-position: -128px -192px;
+}
 
 .ui-icon-circle-arrow-w {
-  background-position: -144px -192px; }
+  background-position: -144px -192px;
+}
 
 .ui-icon-circle-arrow-n {
-  background-position: -160px -192px; }
+  background-position: -160px -192px;
+}
 
 .ui-icon-circle-zoomin {
-  background-position: -176px -192px; }
+  background-position: -176px -192px;
+}
 
 .ui-icon-circle-zoomout {
-  background-position: -192px -192px; }
+  background-position: -192px -192px;
+}
 
 .ui-icon-circle-check {
-  background-position: -208px -192px; }
+  background-position: -208px -192px;
+}
 
 .ui-icon-circlesmall-plus {
-  background-position: 0 -208px; }
+  background-position: 0 -208px;
+}
 
 .ui-icon-circlesmall-minus {
-  background-position: -16px -208px; }
+  background-position: -16px -208px;
+}
 
 .ui-icon-circlesmall-close {
-  background-position: -32px -208px; }
+  background-position: -32px -208px;
+}
 
 .ui-icon-squaresmall-plus {
-  background-position: -48px -208px; }
+  background-position: -48px -208px;
+}
 
 .ui-icon-squaresmall-minus {
-  background-position: -64px -208px; }
+  background-position: -64px -208px;
+}
 
 .ui-icon-squaresmall-close {
-  background-position: -80px -208px; }
+  background-position: -80px -208px;
+}
 
 .ui-icon-grip-dotted-vertical {
-  background-position: 0 -224px; }
+  background-position: 0 -224px;
+}
 
 .ui-icon-grip-dotted-horizontal {
-  background-position: -16px -224px; }
+  background-position: -16px -224px;
+}
 
 .ui-icon-grip-solid-vertical {
-  background-position: -32px -224px; }
+  background-position: -32px -224px;
+}
 
 .ui-icon-grip-solid-horizontal {
-  background-position: -48px -224px; }
+  background-position: -48px -224px;
+}
 
 .ui-icon-gripsmall-diagonal-se {
-  background-position: -64px -224px; }
+  background-position: -64px -224px;
+}
 
 .ui-icon-grip-diagonal-se {
-  background-position: -80px -224px; }
+  background-position: -80px -224px;
+}
 
 /* Misc visuals
 ----------------------------------*/
   -moz-border-radius-topleft: 5px;
   -webkit-border-top-left-radius: 5px;
   -khtml-border-top-left-radius: 5px;
-  border-top-left-radius: 5px; }
+  border-top-left-radius: 5px;
+}
 
 .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr {
   -moz-border-radius-topright: 5px;
   -webkit-border-top-right-radius: 5px;
   -khtml-border-top-right-radius: 5px;
-  border-top-right-radius: 5px; }
+  border-top-right-radius: 5px;
+}
 
 .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl {
   -moz-border-radius-bottomleft: 5px;
   -webkit-border-bottom-left-radius: 5px;
   -khtml-border-bottom-left-radius: 5px;
-  border-bottom-left-radius: 5px; }
+  border-bottom-left-radius: 5px;
+}
 
 .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br {
   -moz-border-radius-bottomright: 5px;
   -webkit-border-bottom-right-radius: 5px;
   -khtml-border-bottom-right-radius: 5px;
-  border-bottom-right-radius: 5px; }
+  border-bottom-right-radius: 5px;
+}
 
 /* Overlays */
 .ui-widget-overlay {
   background: #aaaaaa url(../Images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
   opacity: .30;
-  filter: Alpha(Opacity=30); }
+  filter: Alpha(Opacity=30);
+}
 
 .ui-widget-shadow {
   margin: -8px 0 0 -8px;
   -moz-border-radius: 8px;
   -khtml-border-radius: 8px;
   -webkit-border-radius: 8px;
-  border-radius: 8px; }
+  border-radius: 8px;
+}
 
                                                                                                                                                                                                                                                                                         /*
 * jQuery UI Resizable 1.8.17
 * http://docs.jquery.com/UI/Resizable#theming
 */
 .ui-resizable {
-  position: relative; }
+  position: relative;
+}
 
 .ui-resizable-handle {
   position: absolute;
   font-size: 0.1px;
   z-index: 99999;
-  display: block; }
+  display: block;
+}
 
 .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle {
-  display: none; }
+  display: none;
+}
 
 .ui-resizable-n {
   cursor: n-resize;
   height: 7px;
   width: 100%;
   top: -5px;
-  left: 0; }
+  left: 0;
+}
 
 .ui-resizable-s {
   cursor: s-resize;
   height: 7px;
   width: 100%;
   bottom: -5px;
-  left: 0; }
+  left: 0;
+}
 
 .ui-resizable-e {
   cursor: e-resize;
   width: 7px;
   right: -5px;
   top: 0;
-  height: 100%; }
+  height: 100%;
+}
 
 .ui-resizable-w {
   cursor: w-resize;
   width: 7px;
   left: -5px;
   top: 0;
-  height: 100%; }
+  height: 100%;
+}
 
 .ui-resizable-se {
   cursor: se-resize;
   width: 12px;
   height: 12px;
   right: 1px;
-  bottom: 1px; }
+  bottom: 1px;
+}
 
 .ui-resizable-sw {
   cursor: sw-resize;
   width: 9px;
   height: 9px;
   left: -5px;
-  bottom: -5px; }
+  bottom: -5px;
+}
 
 .ui-resizable-nw {
   cursor: nw-resize;
   width: 9px;
   height: 9px;
   left: -5px;
-  top: -5px; }
+  top: -5px;
+}
 
 .ui-resizable-ne {
   cursor: ne-resize;
   width: 9px;
   height: 9px;
   right: -5px;
-  top: -5px; }
+  top: -5px;
+}
 
                                                                                       /*
 * jQuery UI Selectable 1.8.17
 .ui-selectable-helper {
   position: absolute;
   z-index: 100;
-  border: 1px dotted black; }
+  border: 1px dotted black;
+}
 
 /*
  * jQuery UI Accordion 1.8.17
  */
 /* IE/Win - Fix animation bug - #4615 */
 .ui-accordion {
-  width: 100%; }
+  width: 100%;
+}
 
 .ui-accordion .ui-accordion-header {
   cursor: pointer;
   position: relative;
   margin-top: 1px;
-  zoom: 1; }
+  zoom: 1;
+}
 
 .ui-accordion .ui-accordion-li-fix {
-  display: inline; }
+  display: inline;
+}
 
 .ui-accordion .ui-accordion-header-active {
-  border-bottom: 0 !important; }
+  border-bottom: 0 !important;
+}
 
 .ui-accordion .ui-accordion-header a {
   display: block;
   font-size: 1em;
-  padding: .5em .5em .5em .7em; }
+  padding: .5em .5em .5em .7em;
+}
 
 .ui-accordion-icons .ui-accordion-header a {
-  padding-left: 2.2em; }
+  padding-left: 2.2em;
+}
 
 .ui-accordion .ui-accordion-header .ui-icon {
   position: absolute;
   left: .5em;
   top: 50%;
-  margin-top: -8px; }
+  margin-top: -8px;
+}
 
 .ui-accordion .ui-accordion-content {
   padding: 1em 2.2em;
   margin-bottom: 2px;
   overflow: auto;
   display: none;
-  zoom: 1; }
+  zoom: 1;
+}
 
 .ui-accordion .ui-accordion-content-active {
-  display: block; }
+  display: block;
+}
 
 /*
  * jQuery UI Autocomplete 1.8.17
  */
 .ui-autocomplete {
   position: absolute;
-  cursor: default; }
+  cursor: default;
+}
 
 /* workarounds */
 * html .ui-autocomplete {
-  width: 1px; }
+  width: 1px;
+}
 
 /* without this, the menu expands to 100% in IE6 */
 /*
   padding: 2px;
   margin: 0;
   display: block;
-  float: left; }
+  float: left;
+}
 
 .ui-menu .ui-menu {
-  margin-top: -3px; }
+  margin-top: -3px;
+}
 
 .ui-menu .ui-menu-item {
   margin: 0;
   zoom: 1;
   float: left;
   clear: left;
-  width: 100%; }
+  width: 100%;
+}
 
 .ui-menu .ui-menu-item a {
   text-decoration: none;
   display: block;
   padding: .2em .4em;
   line-height: 1.5;
-  zoom: 1; }
+  zoom: 1;
+}
 
 .ui-menu .ui-menu-item a.ui-state-hover,
 .ui-menu .ui-menu-item a.ui-state-active {
   font-weight: normal;
-  margin: -1px; }
+  margin: -1px;
+}
 
 /*
  * jQuery UI Button 1.8.17
   cursor: pointer;
   text-align: center;
   zoom: 1;
-  overflow: visible; }
+  overflow: visible;
+}
 
 /* the overflow property removes extra width in IE */
 .ui-button-icon-only {
-  width: 2.2em; }
+  width: 2.2em;
+}
 
 /* to make room for the icon, a width needs to be set here */
 button.ui-button-icon-only {
-  width: 2.4em; }
+  width: 2.4em;
+}
 
 /* button elements seem to need a little more width */
 .ui-button-icons-only {
-  width: 3.4em; }
+  width: 3.4em;
+}
 
 button.ui-button-icons-only {
-  width: 3.7em; }
+  width: 3.7em;
+}
 
 /*button text element */
 .ui-button .ui-button-text {
   display: block;
-  line-height: 1.4; }
+  line-height: 1.4;
+}
 
 .ui-button-text-only .ui-button-text {
-  padding: .4em 1em; }
+  padding: .4em 1em;
+}
 
 .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text {
   padding: .4em;
-  text-indent: -9999999px; }
+  text-indent: -9999999px;
+}
 
 .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text {
-  padding: .4em 1em .4em 2.1em; }
+  padding: .4em 1em .4em 2.1em;
+}
 
 .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text {
-  padding: .4em 2.1em .4em 1em; }
+  padding: .4em 2.1em .4em 1em;
+}
 
 .ui-button-text-icons .ui-button-text {
   padding-left: 2.1em;
-  padding-right: 2.1em; }
+  padding-right: 2.1em;
+}
 
 /* no icon support for input elements, provide padding by default */
 input.ui-button {
-  padding: .4em 1em; }
+  padding: .4em 1em;
+}
 
 /*button icon element(s) */
 .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon {
   position: absolute;
   top: 50%;
-  margin-top: -8px; }
+  margin-top: -8px;
+}
 
 .ui-button-icon-only .ui-icon {
   left: 50%;
-  margin-left: -8px; }
+  margin-left: -8px;
+}
 
 .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary {
-  left: .5em; }
+  left: .5em;
+}
 
 .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary {
-  right: .5em; }
+  right: .5em;
+}
 
 .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary {
-  right: .5em; }
+  right: .5em;
+}
 
 /*button sets*/
 .ui-buttonset {
-  margin-right: 7px; }
+  margin-right: 7px;
+}
 
 .ui-buttonset .ui-button {
   margin-left: 0;
-  margin-right: -0.3em; }
+  margin-right: -0.3em;
+}
 
 /* workarounds */
 button.ui-button::-moz-focus-inner {
   border: 0;
-  padding: 0; }
+  padding: 0;
+}
 
 /* reset extra padding in Firefox */
 /*
@@ -1093,15 +1361,18 @@ button.ui-button::-moz-focus-inner {
   position: absolute;
   padding: .2em;
   width: 300px;
-  overflow: hidden; }
+  overflow: hidden;
+}
 
 .ui-dialog .ui-dialog-titlebar {
   padding: .4em 1em;
-  position: relative; }
+  position: relative;
+}
 
 .ui-dialog .ui-dialog-title {
   float: left;
-  margin: .1em 16px .1em 0; }
+  margin: .1em 16px .1em 0;
+}
 
 .ui-dialog .ui-dialog-titlebar-close {
   position: absolute;
@@ -1110,14 +1381,17 @@ button.ui-button::-moz-focus-inner {
   width: 19px;
   margin: -10px 0 0 0;
   padding: 1px;
-  height: 18px; }
+  height: 18px;
+}
 
 .ui-dialog .ui-dialog-titlebar-close span {
   display: block;
-  margin: 1px; }
+  margin: 1px;
+}
 
 .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
-  padding: 0; }
+  padding: 0;
+}
 
 .ui-dialog .ui-dialog-content {
   position: relative;
@@ -1125,30 +1399,36 @@ button.ui-button::-moz-focus-inner {
   padding: .5em 1em;
   background: none;
   overflow: auto;
-  zoom: 1; }
+  zoom: 1;
+}
 
 .ui-dialog .ui-dialog-buttonpane {
   text-align: left;
   border-width: 1px 0 0 0;
   background-image: none;
   margin: .5em 0 0 0;
-  padding: .3em 1em .5em .4em; }
+  padding: .3em 1em .5em .4em;
+}
 
 .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-  float: right; }
+  float: right;
+}
 
 .ui-dialog .ui-dialog-buttonpane button {
   margin: .5em .4em .5em 0;
-  cursor: pointer; }
+  cursor: pointer;
+}
 
 .ui-dialog .ui-resizable-se {
   width: 14px;
   height: 14px;
   right: 3px;
-  bottom: 3px; }
+  bottom: 3px;
+}
 
 .ui-draggable .ui-dialog-titlebar {
-  cursor: move; }
+  cursor: move;
+}
 
 /*
  * jQuery UI Slider 1.8.17
@@ -1161,14 +1441,16 @@ button.ui-button::-moz-focus-inner {
  */
 .ui-slider {
   position: relative;
-  text-align: left; }
+  text-align: left;
+}
 
 .ui-slider .ui-slider-handle {
   position: absolute;
   z-index: 2;
   width: 1.2em;
   height: 1.2em;
-  cursor: default; }
+  cursor: default;
+}
 
 .ui-slider .ui-slider-range {
   position: absolute;
@@ -1176,43 +1458,54 @@ button.ui-button::-moz-focus-inner {
   font-size: .7em;
   display: block;
   border: 0;
-  background-position: 0 0; }
+  background-position: 0 0;
+}
 
 .ui-slider-horizontal {
-  height: .8em; }
+  height: .8em;
+}
 
 .ui-slider-horizontal .ui-slider-handle {
   top: -0.3em;
-  margin-left: -0.6em; }
+  margin-left: -0.6em;
+}
 
 .ui-slider-horizontal .ui-slider-range {
   top: 0;
-  height: 100%; }
+  height: 100%;
+}
 
 .ui-slider-horizontal .ui-slider-range-min {
-  left: 0; }
+  left: 0;
+}
 
 .ui-slider-horizontal .ui-slider-range-max {
-  right: 0; }
+  right: 0;
+}
 
 .ui-slider-vertical {
   width: .8em;
-  height: 100px; }
+  height: 100px;
+}
 
 .ui-slider-vertical .ui-slider-handle {
   left: -0.3em;
   margin-left: 0;
-  margin-bottom: -0.6em; }
+  margin-bottom: -0.6em;
+}
 
 .ui-slider-vertical .ui-slider-range {
   left: 0;
-  width: 100%; }
+  width: 100%;
+}
 
 .ui-slider-vertical .ui-slider-range-min {
-  bottom: 0; }
+  bottom: 0;
+}
 
 .ui-slider-vertical .ui-slider-range-max {
-  top: 0; }
+  top: 0;
+}
 
                                                    /*
 * jQuery UI Tabs 1.8.17
@@ -1226,12 +1519,14 @@ button.ui-button::-moz-focus-inner {
 .ui-tabs {
   position: relative;
   padding: .2em;
-  zoom: 1; }
+  zoom: 1;
+}
 
 /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
 .ui-tabs .ui-tabs-nav {
   margin: 0;
-  padding: .2em .2em 0; }
+  padding: .2em .2em 0;
+}
 
 .ui-tabs .ui-tabs-nav li {
   list-style: none;
@@ -1241,32 +1536,39 @@ button.ui-button::-moz-focus-inner {
   margin: 0 .2em 1px 0;
   border-bottom: 0 !important;
   padding: 0;
-  white-space: nowrap; }
+  white-space: nowrap;
+}
 
 .ui-tabs .ui-tabs-nav li a {
   float: left;
   padding: .5em 1em;
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .ui-tabs .ui-tabs-nav li.ui-tabs-selected {
   margin-bottom: 0;
-  padding-bottom: 1px; }
+  padding-bottom: 1px;
+}
 
 .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
-  cursor: text; }
+  cursor: text;
+}
 
 .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
-  cursor: pointer; }
+  cursor: pointer;
+}
 
 /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
 .ui-tabs .ui-tabs-panel {
   display: block;
   border-width: 0;
   padding: 1em 1.4em;
-  background: none; }
+  background: none;
+}
 
 .ui-tabs .ui-tabs-hide {
-  display: none !important; }
+  display: none !important;
+}
 
 /*
  * jQuery UI Datepicker 1.8.17
@@ -1280,32 +1582,40 @@ button.ui-button::-moz-focus-inner {
 .ui-datepicker {
   width: 17em;
   padding: .2em .2em 0;
-  display: none; }
+  display: none;
+}
 
 .ui-datepicker .ui-datepicker-header {
   position: relative;
-  padding: .2em 0; }
+  padding: .2em 0;
+}
 
 .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
   position: absolute;
   top: 2px;
   width: 1.8em;
-  height: 1.8em; }
+  height: 1.8em;
+}
 
 .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover {
-  top: 1px; }
+  top: 1px;
+}
 
 .ui-datepicker .ui-datepicker-prev {
-  left: 2px; }
+  left: 2px;
+}
 
 .ui-datepicker .ui-datepicker-next {
-  right: 2px; }
+  right: 2px;
+}
 
 .ui-datepicker .ui-datepicker-prev-hover {
-  left: 1px; }
+  left: 1px;
+}
 
 .ui-datepicker .ui-datepicker-next-hover {
-  right: 1px; }
+  right: 1px;
+}
 
 .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span {
   display: block;
@@ -1313,45 +1623,54 @@ button.ui-button::-moz-focus-inner {
   left: 50%;
   margin-left: -8px;
   top: 50%;
-  margin-top: -8px; }
+  margin-top: -8px;
+}
 
 .ui-datepicker .ui-datepicker-title {
   margin: 0 2.3em;
   line-height: 1.8em;
-  text-align: center; }
+  text-align: center;
+}
 
 .ui-datepicker .ui-datepicker-title select {
   font-size: 1em;
-  margin: 1px 0; }
+  margin: 1px 0;
+}
 
 .ui-datepicker select.ui-datepicker-month-year {
-  width: 100%; }
+  width: 100%;
+}
 
 .ui-datepicker select.ui-datepicker-month,
 .ui-datepicker select.ui-datepicker-year {
-  width: 49%; }
+  width: 49%;
+}
 
 .ui-datepicker table {
   width: 100%;
   font-size: .9em;
   border-collapse: collapse;
-  margin: 0 0 .4em; }
+  margin: 0 0 .4em;
+}
 
 .ui-datepicker th {
   padding: .7em .3em;
   text-align: center;
   font-weight: bold;
-  border: 0; }
+  border: 0;
+}
 
 .ui-datepicker td {
   border: 0;
-  padding: 1px; }
+  padding: 1px;
+}
 
 .ui-datepicker td span, .ui-datepicker td a {
   display: block;
   padding: .2em;
   text-align: right;
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .ui-datepicker .ui-datepicker-buttonpane {
   background-image: none;
@@ -1359,7 +1678,8 @@ button.ui-button::-moz-focus-inner {
   padding: 0 .2em;
   border-left: 0;
   border-right: 0;
-  border-bottom: 0; }
+  border-bottom: 0;
+}
 
 .ui-datepicker .ui-datepicker-buttonpane button {
   float: right;
@@ -1367,84 +1687,107 @@ button.ui-button::-moz-focus-inner {
   cursor: pointer;
   padding: .2em .6em .3em .6em;
   width: auto;
-  overflow: visible; }
+  overflow: visible;
+}
 
 .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-  float: left; }
+  float: left;
+}
 
 /* with multiple calendars */
 .ui-datepicker.ui-datepicker-multi {
-  width: auto; }
+  width: auto;
+}
 
 .ui-datepicker-multi .ui-datepicker-group {
-  float: left; }
+  float: left;
+}
 
 .ui-datepicker-multi .ui-datepicker-group table {
   width: 95%;
-  margin: 0 auto .4em; }
+  margin: 0 auto .4em;
+}
 
 .ui-datepicker-multi-2 .ui-datepicker-group {
-  width: 50%; }
+  width: 50%;
+}
 
 .ui-datepicker-multi-3 .ui-datepicker-group {
-  width: 33.3%; }
+  width: 33.3%;
+}
 
 .ui-datepicker-multi-4 .ui-datepicker-group {
-  width: 25%; }
+  width: 25%;
+}
 
 .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header {
-  border-left-width: 0; }
+  border-left-width: 0;
+}
 
 .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-  border-left-width: 0; }
+  border-left-width: 0;
+}
 
 .ui-datepicker-multi .ui-datepicker-buttonpane {
-  clear: left; }
+  clear: left;
+}
 
 .ui-datepicker-row-break {
   clear: both;
   width: 100%;
-  font-size: 0em; }
+  font-size: 0em;
+}
 
 /* RTL support */
 .ui-datepicker-rtl {
-  direction: rtl; }
+  direction: rtl;
+}
 
 .ui-datepicker-rtl .ui-datepicker-prev {
   right: 2px;
-  left: auto; }
+  left: auto;
+}
 
 .ui-datepicker-rtl .ui-datepicker-next {
   left: 2px;
-  right: auto; }
+  right: auto;
+}
 
 .ui-datepicker-rtl .ui-datepicker-prev:hover {
   right: 1px;
-  left: auto; }
+  left: auto;
+}
 
 .ui-datepicker-rtl .ui-datepicker-next:hover {
   left: 1px;
-  right: auto; }
+  right: auto;
+}
 
 .ui-datepicker-rtl .ui-datepicker-buttonpane {
-  clear: right; }
+  clear: right;
+}
 
 .ui-datepicker-rtl .ui-datepicker-buttonpane button {
-  float: left; }
+  float: left;
+}
 
 .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current {
-  float: right; }
+  float: right;
+}
 
 .ui-datepicker-rtl .ui-datepicker-group {
-  float: right; }
+  float: right;
+}
 
 .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header {
   border-right-width: 0;
-  border-left-width: 1px; }
+  border-left-width: 1px;
+}
 
 .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
   border-right-width: 0;
-  border-left-width: 1px; }
+  border-left-width: 1px;
+}
 
 /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
 .ui-datepicker-cover {
@@ -1465,7 +1808,8 @@ button.ui-button::-moz-focus-inner {
   width: 200px;
   /*must have*/
   height: 200px;
-  /*must have*/ }
+  /*must have*/
+}
 
 /*
 * jQuery UI Progressbar 1.8.17
@@ -1479,106 +1823,129 @@ button.ui-button::-moz-focus-inner {
 .ui-progressbar {
   height: 2em;
   text-align: left;
-  overflow: hidden; }
+  overflow: hidden;
+}
 
 .ui-progressbar .ui-progressbar-value {
   margin: -1px;
-  height: 100%; }
+  height: 100%;
+}
 
 #typo3-extension-main-menu .tabs ul,
 #typo3-extension-configuration-forms .tabs ul {
   list-style: none;
   padding: 0;
-  margin-bottom: -1px; }
-  #typo3-extension-main-menu .tabs ul:after,
-  #typo3-extension-configuration-forms .tabs ul:after {
-    display: table;
-    content: "";
-    clear: both; }
-  #typo3-extension-main-menu .tabs ul a,
-  #typo3-extension-configuration-forms .tabs ul a {
-    -webkit-border-radius: 4px 4px 0 0;
-    -moz-border-radius: 4px 4px 0 0;
-    border-radius: 4px 4px 0 0;
-    float: left;
-    height: 15px;
-    background: #dadada;
-    padding: 7px 15px;
-    margin-top: -1px;
-    margin-right: 2px;
-    border: 1px solid #adadad;
-    color: #606060; }
-    #typo3-extension-main-menu .tabs ul a:hover,
-    #typo3-extension-configuration-forms .tabs ul a:hover {
-      background-color: #eee;
-      border-color: #adadad;
-      color: #606060; }
-    #typo3-extension-main-menu .tabs ul a.current,
-    #typo3-extension-configuration-forms .tabs ul a.current {
-      background: #fff;
-      color: #000;
-      border-bottom: 0;
-      padding-top: 8px; }
+  margin-bottom: -1px;
+}
+#typo3-extension-main-menu .tabs ul:after,
+#typo3-extension-configuration-forms .tabs ul:after {
+  display: table;
+  content: "";
+  clear: both;
+}
+#typo3-extension-main-menu .tabs ul a,
+#typo3-extension-configuration-forms .tabs ul a {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+  float: left;
+  height: 15px;
+  background: #dadada;
+  padding: 7px 15px;
+  margin-top: -1px;
+  margin-right: 2px;
+  border: 1px solid #adadad;
+  color: #606060;
+}
+#typo3-extension-main-menu .tabs ul a:hover,
+#typo3-extension-configuration-forms .tabs ul a:hover {
+  background-color: #eee;
+  border-color: #adadad;
+  color: #606060;
+}
+#typo3-extension-main-menu .tabs ul a.current,
+#typo3-extension-configuration-forms .tabs ul a.current {
+  background: #fff;
+  color: #000;
+  border-bottom: 0;
+  padding-top: 8px;
+}
 
 .ui-widget-header {
   background: none;
   border: none;
-  font-weight: normal; }
+  font-weight: normal;
+}
 
 .dataTable {
   border-right: 1px solid #a2aab8;
   border-bottom: 1px solid #a2aab8;
-  border-left: 1px solid #a2aab8; }
+  border-left: 1px solid #a2aab8;
+}
 
 .dataTables_info {
   font-size: 10px;
   color: #444;
-  float: left; }
+  float: left;
+}
 
 .paging_two_button .ui-button {
   float: left;
-  cursor: pointer; }
+  cursor: pointer;
+}
 
 .paging_full_numbers .ui-button {
   padding: 2px 6px;
   margin: 0;
   cursor: pointer;
-  color: #333 !important; }
+  color: #333 !important;
+}
 
 .dataTables_paginate .ui-button {
-  margin-right: -0.1em !important; }
+  margin-right: -0.1em !important;
+}
 
 .paging_full_numbers {
-  float: right; }
+  float: right;
+}
 
 .dataTables_paginate {
-  width: auto; }
+  width: auto;
+}
 
 .typo3-extension-list {
-  width: 100%; }
+  width: 100%;
+}
 
 .typo3-extension-list td {
-  padding: 10px; }
+  padding: 10px;
+}
 
 #typo3-extension-configuration-forms {
   min-width: 400px;
-  max-width: 900px; }
-  #typo3-extension-configuration-forms .category {
-    background-repeat: repeat-x;
-    background-color: #fff;
-    border: 1px solid #adadad;
-    padding: 15px; }
-  #typo3-extension-configuration-forms .group {
-    margin-bottom: 30px; }
-    #typo3-extension-configuration-forms .group label {
-      display: block;
-      padding-bottom: 10px; }
+  max-width: 900px;
+}
+#typo3-extension-configuration-forms .category {
+  background-repeat: repeat-x;
+  background-color: #fff;
+  border: 1px solid #adadad;
+  padding: 15px;
+}
+#typo3-extension-configuration-forms .group {
+  margin-bottom: 30px;
+}
+#typo3-extension-configuration-forms .group label {
+  display: block;
+  padding-bottom: 10px;
+}
 
 #typo3-extension-configuration-forms #typo3-docheader-row2 .back {
-  float: right; }
+  float: right;
+}
 
 #typo3-extension-configuration-forms input.submit {
-  margin-top: 10px; }
+  margin-top: 10px;
+}
 
 #typo3-extension-configuration-forms .error,
 #typo3-extension-configuration-forms .invalid {
@@ -1594,28 +1961,36 @@ button.ui-button::-moz-focus-inner {
   font-size: 11px;
   color: #000;
   padding: 3px 10px;
-  margin-left: -2px; }
+  margin-left: -2px;
+}
 
 .alpha {
-  color: #f14400; }
+  color: #f14400;
+}
 
 .beta {
-  color: #f4bd00; }
+  color: #f4bd00;
+}
 
 .stable {
-  color: #3db900; }
+  color: #3db900;
+}
 
 .experimental {
-  color: #000; }
+  color: #000;
+}
 
 .test {
-  color: #000; }
+  color: #000;
+}
 
 .obsolete {
-  color: #8c8c8c; }
+  color: #8c8c8c;
+}
 
 .excludeFromUpdates {
-  color: #000; }
+  color: #000;
+}
 
 .alpha,
 .beta,
@@ -1625,33 +2000,46 @@ button.ui-button::-moz-focus-inner {
 .obsolete,
 .excludeFromUpdates {
   font-weight: bold;
-  color: #fff; }
+  color: #fff;
+}
 
 .typo3-extension-list td.icons {
-  width: 140px; }
+  width: 140px;
+}
 
 .typo3-extension-list .icons a {
-  display: none; }
+  display: none;
+}
 
 .typo3-extension-list tr:hover .icons a {
-  display: inline; }
+  display: inline;
+}
 
 #typo3-extension-configuration-forms .info {
   font-size: 9px;
   color: #666;
-  font-weight: normal; }
+  font-weight: normal;
+}
 
 .typo3-extension-list tr.installed td {
-  background-color: #c8ffaa; }
+  background-color: #c8ffaa;
+}
 
 .typo3-extension-list tr.available td {
-  background-color: #E1E1aa; }
+  background-color: #E1E1aa;
+}
 
 .typo3-extension-manager .insecure {
-  color: #ff2262; }
+  color: #ff2262;
+}
+
+.typo3-extension-manager .outdated {
+  color: #0c08ff;
+}
 
 .typo3-extension-list .inactive {
-  color: #aaaaaa; }
+  color: #aaaaaa;
+}
 
 .headerTooltip,
 .tooltip {
@@ -1663,210 +2051,278 @@ button.ui-button::-moz-focus-inner {
   border: 1px solid #cc9;
   padding: 3px;
   font-size: 13px;
-  z-index: 1000; }
+  z-index: 1000;
+}
 
 .headerTooltip {
-  width: 150px; }
+  width: 150px;
+}
 
 p {
-  padding-bottom: 20px; }
+  padding-bottom: 20px;
+}
 
 .typo3-extensionmanager-headerRowLeft {
-  display: inline-block; }
-  .typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper {
-    display: inline-block;
-    position: relative; }
-    .typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper input {
-      height: 15px; }
-    .typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper .t3-icon-input-clear {
-      position: absolute;
-      right: 3px;
-      top: 4px; }
+  display: inline-block;
+}
+.typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper {
+  display: inline-block;
+  position: relative;
+}
+.typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper input {
+  height: 15px;
+}
+.typo3-extensionmanager-headerRowLeft .typo3-extensionmanager-searchTerFieldWrapper .t3-icon-input-clear {
+  position: absolute;
+  right: 3px;
+  top: 4px;
+}
 
 .headerRow {
   overflow: auto;
-  width: 100%; }
+  width: 100%;
+}
 
 .typo3-extensionmanager-headerRowLeft {
-  float: left; }
+  float: left;
+}
 
 .typo3-extensionmanager-headerRowRight {
-  float: right; }
+  float: right;
+}
 
 .ui-toolbar {
-  margin-bottom: 5px; }
-  .ui-toolbar .dataTables_filter {
-    float: left; }
+  margin-bottom: 5px;
+}
+.ui-toolbar .dataTables_filter {
+  float: left;
+}
 
 .typo3-extension-list {
-  border-spacing: 0; }
-  .typo3-extension-list thead {
-    background-color: #666; }
-    .typo3-extension-list thead tr {
-      background: none !important; }
-      .typo3-extension-list thead tr:hover {
-        background: none; }
-  .typo3-extension-list th {
-    background: none;
-    border: 0;
-    padding: 8px 10px;
-    min-width: 53px;
-    vertical-align: middle;
-    font-weight: bold;
-    color: #fff;
-    cursor: pointer;
-    white-space: nowrap; }
-    .typo3-extension-list th:hover {
-      background: rgba(200, 200, 200, 0.3); }
-    .typo3-extension-list th .DataTables_sort_icon {
-      display: inline-block;
-      vertical-align: middle;
-      margin-left: 5px; }
-      .typo3-extension-list th .DataTables_sort_icon.ui-icon-carat-2-n-s {
-        background: none; }
-  .typo3-extension-list tr.odd td, .typo3-extension-list tr.even td {
-    background: none; }
-  .typo3-extension-list tr.odd:hover td, .typo3-extension-list tr.even:hover td {
-    background: none; }
-    .typo3-extension-list tr.odd:hover td.alpha, .typo3-extension-list tr.even:hover td.alpha {
-      color: #f14400; }
-    .typo3-extension-list tr.odd:hover td.beta, .typo3-extension-list tr.even:hover td.beta {
-      color: #f4bd00; }
-    .typo3-extension-list tr.odd:hover td.stable, .typo3-extension-list tr.even:hover td.stable {
-      color: #3db900; }
-    .typo3-extension-list tr.odd:hover td.experimental, .typo3-extension-list tr.even:hover td.experimental {
-      color: #000; }
-    .typo3-extension-list tr.odd:hover td.test, .typo3-extension-list tr.even:hover td.test {
-      color: #000; }
-    .typo3-extension-list tr.odd:hover td.obsolete, .typo3-extension-list tr.even:hover td.obsolete {
-      color: #8c8c8c; }
-    .typo3-extension-list tr.odd:hover td.excludeFromUpdates, .typo3-extension-list tr.even:hover td.excludeFromUpdates {
-      color: #000; }
-  .typo3-extension-list tr td {
-    background: none;
-    padding: 8px 10px;
-    vertical-align: middle; }
-    .typo3-extension-list tr td.state {
-      width: 70px; }
-    .typo3-extension-list tr td.alpha {
-      color: #f14400; }
-    .typo3-extension-list tr td.beta {
-      color: #f4bd00; }
-    .typo3-extension-list tr td.stable {
-      color: #3db900; }
-    .typo3-extension-list tr td.experimental {
-      color: #000; }
-    .typo3-extension-list tr td.test {
-      color: #000; }
-    .typo3-extension-list tr td.obsolete {
-      color: #8c8c8c; }
-    .typo3-extension-list tr td.excludeFromUpdates {
-      color: #000; }
-    .typo3-extension-list tr td img {
-      vertical-align: middle;
-      margin-right: 5px; }
-  .typo3-extension-list tr:nth-child(2n) {
-    background: #fff; }
-  .typo3-extension-list tr:nth-child(2n + 1) {
-    background: #f7f7f7; }
-  .typo3-extension-list tr:hover {
-    background: #ececec; }
+  border-spacing: 0;
+}
+.typo3-extension-list thead {
+  background-color: #666;
+}
+.typo3-extension-list thead tr {
+  background: none !important;
+}
+.typo3-extension-list thead tr:hover {
+  background: none;
+}
+.typo3-extension-list th {
+  background: none;
+  border: 0;
+  padding: 8px 10px;
+  min-width: 53px;
+  vertical-align: middle;
+  font-weight: bold;
+  color: #fff;
+  cursor: pointer;
+  white-space: nowrap;
+}
+.typo3-extension-list th:hover {
+  background: rgba(200, 200, 200, 0);
+}
+.typo3-extension-list th .DataTables_sort_icon {
+  display: inline-block;
+  vertical-align: middle;
+  margin-left: 5px;
+}
+.typo3-extension-list th .DataTables_sort_icon.ui-icon-carat-2-n-s {
+  background: none;
+}
+.typo3-extension-list tr.odd td, .typo3-extension-list tr.even td {
+  background: none;
+}
+.typo3-extension-list tr.odd:hover td, .typo3-extension-list tr.even:hover td {
+  background: none;
+}
+.typo3-extension-list tr.odd:hover td.alpha, .typo3-extension-list tr.even:hover td.alpha {
+  color: #f14400;
+}
+.typo3-extension-list tr.odd:hover td.beta, .typo3-extension-list tr.even:hover td.beta {
+  color: #f4bd00;
+}
+.typo3-extension-list tr.odd:hover td.stable, .typo3-extension-list tr.even:hover td.stable {
+  color: #3db900;
+}
+.typo3-extension-list tr.odd:hover td.experimental, .typo3-extension-list tr.even:hover td.experimental {
+  color: #000;
+}
+.typo3-extension-list tr.odd:hover td.test, .typo3-extension-list tr.even:hover td.test {
+  color: #000;
+}
+.typo3-extension-list tr.odd:hover td.obsolete, .typo3-extension-list tr.even:hover td.obsolete {
+  color: #8c8c8c;
+}
+.typo3-extension-list tr.odd:hover td.excludeFromUpdates, .typo3-extension-list tr.even:hover td.excludeFromUpdates {
+  color: #000;
+}
+.typo3-extension-list tr td {
+  background: none;
+  padding: 8px 10px;
+  vertical-align: middle;
+}
+.typo3-extension-list tr td.state {
+  width: 70px;
+}
+.typo3-extension-list tr td.alpha {
+  color: #f14400;
+}
+.typo3-extension-list tr td.beta {
+  color: #f4bd00;
+}
+.typo3-extension-list tr td.stable {
+  color: #3db900;
+}
+.typo3-extension-list tr td.experimental {
+  color: #000;
+}
+.typo3-extension-list tr td.test {
+  color: #000;
+}
+.typo3-extension-list tr td.obsolete {
+  color: #8c8c8c;
+}
+.typo3-extension-list tr td.excludeFromUpdates {
+  color: #000;
+}
+.typo3-extension-list tr td img {
+  vertical-align: middle;
+  margin-right: 5px;
+}
+.typo3-extension-list tr:nth-child(2n) {
+  background: #fff;
+}
+.typo3-extension-list tr:nth-child(2n + 1) {
+  background: #f7f7f7;
+}
+.typo3-extension-list tr:hover {
+  background: #ececec;
+}
 
 .dataTables_info {
-  display: none; }
+  display: none;
+}
 
 .dataTables_paginate {
   float: left;
-  margin: 10px 0 0; }
+  margin: 10px 0 0;
+}
 
 .uploadForm {
   background-color: #ededed;
   border-top: 1px solid #cdcdcd;
   border-bottom: 1px solid #cdcdcd;
   padding: 12px;
-  margin-bottom: 24px; }
-  .uploadForm form .control-group {
-    clear: both;
-    margin-bottom: 5px; }
-  .uploadForm form label {
-    float: left;
-    height: 20px;
-    padding: 4px 0;
-    line-height: 20px;
-    width: 90px; }
-  .uploadForm form .control {
-    min-height: 20px;
-    padding: 4px 0;
-    margin-left: 110px; }
+  margin-bottom: 24px;
+}
+.uploadForm form .control-group {
+  clear: both;
+  margin-bottom: 5px;
+}
+.uploadForm form label {
+  float: left;
+  height: 20px;
+  padding: 4px 0;
+  line-height: 20px;
+  width: 90px;
+}
+.uploadForm form .control {
+  min-height: 20px;
+  padding: 4px 0;
+  margin-left: 110px;
+}
 
 #terTableWrapper {
-  position: relative; }
-  #terTableWrapper .splash-receivedata {
-    display: none;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin: -20px 0 0 -150px; }
-    #terTableWrapper .splash-receivedata a {
-      display: inline-block;
-      width: 200px;
-      vertical-align: top;
-      padding: 3px 20px; }
-    #terTableWrapper .splash-receivedata.is-shown {
-      display: block; }
-  #terTableWrapper .spinner {
-    display: inline-block; }
+  position: relative;
+}
+#terTableWrapper .splash-receivedata {
+  display: none;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin: -20px 0 0 -150px;
+}
+#terTableWrapper .splash-receivedata a {
+  display: inline-block;
+  width: 200px;
+  vertical-align: top;
+  padding: 3px 20px;
+}
+#terTableWrapper .splash-receivedata.is-shown {
+  display: block;
+}
+#terTableWrapper .spinner {
+  display: inline-block;
+}
 
 .time-since-last-update {
   font-weight: bold;
   padding-right: 0.4em;
-  cursor: help; }
+  cursor: help;
+}
 
 .is-loading {
-  opacity: 0; }
+  opacity: 0;
+}
 
 .is-hidden {
-  display: none; }
+  display: none;
+}
 
 .typo3-extension-list .t3-icon,
 .typo3-extension-list .t3-icon:hover {
   border: none;
-  background-color: transparent; }
+  background-color: transparent;
+}
 .typo3-extension-list .author {
-  display: none; }
+  display: none;
+}
 
 .versions-all {
   display: inline-block;
   width: 20px;
   text-indent: -200px;
-  overflow: hidden; }
+  overflow: hidden;
+}
 
 .currentVersionInfo {
-  padding: 0 0 20px 0; }
-  .currentVersionInfo td {
-    padding: 4px 0; }
-  .currentVersionInfo th {
-    font-weight: normal;
-    color: #8c8c8c;
-    padding: 4px 20px 4px 0; }
+  padding: 0 0 20px 0;
+}
+.currentVersionInfo td {
+  padding: 4px 0;
+}
+.currentVersionInfo th {
+  font-weight: normal;
+  color: #8c8c8c;
+  padding: 4px 20px 4px 0;
+}
 
 .currentVersionInfo a {
-  text-decoration: underline; }
+  text-decoration: underline;
+}
 
 span.ter-ext-state {
   padding: 0 0 0 5px;
   font-weight: bold;
-  text-transform: capitalize; }
+  text-transform: capitalize;
+}
 
 span.ter-ext-state-obsolete {
   color: #8c8c8c;
-  font-weight: normal; }
+  font-weight: normal;
+}
 
 span.ter-ext-state-stable {
-  color: #3db900; }
+  color: #3db900;
+}
 
 span.ter-ext-state-beta {
-  color: #f4bd00; }
+  color: #f4bd00;
+}
 
 span.ter-ext-state-alpha {
-  color: #f14400; }
+  color: #f14400;
+}