aboutsummaryrefslogtreecommitdiff
path: root/p
diff options
context:
space:
mode:
authorGravatar Clément <clement@selfhost.fr> 2017-02-15 14:14:03 +0100
committerGravatar Clément <clement@selfhost.fr> 2017-02-15 14:14:03 +0100
commit5a1bb1393b4496eb35a2ffb3cc63d41c9dc1e2e5 (patch)
tree67028e45792c575c25c92616633f64cc7a4a13eb /p
parent7e949d50320317b5c3b5a2da2bdaf324e794b2f7 (diff)
parent5f637bd816b7323885bfe1751a1724ee59a822f6 (diff)
Merge remote-tracking branch 'FreshRSS/master'
Diffstat (limited to 'p')
-rw-r--r--p/.htaccess13
-rw-r--r--p/api/.htaccess4
-rw-r--r--p/api/greader.php848
-rw-r--r--p/api/index.php29
-rw-r--r--p/api/pshb.php143
-rw-r--r--p/ext.php71
-rw-r--r--p/f.php65
-rw-r--r--p/i/.gitignore1
-rwxr-xr-xp/i/index.php22
-rw-r--r--p/i/install.php1082
-rw-r--r--p/index.html20
-rw-r--r--p/scripts/bcrypt.min.js78
-rw-r--r--p/scripts/category.js125
-rw-r--r--p/scripts/global_view.js21
-rw-r--r--p/scripts/install.js73
-rw-r--r--p/scripts/jquery.lazyload.min.js15
-rw-r--r--p/scripts/jquery.min.js8
-rw-r--r--p/scripts/jquery.sticky-kit.min.js9
-rw-r--r--p/scripts/main.js980
-rw-r--r--p/scripts/repartition.js72
-rw-r--r--p/scripts/shortcut.js4
-rw-r--r--p/scripts/stats.js59
-rw-r--r--p/themes/.htaccess21
-rw-r--r--p/themes/BlueLagoon/BlueLagoon.css1205
-rw-r--r--p/themes/BlueLagoon/README.md38
-rw-r--r--p/themes/BlueLagoon/icons/bookmark.svg5
-rw-r--r--p/themes/BlueLagoon/icons/favicon-16-32-48-64.icobin0 -> 1150 bytes
-rw-r--r--p/themes/BlueLagoon/icons/favicon-256.pngbin0 -> 16517 bytes
-rw-r--r--p/themes/BlueLagoon/icons/favicon.svg32
-rw-r--r--p/themes/BlueLagoon/icons/icon.svg34
-rw-r--r--p/themes/BlueLagoon/icons/non-starred.svg5
-rw-r--r--p/themes/BlueLagoon/icons/read.svg4
-rw-r--r--p/themes/BlueLagoon/icons/starred.svg5
-rw-r--r--p/themes/BlueLagoon/icons/unread.svg3
-rw-r--r--p/themes/BlueLagoon/loader.gifbin0 -> 3164 bytes
-rw-r--r--p/themes/BlueLagoon/metadata.json7
-rw-r--r--p/themes/BlueLagoon/template.css695
-rw-r--r--p/themes/BlueLagoon/thumbs/original.pngbin0 -> 153829 bytes
-rw-r--r--p/themes/Dark/dark.css1035
-rw-r--r--p/themes/Dark/freshrss.css927
-rw-r--r--p/themes/Dark/global.css531
-rw-r--r--p/themes/Dark/icons/icon.svg12
-rw-r--r--p/themes/Dark/metadata.json4
-rw-r--r--p/themes/Dark/thumbs/original.pngbin0 -> 123928 bytes
-rw-r--r--p/themes/Flat/flat.css1024
-rw-r--r--p/themes/Flat/freshrss.css905
-rw-r--r--p/themes/Flat/global.css534
-rw-r--r--p/themes/Flat/icons/icon.svg12
-rw-r--r--p/themes/Flat/icons/key.svg7
-rw-r--r--p/themes/Flat/icons/rss.svg6
-rw-r--r--p/themes/Flat/icons/view-global.svg1
-rw-r--r--p/themes/Flat/icons/view-normal.svg1
-rw-r--r--p/themes/Flat/icons/view-reader.svg1
-rw-r--r--p/themes/Flat/metadata.json4
-rw-r--r--p/themes/Flat/thumbs/original.pngbin0 -> 133420 bytes
-rw-r--r--p/themes/Origine/freshrss.css961
-rw-r--r--p/themes/Origine/global.css547
-rw-r--r--p/themes/Origine/metadata.json4
-rw-r--r--p/themes/Origine/origine.css1071
-rw-r--r--p/themes/Origine/thumbs/original.pngbin0 -> 135886 bytes
-rw-r--r--p/themes/Pafat/README.md4
-rw-r--r--p/themes/Pafat/icons/all.svg7
-rw-r--r--p/themes/Pafat/icons/bookmark.svg5
-rw-r--r--p/themes/Pafat/icons/down.svg5
-rw-r--r--p/themes/Pafat/icons/icon.svg12
-rw-r--r--p/themes/Pafat/icons/link.svg7
-rw-r--r--p/themes/Pafat/icons/login.svg6
-rw-r--r--p/themes/Pafat/icons/logout.svg6
-rw-r--r--p/themes/Pafat/icons/next.svg5
-rw-r--r--p/themes/Pafat/icons/non-starred.svg5
-rw-r--r--p/themes/Pafat/icons/prev.svg5
-rw-r--r--p/themes/Pafat/icons/read.svg5
-rw-r--r--p/themes/Pafat/icons/share.svg8
-rw-r--r--p/themes/Pafat/icons/starred.svg5
-rw-r--r--p/themes/Pafat/icons/tag.svg5
-rw-r--r--p/themes/Pafat/icons/unread.svg6
-rw-r--r--p/themes/Pafat/icons/up.svg5
-rw-r--r--p/themes/Pafat/loader.gifbin0 -> 2608 bytes
-rw-r--r--p/themes/Pafat/metadata.json7
-rw-r--r--p/themes/Pafat/pafat.css1079
-rw-r--r--p/themes/Pafat/thumbs/original.pngbin0 -> 129220 bytes
-rw-r--r--p/themes/Screwdriver/README.md36
-rw-r--r--p/themes/Screwdriver/icons/bookmark.svg5
-rw-r--r--p/themes/Screwdriver/icons/favicon-16-32-48-64.icobin0 -> 1150 bytes
-rw-r--r--p/themes/Screwdriver/icons/favicon-256.pngbin0 -> 15724 bytes
-rw-r--r--p/themes/Screwdriver/icons/favicon.svg34
-rw-r--r--p/themes/Screwdriver/icons/icon.svg34
-rw-r--r--p/themes/Screwdriver/icons/read.svg3
-rw-r--r--p/themes/Screwdriver/icons/starred.svg5
-rw-r--r--p/themes/Screwdriver/icons/unread.svg3
-rw-r--r--p/themes/Screwdriver/loader.gifbin0 -> 4167 bytes
-rw-r--r--p/themes/Screwdriver/metadata.json7
-rw-r--r--p/themes/Screwdriver/screwdriver.css1204
-rw-r--r--p/themes/Screwdriver/thumbs/original.pngbin0 -> 133107 bytes
-rw-r--r--p/themes/base-theme/README.md12
-rw-r--r--p/themes/base-theme/base.css818
-rw-r--r--p/themes/base-theme/loader.gifbin0 -> 4167 bytes
-rw-r--r--p/themes/base-theme/metadata.json7
-rw-r--r--p/themes/base-theme/template.css918
-rw-r--r--p/themes/icons/add.svg35
-rw-r--r--p/themes/icons/all.svg39
-rw-r--r--p/themes/icons/apple-touch-icon.pngbin0 -> 5648 bytes
-rw-r--r--p/themes/icons/bookmark-add.svg6
-rw-r--r--p/themes/icons/bookmark.svg37
-rw-r--r--p/themes/icons/category-white.svg38
-rw-r--r--p/themes/icons/category.svg38
-rw-r--r--p/themes/icons/close.svg35
-rw-r--r--p/themes/icons/configure.svg36
-rw-r--r--p/themes/icons/default_favicon.icobin0 -> 1150 bytes
-rw-r--r--p/themes/icons/down.svg36
-rw-r--r--p/themes/icons/favicon.svg4
-rw-r--r--p/themes/icons/help.svg39
-rw-r--r--p/themes/icons/icon.svg3
-rw-r--r--p/themes/icons/import.svg1
-rw-r--r--p/themes/icons/key.svg7
-rw-r--r--p/themes/icons/link.svg40
-rw-r--r--p/themes/icons/login.svg39
-rw-r--r--p/themes/icons/logout.svg39
-rw-r--r--p/themes/icons/next.svg36
-rw-r--r--p/themes/icons/non-starred.svg37
-rw-r--r--p/themes/icons/prev.svg36
-rw-r--r--p/themes/icons/read.svg36
-rw-r--r--p/themes/icons/refresh.svg36
-rw-r--r--p/themes/icons/rss.svg38
-rw-r--r--p/themes/icons/search.svg38
-rw-r--r--p/themes/icons/share.svg42
-rw-r--r--p/themes/icons/starred.svg37
-rw-r--r--p/themes/icons/stats.svg6
-rw-r--r--p/themes/icons/tag.svg139
-rw-r--r--p/themes/icons/unread.svg36
-rw-r--r--p/themes/icons/up.svg36
-rw-r--r--p/themes/icons/view-global.svg1
-rw-r--r--p/themes/icons/view-normal.svg1
-rw-r--r--p/themes/icons/view-reader.svg1
-rw-r--r--p/themes/index.html13
-rw-r--r--p/themes/p.css17
136 files changed, 11922 insertions, 6792 deletions
diff --git a/p/.htaccess b/p/.htaccess
index 2b1e27a88..4321c82d7 100644
--- a/p/.htaccess
+++ b/p/.htaccess
@@ -6,13 +6,8 @@ FileETag None
AddDefaultCharset UTF-8
<IfModule mod_mime.c>
- AddType application/json .map
- AddType application/font-woff .woff
-
- AddCharset UTF-8 .css
AddCharset UTF-8 .html
AddCharset UTF-8 .js
- AddCharset UTF-8 .svg
</IfModule>
<IfModule mod_deflate.c>
@@ -21,15 +16,9 @@ AddDefaultCharset UTF-8
<IfModule mod_expires.c>
ExpiresActive on
- ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
- ExpiresByType application/json "access plus 1 month"
ExpiresByType application/xhtml+xml "access plus 1 month"
- ExpiresByType image/gif "access plus 1 month"
- ExpiresByType image/png "access plus 1 month"
- ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
- ExpiresByType text/css "access plus 1 month"
ExpiresByType text/html "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
<FilesMatch "\.php$">
@@ -38,7 +27,7 @@ AddDefaultCharset UTF-8
</IfModule>
<IfModule mod_headers.c>
- <FilesMatch "\.(css|html|js|ico|gif|png|woff)$">
+ <FilesMatch "\.(css|gif|html|ico|js|png|svg|woff)$">
Header merge Cache-Control "public"
</FilesMatch>
</IfModule>
diff --git a/p/api/.htaccess b/p/api/.htaccess
new file mode 100644
index 000000000..41b653d96
--- /dev/null
+++ b/p/api/.htaccess
@@ -0,0 +1,4 @@
+<IfModule mod_rewrite.c>
+ RewriteEngine on
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+</IfModule>
diff --git a/p/api/greader.php b/p/api/greader.php
new file mode 100644
index 000000000..4965ffd3b
--- /dev/null
+++ b/p/api/greader.php
@@ -0,0 +1,848 @@
+<?php
+/**
+== Description ==
+Server-side API compatible with Google Reader API layer 2
+ for the FreshRSS project http://freshrss.org
+
+== Credits ==
+* 2014-03: Released by Alexandre Alapetite http://alexandre.alapetite.fr
+ under GNU AGPL 3 license http://www.gnu.org/licenses/agpl-3.0.html
+
+== Documentation ==
+* http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
+* http://web.archive.org/web/20130718025427/http://undoc.in/
+* http://ranchero.com/downloads/GoogleReaderAPI-2009.pdf
+* http://code.google.com/p/google-reader-api/w/list
+* http://blog.martindoms.com/2009/10/16/using-the-google-reader-api-part-2/
+* https://github.com/noinnion/newsplus/blob/master/extensions/GoogleReaderCloneExtension/src/com/noinnion/android/newsplus/extension/google_reader/GoogleReaderClient.java
+* https://github.com/ericmann/gReader-Library/blob/master/greader.class.php
+* https://github.com/devongovett/reader
+* https://github.com/theoldreader/api
+*/
+
+require('../../constants.php');
+require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader
+
+$ORIGINAL_INPUT = file_get_contents('php://input', false, null, -1, 1048576);
+
+if (PHP_INT_SIZE < 8) { //32-bit
+ function dec2hex($dec) {
+ return str_pad(gmp_strval(gmp_init($dec, 10), 16), 16, '0', STR_PAD_LEFT);
+ }
+ function hex2dec($hex) {
+ return gmp_strval(gmp_init($hex, 16), 10);
+ }
+} else { //64-bit
+ function dec2hex($dec) { //http://code.google.com/p/google-reader-api/wiki/ItemId
+ return str_pad(dechex($dec), 16, '0', STR_PAD_LEFT);
+ }
+ function hex2dec($hex) {
+ return hexdec($hex);
+ }
+}
+
+function headerVariable($headerName, $varName) {
+ $header = '';
+ $upName = 'HTTP_' . strtoupper($headerName);
+ if (isset($_SERVER[$upName])) {
+ $header = $_SERVER[$upName];
+ } elseif (isset($_SERVER['REDIRECT_' . $upName])) {
+ $header = $_SERVER['REDIRECT_' . $upName];
+ } elseif (function_exists('getallheaders')) {
+ $ALL_HEADERS = getallheaders();
+ if (isset($ALL_HEADERS[$headerName])) {
+ $header = $ALL_HEADERS[$headerName];
+ }
+ }
+ parse_str($header, $pairs);
+ return isset($pairs[$varName]) ? $pairs[$varName] : null;
+}
+
+function multiplePosts($name) { //https://bugs.php.net/bug.php?id=51633
+ global $ORIGINAL_INPUT;
+ $inputs = explode('&', $ORIGINAL_INPUT);
+ $result = array();
+ $prefix = $name . '=';
+ $prefixLength = strlen($prefix);
+ foreach ($inputs as $input) {
+ if (strpos($input, $prefix) === 0) {
+ $result[] = urldecode(substr($input, $prefixLength));
+ }
+ }
+ return $result;
+}
+
+class MyPDO extends Minz_ModelPdo {
+ function prepare($sql) {
+ return $this->bd->prepare(str_replace('%_', $this->prefix, $sql));
+ }
+}
+
+function logMe($text) {
+ file_put_contents(join_path(USERS_PATH, '_', 'log_api.txt'), date('c') . "\t" . $text . "\n", FILE_APPEND);
+}
+
+function debugInfo() {
+ if (function_exists('getallheaders')) {
+ $ALL_HEADERS = getallheaders();
+ } else { //nginx http://php.net/getallheaders#84262
+ $ALL_HEADERS = '';
+ foreach ($_SERVER as $name => $value) {
+ if (substr($name, 0, 5) === 'HTTP_') {
+ $ALL_HEADERS[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
+ }
+ }
+ }
+ global $ORIGINAL_INPUT;
+ return print_r(array('date' => date('c'), 'headers' => $ALL_HEADERS, '_SERVER' => $_SERVER, '_GET' => $_GET, '_POST' => $_POST, '_COOKIE' => $_COOKIE, 'INPUT' => $ORIGINAL_INPUT), true);
+}
+
+function badRequest() {
+ logMe("badRequest()");
+ logMe(debugInfo());
+ header('HTTP/1.1 400 Bad Request');
+ header('Content-Type: text/plain; charset=UTF-8');
+ die('Bad Request!');
+}
+
+function unauthorized() {
+ logMe("unauthorized()");
+ logMe(debugInfo());
+ header('HTTP/1.1 401 Unauthorized');
+ header('Content-Type: text/plain; charset=UTF-8');
+ header('Google-Bad-Token: true');
+ die('Unauthorized!');
+}
+
+function notImplemented() {
+ logMe("notImplemented()");
+ logMe(debugInfo());
+ header('HTTP/1.1 501 Not Implemented');
+ header('Content-Type: text/plain; charset=UTF-8');
+ die('Not Implemented!');
+}
+
+function serviceUnavailable() {
+ logMe("serviceUnavailable()");
+ header('HTTP/1.1 503 Service Unavailable');
+ header('Content-Type: text/plain; charset=UTF-8');
+ die('Service Unavailable!');
+}
+
+function checkCompatibility() {
+ logMe("checkCompatibility()");
+ header('Content-Type: text/plain; charset=UTF-8');
+ if (PHP_INT_SIZE < 8 && !function_exists('gmp_init')) {
+ die('FAIL 64-bit or GMP extension!');
+ }
+ if ((!array_key_exists('HTTP_AUTHORIZATION', $_SERVER)) && //Apache mod_rewrite trick should be fine
+ (!array_key_exists('REDIRECT_HTTP_AUTHORIZATION', $_SERVER)) && //Apache mod_rewrite with FCGI
+ (empty($_SERVER['SERVER_SOFTWARE']) || (stripos($_SERVER['SERVER_SOFTWARE'], 'nginx') === false)) && //nginx should be fine
+ (empty($_SERVER['SERVER_SOFTWARE']) || (stripos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') === false)) && //lighttpd should be fine
+ ((!function_exists('getallheaders')) || (stripos(php_sapi_name(), 'cgi') !== false))) { //Main problem is Apache/CGI mode
+ die('FAIL getallheaders! (probably)');
+ }
+ echo 'PASS';
+ exit();
+}
+
+function authorizationToUser() {
+ $headerAuth = headerVariable('Authorization', 'GoogleLogin_auth'); //Input is 'GoogleLogin auth', but PHP replaces spaces by '_' http://php.net/language.variables.external
+ if ($headerAuth != '') {
+ $headerAuthX = explode('/', $headerAuth, 2);
+ if (count($headerAuthX) === 2) {
+ $user = $headerAuthX[0];
+ if (ctype_alnum($user)) {
+ FreshRSS_Context::$user_conf = get_user_configuration($user);
+ if (FreshRSS_Context::$user_conf == null) {
+ Minz_Log::warning('Invalid API user ' . $user . ': configuration cannot be found.');
+ unauthorized();
+ }
+ if ($headerAuthX[1] === sha1(FreshRSS_Context::$system_conf->salt . $user . FreshRSS_Context::$user_conf->apiPasswordHash)) {
+ return $user;
+ } else {
+ logMe('Invalid API authorisation for user ' . $user . ': ' . $headerAuthX[1]);
+ Minz_Log::warning('Invalid API authorisation for user ' . $user . ': ' . $headerAuthX[1]);
+ unauthorized();
+ }
+ } else {
+ badRequest();
+ }
+ }
+ }
+ return '';
+}
+
+function clientLogin($email, $pass) { //http://web.archive.org/web/20130604091042/http://undoc.in/clientLogin.html
+ //logMe('clientLogin(' . $email . ")");
+ if (ctype_alnum($email)) {
+ if (!function_exists('password_verify')) {
+ include_once(LIB_PATH . '/password_compat.php');
+ }
+
+ FreshRSS_Context::$user_conf = get_user_configuration($email);
+ if (FreshRSS_Context::$user_conf == null) {
+ Minz_Log::warning('Invalid API user ' . $email . ': configuration cannot be found.');
+ unauthorized();
+ }
+
+ if (FreshRSS_Context::$user_conf->apiPasswordHash != '' && password_verify($pass, FreshRSS_Context::$user_conf->apiPasswordHash)) {
+ header('Content-Type: text/plain; charset=UTF-8');
+ $auth = $email . '/' . sha1(FreshRSS_Context::$system_conf->salt . $email . FreshRSS_Context::$user_conf->apiPasswordHash);
+ echo 'SID=', $auth, "\n",
+ 'Auth=', $auth, "\n";
+ exit();
+ } else {
+ Minz_Log::warning('Password API mismatch for user ' . $email);
+ unauthorized();
+ }
+ } else {
+ badRequest();
+ }
+ die();
+}
+
+function token($conf) {
+//http://blog.martindoms.com/2009/08/15/using-the-google-reader-api-part-1/
+//https://github.com/ericmann/gReader-Library/blob/master/greader.class.php
+ $user = Minz_Session::param('currentUser', '_');
+ //logMe('token('. $user . ")"); //TODO: Implement real token that expires
+ $token = str_pad(sha1(FreshRSS_Context::$system_conf->salt . $user . $conf->apiPasswordHash), 57, 'Z'); //Must have 57 characters
+ echo $token, "\n";
+ exit();
+}
+
+function checkToken($conf, $token) {
+//http://code.google.com/p/google-reader-api/wiki/ActionToken
+ $user = Minz_Session::param('currentUser', '_');
+ //logMe('checkToken(' . $token . ")");
+ if ($token === str_pad(sha1(FreshRSS_Context::$system_conf->salt . $user . $conf->apiPasswordHash), 57, 'Z')) {
+ return true;
+ }
+ unauthorized();
+}
+
+function userInfo() { //https://github.com/theoldreader/api#user-info
+ //logMe("userInfo()");
+ $user = Minz_Session::param('currentUser', '_');
+ exit(json_encode(array(
+ 'userId' => $user,
+ 'userName' => $user,
+ 'userProfileId' => $user,
+ 'userEmail' => FreshRSS_Context::$user_conf->mail_login,
+ )));
+}
+
+function tagList() {
+ //logMe("tagList()");
+ header('Content-Type: application/json; charset=UTF-8');
+
+ $pdo = new MyPDO();
+ $stm = $pdo->prepare('SELECT c.name FROM `%_category` c');
+ $stm->execute();
+ $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
+
+ $tags = array(
+ array('id' => 'user/-/state/com.google/starred'),
+ //array('id' => 'user/-/state/com.google/broadcast', 'sortid' => '2'),
+ );
+
+ foreach ($res as $cName) {
+ $tags[] = array(
+ 'id' => 'user/-/label/' . $cName,
+ //'sortid' => $cName,
+ );
+ }
+
+ echo json_encode(array('tags' => $tags)), "\n";
+ exit();
+}
+
+function subscriptionList() {
+ //logMe("subscriptionList()");
+ header('Content-Type: application/json; charset=UTF-8');
+
+ $pdo = new MyPDO();
+ $stm = $pdo->prepare('SELECT f.id, f.name, f.url, f.website, c.id as c_id, c.name as c_name FROM `%_feed` f
+ INNER JOIN `%_category` c ON c.id = f.category');
+ $stm->execute();
+ $res = $stm->fetchAll(PDO::FETCH_ASSOC);
+
+ $salt = FreshRSS_Context::$system_conf->salt;
+ $subscriptions = array();
+
+ foreach ($res as $line) {
+ $subscriptions[] = array(
+ 'id' => 'feed/' . $line['id'],
+ 'title' => $line['name'],
+ 'categories' => array(
+ array(
+ 'id' => 'user/-/label/' . $line['c_name'],
+ 'label' => $line['c_name'],
+ ),
+ ),
+ //'sortid' => $line['name'],
+ //'firstitemmsec' => 0,
+ 'url' => $line['url'],
+ 'htmlUrl' => $line['website'],
+ 'iconUrl' => Minz_Url::display('/f.php?' . hash('crc32b', $salt . $line['url']), '', true),
+ );
+ }
+
+ echo json_encode(array('subscriptions' => $subscriptions)), "\n";
+ exit();
+}
+
+function subscriptionEdit($streamNames, $titles, $action, $add = '', $remove = '') {
+ //logMe("subscriptionEdit()");
+ //https://github.com/mihaip/google-reader-api/blob/master/wiki/ApiSubscriptionEdit.wiki
+ switch ($action) {
+ case 'subscribe':
+ case 'unsubscribe':
+ case 'edit':
+ break;
+ default:
+ badRequest();
+ }
+ $addCatId = 0;
+ $categoryDAO = null;
+ if ($add != '' || $remove != '') {
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ }
+ $c_name = '';
+ if ($add != '' && strpos($add, 'user/') === 0) { //user/-/label/Example ; user/username/label/Example
+ if (strpos($add, 'user/-/label/') === 0) {
+ $c_name = substr($add, 13);
+ } else {
+ $user = Minz_Session::param('currentUser', '_');
+ $prefix = 'user/' . $user . '/label/';
+ if (strpos($add, $prefix) === 0) {
+ $c_name = substr($add, strlen($prefix));
+ } else {
+ $c_name = '';
+ }
+ }
+ $cat = $categoryDAO->searchByName($c_name);
+ $addCatId = $cat == null ? 0 : $cat->id();
+ } else if ($remove != '' && strpos($remove, 'user/-/label/')) {
+ $addCatId = 1; //Default category
+ }
+ $feedDAO = FreshRSS_Factory::createFeedDao();
+ for ($i = count($streamNames) - 1; $i >= 0; $i--) {
+ $streamName = $streamNames[$i]; //feed/http://example.net/sample.xml ; feed/338
+ if (strpos($streamName, 'feed/') === 0) {
+ $streamName = substr($streamName, 5);
+ $feedId = 0;
+ if (ctype_digit($streamName)) {
+ if ($action === 'subscribe') {
+ continue;
+ }
+ $feedId = $streamName;
+ } else {
+ $feed = $feedDAO->searchByUrl($streamName);
+ $feedId = $feed == null ? -1 : $feed->id();
+ }
+ $title = isset($titles[$i]) ? $titles[$i] : '';
+ switch ($action) {
+ case 'subscribe':
+ if ($feedId <= 0) {
+ $http_auth = ''; //TODO
+ try {
+ $feed = FreshRSS_feed_Controller::addFeed($streamName, $title, $addCatId, $c_name, $http_auth);
+ continue;
+ } catch (Exception $e) {
+ logMe("subscriptionEdit error subscribe: " . $e->getMessage());
+ }
+ }
+ badRequest();
+ break;
+ case 'unsubscribe':
+ if (!($feedId > 0 && FreshRSS_feed_Controller::deleteFeed($feedId))) {
+ badRequest();
+ }
+ break;
+ case 'edit':
+ if ($feedId > 0) {
+ if ($addCatId > 0 || $c_name != '') {
+ FreshRSS_feed_Controller::moveFeed($feedId, $addCatId, $c_name);
+ }
+ if ($title != '') {
+ FreshRSS_feed_Controller::renameFeed($feedId, $title);
+ }
+ } else {
+ badRequest();
+ }
+ break;
+ }
+ }
+ }
+ exit('OK');
+}
+
+function quickadd($url) {
+ //logMe("quickadd($url)");
+ try {
+ $feed = FreshRSS_feed_Controller::addFeed($url);
+ exit(json_encode(array(
+ 'numResults' => 1,
+ 'streamId' => $feed->id(),
+ )));
+ } catch (Exception $e) {
+ logMe("subscriptionEdit error subscribe: " . $e->getMessage());
+ die(json_encode(array(
+ 'numResults' => 0,
+ 'error' => $e->getMessage(),
+ )));
+ }
+}
+
+function unreadCount() { //http://blog.martindoms.com/2009/10/16/using-the-google-reader-api-part-2/#unread-count
+ //logMe("unreadCount()");
+ header('Content-Type: application/json; charset=UTF-8');
+
+ $totalUnreads = 0;
+ $totalLastUpdate = 0;
+
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ foreach ($categoryDAO->listCategories(true, true) as $cat) {
+ $catLastUpdate = 0;
+ foreach ($cat->feeds() as $feed) {
+ $lastUpdate = $feed->lastUpdate();
+ $unreadcounts[] = array(
+ 'id' => 'feed/' . $feed->id(),
+ 'count' => $feed->nbNotRead(),
+ 'newestItemTimestampUsec' => $lastUpdate . '000000',
+ );
+ if ($catLastUpdate < $lastUpdate) {
+ $catLastUpdate = $lastUpdate;
+ }
+ }
+ $unreadcounts[] = array(
+ 'id' => 'user/-/label/' . $cat->name(),
+ 'count' => $cat->nbNotRead(),
+ 'newestItemTimestampUsec' => $catLastUpdate . '000000',
+ );
+ $totalUnreads += $cat->nbNotRead();
+ if ($totalLastUpdate < $catLastUpdate) {
+ $totalLastUpdate = $catLastUpdate;
+ }
+ }
+
+ $unreadcounts[] = array(
+ 'id' => 'user/-/state/com.google/reading-list',
+ 'count' => $totalUnreads,
+ 'newestItemTimestampUsec' => $totalLastUpdate . '000000',
+ );
+
+ echo json_encode(array(
+ 'max' => $totalUnreads,
+ 'unreadcounts' => $unreadcounts,
+ )), "\n";
+ exit();
+}
+
+function streamContents($path, $include_target, $start_time, $count, $order, $exclude_target, $continuation) {
+//http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
+//http://blog.martindoms.com/2009/10/16/using-the-google-reader-api-part-2/#feed
+ //logMe("streamContents($path, $include_target, $start_time, $count, $order, $exclude_target, $continuation)");
+ header('Content-Type: application/json; charset=UTF-8');
+
+ $feedDAO = FreshRSS_Factory::createFeedDao();
+ $arrayFeedCategoryNames = $feedDAO->arrayFeedCategoryNames();
+
+ switch ($path) {
+ case 'reading-list':
+ $type = 'A';
+ break;
+ case 'starred':
+ $type = 's';
+ break;
+ case 'feed':
+ $type = 'f';
+ break;
+ case 'label':
+ $type = 'c';
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ $cat = $categoryDAO->searchByName($include_target);
+ $include_target = $cat == null ? -1 : $cat->id();
+ break;
+ default:
+ $type = 'A';
+ break;
+ }
+
+ switch ($exclude_target) {
+ case 'user/-/state/com.google/read':
+ $state = FreshRSS_Entry::STATE_NOT_READ;
+ break;
+ case 'user/-/state/com.google/unread':
+ $state = FreshRSS_Entry::STATE_READ;
+ break;
+ default:
+ $state = FreshRSS_Entry::STATE_ALL;
+ break;
+ }
+
+ if (!empty($continuation)) {
+ $count++; //Shift by one element
+ }
+
+ $entryDAO = FreshRSS_Factory::createEntryDao();
+ $entries = $entryDAO->listWhere($type, $include_target, $state, $order === 'o' ? 'ASC' : 'DESC', $count, $continuation, new FreshRSS_Search(''), $start_time);
+
+ $items = array();
+ foreach ($entries as $entry) {
+ $f_id = $entry->feed();
+ if (isset($arrayFeedCategoryNames[$f_id])) {
+ $c_name = $arrayFeedCategoryNames[$f_id]['c_name'];
+ $f_name = $arrayFeedCategoryNames[$f_id]['name'];
+ } else {
+ $c_name = '_';
+ $f_name = '_';
+ }
+ $item = array(
+ 'id' => /*'tag:google.com,2005:reader/item/' .*/ dec2hex($entry->id()), //64-bit hexa http://code.google.com/p/google-reader-api/wiki/ItemId
+ 'crawlTimeMsec' => substr($entry->id(), 0, -3),
+ 'timestampUsec' => $entry->id(), //EasyRSS
+ 'published' => $entry->date(true),
+ 'title' => $entry->title(),
+ 'summary' => array('content' => $entry->content()),
+ 'alternate' => array(
+ array('href' => $entry->link()),
+ ),
+ 'categories' => array(
+ 'user/-/state/com.google/reading-list',
+ 'user/-/label/' . $c_name,
+ ),
+ 'origin' => array(
+ 'streamId' => 'feed/' . $f_id,
+ 'title' => $f_name, //EasyRSS
+ //'htmlUrl' => $line['f_website'],
+ ),
+ );
+ if ($entry->author() != '') {
+ $item['author'] = $entry->author();
+ }
+ if ($entry->isRead()) {
+ $item['categories'][] = 'user/-/state/com.google/read';
+ }
+ if ($entry->isFavorite()) {
+ $item['categories'][] = 'user/-/state/com.google/starred';
+ }
+ $items[] = $item;
+ }
+
+ if (!empty($continuation)) {
+ array_shift($items); //Discard first element that was already sent in the previous response
+ }
+
+ $response = array(
+ 'id' => 'user/-/state/com.google/reading-list',
+ 'updated' => time(),
+ 'items' => $items,
+ );
+ if ((count($entries) >= $count) && (!empty($entry))) {
+ $response['continuation'] = $entry->id();
+ }
+
+ echo json_encode($response), "\n";
+ exit();
+}
+
+function streamContentsItemsIds($streamId, $start_time, $count, $order, $exclude_target) {
+//http://code.google.com/p/google-reader-api/wiki/ApiStreamItemsIds
+//http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
+//http://blog.martindoms.com/2009/10/16/using-the-google-reader-api-part-2/#feed
+ //logMe("streamContentsItemsIds($streamId, $start_time, $count, $order, $exclude_target)");
+
+ $type = 'A';
+ $id = '';
+ if ($streamId === 'user/-/state/com.google/reading-list') {
+ $type = 'A';
+ } elseif ('user/-/state/com.google/starred') {
+ $type = 's';
+ } elseif (strpos($streamId, 'feed/') === 0) {
+ $type = 'f';
+ $id = basename($streamId);
+ } elseif (strpos($streamId, 'user/-/label/') === 0) {
+ $type = 'c';
+ $c_name = substr($streamId, 13);
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ $cat = $categoryDAO->searchByName($c_name);
+ $id = $cat == null ? -1 : $cat->id();
+ }
+
+ switch ($exclude_target) {
+ case 'user/-/state/com.google/read':
+ $state = FreshRSS_Entry::STATE_NOT_READ;
+ break;
+ default:
+ $state = FreshRSS_Entry::STATE_ALL;
+ break;
+ }
+
+ $entryDAO = FreshRSS_Factory::createEntryDao();
+ $ids = $entryDAO->listIdsWhere($type, $id, $state, $order === 'o' ? 'ASC' : 'DESC', $count, '', new FreshRSS_Search(''), $start_time);
+
+ if (empty($ids)) { //For News+ bug https://github.com/noinnion/newsplus/issues/84#issuecomment-57834632
+ $ids[] = 0;
+ }
+ $itemRefs = array();
+ foreach ($ids as $id) {
+ $itemRefs[] = array(
+ 'id' => $id, //64-bit decimal
+ );
+ }
+
+ echo json_encode(array(
+ 'itemRefs' => $itemRefs,
+ )), "\n";
+ exit();
+}
+
+function editTag($e_ids, $a, $r) {
+ //logMe("editTag()");
+
+ foreach ($e_ids as $i => $e_id) {
+ $e_ids[$i] = hex2dec(basename($e_id)); //Strip prefix 'tag:google.com,2005:reader/item/'
+ }
+
+ $entryDAO = FreshRSS_Factory::createEntryDao();
+
+ switch ($a) {
+ case 'user/-/state/com.google/read':
+ $entryDAO->markRead($e_ids, true);
+ break;
+ case 'user/-/state/com.google/starred':
+ $entryDAO->markFavorite($e_ids, true);
+ break;
+ /*case 'user/-/state/com.google/tracking-kept-unread':
+ break;
+ case 'user/-/state/com.google/like':
+ break;
+ case 'user/-/state/com.google/broadcast':
+ break;*/
+ }
+ switch ($r) {
+ case 'user/-/state/com.google/read':
+ $entryDAO->markRead($e_ids, false);
+ break;
+ case 'user/-/state/com.google/starred':
+ $entryDAO->markFavorite($e_ids, false);
+ break;
+ }
+
+ exit('OK');
+}
+
+function renameTag($s, $dest) {
+ //logMe("renameTag()");
+ if ($s != '' && strpos($s, 'user/-/label/') === 0 &&
+ $dest != '' && strpos($dest, 'user/-/label/') === 0) {
+ $s = substr($s, 13);
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ $cat = $categoryDAO->searchByName($s);
+ if ($cat != null) {
+ $dest = substr($dest, 13);
+ $categoryDAO->updateCategory($cat->id(), array('name' => $dest));
+ exit('OK');
+ }
+ }
+ badRequest();
+}
+
+function disableTag($s) {
+ //logMe("disableTag($s)");
+ if ($s != '' && strpos($s, 'user/-/label/') === 0) {
+ $s = substr($s, 13);
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ $cat = $categoryDAO->searchByName($s);
+ if ($cat != null) {
+ $feedDAO = FreshRSS_Factory::createFeedDao();
+ $feedDAO->changeCategory($cat->id(), 0);
+ if ($cat->id() > 1) {
+ $categoryDAO->deleteCategory($cat->id());
+ }
+ exit('OK');
+ }
+ }
+ badRequest();
+}
+
+function markAllAsRead($streamId, $olderThanId) {
+ //logMe("markAllAsRead($streamId, $olderThanId)");
+ $entryDAO = FreshRSS_Factory::createEntryDao();
+ if (strpos($streamId, 'feed/') === 0) {
+ $f_id = basename($streamId);
+ $entryDAO->markReadFeed($f_id, $olderThanId);
+ } elseif (strpos($streamId, 'user/-/label/') === 0) {
+ $c_name = substr($streamId, 13);
+ $categoryDAO = new FreshRSS_CategoryDAO();
+ $cat = $categoryDAO->searchByName($c_name);
+ $entryDAO->markReadCat($cat === null ? -1 : $cat->id(), $olderThanId);
+ } elseif ($streamId === 'user/-/state/com.google/reading-list') {
+ $entryDAO->markReadEntries($olderThanId, false, -1);
+ }
+
+ exit('OK');
+}
+
+//logMe('----------------------------------------------------------------');
+//logMe(debugInfo());
+
+$pathInfo = empty($_SERVER['PATH_INFO']) ? '/Error' : urldecode($_SERVER['PATH_INFO']);
+$pathInfos = explode('/', $pathInfo);
+
+Minz_Configuration::register('system',
+ DATA_PATH . '/config.php',
+ DATA_PATH . '/config.default.php');
+FreshRSS_Context::$system_conf = Minz_Configuration::get('system');
+if (!FreshRSS_Context::$system_conf->api_enabled) {
+ serviceUnavailable();
+}
+
+Minz_Session::init('FreshRSS');
+
+$user = authorizationToUser();
+FreshRSS_Context::$user_conf = null;
+if ($user !== '') {
+ FreshRSS_Context::$user_conf = get_user_configuration($user);
+}
+
+//logMe('User => ' . $user);
+
+Minz_Session::_param('currentUser', $user);
+
+if (count($pathInfos) < 3) {
+ badRequest();
+}
+elseif ($pathInfos[1] === 'accounts') {
+ if (($pathInfos[2] === 'ClientLogin') && isset($_REQUEST['Email']) && isset($_REQUEST['Passwd'])) {
+ clientLogin($_REQUEST['Email'], $_REQUEST['Passwd']);
+ }
+}
+elseif ($pathInfos[1] === 'reader' && $pathInfos[2] === 'api' && isset($pathInfos[3]) && $pathInfos[3] === '0' && isset($pathInfos[4])) {
+ if ($user == '') {
+ unauthorized();
+ }
+ $timestamp = isset($_GET['ck']) ? intval($_GET['ck']) : 0; //ck=[unix timestamp] : Use the current Unix time here, helps Google with caching.
+ switch ($pathInfos[4]) {
+ case 'stream':
+ $exclude_target = isset($_GET['xt']) ? $_GET['xt'] : ''; //xt=[exclude target] : Used to exclude certain items from the feed. For example, using xt=user/-/state/com.google/read will exclude items that the current user has marked as read, or xt=feed/[feedurl] will exclude items from a particular feed (obviously not useful in this request, but xt appears in other listing requests).
+ $count = isset($_GET['n']) ? intval($_GET['n']) : 20; //n=[integer] : The maximum number of results to return.
+ $order = isset($_GET['r']) ? $_GET['r'] : 'd'; //r=[d|n|o] : Sort order of item results. d or n gives items in descending date order, o in ascending order.
+ $start_time = isset($_GET['ot']) ? intval($_GET['ot']) : 0; //ot=[unix timestamp] : The time from which you want to retrieve items. Only items that have been crawled by Google Reader after this time will be returned.
+ $continuation = isset($_GET['c']) ? $_GET['c'] : ''; //Continuation token. If a StreamContents response does not represent all items in a timestamp range, it will have a continuation attribute. The same request can be re-issued with the value of that attribute put in this parameter to get more items
+ if (isset($pathInfos[5]) && $pathInfos[5] === 'contents' && isset($pathInfos[6])) {
+ if (isset($pathInfos[7])) {
+ if ($pathInfos[6] === 'feed') {
+ $include_target = $pathInfos[7];
+ StreamContents($pathInfos[6], $include_target, $start_time, $count, $order, $exclude_target, $continuation);
+ } elseif ($pathInfos[6] === 'user' && isset($pathInfos[8]) && isset($pathInfos[9])) {
+ if ($pathInfos[8] === 'state') {
+ if ($pathInfos[9] === 'com.google' && isset($pathInfos[10])) {
+ if ($pathInfos[10] === 'reading-list' || $pathInfos[10] === 'starred') {
+ $include_target = '';
+ streamContents($pathInfos[10], $include_target, $start_time, $count, $order, $exclude_target, $continuation);
+ }
+ }
+ } elseif ($pathInfos[8] === 'label') {
+ $include_target = $pathInfos[9];
+ streamContents($pathInfos[8], $include_target, $start_time, $count, $order, $exclude_target, $continuation);
+ }
+ }
+ } else { //EasyRSS
+ $include_target = '';
+ streamContents('reading-list', $include_target, $start_time, $count, $order, $exclude_target, $continuation);
+ }
+ } elseif ($pathInfos[5] === 'items') {
+ if ($pathInfos[6] === 'ids' && isset($_GET['s'])) {
+ $streamId = $_GET['s']; //StreamId for which to fetch the item IDs. The parameter may be repeated to fetch the item IDs from multiple streams at once (more efficient from a backend perspective than multiple requests).
+ streamContentsItemsIds($streamId, $start_time, $count, $order, $exclude_target);
+ }
+ }
+ break;
+ case 'tag':
+ if (isset($pathInfos[5]) && $pathInfos[5] === 'list') {
+ $output = isset($_GET['output']) ? $_GET['output'] : '';
+ if ($output !== 'json') notImplemented();
+ tagList($output);
+ }
+ break;
+ case 'subscription':
+ if (isset($pathInfos[5])) {
+ switch ($pathInfos[5]) {
+ case 'list':
+ $output = isset($_GET['output']) ? $_GET['output'] : '';
+ if ($output !== 'json') notImplemented();
+ subscriptionList($_GET['output']);
+ break;
+ case 'edit':
+ if (isset($_POST['s']) && isset($_POST['ac'])) {
+ $streamNames = multiplePosts('s'); //StreamId to operate on. The parameter may be repeated to edit multiple subscriptions at once
+ $titles = multiplePosts('t'); //Title to use for the subscription. For the `subscribe` action, if not specified then the feed's current title will be used. Can be used with the `edit` action to rename a subscription
+ $action = $_POST['ac']; //Action to perform on the given StreamId. Possible values are `subscribe`, `unsubscribe` and `edit`
+ $add = isset($_POST['a']) ? $_POST['a'] : ''; //StreamId to add the subscription to (generally a user label)
+ $remove = isset($_POST['r']) ? $_POST['r'] : ''; //StreamId to remove the subscription from (generally a user label)
+ subscriptionEdit($streamNames, $titles, $action, $add, $remove);
+ }
+ break;
+ case 'quickadd': //https://github.com/theoldreader/api
+ if (isset($_GET['quickadd'])) {
+ quickadd($_GET['quickadd']);
+ }
+ break;
+ }
+ }
+ break;
+ case 'unread-count':
+ $output = isset($_GET['output']) ? $_GET['output'] : '';
+ if ($output !== 'json') notImplemented();
+ $all = isset($_GET['all']) ? $_GET['all'] : '';
+ unreadCount($all);
+ break;
+ case 'edit-tag': //http://blog.martindoms.com/2010/01/20/using-the-google-reader-api-part-3/
+ $token = isset($_POST['T']) ? trim($_POST['T']) : '';
+ checkToken(FreshRSS_Context::$user_conf, $token);
+ $a = isset($_POST['a']) ? $_POST['a'] : ''; //Add: user/-/state/com.google/read user/-/state/com.google/starred
+ $r = isset($_POST['r']) ? $_POST['r'] : ''; //Remove: user/-/state/com.google/read user/-/state/com.google/starred
+ $e_ids = multiplePosts('i'); //item IDs
+ editTag($e_ids, $a, $r);
+ break;
+ case 'rename-tag': //https://github.com/theoldreader/api
+ $token = isset($_POST['T']) ? trim($_POST['T']) : '';
+ checkToken(FreshRSS_Context::$user_conf, $token);
+ $s = isset($_POST['s']) ? $_POST['s'] : ''; //user/-/label/Folder
+ $dest = isset($_POST['dest']) ? $_POST['dest'] : ''; //user/-/label/NewFolder
+ renameTag($s, $dest);
+ break;
+ case 'disable-tag': //https://github.com/theoldreader/api
+ $token = isset($_POST['T']) ? trim($_POST['T']) : '';
+ checkToken(FreshRSS_Context::$user_conf, $token);
+ $s_s = multiplePosts('s');
+ foreach ($s_s as $s) {
+ disableTag($s); //user/-/label/Folder
+ }
+ break;
+ case 'mark-all-as-read':
+ $token = isset($_POST['T']) ? trim($_POST['T']) : '';
+ checkToken(FreshRSS_Context::$user_conf, $token);
+ $streamId = $_POST['s']; //StreamId
+ $ts = isset($_POST['ts']) ? $_POST['ts'] : '0'; //Older than timestamp in nanoseconds
+ if (!ctype_digit($ts)) {
+ $ts = '0';
+ }
+ markAllAsRead($streamId, $ts);
+ break;
+ case 'token':
+ token(FreshRSS_Context::$user_conf);
+ break;
+ case 'user-info':
+ userInfo();
+ break;
+ }
+} elseif ($pathInfos[1] === 'check' && $pathInfos[2] === 'compatibility') {
+ checkCompatibility();
+}
+
+badRequest();
diff --git a/p/api/index.php b/p/api/index.php
new file mode 100644
index 000000000..3ab4e02b3
--- /dev/null
+++ b/p/api/index.php
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB">
+<head>
+<meta charset="UTF-8" />
+<title>FreshRSS API</title>
+<meta name="robots" content="noindex" />
+<link rel="start" href="../i/" />
+</head>
+
+<body>
+<h1>FreshRSS API</h1>
+
+<h2>Google Reader compatible API</h2>
+<dl>
+<dt>Your API address:</dt>
+<dd><?php
+require('../../constants.php');
+require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader
+Minz_Configuration::register('system', DATA_PATH . '/config.php', DATA_PATH . '/config.default.php');
+echo Minz_Url::display('/api/greader.php', 'html', true);
+?></dd>
+</dl>
+<ul>
+<li><a href="greader.php/check%2Fcompatibility" rel="nofollow">Check full server configuration</a></li>
+<li><a href="greader.php/check/compatibility" rel="nofollow">Check partial server configuration (without <code>%2F</code> support)</a></li>
+</ul>
+
+</body>
+</html>
diff --git a/p/api/pshb.php b/p/api/pshb.php
new file mode 100644
index 000000000..e9b66b167
--- /dev/null
+++ b/p/api/pshb.php
@@ -0,0 +1,143 @@
+<?php
+require('../../constants.php');
+require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader
+
+define('MAX_PAYLOAD', 3145728);
+
+header('Content-Type: text/plain; charset=UTF-8');
+header('X-Content-Type-Options: nosniff');
+
+function logMe($text) {
+ file_put_contents(USERS_PATH . '/_/log_pshb.txt', date('c') . "\t" . $text . "\n", FILE_APPEND);
+}
+
+$ORIGINAL_INPUT = file_get_contents('php://input', false, null, -1, MAX_PAYLOAD);
+
+//logMe(print_r(array('_SERVER' => $_SERVER, '_GET' => $_GET, '_POST' => $_POST, 'INPUT' => $ORIGINAL_INPUT), true));
+
+$key = isset($_GET['k']) ? substr($_GET['k'], 0, 128) : '';
+if (!ctype_xdigit($key)) {
+ header('HTTP/1.1 422 Unprocessable Entity');
+ die('Invalid feed key format!');
+}
+chdir(PSHB_PATH);
+$canonical64 = @file_get_contents('keys/' . $key . '.txt');
+if ($canonical64 === false) {
+ header('HTTP/1.1 404 Not Found');
+ logMe('Error: Feed key not found!: ' . $key);
+ die('Feed key not found!');
+}
+$canonical64 = trim($canonical64);
+if (!preg_match('/^[A-Za-z0-9_-]+$/D', $canonical64)) {
+ header('HTTP/1.1 500 Internal Server Error');
+ logMe('Error: Invalid key reference!: ' . $canonical64);
+ die('Invalid key reference!');
+}
+$hubFile = @file_get_contents('feeds/' . $canonical64 . '/!hub.json');
+if ($hubFile === false) {
+ header('HTTP/1.1 404 Not Found');
+ //@unlink('keys/' . $key . '.txt');
+ logMe('Error: Feed info not found!: ' . $canonical64);
+ die('Feed info not found!');
+}
+$hubJson = json_decode($hubFile, true);
+if (!$hubJson || empty($hubJson['key']) || $hubJson['key'] !== $key) {
+ header('HTTP/1.1 500 Internal Server Error');
+ logMe('Error: Invalid key cross-check!: ' . $key);
+ die('Invalid key cross-check!');
+}
+chdir('feeds/' . $canonical64);
+$users = glob('*.txt', GLOB_NOSORT);
+if (empty($users)) {
+ header('HTTP/1.1 410 Gone');
+ logMe('Error: Nobody is subscribed to this feed anymore!: ' . $canonical64);
+ die('Nobody is subscribed to this feed anymore!');
+}
+
+if (!empty($_REQUEST['hub_mode']) && $_REQUEST['hub_mode'] === 'subscribe') {
+ $leaseSeconds = empty($_REQUEST['hub_lease_seconds']) ? 0 : intval($_REQUEST['hub_lease_seconds']);
+ if ($leaseSeconds > 60) {
+ $hubJson['lease_end'] = time() + $leaseSeconds;
+ } else {
+ unset($hubJson['lease_end']);
+ }
+ $hubJson['lease_start'] = time();
+ if (!isset($hubJson['error'])) {
+ $hubJson['error'] = true; //Do not assume that PubSubHubbub works until the first successul push
+ }
+ file_put_contents('./!hub.json', json_encode($hubJson));
+ header('Connection: close');
+ exit(isset($_REQUEST['hub_challenge']) ? $_REQUEST['hub_challenge'] : '');
+}
+
+if (!empty($_REQUEST['hub_mode']) && $_REQUEST['hub_mode'] === 'unsubscribe') {
+ if (empty($hubJson['lease_end']) || $hubJson['lease_end'] < time()) {
+ header('Connection: close');
+ exit(isset($_REQUEST['hub_challenge']) ? $_REQUEST['hub_challenge'] : '');
+ } else {
+ header('HTTP/1.1 422 Unprocessable Entity');
+ die('We did not ask to unsubscribe!');
+ }
+}
+
+if ($ORIGINAL_INPUT == '') {
+ header('HTTP/1.1 422 Unprocessable Entity');
+ die('Missing XML payload!');
+}
+
+Minz_Configuration::register('system', DATA_PATH . '/config.php', DATA_PATH . '/config.default.php');
+$system_conf = Minz_Configuration::get('system');
+$system_conf->auth_type = 'none'; // avoid necessity to be logged in (not saved!)
+
+$simplePie = customSimplePie();
+$simplePie->set_raw_data($ORIGINAL_INPUT);
+$simplePie->init();
+unset($ORIGINAL_INPUT);
+
+$links = $simplePie->get_links('self');
+$self = isset($links[0]) ? $links[0] : null;
+
+if ($self !== base64url_decode($canonical64)) {
+ //header('HTTP/1.1 422 Unprocessable Entity');
+ logMe('Warning: Self URL [' . $self . '] does not match registered canonical URL!: ' . base64url_decode($canonical64));
+ //die('Self URL does not match registered canonical URL!');
+ $self = base64url_decode($canonical64);
+}
+
+$nb = 0;
+foreach ($users as $userFilename) {
+ $username = basename($userFilename, '.txt');
+ if (!file_exists(USERS_PATH . '/' . $username . '/config.php')) {
+ break;
+ }
+
+ try {
+ Minz_Session::_param('currentUser', $username);
+ Minz_Configuration::register('user',
+ join_path(USERS_PATH, $username, 'config.php'),
+ join_path(USERS_PATH, '_', 'config.default.php'));
+ new Minz_ModelPdo($username); //TODO: FIXME: Quick-fix while waiting for a better FreshRSS() constructor/init
+ FreshRSS_Context::init();
+ list($updated_feeds, $feed) = FreshRSS_feed_Controller::actualizeFeed(0, $self, false, $simplePie);
+ if ($updated_feeds > 0) {
+ $nb++;
+ }
+ } catch (Exception $e) {
+ logMe('Error: ' . $e->getMessage());
+ }
+}
+
+$simplePie->__destruct();
+unset($simplePie);
+
+if ($nb === 0) {
+ header('HTTP/1.1 410 Gone');
+ logMe('Error: Nobody is subscribed to this feed anymore after all!: ' . $self);
+ die('Nobody is subscribed to this feed anymore after all!');
+} elseif (!empty($hubJson['error'])) {
+ $hubJson['error'] = false;
+ file_put_contents('./!hub.json', json_encode($hubJson));
+}
+
+logMe('PubSubHubbub ' . $self . ' done: ' . $nb);
+exit('Done: ' . $nb . "\n");
diff --git a/p/ext.php b/p/ext.php
new file mode 100644
index 000000000..5c9f9125f
--- /dev/null
+++ b/p/ext.php
@@ -0,0 +1,71 @@
+<?php
+if (!isset($_GET['f']) ||
+ !isset($_GET['t'])) {
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+
+require('../constants.php');
+
+/**
+ * Check if a file can be served by ext.php. A valid file is under a
+ * EXTENSIONS_PATH/extension_name/static/ directory.
+ *
+ * You should sanitize path by using the realpath() function.
+ *
+ * @param $path the path to the file we want to serve.
+ * @return true if it can be served, false else.
+ *
+ */
+function is_valid_path($path) {
+ // It must be under the extension path.
+ $in_ext_path = (substr($path, 0, strlen(EXTENSIONS_PATH)) === EXTENSIONS_PATH);
+ if (!$in_ext_path) {
+ return false;
+ }
+
+ // File to serve must be under a `ext_dir/static/` directory.
+ $path_relative_to_ext = substr($path, strlen(EXTENSIONS_PATH) + 1);
+ $path_splitted = explode('/', $path_relative_to_ext);
+ if (count($path_splitted) < 3 || $path_splitted[1] !== 'static') {
+ return false;
+ }
+
+ return true;
+}
+
+$file_name = urldecode($_GET['f']);
+$file_type = $_GET['t'];
+
+$absolute_filename = realpath(EXTENSIONS_PATH . '/' . $file_name);
+
+if (!is_valid_path($absolute_filename)) {
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+
+switch ($file_type) {
+case 'css':
+ header('Content-Type: text/css; charset=UTF-8');
+ header('Content-Disposition: inline; filename="' . $file_name . '"');
+ break;
+case 'js':
+ header('Content-Type: application/javascript; charset=UTF-8');
+ header('Content-Disposition: inline; filename="' . $file_name . '"');
+ break;
+default:
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+
+$mtime = @filemtime($absolute_filename);
+if ($mtime === false) {
+ header('HTTP/1.1 404 Not Found');
+ die();
+}
+
+require(LIB_PATH . '/http-conditional.php');
+
+if (!httpConditional($mtime, 604800, 2)) {
+ readfile($absolute_filename);
+}
diff --git a/p/f.php b/p/f.php
index 5db9ab213..e4c82bb16 100644
--- a/p/f.php
+++ b/p/f.php
@@ -1,36 +1,22 @@
<?php
+
require('../constants.php');
-$favicons_dir = DATA_PATH . '/favicons/';
+require(LIB_PATH . '/favicons.php');
+require(LIB_PATH . '/http-conditional.php');
-/* Télécharge le favicon d'un site et le place sur le serveur */
-function download_favicon ($website, $dest) {
- $ok = false;
- $url = 'http://g.etfv.co/' . $website;
+function show_default_favicon($cacheSeconds = 3600) {
+ global $default_favicon;
- $c = curl_init ($url);
- curl_setopt ($c, CURLOPT_HEADER, false);
- curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
- curl_setopt ($c, CURLOPT_BINARYTRANSFER, true);
- $imgRaw = curl_exec ($c);
+ header('Content-Disposition: inline; filename="default_favicon.ico"');
- if (curl_getinfo ($c, CURLINFO_HTTP_CODE) == 200) {
- $file = fopen ($dest, 'w');
- if ($file !== false) {
- fwrite ($file, $imgRaw);
- fclose ($file);
- $ok = true;
- }
- }
- curl_close ($c);
- if (!$ok) {
- header('Location: ' . $url);
- return false;
+ $default_mtime = @filemtime($default_favicon);
+ if (!httpConditional($default_mtime, $cacheSeconds, 2)) {
+ readfile($default_favicon);
}
- return true;
}
-$id = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '0';
+$id = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '0';
if (!ctype_xdigit($id)) {
$id = '0';
}
@@ -38,27 +24,32 @@ if (!ctype_xdigit($id)) {
$txt = $favicons_dir . $id . '.txt';
$ico = $favicons_dir . $id . '.ico';
-$icoMTime = @filemtime($ico);
-$txtMTime = @filemtime($txt);
+$ico_mtime = @filemtime($ico);
+$txt_mtime = @filemtime($txt);
-if (($icoMTime == false) || ($txtMTime > $icoMTime)) {
- if ($txtMTime == false) {
- header('HTTP/1.1 404 Not Found');
- header('Content-Type: image/gif');
- readfile(PUBLIC_PATH . '/themes/icons/grey.gif'); //TODO: Better 404 favicon
- die();
+header('Content-Type: image/x-icon');
+
+if ($ico_mtime == false || $ico_mtime < $txt_mtime || ($ico_mtime < time() - (rand(15, 20) * 86400))) {
+ if ($txt_mtime == false) {
+ show_default_favicon(1800);
+ exit();
}
+
+ // no ico file or we should download a new one.
$url = file_get_contents($txt);
if (!download_favicon($url, $ico)) {
- die();
+ // Download failed
+ if ($ico_mtime == false) {
+ show_default_favicon(86400);
+ exit();
+ } else {
+ touch($ico);
+ }
}
}
-require(LIB_PATH . '/http-conditional.php');
-
-header('Content-Type: image/x-icon');
header('Content-Disposition: inline; filename="' . $id . '.ico"');
-if (!httpConditional($icoMTime, 2592000, 2)) {
+if (!httpConditional($ico_mtime, rand(14, 21) * 86400, 2)) {
readfile($ico);
}
diff --git a/p/i/.gitignore b/p/i/.gitignore
new file mode 100644
index 000000000..03c88fd7a
--- /dev/null
+++ b/p/i/.gitignore
@@ -0,0 +1 @@
+.htaccess
diff --git a/p/i/index.php b/p/i/index.php
index 187bbabe8..d3fc0b37c 100755
--- a/p/i/index.php
+++ b/p/i/index.php
@@ -18,12 +18,12 @@
#
# ***** END LICENSE BLOCK *****
-if (file_exists ('install.php')) {
- require('install.php');
-} else {
- require('../../constants.php');
- require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader
+require('../../constants.php');
+require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader
+if (file_exists(DATA_PATH . '/do-install.txt')) {
+ require(APP_PATH . '/install.php');
+} else {
session_cache_limiter('');
Minz_Session::init('FreshRSS');
Minz_Session::_param('keepAlive', 1); //For Persona
@@ -32,21 +32,21 @@ if (file_exists ('install.php')) {
require(LIB_PATH . '/http-conditional.php');
$currentUser = Minz_Session::param('currentUser', '');
$dateLastModification = $currentUser === '' ? time() : max(
- @filemtime(LOG_PATH . '/' . $currentUser . '.log'),
- @filemtime(DATA_PATH . '/config.php')
+ @filemtime(join_path(USERS_PATH, $currentUser, 'log.txt')),
+ @filemtime(join_path(DATA_PATH, 'config.php'))
);
- if (httpConditional($dateLastModification, 0, 0, false, false, true)) {
+ if (httpConditional($dateLastModification, 0, 0, false, PHP_COMPRESSION, true)) {
exit(); //No need to send anything
}
}
try {
$front_controller = new FreshRSS();
- $front_controller->init ();
- $front_controller->run ();
+ $front_controller->init();
+ $front_controller->run();
} catch (Exception $e) {
echo '### Fatal error! ###<br />', "\n";
- Minz_Log::record ($e->getMessage (), Minz_Log::ERROR);
+ Minz_Log::error($e->getMessage());
echo 'See logs files.';
}
}
diff --git a/p/i/install.php b/p/i/install.php
deleted file mode 100644
index 90ee0b8a9..000000000
--- a/p/i/install.php
+++ /dev/null
@@ -1,1082 +0,0 @@
-<?php
-if (function_exists('opcache_reset')) {
- opcache_reset();
-}
-
-require('../../constants.php');
-define('BCRYPT_COST', 9);
-
-include(LIB_PATH . '/lib_rss.php');
-
-session_name('FreshRSS');
-session_set_cookie_params(0, dirname(empty($_SERVER['REQUEST_URI']) ? '/' : dirname($_SERVER['REQUEST_URI'])), null, false, true);
-session_start();
-
-if (isset ($_GET['step'])) {
- define ('STEP', $_GET['step']);
-} else {
- define ('STEP', 1);
-}
-
-define('SQL_CREATE_DB', 'CREATE DATABASE IF NOT EXISTS %1$s DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
-
-include(APP_PATH . '/sql.php');
-
-//<updates>
-define('SQL_SHOW_TABLES', 'SHOW tables;');
-
-define('SQL_BACKUP006', 'RENAME TABLE `%1$scategory` TO `%1$scategory006`, `%1$sfeed` TO `%1$sfeed006`, `%1$sentry` TO `%1$sentry006`;');
-
-define('SQL_SHOW_COLUMNS_UPDATEv006', 'SHOW columns FROM `%1$sentry006` LIKE "id2";');
-
-define('SQL_UPDATEv006', '
-ALTER TABLE `%1$scategory006` ADD id2 SMALLINT;
-
-SET @i = 0;
-UPDATE `%1$scategory006` SET id2=(@i:=@i+1) ORDER BY id;
-
-ALTER TABLE `%1$sfeed006` ADD id2 SMALLINT, ADD category2 SMALLINT;
-
-SET @i = 0;
-UPDATE `%1$sfeed006` SET id2=(@i:=@i+1) ORDER BY name;
-
-UPDATE `%1$sfeed006` f
-INNER JOIN `%1$scategory006` c ON f.category = c.id
-SET f.category2 = c.id2;
-
-INSERT IGNORE INTO `%2$scategory` (name)
-SELECT name
-FROM `%1$scategory006`
-ORDER BY id2;
-
-INSERT IGNORE INTO `%2$sfeed` (url, category, name, website, description, priority, pathEntries, httpAuth, keep_history)
-SELECT url, category2, name, website, description, priority, pathEntries, httpAuth, IF(keep_history = 1, -1, -2)
-FROM `%1$sfeed006`
-ORDER BY id2;
-
-ALTER TABLE `%1$sentry006` ADD id2 bigint;
-
-UPDATE `%1$sentry006` SET id2 = ((date * 1000000) + (rand() * 100000000));
-
-INSERT IGNORE INTO `%2$sentry` (id, guid, title, author, link, date, is_read, is_favorite, id_feed, tags)
-SELECT e0.id2, e0.guid, e0.title, e0.author, e0.link, e0.date, e0.is_read, e0.is_favorite, f0.id2, e0.tags
-FROM `%1$sentry006` e0
-INNER JOIN `%1$sfeed006` f0 ON e0.id_feed = f0.id;
-');
-
-define('SQL_CONVERT_SELECTv006', '
-SELECT e0.id2, e0.content
-FROM `%1$sentry006` e0
-INNER JOIN `%2$sentry` e1 ON e0.id2 = e1.id
-WHERE e1.content_bin IS NULL');
-
-define('SQL_CONVERT_UPDATEv006', 'UPDATE `%1$sentry` SET content_bin=COMPRESS(?) WHERE id=?;');
-
-define('SQL_DROP_BACKUPv006', 'DROP TABLE IF EXISTS `%1$sentry006`, `%1$sfeed006`, `%1$scategory006`;');
-
-define('SQL_UPDATE_CACHED_VALUES', '
-UPDATE `%1$sfeed` f
-INNER JOIN (
- SELECT e.id_feed,
- COUNT(CASE WHEN e.is_read = 0 THEN 1 END) AS nbUnreads,
- COUNT(e.id) AS nbEntries
- FROM `%1$sentry` e
- GROUP BY e.id_feed
-) x ON x.id_feed=f.id
-SET f.cache_nbEntries=x.nbEntries, f.cache_nbUnreads=x.nbUnreads
-');
-
-define('SQL_UPDATE_HISTORYv007b', 'UPDATE `%1$sfeed` SET keep_history = CASE WHEN keep_history = 0 THEN -2 WHEN keep_history = 1 THEN -1 ELSE keep_history END;');
-
-define('SQL_GET_FEEDS', 'SELECT id, url, website FROM `%1$sfeed`;');
-//</updates>
-
-// gestion internationalisation
-$translates = array ();
-$actual = 'en';
-function initTranslate () {
- global $translates;
- global $actual;
-
- $actual = isset($_SESSION['language']) ? $_SESSION['language'] : getBetterLanguage('en');
-
- $file = APP_PATH . '/i18n/' . $actual . '.php';
- if (file_exists($file)) {
- $translates = array_merge($translates, include($file));
- }
-
- $file = APP_PATH . '/i18n/install.' . $actual . '.php';
- if (file_exists($file)) {
- $translates = array_merge($translates, include($file));
- }
-}
-
-function getBetterLanguage ($fallback) {
- $available = availableLanguages ();
- $accept = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
- $language = strtolower (substr ($accept, 0, 2));
-
- if (isset ($available[$language])) {
- return $language;
- } else {
- return $fallback;
- }
-}
-function availableLanguages () {
- return array (
- 'en' => 'English',
- 'fr' => 'Français'
- );
-}
-function _t ($key) {
- global $translates;
- $translate = $key;
- if (isset ($translates[$key])) {
- $translate = $translates[$key];
- }
-
- $args = func_get_args ();
- unset($args[0]);
-
- return vsprintf ($translate, $args);
-}
-
-/*** SAUVEGARDES ***/
-function saveLanguage () {
- if (!empty ($_POST)) {
- if (!isset ($_POST['language'])) {
- return false;
- }
-
- $_SESSION['language'] = $_POST['language'];
-
- header ('Location: index.php?step=1');
- }
-}
-function saveStep2 () {
- if (!empty ($_POST)) {
- if (empty ($_POST['title']) ||
- empty ($_POST['old_entries']) ||
- empty ($_POST['auth_type']) ||
- empty ($_POST['default_user'])) {
- return false;
- }
-
- $_SESSION['salt'] = sha1(uniqid(mt_rand(), true).implode('', stat(__FILE__)));
- $_SESSION['title'] = substr(trim($_POST['title']), 0, 25);
- $_SESSION['old_entries'] = $_POST['old_entries'];
- if ((!ctype_digit($_SESSION['old_entries'])) || ($_SESSION['old_entries'] < 1)) {
- $_SESSION['old_entries'] = 3;
- }
- $_SESSION['mail_login'] = filter_var($_POST['mail_login'], FILTER_VALIDATE_EMAIL);
- $_SESSION['default_user'] = substr(preg_replace('/[^a-zA-Z0-9]/', '', $_POST['default_user']), 0, 16);
- $_SESSION['auth_type'] = $_POST['auth_type'];
- if (!empty($_POST['passwordPlain'])) {
- if (!function_exists('password_hash')) {
- include_once(LIB_PATH . '/password_compat.php');
- }
- $passwordHash = password_hash($_POST['passwordPlain'], PASSWORD_BCRYPT, array('cost' => BCRYPT_COST));
- $passwordHash = preg_replace('/^\$2[xy]\$/', '\$2a\$', $passwordHash); //Compatibility with bcrypt.js
- $_SESSION['passwordHash'] = $passwordHash;
- }
-
- $token = '';
- if ($_SESSION['mail_login']) {
- $token = sha1($_SESSION['salt'] . $_SESSION['mail_login']);
- }
-
- $config_array = array (
- 'language' => $_SESSION['language'],
- 'theme' => $_SESSION['theme'],
- 'old_entries' => $_SESSION['old_entries'],
- 'mail_login' => $_SESSION['mail_login'],
- 'passwordHash' => $_SESSION['passwordHash'],
- 'token' => $token,
- );
-
- $configPath = DATA_PATH . '/' . $_SESSION['default_user'] . '_user.php';
- @unlink($configPath); //To avoid access-rights problems
- file_put_contents($configPath, "<?php\n return " . var_export($config_array, true) . ';');
-
- if ($_SESSION['mail_login'] != '') {
- $personaFile = DATA_PATH . '/persona/' . $_SESSION['mail_login'] . '.txt';
- @unlink($personaFile);
- file_put_contents($personaFile, $_SESSION['default_user']);
- }
-
- header ('Location: index.php?step=3');
- }
-}
-
-function saveStep3 () {
- if (!empty ($_POST)) {
- if (empty ($_POST['type']) ||
- empty ($_POST['host']) ||
- empty ($_POST['user']) ||
- empty ($_POST['base'])) {
- $_SESSION['bd_error'] = 'Missing parameters!';
- }
-
- $_SESSION['bd_type'] = isset ($_POST['type']) ? $_POST['type'] : 'mysql';
- $_SESSION['bd_host'] = $_POST['host'];
- $_SESSION['bd_user'] = $_POST['user'];
- $_SESSION['bd_password'] = $_POST['pass'];
- $_SESSION['bd_base'] = substr($_POST['base'], 0, 64);
- $_SESSION['bd_prefix'] = substr($_POST['prefix'], 0, 16);
- $_SESSION['bd_prefix_user'] = $_SESSION['bd_prefix'] . (empty($_SESSION['default_user']) ? '' : ($_SESSION['default_user'] . '_'));
-
- $ini_array = array(
- 'general' => array(
- 'environment' => empty($_SESSION['environment']) ? 'production' : $_SESSION['environment'],
- 'use_url_rewriting' => false,
- 'salt' => $_SESSION['salt'],
- 'base_url' => '',
- 'title' => $_SESSION['title'],
- 'default_user' => $_SESSION['default_user'],
- 'auth_type' => $_SESSION['auth_type'],
- 'allow_anonymous' => isset($_SESSION['allow_anonymous']) ? $_SESSION['allow_anonymous'] : false,
- ),
- 'db' => array(
- 'type' => $_SESSION['bd_type'],
- 'host' => $_SESSION['bd_host'],
- 'user' => $_SESSION['bd_user'],
- 'password' => $_SESSION['bd_password'],
- 'base' => $_SESSION['bd_base'],
- 'prefix' => $_SESSION['bd_prefix'],
- ),
- );
-
- @unlink(DATA_PATH . '/config.php'); //To avoid access-rights problems
- file_put_contents(DATA_PATH . '/config.php', "<?php\n return " . var_export($ini_array, true) . ';');
-
- if (file_exists(DATA_PATH . '/config.php') && file_exists(DATA_PATH . '/application.ini')) {
- @unlink(DATA_PATH . '/application.ini'); //v0.6
- }
-
- $res = checkBD ();
-
- if ($res) {
- $_SESSION['bd_error'] = '';
- header ('Location: index.php?step=4');
- } elseif (empty($_SESSION['bd_error'])) {
- $_SESSION['bd_error'] = 'Unknown error!';
- }
- }
- invalidateHttpCache();
-}
-
-function updateDatabase($perform = false) {
- $needs = array('bd_type', 'bd_host', 'bd_base', 'bd_user', 'bd_password', 'bd_prefix', 'bd_prefix_user');
- foreach ($needs as $need) {
- if (!isset($_SESSION[$need])) {
- return false;
- }
- }
-
- try {
- $str = '';
- switch ($_SESSION['bd_type']) {
- case 'mysql':
- $str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_base'];
- $driver_options = array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
- );
- break;
- case 'sqlite':
- $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_base'] . '.sqlite';
- $driver_options = null;
- break;
- default:
- return false;
- }
-
- $c = new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
-
- $stm = $c->prepare(SQL_SHOW_TABLES);
- $stm->execute();
- $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
- if (!in_array($_SESSION['bd_prefix'] . 'entry006', $res)) {
- return false;
- }
-
- $sql = sprintf(SQL_SHOW_COLUMNS_UPDATEv006, $_SESSION['bd_prefix']);
- $stm = $c->prepare($sql);
- $stm->execute();
- $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
- if (!in_array('id2', $res)) {
- if (!$perform) {
- return true;
- }
- $sql = sprintf(SQL_UPDATEv006, $_SESSION['bd_prefix'], $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql, array(PDO::ATTR_EMULATE_PREPARES => true));
- $stm->execute();
- }
-
- $sql = sprintf(SQL_CONVERT_SELECTv006, $_SESSION['bd_prefix'], $_SESSION['bd_prefix_user']);
- if (!$perform) {
- $sql .= ' LIMIT 1';
- }
- $stm = $c->prepare($sql);
- $stm->execute();
- if (!$perform) {
- $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
- return count($res) > 0;
- } else {
- @set_time_limit(300);
- }
-
- $c2 = new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
- $sql = sprintf(SQL_CONVERT_UPDATEv006, $_SESSION['bd_prefix_user']);
- $stm2 = $c2->prepare($sql);
- while ($row = $stm->fetch(PDO::FETCH_ASSOC)) {
- $id = $row['id2'];
- $content = unserialize(gzinflate(base64_decode($row['content'])));
- $stm2->execute(array($content, $id));
- }
-
- return true;
- } catch (PDOException $e) {
- return false;
- }
- return false;
-}
-
-function newPdo() {
- switch ($_SESSION['bd_type']) {
- case 'mysql':
- $str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_base'];
- $driver_options = array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
- );
- break;
- case 'sqlite':
- $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_base'] . '.sqlite';
- $driver_options = null;
- break;
- default:
- return false;
- }
- return new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
-}
-
-function postUpdate() {
- $c = newPdo();
-
- $sql = sprintf(SQL_UPDATE_HISTORYv007b, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql);
- $stm->execute();
-
- $sql = sprintf(SQL_UPDATE_CACHED_VALUES, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql);
- $stm->execute();
-
- //<favicons>
- $sql = sprintf(SQL_GET_FEEDS, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql);
- $stm->execute();
- $res = $stm->fetchAll(PDO::FETCH_ASSOC);
- foreach ($res as $feed) {
- if (empty($feed['url'])) {
- continue;
- }
- $hash = hash('crc32b', $_SESSION['salt'] . $feed['url']);
- @file_put_contents(DATA_PATH . '/favicons/' . $hash . '.txt',
- empty($feed['website']) ? $feed['url'] : $feed['website']);
- }
- //</favicons>
-}
-
-function deleteInstall () {
- $res = unlink (INDEX_PATH . '/install.php');
- if ($res) {
- header ('Location: index.php');
- }
-
- $needs = array('bd_type', 'bd_host', 'bd_base', 'bd_user', 'bd_password', 'bd_prefix');
- foreach ($needs as $need) {
- if (!isset($_SESSION[$need])) {
- return false;
- }
- }
-
- try {
- $c = newPdo();
- $sql = sprintf(SQL_DROP_BACKUPv006, $_SESSION['bd_prefix']);
- $stm = $c->prepare($sql);
- $stm->execute();
-
- return true;
- } catch (PDOException $e) {
- return false;
- }
- return false;
-}
-
-function moveOldFiles() {
- $mvs = array(
- '/app/configuration/application.ini' => '/data/application.ini', //v0.6
- '/public/data/Configuration.array.php' => '/data/Configuration.array.php', //v0.6
- );
- $ok = true;
- foreach ($mvs as $fFrom => $fTo) {
- if (file_exists(FRESHRSS_PATH . $fFrom)) {
- if (copy(FRESHRSS_PATH . $fFrom, FRESHRSS_PATH . $fTo)) {
- @unlink(FRESHRSS_PATH . $fFrom);
- } else {
- $ok = false;
- }
- }
- }
- return $ok;
-}
-
-function delTree($dir) { //http://php.net/rmdir#110489
- if (!is_dir($dir)) {
- return true;
- }
- $files = array_diff(scandir($dir), array('.', '..'));
- foreach ($files as $file) {
- $f = $dir . '/' . $file;
- if (is_dir($f)) {
- @chmod($f, 0777);
- delTree($f);
- }
- else unlink($f);
- }
- return rmdir($dir);
-}
-
-/*** VÉRIFICATIONS ***/
-function checkStep () {
- $s0 = checkStep0 ();
- $s1 = checkStep1 ();
- $s2 = checkStep2 ();
- $s3 = checkStep3 ();
- if (STEP > 0 && $s0['all'] != 'ok') {
- header ('Location: index.php?step=0');
- } elseif (STEP > 1 && $s1['all'] != 'ok') {
- header ('Location: index.php?step=1');
- } elseif (STEP > 2 && $s2['all'] != 'ok') {
- header ('Location: index.php?step=2');
- } elseif (STEP > 3 && $s3['all'] != 'ok') {
- header ('Location: index.php?step=3');
- }
- $_SESSION['actualize_feeds'] = true;
-}
-function checkStep0 () {
- moveOldFiles();
-
- if (file_exists(DATA_PATH . '/config.php')) {
- $ini_array = include(DATA_PATH . '/config.php');
- } elseif (file_exists(DATA_PATH . '/application.ini')) { //v0.6
- $ini_array = parse_ini_file(DATA_PATH . '/application.ini', true);
- $ini_array['general']['title'] = empty($ini_array['general']['title']) ? '' : stripslashes($ini_array['general']['title']);
- } else {
- $ini_array = null;
- }
-
- if ($ini_array) {
- $ini_general = isset($ini_array['general']) ? $ini_array['general'] : null;
- if ($ini_general) {
- $keys = array('environment', 'salt', 'title', 'default_user', 'allow_anonymous', 'auth_type');
- foreach ($keys as $key) {
- if ((empty($_SESSION[$key])) && isset($ini_general[$key])) {
- $_SESSION[$key] = $ini_general[$key];
- }
- }
- }
- $ini_db = isset($ini_array['db']) ? $ini_array['db'] : null;
- if ($ini_db) {
- $keys = array('type', 'host', 'user', 'password', 'base', 'prefix');
- foreach ($keys as $key) {
- if ((!isset($_SESSION['bd_' . $key])) && isset($ini_db[$key])) {
- $_SESSION['bd_' . $key] = $ini_db[$key];
- }
- }
- }
- }
-
- if (isset($_SESSION['default_user']) && file_exists(DATA_PATH . '/' . $_SESSION['default_user'] . '_user.php')) {
- $userConfig = include(DATA_PATH . '/' . $_SESSION['default_user'] . '_user.php');
- } elseif (file_exists(DATA_PATH . '/Configuration.array.php')) {
- $userConfig = include(DATA_PATH . '/Configuration.array.php'); //v0.6
- if (empty($_SESSION['auth_type'])) {
- $_SESSION['auth_type'] = empty($userConfig['mail_login']) ? 'none' : 'persona';
- }
- if (!isset($_SESSION['allow_anonymous'])) {
- $_SESSION['allow_anonymous'] = empty($userConfig['anon_access']) ? false : ($userConfig['anon_access'] === 'yes');
- }
- } else {
- $userConfig = array();
- }
- if (empty($_SESSION['auth_type'])) { //v0.7b
- $_SESSION['auth_type'] = '';
- }
-
- $keys = array('language', 'theme', 'old_entries', 'mail_login', 'passwordHash');
- foreach ($keys as $key) {
- if ((!isset($_SESSION[$key])) && isset($userConfig[$key])) {
- $_SESSION[$key] = $userConfig[$key];
- }
- }
-
- $languages = availableLanguages ();
- $language = isset ($_SESSION['language']) &&
- isset ($languages[$_SESSION['language']]);
-
- if (empty($_SESSION['passwordHash'])) { //v0.7b
- $_SESSION['passwordHash'] = '';
- }
- if (empty($_SESSION['theme'])) {
- $_SESSION['theme'] = 'Origine';
- } else {
- switch (strtolower($_SESSION['theme'])) {
- case 'default': //v0.7b
- $_SESSION['theme'] = 'Origine';
- break;
- case 'flat-design': //v0.7b
- $_SESSION['theme'] = 'Flat';
- break;
- case 'default_dark': //v0.7b
- $_SESSION['theme'] = 'Dark';
- break;
- }
- }
-
- return array (
- 'language' => $language ? 'ok' : 'ko',
- 'all' => $language ? 'ok' : 'ko'
- );
-}
-
-function checkStep1 () {
- $php = version_compare (PHP_VERSION, '5.2.1') >= 0;
- $minz = file_exists (LIB_PATH . '/Minz');
- $curl = extension_loaded ('curl');
- $pdo = extension_loaded ('pdo_mysql');
- $pcre = extension_loaded ('pcre');
- $ctype = extension_loaded ('ctype');
- $dom = class_exists('DOMDocument');
- $data = DATA_PATH && is_writable (DATA_PATH);
- $cache = CACHE_PATH && is_writable (CACHE_PATH);
- $log = LOG_PATH && is_writable (LOG_PATH);
- $favicons = is_writable (DATA_PATH . '/favicons');
- $persona = is_writable (DATA_PATH . '/persona');
-
- return array (
- 'php' => $php ? 'ok' : 'ko',
- 'minz' => $minz ? 'ok' : 'ko',
- 'curl' => $curl ? 'ok' : 'ko',
- 'pdo-mysql' => $pdo ? 'ok' : 'ko',
- 'pcre' => $pcre ? 'ok' : 'ko',
- 'ctype' => $ctype ? 'ok' : 'ko',
- 'dom' => $dom ? 'ok' : 'ko',
- 'data' => $data ? 'ok' : 'ko',
- 'cache' => $cache ? 'ok' : 'ko',
- 'log' => $log ? 'ok' : 'ko',
- 'favicons' => $favicons ? 'ok' : 'ko',
- 'persona' => $persona ? 'ok' : 'ko',
- 'all' => $php && $minz && $curl && $pdo && $pcre && $ctype && $dom && $data && $cache && $log && $favicons && $persona ? 'ok' : 'ko'
- );
-}
-
-function checkStep2 () {
- $conf = !empty($_SESSION['salt']) &&
- !empty($_SESSION['title']) &&
- !empty($_SESSION['old_entries']) &&
- isset($_SESSION['mail_login']) &&
- !empty($_SESSION['default_user']);
- $defaultUser = empty($_POST['default_user']) ? null : $_POST['default_user'];
- if ($defaultUser === null) {
- $defaultUser = empty($_SESSION['default_user']) ? '' : $_SESSION['default_user'];
- }
- $data = is_writable(DATA_PATH . '/' . $defaultUser . '_user.php');
- if ($data) {
- @unlink(DATA_PATH . '/Configuration.array.php'); //v0.6
- }
-
- return array (
- 'conf' => $conf ? 'ok' : 'ko',
- 'data' => $data ? 'ok' : 'ko',
- 'all' => $conf && $data ? 'ok' : 'ko'
- );
-}
-function checkStep3 () {
- $conf = is_writable(DATA_PATH . '/config.php');
-
- $bd = isset ($_SESSION['bd_type']) &&
- isset ($_SESSION['bd_host']) &&
- isset ($_SESSION['bd_user']) &&
- isset ($_SESSION['bd_password']) &&
- isset ($_SESSION['bd_base']) &&
- isset ($_SESSION['bd_prefix']) &&
- isset ($_SESSION['bd_error']);
- $conn = empty($_SESSION['bd_error']);
-
- return array (
- 'bd' => $bd ? 'ok' : 'ko',
- 'conn' => $conn ? 'ok' : 'ko',
- 'conf' => $conf ? 'ok' : 'ko',
- 'all' => $bd && $conn && $conf ? 'ok' : 'ko'
- );
-}
-
-function checkBD () {
- $ok = false;
-
- try {
- $str = '';
- $driver_options = null;
- switch ($_SESSION['bd_type']) {
- case 'mysql':
- $driver_options = array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
- );
-
- try { // on ouvre une connexion juste pour créer la base si elle n'existe pas
- $str = 'mysql:host=' . $_SESSION['bd_host'] . ';';
- $c = new PDO ($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
- $sql = sprintf (SQL_CREATE_DB, $_SESSION['bd_base']);
- $res = $c->query ($sql);
- } catch (PDOException $e) {
- }
-
- // on écrase la précédente connexion en sélectionnant la nouvelle BDD
- $str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_base'];
- break;
- case 'sqlite':
- $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_base'] . '.sqlite';
- break;
- default:
- return false;
- }
-
- $c = new PDO ($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
-
- $stm = $c->prepare(SQL_SHOW_TABLES);
- $stm->execute();
- $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
- if (in_array($_SESSION['bd_prefix'] . 'entry', $res) && !in_array($_SESSION['bd_prefix'] . 'entry006', $res)) {
- $sql = sprintf(SQL_BACKUP006, $_SESSION['bd_prefix']); //v0.6
- $res = $c->query($sql); //Backup tables
- }
-
- $sql = sprintf(SQL_CREATE_TABLES, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql, array(PDO::ATTR_EMULATE_PREPARES => true));
- $values = array(
- 'catName' => _t('default_category'),
- );
- $ok = $stm->execute($values);
- } catch (PDOException $e) {
- $ok = false;
- $_SESSION['bd_error'] = $e->getMessage();
- }
-
- if (!$ok) {
- @unlink(DATA_PATH . '/config.php');
- }
-
- return $ok;
-}
-
-/*** AFFICHAGE ***/
-function printStep0 () {
- global $actual;
-?>
- <?php $s0 = checkStep0 (); if ($s0['all'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('language_defined'); ?></p>
- <?php } ?>
-
- <form action="index.php?step=0" method="post">
- <legend><?php echo _t ('choose_language'); ?></legend>
- <div class="form-group">
- <label class="group-name" for="language"><?php echo _t ('language'); ?></label>
- <div class="group-controls">
- <select name="language" id="language">
- <?php $languages = availableLanguages (); ?>
- <?php foreach ($languages as $short => $lib) { ?>
- <option value="<?php echo $short; ?>"<?php echo $actual == $short ? ' selected="selected"' : ''; ?>><?php echo $lib; ?></option>
- <?php } ?>
- </select>
- </div>
- </div>
-
- <div class="form-group form-actions">
- <div class="group-controls">
- <button type="submit" class="btn btn-important"><?php echo _t ('save'); ?></button>
- <button type="reset" class="btn"><?php echo _t ('cancel'); ?></button>
- <?php if ($s0['all'] == 'ok') { ?>
- <a class="btn btn-important next-step" href="?step=1"><?php echo _t ('next_step'); ?></a>
- <?php } ?>
- </div>
- </div>
- </form>
-<?php
-}
-
-function printStep1 () {
- $res = checkStep1 ();
-?>
- <noscript><p class="alert alert-warn"><span class="alert-head"><?php echo _t ('attention'); ?></span> <?php echo _t ('javascript_is_better'); ?></p></noscript>
-
- <?php if ($res['php'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('php_is_ok', PHP_VERSION); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('php_is_nok', PHP_VERSION, '5.2.1'); ?></p>
- <?php } ?>
-
- <?php if ($res['minz'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('minz_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('minz_is_nok', LIB_PATH . '/Minz'); ?></p>
- <?php } ?>
-
- <?php if ($res['pdo-mysql'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('pdomysql_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('pdomysql_is_nok'); ?></p>
- <?php } ?>
-
- <?php if ($res['curl'] == 'ok') { ?>
- <?php $version = curl_version(); ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('curl_is_ok', $version['version']); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('curl_is_nok'); ?></p>
- <?php } ?>
-
- <?php if ($res['pcre'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('pcre_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('pcre_is_nok'); ?></p>
- <?php } ?>
-
- <?php if ($res['ctype'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('ctype_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('ctype_is_nok'); ?></p>
- <?php } ?>
-
- <?php if ($res['dom'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('dom_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('dom_is_nok'); ?></p>
- <?php } ?>
-
- <?php if ($res['data'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('data_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', DATA_PATH); ?></p>
- <?php } ?>
-
- <?php if ($res['cache'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('cache_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', CACHE_PATH); ?></p>
- <?php } ?>
-
- <?php if ($res['log'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('log_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', LOG_PATH); ?></p>
- <?php } ?>
-
- <?php if ($res['favicons'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('favicons_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', DATA_PATH . '/favicons'); ?></p>
- <?php } ?>
-
- <?php if ($res['persona'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('persona_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', DATA_PATH . '/persona'); ?></p>
- <?php } ?>
-
- <?php if ($res['all'] == 'ok') { ?>
- <a class="btn btn-important next-step" href="?step=2"><?php echo _t ('next_step'); ?></a>
- <?php } else { ?>
- <p class="alert alert-error"><?php echo _t ('fix_errors_before'); ?></p>
- <?php } ?>
-<?php
-}
-
-function printStep2 () {
-?>
- <?php $s2 = checkStep2 (); if ($s2['all'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('general_conf_is_ok'); ?></p>
- <?php } ?>
-
- <form action="index.php?step=2" method="post">
- <legend><?php echo _t ('general_configuration'); ?></legend>
-
- <div class="form-group">
- <label class="group-name" for="title"><?php echo _t ('title'); ?></label>
- <div class="group-controls">
- <input type="text" id="title" name="title" value="<?php echo isset ($_SESSION['title']) ? $_SESSION['title'] : _t ('freshrss'); ?>" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="old_entries"><?php echo _t ('delete_articles_every'); ?></label>
- <div class="group-controls">
- <input type="number" id="old_entries" name="old_entries" required="required" min="1" max="1200" value="<?php echo isset ($_SESSION['old_entries']) ? $_SESSION['old_entries'] : '3'; ?>" /> <?php echo _t ('month'); ?>
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="default_user"><?php echo _t ('default_user'); ?></label>
- <div class="group-controls">
- <input type="text" id="default_user" name="default_user" required="required" size="16" maxlength="16" pattern="[0-9a-zA-Z]{1,16}" value="<?php echo isset ($_SESSION['default_user']) ? $_SESSION['default_user'] : ''; ?>" placeholder="<?php echo httpAuthUser() == '' ? 'user1' : httpAuthUser(); ?>" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="auth_type"><?php echo _t('auth_type'); ?></label>
- <div class="group-controls">
- <select id="auth_type" name="auth_type" required="required">
- <?php if (!in_array($_SESSION['auth_type'], array('form', 'persona', 'http_auth', 'none'))) { ?>
- <option selected="selected"></option>
- <?php } ?>
- <option value="form"<?php echo $_SESSION['auth_type'] === 'form' ? ' selected="selected"' : '', version_compare(PHP_VERSION, '5.3', '<') ? ' disabled="disabled"' : ''; ?>><?php echo _t('auth_form'); ?></option>
- <option value="persona"<?php echo $_SESSION['auth_type'] === 'persona' ? ' selected="selected"' : ''; ?>><?php echo _t('auth_persona'); ?></option>
- <option value="http_auth"<?php echo $_SESSION['auth_type'] === 'http_auth' ? ' selected="selected"' : '', httpAuthUser() == '' ? ' disabled="disabled"' : ''; ?>><?php echo _t('http_auth'); ?> (REMOTE_USER = '<?php echo httpAuthUser(); ?>')</option>
- <option value="none"<?php echo $_SESSION['auth_type'] === 'none' ? ' selected="selected"' : ''; ?>><?php echo _t('auth_none'); ?></option>
- </select>
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="passwordPlain"><?php echo _t('password_form'); ?></label>
- <div class="group-controls">
- <input type="password" id="passwordPlain" name="passwordPlain" pattern=".{7,}" autocomplete="off" />
- <noscript><b><?php echo _t('javascript_should_be_activated'); ?></b></noscript>
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="mail_login"><?php echo _t ('persona_connection_email'); ?></label>
- <div class="group-controls">
- <input type="email" id="mail_login" name="mail_login" value="<?php echo isset ($_SESSION['mail_login']) ? $_SESSION['mail_login'] : ''; ?>" placeholder="alice@example.net" />
- <noscript><b><?php echo _t ('javascript_should_be_activated'); ?></b></noscript>
- </div>
- </div>
-
- <div class="form-group form-actions">
- <div class="group-controls">
- <button type="submit" class="btn btn-important"><?php echo _t ('save'); ?></button>
- <button type="reset" class="btn"><?php echo _t ('cancel'); ?></button>
- <?php if ($s2['all'] == 'ok') { ?>
- <a class="btn btn-important next-step" href="?step=3"><?php echo _t ('next_step'); ?></a>
- <?php } ?>
- </div>
- </div>
- </form>
-<?php
-}
-
-function printStep3 () {
-?>
- <?php $s3 = checkStep3 (); if ($s3['all'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('bdd_conf_is_ok'); ?></p>
- <?php } elseif ($s3['conn'] == 'ko') { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('bdd_conf_is_ko'), (empty($_SESSION['bd_error']) ? '' : ' : ' . $_SESSION['bd_error']); ?></p>
- <?php } ?>
-
- <form action="index.php?step=3" method="post">
- <legend><?php echo _t ('bdd_configuration'); ?></legend>
- <div class="form-group">
- <label class="group-name" for="type"><?php echo _t ('bdd_type'); ?></label>
- <div class="group-controls">
- <select name="type" id="type">
- <option value="mysql"
- <?php echo (isset($_SESSION['bd_type']) && $_SESSION['bd_type'] === 'mysql') ? 'selected="selected"' : ''; ?>>
- MySQL
- </option>
- <!-- TODO : l'utilisation de SQLite n'est pas encore possible. Pour tester tout de même, décommentez ce bloc
- <option value="sqlite"
- <?php echo (isset($_SESSION['bd_type']) && $_SESSION['bd_type'] === 'sqlite') ? 'selected="selected"' : ''; ?>>
- SQLite
- </option>-->
- </select>
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="host"><?php echo _t ('host'); ?></label>
- <div class="group-controls">
- <input type="text" id="host" name="host" pattern="[0-9A-Za-z_.-]{1,64}" value="<?php echo isset ($_SESSION['bd_host']) ? $_SESSION['bd_host'] : 'localhost'; ?>" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="user"><?php echo _t ('username'); ?></label>
- <div class="group-controls">
- <input type="text" id="user" name="user" maxlength="16" pattern="[0-9A-Za-z_]{1,16}" value="<?php echo isset ($_SESSION['bd_user']) ? $_SESSION['bd_user'] : ''; ?>" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="pass"><?php echo _t ('password'); ?></label>
- <div class="group-controls">
- <input type="password" id="pass" name="pass" value="<?php echo isset ($_SESSION['bd_password']) ? $_SESSION['bd_password'] : ''; ?>" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="base"><?php echo _t ('bdd'); ?></label>
- <div class="group-controls">
- <input type="text" id="base" name="base" maxlength="64" pattern="[0-9A-Za-z_]{1,64}" value="<?php echo isset ($_SESSION['bd_base']) ? $_SESSION['bd_base'] : ''; ?>" placeholder="freshrss" />
- </div>
- </div>
-
- <div class="form-group">
- <label class="group-name" for="prefix"><?php echo _t ('prefix'); ?></label>
- <div class="group-controls">
- <input type="text" id="prefix" name="prefix" maxlength="16" pattern="[0-9A-Za-z_]{1,16}" value="<?php echo isset ($_SESSION['bd_prefix']) ? $_SESSION['bd_prefix'] : 'freshrss_'; ?>" />
- </div>
- </div>
-
- <div class="form-group form-actions">
- <div class="group-controls">
- <button type="submit" class="btn btn-important"><?php echo _t ('save'); ?></button>
- <button type="reset" class="btn"><?php echo _t ('cancel'); ?></button>
- <?php if ($s3['all'] == 'ok') { ?>
- <a class="btn btn-important next-step" href="?step=4"><?php echo _t ('next_step'); ?></a>
- <?php } ?>
- </div>
- </div>
- </form>
-<?php
-}
-
-function printStep4 () {
-?>
- <form action="index.php?step=4" method="post">
- <legend><?php echo _t ('version_update'); ?></legend>
-
- <?php if (updateDatabase(false)) { ?>
- <p class="alert alert-warn"><?php echo _t ('update_long'); ?></p>
-
- <div class="form-group form-actions">
- <div class="group-controls">
- <input type="hidden" name="updateDatabase" value="1" />
- <button type="submit" class="btn btn-important"><?php echo _t ('update_start'); ?></button>
- </div>
- </div>
-
- <?php } else { ?>
- <p class="alert alert-warn"><?php echo _t ('update_end'); ?></p>
-
- <div class="form-group form-actions">
- <div class="group-controls">
- <a class="btn btn-important next-step" href="?step=5"><?php echo _t ('next_step'); ?></a>
- </div>
- </div>
- <?php } ?>
- </form>
-<?php
-}
-
-function printStep5 () {
-?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('congratulations'); ?></span> <?php echo _t ('installation_is_ok'); ?></p>
- <a class="btn btn-important next-step" href="?step=6"><?php echo _t ('finish_installation'); ?></a>
-<?php
-}
-
-function printStep6 () {
-?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('oops'); ?></span> <?php echo _t ('install_not_deleted', INDEX_PATH . '/install.php'); ?></p>
-<?php
-}
-
-checkStep ();
-
-initTranslate ();
-
-switch (STEP) {
-case 0:
-default:
- saveLanguage ();
- break;
-case 1:
- break;
-case 2:
- saveStep2 ();
- break;
-case 3:
- saveStep3 ();
- break;
-case 4:
- if (!empty($_POST['updateDatabase'])) {
- updateDatabase(true);
- }
- break;
-case 5:
- postUpdate();
- break;
-case 6:
- deleteInstall ();
- break;
-}
-?>
-<!DOCTYPE html>
-<html lang="fr">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="initial-scale=1.0">
- <title><?php echo _t ('freshrss_installation'); ?></title>
- <link rel="stylesheet" type="text/css" media="all" href="../themes/Origine/global.css" />
- <link rel="stylesheet" type="text/css" media="all" href="../themes/Origine/freshrss.css" />
- </head>
- <body>
-
-<div class="header">
- <div class="item title">
- <h1><a href="index.php"><?php echo _t ('freshrss'); ?></a></h1>
- <h2><?php echo _t ('installation_step', STEP); ?></h2>
- </div>
-</div>
-
-<div id="global">
- <ul class="nav nav-list aside">
- <li class="nav-header"><?php echo _t ('steps'); ?></li>
- <li class="item<?php echo STEP == 0 ? ' active' : ''; ?>"><a href="?step=0"><?php echo _t ('language'); ?></a></li>
- <li class="item<?php echo STEP == 1 ? ' active' : ''; ?>"><a href="?step=1"><?php echo _t ('checks'); ?></a></li>
- <li class="item<?php echo STEP == 2 ? ' active' : ''; ?>"><a href="?step=2"><?php echo _t ('general_configuration'); ?></a></li>
- <li class="item<?php echo STEP == 3 ? ' active' : ''; ?>"><a href="?step=3"><?php echo _t ('bdd_configuration'); ?></a></li>
- <li class="item<?php echo STEP == 4 ? ' active' : ''; ?>"><a href="?step=4"><?php echo _t ('version_update'); ?></a></li>
- <li class="item<?php echo STEP == 5 ? ' active' : ''; ?>"><a href="?step=5"><?php echo _t ('this_is_the_end'); ?></a></li>
- </ul>
-
- <div class="post">
- <?php
- switch (STEP) {
- case 0:
- default:
- printStep0 ();
- break;
- case 1:
- printStep1 ();
- break;
- case 2:
- printStep2 ();
- break;
- case 3:
- printStep3 ();
- break;
- case 4:
- printStep4 ();
- break;
- case 5:
- printStep5 ();
- break;
- case 6:
- printStep6 ();
- break;
- }
- ?>
- </div>
-</div>
- </body>
-</html>
diff --git a/p/index.html b/p/index.html
index 260f437bd..3f4284eb5 100644
--- a/p/index.html
+++ b/p/index.html
@@ -5,27 +5,11 @@
<meta name="viewport" content="initial-scale=1.0" />
<meta http-equiv="Refresh" content="0; url=i/" />
<title>FreshRSS</title>
+<link rel="stylesheet" href="themes/p.css" />
<link rel="shortcut icon" type="image/x-icon" sizes="16x16 64x64" href="favicon.ico" />
<link rel="icon msapplication-TileImage apple-touch-icon" type="image/png" sizes="256x256" href="themes/icons/favicon-256.png" />
<meta name="msapplication-TileColor" content="#FFF" />
-<meta name="robots" content="noindex,nofollow" />
-<style>
-body {
- font-family: sans-serif;
- text-align: center;
-}
-h1 {
- font-size: xx-large;
- text-shadow: 1px -1px 0 #CCCCCC;
-}
-h1 a {
- color: #0062BE;
- text-decoration: none;
-}
-img {
- border: 0;
-}
-</style>
+<meta name="robots" content="noindex" />
</head>
<body>
diff --git a/p/scripts/bcrypt.min.js b/p/scripts/bcrypt.min.js
index 6892caddc..614f0c259 100644
--- a/p/scripts/bcrypt.min.js
+++ b/p/scripts/bcrypt.min.js
@@ -1,41 +1,45 @@
-/*
+(function(){/*
bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
Released under the Apache License, Version 2.0
see: https://github.com/dcodeIO/bcrypt.js for details
*/
-function p(n){throw n;}var q=null;
-(function(n){function u(c,a,b,f){for(var d,e=c[a],l=c[a+1],e=e^b[0],h=0;14>=h;)d=f[e>>24&255],d+=f[256|e>>16&255],d^=f[512|e>>8&255],d+=f[768|e&255],l^=d^b[++h],d=f[l>>24&255],d+=f[256|l>>16&255],d^=f[512|l>>8&255],d+=f[768|l&255],e^=d^b[++h];c[a]=l^b[17];c[a+1]=e;return c}function s(c,a){var b,f=0;for(b=0;4>b;b++)f=f<<8|c[a]&255,a=(a+1)%c.length;return{key:f,a:a}}function y(c,a,b){for(var f=0,d=[0,0],e=a.length,l=b.length,h=0;h<e;h++){var g=s(c,f),f=g.a;a[h]^=g.key}for(h=0;h<e;h+=2)d=u(d,0,a,b),
-a[h]=d[0],a[h+1]=d[1];for(h=0;h<l;h+=2)d=u(d,0,a,b),b[h]=d[0],b[h+1]=d[1]}function C(c,a,b,f){for(var d=0,e=[0,0],l=b.length,h=f.length,g,k=0;k<l;k++)g=s(a,d),d=g.a,b[k]^=g.key;for(k=d=0;k<l;k+=2)g=s(c,d),d=g.a,e[0]^=g.key,g=s(c,d),d=g.a,e[1]^=g.key,e=u(e,0,b,f),b[k]=e[0],b[k+1]=e[1];for(k=0;k<h;k+=2)g=s(c,d),d=g.a,e[0]^=g.key,g=s(c,d),d=g.a,e[1]^=g.key,e=u(e,0,b,f),f[k]=e[0],f[k+1]=e[1]}function z(c){"undefined"!==typeof process&&"function"===typeof process.nextTick?process.nextTick(c):setTimeout(c,
-0)}function A(c,a,b,f){function d(){if(k<b)for(var n=new Date;k<b&&!(k+=1,y(c,h,g),y(a,h,g),100<Date.now()-n););else{for(k=0;64>k;k++)for(m=0;m<l>>1;m++)u(e,m<<1,h,g);n=[];for(k=0;k<l;k++)n.push((e[k]>>24&255)>>>0),n.push((e[k]>>16&255)>>>0),n.push((e[k]>>8&255)>>>0),n.push((e[k]&255)>>>0);return f?(f(q,n),q):n}f&&z(d);return q}var e=B.slice(),l=e.length;(4>b||31<b)&&p(Error("Illegal number of rounds: "+b));16!=a.length&&p(Error("Illegal salt length: "+a.length+" != 16"));b=1<<b;var h=D.slice(),g=
-E.slice();C(a,c,h,g);var k=0,m;if("undefined"!==typeof f)return d(),q;for(var n;;)if((n=d())!==q)return n}function F(c){for(var a,b,f=[],d=0;d<c.length;d++){a=c.charCodeAt(d);b=[];do b.push(a&255),a>>=8;while(a);f=f.concat(b.reverse())}return f}function w(c,a,b){function f(a){var b=[];b.push("$2");"a"<=d&&b.push(d);b.push("$");10>l&&b.push("0");b.push(l.toString());b.push("$");b.push(v.b(h,h.length));b.push(v.b(a,4*B.length-1));return b.join("")}var d,e;("$"!=a.charAt(0)||"2"!=a.charAt(1))&&p(Error("Invalid salt version: "+
-a.substring(0,2)));"$"==a.charAt(2)?(d=String.fromCharCode(0),e=3):(d=a.charAt(2),("a"!=d||"$"!=a.charAt(3))&&p(Error("Invalid salt revision: "+a.substring(2,4))),e=4);"$"<a.charAt(e+2)&&p(Error("Missing salt rounds"));var l=10*parseInt(a.substring(e,e+1),10)+parseInt(a.substring(e+1,e+2),10);a=a.substring(e+3,e+25);c=F(c+("a"<=d?"\x00":""));var h=[],h=v.c(a,16);if("undefined"==typeof b)return f(A(c,h,l));A(c,h,l,function(a,c){a?b(a,q):b(q,f(c))});return q}function G(){if("undefined"!==typeof module&&
-module.exports)return require("crypto").randomBytes(16);var c=new Uint32Array(16);n.crypto&&"function"===typeof n.crypto.getRandomValues?n.crypto.getRandomValues(c):"function"===typeof x?x(c):p(Error("Failed to generate random values: Web Crypto API not available / no polyfill set"));return Array.prototype.slice.call(c)}var t="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),r=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],v={b:function(c,a){var b=0,f=[],d,e;for((0>=a||a>c.length)&&p(Error("Invalid 'len': "+a));b<a;){d=c[b++]&255;f.push(t[d>>2&63]);d=(d&3)<<4;if(b>=a){f.push(t[d&63]);break}e=c[b++]&255;d|=e>>4&15;f.push(t[d&63]);d=(e&15)<<
-2;if(b>=a){f.push(t[d&63]);break}e=c[b++]&255;d|=e>>6&3;f.push(t[d&63]);f.push(t[e&63])}return f.join("")},c:function(c,a){var b=0,f=c.length,d=0,e=[],l,h,g;for(0>=a&&p(Error("Illegal 'len': "+a));b<f-1&&d<a;){g=c.charCodeAt(b++);l=g<r.length?r[g]:-1;g=c.charCodeAt(b++);h=g<r.length?r[g]:-1;if(-1==l||-1==h)break;g=l<<2>>>0;g|=(h&48)>>4;e.push(String.fromCharCode(g));if(++d>=a||b>=f)break;g=c.charCodeAt(b++);l=g<r.length?r[g]:-1;if(-1==l)break;g=(h&15)<<4>>>0;g|=(l&60)>>2;e.push(String.fromCharCode(g));
-if(++d>=a||b>=f)break;g=c.charCodeAt(b++);h=g<r.length?r[g]:-1;g=(l&3)<<6>>>0;g|=h;e.push(String.fromCharCode(g));++d}f=[];for(b=0;b<d;b++)f.push(e[b].charCodeAt(0));return f}},m={},D=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],E=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,
-1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,
-1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,
-3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,
-3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,
-3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,
-705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,
-2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,
-3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,
-3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,
-2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,
-3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,
-2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,
-1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,
-4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,
-3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,
-448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,
-3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,
-2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,
-1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,
-2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,
-3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,
-3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],B=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],x=q;m.setRandomPolyfill=function(c){x=c};m.genSaltSync=function(c){c||(c=10);var a;c=c||10;(4>c||31<c)&&p(Error("Illegal number of rounds: "+c));var b=[];
-b.push("$2a$");10>c&&b.push("0");b.push(c.toString());b.push("$");try{b.push(v.b(G(),16)),a=b.join("")}catch(f){p(f)}return a};m.genSalt=function(c,a,b){"function"==typeof a&&(b=a,a=-1);var f;"function"==typeof c?(b=c,f=10):f=parseInt(c,10);"function"!=typeof b&&p(Error("Illegal or missing 'callback': "+b));z(function(){try{var a=m.genSaltSync(f);b(q,a)}catch(c){b(c,q)}})};m.hashSync=function(c,a){a||(a=10);"number"==typeof a&&(a=m.genSaltSync(a));return w(c,a)};m.hash=function(c,a,b){"function"!=
-typeof b&&p(Error("Illegal 'callback': "+b));"number"==typeof a?m.genSalt(a,function(a,d){w(c,d,b)}):w(c,a,b)};m.compareSync=function(c,a){("string"!=typeof c||"string"!=typeof a)&&p(Error("Illegal argument types: "+typeof c+", "+typeof a));60!=a.length&&p(Error("Illegal hash length: "+a.length+" != 60"));for(var b=m.hashSync(c,a.substr(0,a.length-31)),f=b.length==a.length,d=b.length<a.length?b.length:a.length,e=0;e<d;++e)b.length>=e&&(a.length>=e&&b[e]!=a[e])&&(f=!1);return f};m.compare=function(c,
-a,b){"function"!=typeof b&&p(Error("Illegal 'callback': "+b));m.hash(c,a.substr(0,29),function(c,d){b(c,a===d)})};m.getRounds=function(c){"string"!=typeof c&&p(Error("Illegal type of 'hash': "+typeof c));return parseInt(c.split("$")[2],10)};m.getSalt=function(c){"string"!=typeof c&&p(Error("Illegal type of 'hash': "+typeof c));60!=c.length&&p(Error("Illegal hash length: "+c.length+" != 60"));return c.substring(0,29)};"undefined"!=typeof module&&module.exports?module.exports=m:"undefined"!=typeof define&&
-define.amd?define("bcrypt",function(){return m}):(n.dcodeIO||(n.dcodeIO={}),n.dcodeIO.bcrypt=m)})(this);
+function l(t){throw t;}var p=null;
+(function(t){function B(c){if("undefined"!==typeof module&&module&&module.exports)try{return require("crypto").randomBytes(c)}catch(a){}try{var b;(t.crypto||t.msCrypto).getRandomValues(b=new Uint32Array(c));return Array.prototype.slice.call(b)}catch(d){}x||l(Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative"));return x(c)}function F(c){var a=[],b=0;G.f(function(){return b>=c.length?p:c.charCodeAt(b++)},function(b){a.push(b)});return a}
+function y(c,a){var b=0,d=[],f,e;for((0>=a||a>c.length)&&l(Error("Illegal len: "+a));b<a;){f=c[b++]&255;d.push(u[f>>2&63]);f=(f&3)<<4;if(b>=a){d.push(u[f&63]);break}e=c[b++]&255;f|=e>>4&15;d.push(u[f&63]);f=(e&15)<<2;if(b>=a){d.push(u[f&63]);break}e=c[b++]&255;f|=e>>6&3;d.push(u[f&63]);d.push(u[e&63])}return d.join("")}function H(c){for(var a=0,b=c.length,d=0,f=[],e,k,h;a<b-1&&16>d;){h=c.charCodeAt(a++);e=h<r.length?r[h]:-1;h=c.charCodeAt(a++);k=h<r.length?r[h]:-1;if(-1==e||-1==k)break;h=e<<2>>>0;
+h|=(k&48)>>4;f.push(z(h));if(16<=++d||a>=b)break;h=c.charCodeAt(a++);e=h<r.length?r[h]:-1;if(-1==e)break;h=(k&15)<<4>>>0;h|=(e&60)>>2;f.push(z(h));if(16<=++d||a>=b)break;h=c.charCodeAt(a++);k=h<r.length?r[h]:-1;h=(e&3)<<6>>>0;h|=k;f.push(z(h));++d}c=[];for(a=0;a<d;a++)c.push(f[a].charCodeAt(0));return c}function w(c,a,b,d){for(var f,e=c[a],k=c[a+1],e=e^b[0],h=0;14>=h;)f=d[e>>24&255],f+=d[256|e>>16&255],f^=d[512|e>>8&255],f+=d[768|e&255],k^=f^b[++h],f=d[k>>24&255],f+=d[256|k>>16&255],f^=d[512|k>>8&
+255],f+=d[768|k&255],e^=f^b[++h];c[a]=k^b[17];c[a+1]=e;return c}function v(c,a){for(var b=0,d=0;4>b;++b)d=d<<8|c[a]&255,a=(a+1)%c.length;return{key:d,a:a}}function C(c,a,b){for(var d=0,f=[0,0],e=a.length,k=b.length,h,g=0;g<e;g++)h=v(c,d),d=h.a,a[g]^=h.key;for(g=0;g<e;g+=2)f=w(f,0,a,b),a[g]=f[0],a[g+1]=f[1];for(g=0;g<k;g+=2)f=w(f,0,a,b),b[g]=f[0],b[g+1]=f[1]}function I(c,a,b,d){for(var f=0,e=[0,0],k=b.length,h=d.length,g,m=0;m<k;m++)g=v(a,f),f=g.a,b[m]^=g.key;for(m=f=0;m<k;m+=2)g=v(c,f),f=g.a,e[0]^=
+g.key,g=v(c,f),f=g.a,e[1]^=g.key,e=w(e,0,b,d),b[m]=e[0],b[m+1]=e[1];for(m=0;m<h;m+=2)g=v(c,f),f=g.a,e[0]^=g.key,g=v(c,f),f=g.a,e[1]^=g.key,e=w(e,0,b,d),d[m]=e[0],d[m+1]=e[1]}function D(c,a,b,d,f){function e(){f&&f(q/b);if(q<b)for(var g=Date.now();q<b&&!(q+=1,C(c,m,n),C(a,m,n),100<Date.now()-g););else{for(q=0;64>q;q++)for(r=0;r<h>>1;r++)w(k,r<<1,m,n);g=[];for(q=0;q<h;q++)g.push((k[q]>>24&255)>>>0),g.push((k[q]>>16&255)>>>0),g.push((k[q]>>8&255)>>>0),g.push((k[q]&255)>>>0);if(d){d(p,g);return}return g}d&&
+s(e)}var k=E.slice(),h=k.length,g;if(4>b||31<b){g=Error("Illegal number of rounds (4-31): "+b);if(d){s(d.bind(this,g));return}l(g)}if(16!==a.length){g=Error("Illegal salt length: "+a.length+" != 16");if(d){s(d.bind(this,g));return}l(g)}b=1<<b;var m=J.slice(),n=K.slice(),q=0,r;I(a,c,m,n);if("undefined"!==typeof d)e();else for(;;)if("undefined"!==typeof(g=e()))return g||[]}function A(c,a,b,d){function f(a){var b=[];b.push("$2");"a"<=k&&b.push(k);b.push("$");10>g&&b.push("0");b.push(g.toString());b.push("$");
+b.push(y(m,m.length));b.push(y(a,4*E.length-1));return b.join("")}var e;if("string"!==typeof c||"string"!==typeof a){e=Error("Invalid string / salt: Not a string");if(b){s(b.bind(this,e));return}l(e)}var k,h;if("$"!==a.charAt(0)||"2"!==a.charAt(1)){e=Error("Invalid salt version: "+a.substring(0,2));if(b){s(b.bind(this,e));return}l(e)}if("$"===a.charAt(2))k=String.fromCharCode(0),h=3;else{k=a.charAt(2);if("a"!==k&&"y"!==k||"$"!==a.charAt(3)){e=Error("Invalid salt revision: "+a.substring(2,4));if(b){s(b.bind(this,
+e));return}l(e)}h=4}if("$"<a.charAt(h+2)){e=Error("Missing salt rounds");if(b){s(b.bind(this,e));return}l(e)}var g=10*parseInt(a.substring(h,h+1),10)+parseInt(a.substring(h+1,h+2),10);a=a.substring(h+3,h+25);c=F(c+("a"<=k?"\x00":""));var m=H(a);if("undefined"==typeof b)return f(D(c,m,g));D(c,m,g,function(a,d){a?b(a,p):b(p,f(d))},d)}var n={},x=p;try{B(1)}catch(L){}x=p;n.l=function(c){x=c};n.genSaltSync=function(c,a){"undefined"===typeof c?c=10:"number"!==typeof c&&l(Error("Illegal arguments: "+typeof c+
+", "+typeof a));(4>c||31<c)&&l(Error("Illegal number of rounds (4-31): "+c));var b=[];b.push("$2a$");10>c&&b.push("0");b.push(c.toString());b.push("$");b.push(y(B(16),16));return b.join("")};n.genSalt=function(c,a,b){"function"===typeof a&&(b=a,a=void 0);"function"===typeof c&&(b=c,c=10);"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"number"!==typeof c?s(b.bind(this,Error("Illegal arguments: "+typeof c))):s(function(){try{b(p,n.genSaltSync(c))}catch(a){b(a)}})};n.hashSync=function(c,
+a){"undefined"===typeof a&&(a=10);"number"===typeof a&&(a=n.genSaltSync(a));("string"!==typeof c||"string"!==typeof a)&&l(Error("Illegal arguments: "+typeof c+", "+typeof a));return A(c,a)};n.hash=function(c,a,b,d){"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"string"===typeof c&&"number"===typeof a?n.genSalt(a,function(a,e){A(c,e,b,d)}):"string"===typeof c&&"string"===typeof a?A(c,a,b,d):s(b.bind(this,Error("Illegal arguments: "+typeof c+", "+typeof a)))};n.compareSync=function(c,
+a){("string"!==typeof c||"string"!==typeof a)&&l(Error("Illegal arguments: "+typeof c+", "+typeof a));if(60!==a.length)return!1;for(var b=n.hashSync(c,a.substr(0,a.length-31)),d=b.length===a.length,f=b.length<a.length?b.length:a.length,e=0;e<f;++e)b.length>=e&&(a.length>=e&&b[e]!=a[e])&&(d=!1);return d};n.compare=function(c,a,b,d){"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"string"!==typeof c||"string"!==typeof a?s(b.bind(this,Error("Illegal arguments: "+typeof c+", "+typeof a))):
+n.hash(c,a.substr(0,29),function(d,c){b(d,a===c)},d)};n.getRounds=function(c){"string"!==typeof c&&l(Error("Illegal arguments: "+typeof c));return parseInt(c.split("$")[2],10)};n.getSalt=function(c){"string"!==typeof c&&l(Error("Illegal arguments: "+typeof c));60!==c.length&&l(Error("Illegal hash length: "+c.length+" != 60"));return c.substring(0,29)};var s="undefined"!==typeof process&&process&&"function"===typeof process.nextTick?"function"===typeof setImmediate?setImmediate:process.nextTick:setTimeout,
+u="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),r=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],z=String.fromCharCode,G=function(){var c={h:1114111,
+g:function(a,b){var d=p;"number"===typeof a&&(d=a,a=function(){return p});for(;d!==p||(d=a())!==p;)128>d?b(d&127):(2048>d?b(d>>6&31|192):(65536>d?b(d>>12&15|224):(b(d>>18&7|240),b(d>>12&63|128)),b(d>>6&63|128)),b(d&63|128)),d=p},e:function(a,b){function d(a){a=a.slice(0,a.indexOf(p));var b=Error(a.toString());b.name="TruncatedError";b.bytes=a;l(b)}for(var c,e,k,h;(c=a())!==p;)0===(c&128)?b(c):192===(c&224)?((e=a())===p&&d([c,e]),b((c&31)<<6|e&63)):224===(c&240)?(((e=a())===p||(k=a())===p)&&d([c,e,
+k]),b((c&15)<<12|(e&63)<<6|k&63)):240===(c&248)?(((e=a())===p||(k=a())===p||(h=a())===p)&&d([c,e,k,h]),b((c&7)<<18|(e&63)<<12|(k&63)<<6|h&63)):l(RangeError("Illegal starting byte: "+c))},b:function(a,b){for(var c,f=p;(c=f!==p?f:a())!==p;)55296<=c&&57343>=c&&(f=a())!==p&&56320<=f&&57343>=f?(b(1024*(c-55296)+f-56320+65536),f=p):b(c);f!==p&&b(f)},d:function(a,b){var c=p;"number"===typeof a&&(c=a,a=function(){return p});for(;c!==p||(c=a())!==p;)65535>=c?b(c):(c-=65536,b((c>>10)+55296),b(c%1024+56320)),
+c=p},f:function(a,b){c.b(a,function(a){c.g(a,b)})},k:function(a,b){c.e(a,function(a){c.d(a,b)})},c:function(a){return 128>a?1:2048>a?2:65536>a?3:4},j:function(a){for(var b,d=0;(b=a())!==p;)d+=c.c(b);return d},i:function(a){var b=0,d=0;c.b(a,function(a){++b;d+=c.c(a)});return[b,d]}};return c}();Date.now=Date.now||function(){return+new Date};var J=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,
+3041331479,2450970073,2306472731],K=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,
+289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,
+1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,
+442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,
+3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,
+48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,
+1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,
+613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,
+2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,
+1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,
+4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,
+2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,
+499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,
+3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,
+309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,
+1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,
+2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,
+2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,
+3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,
+3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,
+3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,
+1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],E=[1332899944,1700884034,1701343084,1684370003,1668446532,
+1869963892];"undefined"!==typeof module&&module.exports?module.exports=n:"undefined"!==typeof define&&define.amd?define(function(){return n}):(t.dcodeIO=t.dcodeIO||{}).bcrypt=n})(this);})();
diff --git a/p/scripts/category.js b/p/scripts/category.js
new file mode 100644
index 000000000..fbcd83a01
--- /dev/null
+++ b/p/scripts/category.js
@@ -0,0 +1,125 @@
+"use strict";
+/* globals i18n */
+/* jshint globalstrict: true */
+
+var loading = false,
+ dnd_successful = false;
+
+function dragend_process(t) {
+ t.setAttribute('draggable', 'false');
+
+ if (loading) {
+ window.setTimeout(function() {
+ dragend_process(t);
+ }, 50);
+ return;
+ }
+
+ if (!dnd_successful) {
+ t.style.display = '';
+ t.style.opacity = '';
+ t.setAttribute('draggable', 'true');
+ } else {
+ var parent = $(t.parentNode);
+ $(t).remove();
+
+ if (parent.children().length <= 0) {
+ parent.append('<li class="item disabled" dropzone="move">' + i18n.category_empty + '</li>');
+ }
+ }
+}
+
+var dragFeedId = '',
+ dragHtml = '';
+
+function init_draggable() {
+ if (!(window.$ && window.i18n)) {
+ if (window.console) {
+ console.log('FreshRSS waiting for JS…');
+ }
+ window.setTimeout(init_draggable, 50);
+ return;
+ }
+
+ var draggable = '[draggable="true"]',
+ dropzone = '[dropzone="move"]';
+
+ $('.drop-section').on('dragstart', draggable, function(e) {
+ var drag = $(e.target).closest('[draggable]')[0];
+ e.originalEvent.dataTransfer.effectAllowed = 'move';
+ dragHtml = drag.outerHTML;
+ dragFeedId = drag.getAttribute('data-feed-id');
+ e.originalEvent.dataTransfer.setData('text', dragFeedId);
+ drag.style.opacity = 0.3;
+
+ dnd_successful = false;
+ });
+ $('.drop-section').on('dragend', draggable, function(e) {
+ dragend_process(e.target);
+ });
+
+ $('.drop-section').on('dragenter', dropzone, function(e) {
+ $(this).addClass('drag-hover');
+
+ e.preventDefault();
+ });
+ $('.drop-section').on('dragleave', dropzone, function(e) {
+ var pos_this = $(this).position(),
+ scroll_top = $(document).scrollTop(),
+ top = pos_this.top,
+ left = pos_this.left,
+ right = left + $(this).width(),
+ bottom = top + $(this).height(),
+ mouse_x = e.originalEvent.screenX,
+ mouse_y = e.originalEvent.clientY + scroll_top;
+
+ if (left <= mouse_x && mouse_x <= right &&
+ top <= mouse_y && mouse_y <= bottom) {
+ // HACK because dragleave is triggered when hovering children!
+ return;
+ }
+ $(this).removeClass('drag-hover');
+ });
+ $('.drop-section').on('dragover', dropzone, function(e) {
+ e.originalEvent.dataTransfer.dropEffect = "move";
+
+ e.preventDefault();
+ return false;
+ });
+ $('.drop-section').on('drop', dropzone, function(e) {
+ loading = true;
+
+ $.ajax({
+ type: 'POST',
+ url: './?c=feed&a=move',
+ data : {
+ f_id: dragFeedId,
+ c_id: e.target.parentNode.getAttribute('data-cat-id'),
+ _csrf: context.csrf,
+ }
+ }).done(function() {
+ $(e.target).after(dragHtml);
+ if ($(e.target).hasClass('disabled')) {
+ $(e.target).remove();
+ }
+ dnd_successful = true;
+ }).always(function() {
+ loading = false;
+ dragFeedId = '';
+ dragHtml = '';
+ });
+
+ $(this).removeClass('drag-hover');
+
+ e.preventDefault();
+ });
+}
+
+
+if (document.readyState && document.readyState !== 'loading') {
+ init_draggable();
+} else if (document.addEventListener) {
+ document.addEventListener('DOMContentLoaded', function () {
+ init_draggable();
+ }, false);
+}
diff --git a/p/scripts/global_view.js b/p/scripts/global_view.js
index 7105520a6..de0b9cb9f 100644
--- a/p/scripts/global_view.js
+++ b/p/scripts/global_view.js
@@ -1,4 +1,7 @@
"use strict";
+/* globals init_load_more, init_posts, init_stream */
+/* jshint globalstrict: true */
+
var panel_loading = false;
function load_panel(link) {
@@ -9,7 +12,7 @@ function load_panel(link) {
panel_loading = true;
$.get(link, function (data) {
- $("#panel").append($(".nav_menu, #stream .day, #stream .flux, #stream .pagination", data));
+ $("#panel").append($(".nav_menu, #stream .day, #stream .flux, #stream .pagination, #stream.prompt", data));
$("#panel .nav_menu").children().not("#nav_menu_read_all").remove();
@@ -23,13 +26,15 @@ function load_panel(link) {
// Sans ça, si l'on scroll en lisant une catégorie par exemple,
// en en ouvrant une autre ensuite, on se retrouve au même point de scroll
$("#panel").scrollTop(0);
+ $(window).scrollTop(0);
- $('#panel').on('click', '#nav_menu_read_all > a, #nav_menu_read_all .item > a, #bigMarkAsRead', function () {
+ $('#panel').on('click', '#nav_menu_read_all button, #bigMarkAsRead', function () {
+ console.log($(this).attr("formaction"));
$.ajax({
- url: $(this).attr("href"),
+ type: "POST",
+ url: $(this).attr("formaction"),
async: false
});
- //$("#panel .close").first().click();
window.location.reload(false);
return false;
});
@@ -39,9 +44,8 @@ function load_panel(link) {
}
function init_close_panel() {
- $("#panel .close").click(function () {
- $("#panel").html('<a class="close" href="#">' + window.iconClose + '</a>');
- init_close_panel();
+ $("#overlay .close").click(function () {
+ $("#panel").html('');
$("#panel").slideToggle();
$("#overlay").fadeOut();
@@ -50,7 +54,8 @@ function init_close_panel() {
}
function init_global_view() {
- $("#stream .box-category a").click(function () {
+ // TODO: should be based on generic classes.
+ $(".box a").click(function () {
var link = $(this).attr("href");
load_panel(link);
diff --git a/p/scripts/install.js b/p/scripts/install.js
new file mode 100644
index 000000000..b7975fd6e
--- /dev/null
+++ b/p/scripts/install.js
@@ -0,0 +1,73 @@
+"use strict";
+/* jshint globalstrict: true */
+
+function show_password() {
+ var button = this;
+ var passwordField = document.getElementById(button.getAttribute('data-toggle'));
+ passwordField.setAttribute('type', 'text');
+ button.className += ' active';
+ return false;
+}
+function hide_password() {
+ var button = this;
+ var passwordField = document.getElementById(button.getAttribute('data-toggle'));
+ passwordField.setAttribute('type', 'password');
+ button.className = button.className.replace(/(?:^|\s)active(?!\S)/g , '');
+ return false;
+}
+var toggles = document.getElementsByClassName('toggle-password');
+for (var i = 0 ; i < toggles.length ; i++) {
+ toggles[i].addEventListener('mousedown', show_password);
+ toggles[i].addEventListener('mouseup', hide_password);
+}
+
+function auth_type_change() {
+ var auth_type = document.getElementById('auth_type');
+ if (auth_type) {
+ var auth_value = auth_type.value,
+ password_input = document.getElementById('passwordPlain');
+
+ if (auth_value === 'form') {
+ password_input.required = true;
+ } else {
+ password_input.required = false;
+ }
+ }
+}
+var auth_type = document.getElementById('auth_type');
+if (auth_type) {
+ auth_type_change();
+ auth_type.addEventListener('change', auth_type_change);
+}
+
+function mySqlShowHide() {
+ var mysql = document.getElementById('mysql');
+ if (mysql) {
+ if (document.getElementById('type').value === 'sqlite') {
+ document.getElementById('host').value = '';
+ document.getElementById('user').value = '';
+ document.getElementById('pass').value = '';
+ document.getElementById('base').value = '';
+ document.getElementById('prefix').value = '';
+ mysql.style.display = 'none';
+ } else {
+ mysql.style.display = 'block';
+ }
+ }
+}
+var bd_type = document.getElementById('type');
+if (bd_type) {
+ mySqlShowHide();
+ bd_type.addEventListener('change', mySqlShowHide);
+}
+
+function ask_confirmation(e) {
+ var str_confirmation = this.getAttribute('data-str-confirm');
+ if (!confirm(str_confirmation)) {
+ e.preventDefault();
+ }
+}
+var confirms = document.getElementsByClassName('confirm');
+for (var i = 0 ; i < confirms.length ; i++) {
+ confirms[i].addEventListener('click', ask_confirmation);
+}
diff --git a/p/scripts/jquery.lazyload.min.js b/p/scripts/jquery.lazyload.min.js
deleted file mode 100644
index 8dd097dc3..000000000
--- a/p/scripts/jquery.lazyload.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Lazy Load - jQuery plugin for lazy loading images
- *
- * Copyright (c) 2007-2013 Mika Tuupola
- *
- * Licensed under the MIT license:
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Project home:
- * http://www.appelsiini.net/projects/lazyload
- *
- * Version: 1.9.0
- *
- */
-!function(a,b,c,d){var e=a(b);a.fn.lazyload=function(f){function g(){var b=0;i.each(function(){var c=a(this);if(!j.skip_invisible||c.is(":visible"))if(a.abovethetop(this,j)||a.leftofbegin(this,j));else if(a.belowthefold(this,j)||a.rightoffold(this,j)){if(++b>j.failure_limit)return!1}else c.trigger("appear"),b=0})}var h,i=this,j={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:b,data_attribute:"original",skip_invisible:!0,appear:null,load:null,placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"};return f&&(d!==f.failurelimit&&(f.failure_limit=f.failurelimit,delete f.failurelimit),d!==f.effectspeed&&(f.effect_speed=f.effectspeed,delete f.effectspeed),a.extend(j,f)),h=j.container===d||j.container===b?e:a(j.container),0===j.event.indexOf("scroll")&&h.bind(j.event,function(){return g()}),this.each(function(){var b=this,c=a(b);b.loaded=!1,(c.attr("src")===d||c.attr("src")===!1)&&c.attr("src",j.placeholder),c.one("appear",function(){if(!this.loaded){if(j.appear){var d=i.length;j.appear.call(b,d,j)}a("<img />").bind("load",function(){var d=c.data(j.data_attribute);c.hide(),c.is("img")?c.attr("src",d):c.css("background-image","url('"+d+"')"),c[j.effect](j.effect_speed),b.loaded=!0;var e=a.grep(i,function(a){return!a.loaded});if(i=a(e),j.load){var f=i.length;j.load.call(b,f,j)}}).attr("src",c.data(j.data_attribute))}}),0!==j.event.indexOf("scroll")&&c.bind(j.event,function(){b.loaded||c.trigger("appear")})}),e.bind("resize",function(){g()}),/iphone|ipod|ipad.*os 5/gi.test(navigator.appVersion)&&e.bind("pageshow",function(b){b.originalEvent&&b.originalEvent.persisted&&i.each(function(){a(this).trigger("appear")})}),a(c).ready(function(){g()}),this},a.belowthefold=function(c,f){var g;return g=f.container===d||f.container===b?(b.innerHeight?b.innerHeight:e.height())+e.scrollTop():a(f.container).offset().top+a(f.container).height(),g<=a(c).offset().top-f.threshold},a.rightoffold=function(c,f){var g;return g=f.container===d||f.container===b?e.width()+e.scrollLeft():a(f.container).offset().left+a(f.container).width(),g<=a(c).offset().left-f.threshold},a.abovethetop=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollTop():a(f.container).offset().top,g>=a(c).offset().top+f.threshold+a(c).height()},a.leftofbegin=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollLeft():a(f.container).offset().left,g>=a(c).offset().left+f.threshold+a(c).width()},a.inviewport=function(b,c){return!(a.rightoffold(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.abovethetop(b,c))},a.extend(a.expr[":"],{"below-the-fold":function(b){return a.belowthefold(b,{threshold:0})},"above-the-top":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-screen":function(b){return a.rightoffold(b,{threshold:0})},"left-of-screen":function(b){return!a.rightoffold(b,{threshold:0})},"in-viewport":function(b){return a.inviewport(b,{threshold:0})},"above-the-fold":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-fold":function(b){return a.rightoffold(b,{threshold:0})},"left-of-fold":function(b){return!a.rightoffold(b,{threshold:0})}})}(jQuery,window,document); \ No newline at end of file
diff --git a/p/scripts/jquery.min.js b/p/scripts/jquery.min.js
index cbe6abe59..4c5be4c0f 100644
--- a/p/scripts/jquery.min.js
+++ b/p/scripts/jquery.min.js
@@ -1,4 +1,4 @@
-/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m=a.document,n="2.1.0",o=function(a,b){return new o.fn.init(a,b)},p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};o.fn=o.prototype={jquery:n,constructor:o,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=o.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return o.each(this,a,b)},map:function(a){return this.pushStack(o.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},o.extend=o.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||o.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(o.isPlainObject(d)||(e=o.isArray(d)))?(e?(e=!1,f=c&&o.isArray(c)?c:[]):f=c&&o.isPlainObject(c)?c:{},g[b]=o.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},o.extend({expando:"jQuery"+(n+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===o.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isPlainObject:function(a){if("object"!==o.type(a)||a.nodeType||o.isWindow(a))return!1;try{if(a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=o.trim(a),a&&(1===a.indexOf("use strict")?(b=m.createElement("script"),b.text=a,m.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":k.call(a)},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?o.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),o.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||o.guid++,f):void 0},now:Date.now,support:l}),o.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=o.type(a);return"function"===c||o.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);o.find=t,o.expr=t.selectors,o.expr[":"]=o.expr.pseudos,o.unique=t.uniqueSort,o.text=t.getText,o.isXMLDoc=t.isXML,o.contains=t.contains;var u=o.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(o.isFunction(b))return o.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return o.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return o.filter(b,a,c);b=o.filter(b,a)}return o.grep(a,function(a){return g.call(b,a)>=0!==c})}o.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?o.find.matchesSelector(d,a)?[d]:[]:o.find.matches(a,o.grep(b,function(a){return 1===a.nodeType}))},o.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(o(a).filter(function(){for(b=0;c>b;b++)if(o.contains(e[b],this))return!0}));for(b=0;c>b;b++)o.find(a,e[b],d);return d=this.pushStack(c>1?o.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?o(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=o.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof o?b[0]:b,o.merge(this,o.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:m,!0)),v.test(c[1])&&o.isPlainObject(b))for(c in b)o.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=m.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=m,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):o.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(o):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),o.makeArray(a,this))};A.prototype=o.fn,y=o(m);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};o.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&o(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),o.fn.extend({has:function(a){var b=o(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(o.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?o(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&o.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?o.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(o(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(o.unique(o.merge(this.get(),o(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}o.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return o.dir(a,"parentNode")},parentsUntil:function(a,b,c){return o.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return o.dir(a,"nextSibling")},prevAll:function(a){return o.dir(a,"previousSibling")},nextUntil:function(a,b,c){return o.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return o.dir(a,"previousSibling",c)},siblings:function(a){return o.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return o.sibling(a.firstChild)},contents:function(a){return a.contentDocument||o.merge([],a.childNodes)}},function(a,b){o.fn[a]=function(c,d){var e=o.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=o.filter(d,e)),this.length>1&&(C[a]||o.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return o.each(a.match(E)||[],function(a,c){b[c]=!0}),b}o.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):o.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){o.each(b,function(b,c){var d=o.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&o.each(arguments,function(a,b){var c;while((c=o.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?o.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},o.extend({Deferred:function(a){var b=[["resolve","done",o.Callbacks("once memory"),"resolved"],["reject","fail",o.Callbacks("once memory"),"rejected"],["notify","progress",o.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return o.Deferred(function(c){o.each(b,function(b,f){var g=o.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&o.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?o.extend(a,d):d}},e={};return d.pipe=d.then,o.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&o.isFunction(a.promise)?e:0,g=1===f?a:o.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&o.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;o.fn.ready=function(a){return o.ready.promise().done(a),this},o.extend({isReady:!1,readyWait:1,holdReady:function(a){a?o.readyWait++:o.ready(!0)},ready:function(a){(a===!0?--o.readyWait:o.isReady)||(o.isReady=!0,a!==!0&&--o.readyWait>0||(H.resolveWith(m,[o]),o.fn.trigger&&o(m).trigger("ready").off("ready")))}});function I(){m.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),o.ready()}o.ready.promise=function(b){return H||(H=o.Deferred(),"complete"===m.readyState?setTimeout(o.ready):(m.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},o.ready.promise();var J=o.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===o.type(c)){e=!0;for(h in c)o.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,o.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(o(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};o.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=o.expando+Math.random()}K.uid=1,K.accepts=o.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,o.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(o.isEmptyObject(f))o.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,o.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{o.isArray(b)?d=b.concat(b.map(o.camelCase)):(e=o.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!o.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?o.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}o.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),o.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;
-while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=o.camelCase(d.slice(5)),P(f,d,e[d]));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=o.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),o.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||o.isArray(c)?d=L.access(a,b,o.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=o.queue(a,b),d=c.length,e=c.shift(),f=o._queueHooks(a,b),g=function(){o.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:o.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),o.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?o.queue(this[0],a):void 0===b?this:this.each(function(){var c=o.queue(this,a,b);o._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&o.dequeue(this,a)})},dequeue:function(a){return this.each(function(){o.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=o.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===o.css(a,"display")||!o.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=m.createDocumentFragment(),b=a.appendChild(m.createElement("div"));b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";l.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return m.activeElement}catch(a){}}o.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=o.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof o!==U&&o.event.triggered!==b.type?o.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n&&(l=o.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=o.event.special[n]||{},k=o.extend({type:n,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&o.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),o.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n){l=o.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||o.removeEvent(a,n,r.handle),delete i[n])}else for(n in i)o.event.remove(a,n+b[j],c,d,!0);o.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,p=[d||m],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||m,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+o.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[o.expando]?b:new o.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:o.makeArray(c,[b]),n=o.event.special[q]||{},e||!n.trigger||n.trigger.apply(d,c)!==!1)){if(!e&&!n.noBubble&&!o.isWindow(d)){for(i=n.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||m)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:n.bindType||q,l=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),l&&l.apply(g,c),l=k&&g[k],l&&l.apply&&o.acceptData(g)&&(b.result=l.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||n._default&&n._default.apply(p.pop(),c)!==!1||!o.acceptData(d)||k&&o.isFunction(d[q])&&!o.isWindow(d)&&(h=d[k],h&&(d[k]=null),o.event.triggered=q,d[q](),o.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=o.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=o.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=o.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((o.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?o(e,this).index(i)>=0:o.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||m,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[o.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new o.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=m),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&o.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return o.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=o.extend(new o.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?o.event.trigger(e,null,b):o.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},o.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},o.Event=function(a,b){return this instanceof o.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.getPreventDefault&&a.getPreventDefault()?Z:$):this.type=a,b&&o.extend(this,b),this.timeStamp=a&&a.timeStamp||o.now(),void(this[o.expando]=!0)):new o.Event(a,b)},o.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z,this.stopPropagation()}},o.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){o.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!o.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.focusinBubbles||o.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){o.event.simulate(b,a.target,o.event.fix(a),!0)};o.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),o.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return o().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=o.guid++)),this.each(function(){o.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,o(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){o.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){o.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?o.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return o.nodeName(a,"table")&&o.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)o.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=o.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&o.nodeName(a,b)?o.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}o.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=o.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||o.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===o.type(e))o.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;o.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===o.inArray(e,d))&&(i=o.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f,g,h=o.event.special,i=0;void 0!==(c=a[i]);i++){if(o.acceptData(c)&&(f=c[L.expando],f&&(b=L.cache[f]))){if(d=Object.keys(b.events||{}),d.length)for(g=0;void 0!==(e=d[g]);g++)h[e]?o.event.remove(c,e):o.removeEvent(c,e,b.handle);L.cache[f]&&delete L.cache[f]}delete M.cache[c[M.expando]]}}}),o.fn.extend({text:function(a){return J(this,function(a){return void 0===a?o.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?o.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||o.cleanData(ob(c)),c.parentNode&&(b&&o.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(o.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return o.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(o.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,o.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,n=k-1,p=a[0],q=o.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(c=o.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=o.map(ob(c,"script"),kb),g=f.length;k>j;j++)h=c,j!==n&&(h=o.clone(h,!0,!0),g&&o.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,o.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&o.contains(i,h)&&(h.src?o._evalUrl&&o._evalUrl(h.src):o.globalEval(h.textContent.replace(hb,"")))}return this}}),o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){o.fn[a]=function(a){for(var c,d=[],e=o(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),o(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d=o(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:o.css(d[0],"display");return d.detach(),e}function tb(a){var b=m,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||o("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||o.contains(a.ownerDocument,a)||(g=o.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",e=m.documentElement,f=m.createElement("div"),g=m.createElement("div");g.style.backgroundClip="content-box",g.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===g.style.backgroundClip,f.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",f.appendChild(g);function h(){g.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",e.appendChild(f);var d=a.getComputedStyle(g,null);b="1%"!==d.top,c="4px"===d.width,e.removeChild(f)}a.getComputedStyle&&o.extend(l,{pixelPosition:function(){return h(),b},boxSizingReliable:function(){return null==c&&h(),c},reliableMarginRight:function(){var b,c=g.appendChild(m.createElement("div"));return c.style.cssText=g.style.cssText=d,c.style.marginRight=c.style.width="0",g.style.width="1px",e.appendChild(f),b=!parseFloat(a.getComputedStyle(c,null).marginRight),e.removeChild(f),g.innerHTML="",b}})}(),o.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:0,fontWeight:400},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=o.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=o.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=o.css(a,"border"+R[f]+"Width",!0,e))):(g+=o.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=o.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===o.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):f[g]||(e=S(d),(c&&"none"!==c||!e)&&L.set(d,"olddisplay",e?c:o.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}o.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=o.camelCase(b),i=a.style;return b=o.cssProps[h]||(o.cssProps[h]=Fb(i,h)),g=o.cssHooks[b]||o.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(o.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||o.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]="",i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=o.camelCase(b);return b=o.cssProps[h]||(o.cssProps[h]=Fb(a.style,h)),g=o.cssHooks[b]||o.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||o.isNumeric(f)?f||0:e):e}}),o.each(["height","width"],function(a,b){o.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&zb.test(o.css(a,"display"))?o.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===o.css(a,"boxSizing",!1,e),e):0)}}}),o.cssHooks.marginRight=yb(l.reliableMarginRight,function(a,b){return b?o.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),o.each({margin:"",padding:"",border:"Width"},function(a,b){o.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(o.cssHooks[a+b].set=Gb)}),o.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(o.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=o.css(a,b[g],!1,d);return f}return void 0!==c?o.style(a,b,c):o.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?o(this).show():o(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}o.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(o.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?o.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=o.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){o.fx.step[a.prop]?o.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[o.cssProps[a.prop]]||o.cssHooks[a.prop])?o.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},o.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},o.fx=Kb.prototype.init,o.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(o.cssNumber[a]?"":"px"),g=(o.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(o.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,o.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=o.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k=this,l={},m=a.style,n=a.nodeType&&S(a),p=L.get(a,"fxshow");c.queue||(h=o._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,k.always(function(){k.always(function(){h.unqueued--,o.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],j=o.css(a,"display"),"none"===j&&(j=tb(a.nodeName)),"inline"===j&&"none"===o.css(a,"float")&&(m.display="inline-block")),c.overflow&&(m.overflow="hidden",k.always(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(n?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;n=!0}l[d]=p&&p[d]||o.style(a,d)}if(!o.isEmptyObject(l)){p?"hidden"in p&&(n=p.hidden):p=L.access(a,"fxshow",{}),f&&(p.hidden=!n),n?o(a).show():k.done(function(){o(a).hide()}),k.done(function(){var b;L.remove(a,"fxshow");for(b in l)o.style(a,b,l[b])});for(d in l)g=Ub(n?p[d]:0,d,k),d in p||(p[d]=g.start,n&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=o.camelCase(c),e=b[d],f=a[c],o.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=o.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=o.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:o.extend({},b),opts:o.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=o.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return o.map(k,Ub,j),o.isFunction(j.opts.start)&&j.opts.start.call(a,j),o.fx.timer(o.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}o.Animation=o.extend(Xb,{tweener:function(a,b){o.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),o.speed=function(a,b,c){var d=a&&"object"==typeof a?o.extend({},a):{complete:c||!c&&b||o.isFunction(a)&&a,duration:a,easing:c&&b||b&&!o.isFunction(b)&&b};return d.duration=o.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in o.fx.speeds?o.fx.speeds[d.duration]:o.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){o.isFunction(d.old)&&d.old.call(this),d.queue&&o.dequeue(this,d.queue)},d},o.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=o.isEmptyObject(a),f=o.speed(b,c,d),g=function(){var b=Xb(this,o.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=o.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&o.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=o.timers,g=d?d.length:0;for(c.finish=!0,o.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),o.each(["toggle","show","hide"],function(a,b){var c=o.fn[b];o.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),o.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){o.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),o.timers=[],o.fx.tick=function(){var a,b=0,c=o.timers;for(Lb=o.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||o.fx.stop(),Lb=void 0},o.fx.timer=function(a){o.timers.push(a),a()?o.fx.start():o.timers.pop()},o.fx.interval=13,o.fx.start=function(){Mb||(Mb=setInterval(o.fx.tick,o.fx.interval))},o.fx.stop=function(){clearInterval(Mb),Mb=null},o.fx.speeds={slow:600,fast:200,_default:400},o.fn.delay=function(a,b){return a=o.fx?o.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=m.createElement("input"),b=m.createElement("select"),c=b.appendChild(m.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=m.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var Yb,Zb,$b=o.expr.attrHandle;o.fn.extend({attr:function(a,b){return J(this,o.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){o.removeAttr(this,a)})}}),o.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?o.prop(a,b,c):(1===f&&o.isXMLDoc(a)||(b=b.toLowerCase(),d=o.attrHooks[b]||(o.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=o.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void o.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=o.propFix[c]||c,o.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&o.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?o.removeAttr(a,c):a.setAttribute(c,c),c}},o.each(o.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||o.find.attr;$b[b]=function(a,b,d){var e,f;
-return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;o.fn.extend({prop:function(a,b){return J(this,o.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[o.propFix[a]||a]})}}),o.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!o.isXMLDoc(a),f&&(b=o.propFix[b]||b,e=o.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),l.optSelected||(o.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),o.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){o.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;o.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(o.isFunction(a))return this.each(function(b){o(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=o.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(o.isFunction(a))return this.each(function(b){o(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?o.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(o.isFunction(a)?function(c){o(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=o(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;o.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=o.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,o(this).val()):a,null==e?e="":"number"==typeof e?e+="":o.isArray(e)&&(e=o.map(e,function(a){return null==a?"":a+""})),b=o.valHooks[this.type]||o.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=o.valHooks[e.type]||o.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),o.extend({valHooks:{select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&o.nodeName(c.parentNode,"optgroup"))){if(b=o(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=o.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=o.inArray(o(d).val(),f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),o.each(["radio","checkbox"],function(){o.valHooks[this]={set:function(a,b){return o.isArray(b)?a.checked=o.inArray(o(a).val(),b)>=0:void 0}},l.checkOn||(o.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),o.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){o.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),o.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=o.now(),dc=/\?/;o.parseJSON=function(a){return JSON.parse(a+"")},o.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&o.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=m.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(o.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,o.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=o.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&o.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}o.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":o.parseJSON,"text xml":o.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,o.ajaxSettings),b):tc(o.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=o.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?o(l):o.event,n=o.Deferred(),p=o.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(n.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=o.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=o.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===o.active++&&o.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(o.lastModified[d]&&v.setRequestHeader("If-Modified-Since",o.lastModified[d]),o.etag[d]&&v.setRequestHeader("If-None-Match",o.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(o.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(o.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?n.resolveWith(l,[r,x,v]):n.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--o.active||o.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return o.get(a,b,c,"json")},getScript:function(a,b){return o.get(a,void 0,b,"script")}}),o.each(["get","post"],function(a,b){o[b]=function(a,c,d,e){return o.isFunction(c)&&(e=e||d,d=c,c=void 0),o.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),o.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){o.fn[b]=function(a){return this.on(b,a)}}),o._evalUrl=function(a){return o.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},o.fn.extend({wrapAll:function(a){var b;return o.isFunction(a)?this.each(function(b){o(this).wrapAll(a.call(this,b))}):(this[0]&&(b=o(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(o.isFunction(a)?function(b){o(this).wrapInner(a.call(this,b))}:function(){var b=o(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=o.isFunction(a);return this.each(function(c){o(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){o.nodeName(this,"body")||o(this).replaceWith(this.childNodes)}).end()}}),o.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},o.expr.filters.visible=function(a){return!o.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(o.isArray(b))o.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==o.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}o.param=function(a,b){var c,d=[],e=function(a,b){b=o.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=o.ajaxSettings&&o.ajaxSettings.traditional),o.isArray(a)||a.jquery&&!o.isPlainObject(a))o.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},o.fn.extend({serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=o.prop(this,"elements");return a?o.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!o(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=o(this).val();return null==c?null:o.isArray(c)?o.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),o.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=o.ajaxSettings.xhr();a.ActiveXObject&&o(a).on("unload",function(){for(var a in Dc)Dc[a]()}),l.cors=!!Fc&&"withCredentials"in Fc,l.ajax=Fc=!!Fc,o.ajaxTransport(function(a){var b;return l.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort"),f.send(a.hasContent&&a.data||null)},abort:function(){b&&b()}}:void 0}),o.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return o.globalEval(a),a}}}),o.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),o.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=o("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),m.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;o.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||o.expando+"_"+cc++;return this[a]=!0,a}}),o.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=o.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||o.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&o.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),o.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||m;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=o.buildFragment([a],b,e),e&&e.length&&o(e).remove(),o.merge([],d.childNodes))};var Ic=o.fn.load;o.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h),a=a.slice(0,h)),o.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&o.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?o("<div>").append(o.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},o.expr.filters.animated=function(a){return o.grep(o.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return o.isWindow(a)?a:9===a.nodeType&&a.defaultView}o.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=o.css(a,"position"),l=o(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=o.css(a,"top"),i=o.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),o.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},o.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){o.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,o.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===o.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),o.nodeName(a[0],"html")||(d=a.offset()),d.top+=o.css(a[0],"borderTopWidth",!0),d.left+=o.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-o.css(c,"marginTop",!0),left:b.left-d.left-o.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!o.nodeName(a,"html")&&"static"===o.css(a,"position"))a=a.offsetParent;return a||Jc})}}),o.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;o.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),o.each(["top","left"],function(a,b){o.cssHooks[b]=yb(l.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?o(a).position()[b]+"px":c):void 0})}),o.each({Height:"height",Width:"width"},function(a,b){o.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){o.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return o.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?o.css(b,c,g):o.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),o.fn.size=function(){return this.length},o.fn.andSelf=o.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return o});var Lc=a.jQuery,Mc=a.$;return o.noConflict=function(b){return a.$===o&&(a.$=Mc),b&&a.jQuery===o&&(a.jQuery=Lc),o},typeof b===U&&(a.jQuery=a.$=o),o});
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)),
+void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
diff --git a/p/scripts/jquery.sticky-kit.min.js b/p/scripts/jquery.sticky-kit.min.js
new file mode 100644
index 000000000..e2a3c6de9
--- /dev/null
+++ b/p/scripts/jquery.sticky-kit.min.js
@@ -0,0 +1,9 @@
+/*
+ Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | http://leafo.net
+*/
+(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k));
+if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("<div />"))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q,
+u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),e<F&&(m=!1,c=q,null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),
+h.detach()),b={position:"",width:"",top:""},a.css(b).removeClass(t).trigger("sticky_kit:unstick")),B&&(b=f.height(),u+q>b&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}),
+a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize",
+y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n<K;n++)d=this[n],J(b(d));return this}}).call(this);
diff --git a/p/scripts/main.js b/p/scripts/main.js
index 34042c945..14e0c5be5 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -1,14 +1,11 @@
"use strict";
-var $stream = null,
- isCollapsed = true;
-
-function is_normal_mode() {
- return $stream.hasClass('normal');
-}
+/* globals context, i18n, shortcut, shortcuts, url */
+/* jshint globalstrict: true */
-function is_global_mode() {
- return $stream.hasClass('global');
-}
+var $stream = null,
+ isCollapsed = true,
+ shares = 0,
+ ajax_loading = false;
function redirect(url, new_tab) {
if (url) {
@@ -31,7 +28,7 @@ function needsScroll($elem) {
}
function str2int(str) {
- if (str == '') {
+ if (!str) {
return 0;
}
return parseInt(str.replace(/\D/g, ''), 10) || 0;
@@ -53,30 +50,38 @@ function numberFormat(nStr) {
return x1 + x2;
}
-function incLabel(p, inc) {
+function incLabel(p, inc, spaceAfter) {
var i = str2int(p) + inc;
- return i > 0 ? ' (' + numberFormat(i) + ')' : '';
+ return i > 0 ? ((spaceAfter ? '' : ' ') + '(' + numberFormat(i) + ')' + (spaceAfter ? ' ' : '')) : '';
}
function incUnreadsFeed(article, feed_id, nb) {
//Update unread: feed
- var elem = $('#' + feed_id + '>.feed').get(0),
+ var elem = $('#' + feed_id).get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0,
feed_priority = elem ? str2int(elem.getAttribute('data-priority')) : 0;
if (elem) {
- elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
+ elem.setAttribute('data-unread', feed_unreads + nb);
+ elem = $(elem).children('.item-title').get(0);
+ if (elem) {
+ elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
+ }
}
//Update unread: category
- elem = $('#' + feed_id).parent().prevAll('.category').children(':first').get(0);
+ elem = $('#' + feed_id).parents('.category').get(0);
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
if (elem) {
- elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
+ elem.setAttribute('data-unread', feed_unreads + nb);
+ elem = $(elem).find('.title').get(0);
+ if (elem) {
+ elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
+ }
}
//Update unread: all
if (feed_priority > 0) {
- elem = $('#aside_flux .all').children(':first').get(0);
+ elem = $('#aside_feed .all .title').get(0);
if (elem) {
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
@@ -85,7 +90,7 @@ function incUnreadsFeed(article, feed_id, nb) {
//Update unread: favourites
if (article && article.closest('div').hasClass('favorite')) {
- elem = $('#aside_flux .favorites').children(':first').get(0);
+ elem = $('#aside_feed .favorites .title').get(0);
if (elem) {
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
@@ -93,60 +98,68 @@ function incUnreadsFeed(article, feed_id, nb) {
}
var isCurrentView = false;
- //Update unread: title
- document.title = document.title.replace(/((?: \([ 0-9]+\))?)( · .*?)((?: \([ 0-9]+\))?)$/, function (m, p1, p2, p3) {
+ // Update unread: title
+ document.title = document.title.replace(/^((?:\([ 0-9]+\) )?)/, function (m, p1) {
var $feed = $('#' + feed_id);
if (article || ($feed.closest('.active').length > 0 && $feed.siblings('.active').length === 0)) {
isCurrentView = true;
- return incLabel(p1, nb) + p2 + incLabel(p3, feed_priority > 0 ? nb : 0);
+ return incLabel(p1, nb, true);
+ } else if ($('.all.active').length > 0) {
+ isCurrentView = feed_priority > 0;
+ return incLabel(p1, feed_priority > 0 ? nb : 0, true);
} else {
- return p1 + p2 + incLabel(p3, feed_priority > 0 ? nb : 0);
+ return p1;
}
});
return isCurrentView;
}
-var pending_feeds = [];
+var pending_entries = {};
function mark_read(active, only_not_read) {
- if (active.length === 0 ||
- (only_not_read === true && !active.hasClass("not_read"))) {
+ if ((active.length === 0) || (!active.attr('id')) ||
+ (only_not_read && !active.hasClass("not_read"))) {
return false;
}
- var url = active.find("a.read").attr("href");
- if (url === undefined) {
+ if (pending_entries[active.attr('id')]) {
return false;
}
+ pending_entries[active.attr('id')] = true;
- var feed_url = active.find(".website>a").attr("href"),
- feed_id = feed_url.substr(feed_url.lastIndexOf('f_')),
- index_pending = pending_feeds.indexOf(feed_id);
-
- if (index_pending !== -1) {
- return false;
- }
-
- pending_feeds.push(feed_id);
+ var url = '.?c=entry&a=read&id=' + active.attr('id').replace(/^flux_/, '') +
+ (active.hasClass('not_read') ? '' : '&is_read=0');
$.ajax({
type: 'POST',
url: url,
- data : { ajax: true }
+ data : {
+ ajax: true,
+ _csrf: context.csrf,
+ },
}).done(function (data) {
var $r = active.find("a.read").attr("href", data.url),
inc = 0;
if (active.hasClass("not_read")) {
active.removeClass("not_read");
inc--;
- } else if (only_not_read !== true || active.hasClass("not_read")) {
+ } else {
active.addClass("not_read");
+ active.addClass("keep_unread");
inc++;
}
$r.find('.icon').replaceWith(data.icon);
- incUnreadsFeed(active, feed_id, inc);
+ var feed_url = active.find(".website>a").attr("href");
+ if (feed_url) {
+ var feed_id = feed_url.substr(feed_url.lastIndexOf('f_'));
+ incUnreadsFeed(active, feed_id, inc);
+ }
+ faviconNbUnread();
- pending_feeds.splice(index_pending, 1);
+ delete pending_entries[active.attr('id')];
+ }).fail(function (data) {
+ openNotification(i18n.notif_request_failed, 'bad');
+ delete pending_entries[active.attr('id')];
});
}
@@ -160,20 +173,18 @@ function mark_favorite(active) {
return false;
}
- var feed_url = active.find(".website>a").attr("href"),
- feed_id = feed_url.substr(feed_url.lastIndexOf('f_')),
- index_pending = pending_feeds.indexOf(feed_id);
-
- if (index_pending !== -1) {
+ if (pending_entries[active.attr('id')]) {
return false;
}
-
- pending_feeds.push(feed_id);
+ pending_entries[active.attr('id')] = true;
$.ajax({
type: 'POST',
url: url,
- data : { ajax: true }
+ data : {
+ ajax: true,
+ _csrf: context.csrf,
+ },
}).done(function (data) {
var $b = active.find("a.bookmark").attr("href", data.url),
inc = 0;
@@ -186,35 +197,34 @@ function mark_favorite(active) {
}
$b.find('.icon').replaceWith(data.icon);
- var favourites = $('.favorites>a').contents().last().get(0);
+ var favourites = $('#aside_feed .favorites .title').contents().last().get(0);
if (favourites && favourites.textContent) {
favourites.textContent = favourites.textContent.replace(/((?: \([ 0-9]+\))?\s*)$/, function (m, p1) {
- return incLabel(p1, inc);
+ return incLabel(p1, inc, false);
});
}
if (active.closest('div').hasClass('not_read')) {
- var elem = $('#aside_flux .favorites').children(':first').get(0),
+ var elem = $('#aside_feed .favorites .title').get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
if (elem) {
elem.setAttribute('data-unread', numberFormat(feed_unreads + inc));
}
}
- pending_feeds.splice(index_pending, 1);
+ delete pending_entries[active.attr('id')];
+ }).fail(function (data) {
+ openNotification(i18n.notif_request_failed, 'bad');
+ delete pending_entries[active.attr('id')];
});
}
function toggleContent(new_active, old_active) {
- old_active.removeClass("active");
-
if (new_active.length === 0) {
return;
}
- old_active.removeClass("current");
-
- if (does_lazyload) {
+ if (context.does_lazyload) {
new_active.find('img[data-original], iframe[data-original]').each(function () {
this.setAttribute('src', this.getAttribute('data-original'));
this.removeAttribute('data-original');
@@ -225,45 +235,64 @@ function toggleContent(new_active, old_active) {
if (isCollapsed) {
new_active.addClass("active");
}
+ old_active.removeClass("active current");
new_active.addClass("current");
+ if (context.auto_remove_article && !old_active.hasClass('not_read')) {
+ auto_remove(old_active);
+ }
+ } else {
+ new_active.toggleClass('active');
}
- var box_to_move = "html,body",
- relative_move = false;
- if (is_global_mode()) {
- box_to_move = "#panel";
- relative_move = true;
- }
-
- var new_pos = new_active.position().top,
- old_scroll = $(box_to_move).scrollTop();
- if (hide_posts) {
+ var relative_move = context.current_view === 'global',
+ box_to_move = $(relative_move ? "#panel" : "html,body");
- new_pos = new_active.position().top;
- old_scroll = $(box_to_move).scrollTop();
+ if (context.sticky_post) {
+ var prev_article = new_active.prevAll('.flux'),
+ new_pos = new_active.offset().top,
+ old_scroll = box_to_move.scrollTop();
- if (relative_move) {
- new_pos += old_scroll;
+ if (prev_article.length > 0 && new_pos - prev_article.offset().top <= 150) {
+ new_pos = prev_article.offset().top;
+ if (relative_move) {
+ new_pos -= box_to_move.offset().top;
+ }
}
- if (old_active[0] !== new_active[0]) {
- new_active.children(".flux_content").first().each(function () {
- $(box_to_move).scrollTop(new_pos).scrollTop();
- });
- }
- } else {
- if (relative_move) {
- new_pos += old_scroll;
- }
+ if (context.hide_posts) {
+ if (relative_move) {
+ new_pos += old_scroll;
+ }
+
+ if (old_active[0] !== new_active[0]) {
+ new_active.children(".flux_content").first().each(function () {
+ box_to_move.scrollTop(new_pos).scrollTop();
+ });
+ }
+ } else {
+ if (relative_move) {
+ new_pos += old_scroll;
+ }
- $(box_to_move).scrollTop(new_pos).scrollTop();
+ box_to_move.scrollTop(new_pos).scrollTop();
+ }
}
- if (auto_mark_article) {
+ if (context.auto_mark_article && new_active.hasClass('active')) {
mark_read(new_active, true);
}
}
+function auto_remove(element) {
+ var p = element.prev();
+ var n = element.next();
+ if (p.hasClass('day') && n.hasClass('day')) {
+ p.remove();
+ }
+ element.remove();
+ $('#stream > .flux:not(.not_read):not(.active)').remove();
+}
+
function prev_entry() {
var old_active = $(".flux.current"),
new_active = old_active.length === 0 ? $(".flux:last") : old_active.prevAll(".flux:first");
@@ -275,51 +304,48 @@ function next_entry() {
new_active = old_active.length === 0 ? $(".flux:first") : old_active.nextAll(".flux:first");
toggleContent(new_active, old_active);
- if (!auto_load_more) {
- var last_active = $(".flux:last");
- if (last_active.attr("id") === new_active.attr("id")) {
- load_more_posts();
- }
+ if (new_active.nextAll().length < 3) {
+ load_more_posts();
}
}
function prev_feed() {
- var active_feed = $("#aside_flux .feeds li.active");
+ var active_feed = $("#aside_feed .tree-folder-items .item.active");
if (active_feed.length > 0) {
- active_feed.prev().find('a.feed').each(function(){this.click();});
+ active_feed.prevAll(':visible:first').find('a').each(function(){this.click();});
} else {
last_feed();
}
}
function next_feed() {
- var active_feed = $("#aside_flux .feeds li.active");
+ var active_feed = $("#aside_feed .tree-folder-items .item.active");
if (active_feed.length > 0) {
- active_feed.next().find('a.feed').each(function(){this.click();});
+ active_feed.nextAll(':visible:first').find('a').each(function(){this.click();});
} else {
first_feed();
}
}
function first_feed() {
- var feed = $("#aside_flux .feeds.active li:first");
+ var feed = $("#aside_feed .tree-folder-items.active .item:visible:first");
if (feed.length > 0) {
feed.find('a')[1].click();
}
}
function last_feed() {
- var feed = $("#aside_flux .feeds.active li:last");
+ var feed = $("#aside_feed .tree-folder-items.active .item:visible:last");
if (feed.length > 0) {
feed.find('a')[1].click();
}
}
function prev_category() {
- var active_cat = $("#aside_flux .category.stick.active");
+ var active_cat = $("#aside_feed .tree-folder.active");
if (active_cat.length > 0) {
- var prev_cat = active_cat.parent('li').prev().find('.category.stick a.btn');
+ var prev_cat = active_cat.prevAll(':visible:first').find('.tree-folder-title .title');
if (prev_cat.length > 0) {
prev_cat[0].click();
}
@@ -330,10 +356,10 @@ function prev_category() {
}
function next_category() {
- var active_cat = $("#aside_flux .category.stick.active");
+ var active_cat = $("#aside_feed .tree-folder.active");
if (active_cat.length > 0) {
- var next_cat = active_cat.parent('li').next().find('.category.stick a.btn');
+ var next_cat = active_cat.nextAll(':visible:first').find('.tree-folder-title .title');
if (next_cat.length > 0) {
next_cat[0].click();
}
@@ -344,22 +370,55 @@ function next_category() {
}
function first_category() {
- var cat = $("#aside_flux .category.stick:first");
+ var cat = $("#aside_feed .tree-folder:visible:first");
if (cat.length > 0) {
- cat.find('a.btn')[0].click();
+ cat.find('.tree-folder-title .title')[0].click();
}
}
function last_category() {
- var cat = $("#aside_flux .category.stick:last");
+ var cat = $("#aside_feed .tree-folder:visible:last");
if (cat.length > 0) {
- cat.find('a.btn')[0].click();
+ cat.find('.tree-folder-title .title')[0].click();
}
}
function collapse_entry() {
isCollapsed = !isCollapsed;
- $(".flux.current").toggleClass("active");
+
+ var flux_current = $(".flux.current");
+ flux_current.toggleClass("active");
+ if (isCollapsed && context.auto_mark_article) {
+ mark_read(flux_current, true);
+ }
+}
+
+function user_filter(key) {
+ var filter = $('#dropdown-query');
+ var filters = filter.siblings('.dropdown-menu').find('.item.query a');
+ if (typeof key === "undefined") {
+ if (!filter.length) {
+ return;
+ }
+ // Display the filter div
+ window.location.hash = filter.attr('id');
+ // Force scrolling to the filter div
+ var scroll = needsScroll($('.header'));
+ if (scroll !== 0) {
+ $('html,body').scrollTop(scroll);
+ }
+ // Force the key value if there is only one action, so we can trigger it automatically
+ if (filters.length === 1) {
+ key = 1;
+ } else {
+ return;
+ }
+ }
+ // Trigger selected share action
+ key = parseInt(key);
+ if (key <= filters.length) {
+ filters[key - 1].click();
+ }
}
function auto_share(key) {
@@ -391,75 +450,78 @@ function auto_share(key) {
}
}
-function inMarkViewport(flux, box_to_follow, relative_follow) {
- var top = flux.position().top;
- if (relative_follow) {
- top += box_to_follow.scrollTop();
- }
- var height = flux.height(),
- begin = top + 3 * height / 4,
- bot = Math.min(begin + 75, top + height),
- windowTop = box_to_follow.scrollTop(),
- windowBot = windowTop + box_to_follow.height() / 2;
-
- return (windowBot >= begin && bot >= windowBot);
-}
-
-function init_lazyload() {
- if ($.fn.lazyload) {
- if (is_global_mode()) {
- $(".flux_content img").lazyload({
- container: $("#panel")
- });
- } else {
- $(".flux_content img").lazyload();
- }
- }
+function scrollAsRead(box_to_follow) {
+ var minTop = 40 + (context.current_view === 'global' ? box_to_follow.offset().top : box_to_follow.scrollTop());
+ $('.not_read:not(.keep_unread):visible').each(function () {
+ var $this = $(this);
+ if ($this.offset().top + $this.height() < minTop) {
+ mark_read($this, true);
+ }
+ });
}
function init_posts() {
- init_lazyload();
+ var box_to_follow = context.current_view === 'global' ? $("#panel") : $(window);
- var box_to_follow = $(window),
- relative_follow = false;
- if (is_global_mode()) {
- box_to_follow = $("#panel");
- relative_follow = true;
- }
-
- if (auto_mark_scroll) {
+ if (context.auto_mark_scroll) {
+ var lastScroll = 0, //Throttle
+ timerId = 0;
box_to_follow.scroll(function () {
- $('.not_read:visible').each(function () {
- if ($(this).children(".flux_content").is(':visible') && inMarkViewport($(this), box_to_follow, relative_follow)) {
- mark_read($(this), true);
- }
- });
+ window.clearTimeout(timerId);
+ if (lastScroll + 500 < Date.now()) {
+ lastScroll = Date.now();
+ scrollAsRead(box_to_follow);
+ } else {
+ timerId = window.setTimeout(function() {
+ scrollAsRead(box_to_follow);
+ }, 500);
+ }
});
}
- if (auto_load_more) {
+ if (context.auto_load_more) {
box_to_follow.scroll(function () {
var load_more = $("#load_more");
if (!load_more.is(':visible')) {
return;
}
var boxBot = box_to_follow.scrollTop() + box_to_follow.height(),
- load_more_top = load_more.position().top;
- if (relative_follow) {
- load_more_top += box_to_follow.scrollTop();
- }
+ load_more_top = load_more.offset().top;
if (boxBot >= load_more_top) {
load_more_posts();
}
});
+ box_to_follow.scroll();
+ }
+}
+
+function inject_script(name) {
+ var script = document.createElement('script');
+ script.async = 'async';
+ script.defer = 'defer';
+ script.src = '../scripts/' + name;
+ document.head.appendChild(script);
+}
+
+function init_sticky_column() {
+ if (!window.$ || !window.$.fn.stick_in_parent) {
+ if (window.console) {
+ console.log('FreshRSS waiting for Sticky-kit…');
+ }
+ window.setTimeout(init_sticky_column, 200);
+ return;
+ }
+ if ($('.toggle_aside').css('display') === 'none') {
+ $('#aside_feed .tree').stick_in_parent({parent:'#aside_feed'});
}
}
function init_column_categories() {
- if (!is_normal_mode()) {
+ if (context.current_view !== 'normal') {
return;
}
- $('#aside_flux').on('click', '.category>a.dropdown-toggle', function () {
+
+ $('#aside_feed').on('click', '.tree-folder>.tree-folder-title>a.dropdown-toggle', function () {
$(this).children().each(function() {
if (this.alt === '▽') {
this.src = this.src.replace('/icons/down.', '/icons/up.');
@@ -469,17 +531,19 @@ function init_column_categories() {
this.alt = '▽';
}
});
- $(this).parent().next(".feeds").slideToggle();
+ $(this).parent().next(".tree-folder-items").slideToggle(300 , function() { $(document.body).trigger("sticky_kit:recalc"); });
return false;
});
- $('#aside_flux').on('click', '.feeds .dropdown-toggle', function () {
+ $('#aside_feed').on('click', '.tree-folder-items .item .dropdown-toggle', function () {
if ($(this).nextAll('.dropdown-menu').length === 0) {
- var feed_id = $(this).closest('li').attr('id').substr(2),
+ var feed_id = $(this).closest('.item').attr('id').substr(2),
feed_web = $(this).data('fweb'),
- template = $('#feed_config_template').html().replace(/!!!!!!/g, feed_id).replace('http://example.net/', feed_web);
+ template = $('#feed_config_template').html().replace(/------/g, feed_id).replace('http://example.net/', feed_web);
$(this).attr('href', '#dropdown-' + feed_id).prev('.dropdown-target').attr('id', 'dropdown-' + feed_id).parent().append(template);
}
});
+
+ init_sticky_column();
}
function init_shortcuts() {
@@ -487,7 +551,7 @@ function init_shortcuts() {
if (window.console) {
console.log('FreshRSS waiting for sortcut.js…');
}
- window.setTimeout(init_shortcuts, 50);
+ window.setTimeout(init_shortcuts, 200);
return;
}
// Touches de manipulation
@@ -500,8 +564,7 @@ function init_shortcuts() {
});
shortcut.add("shift+" + shortcuts.mark_read, function () {
// on marque tout comme lu
- var url = $(".nav_menu a.read_all").attr("href");
- redirect(url, false);
+ $(".nav_menu .read_all").click();
}, {
'disable_in_input': true
});
@@ -522,10 +585,22 @@ function init_shortcuts() {
}, {
'disable_in_input': true
});
- for(var i = 1; i < 10; i++){
- shortcut.add(i.toString(), function (e) {
- auto_share(String.fromCharCode(e.keyCode));
- }, {
+
+ shortcut.add(shortcuts.user_filter, function () {
+ user_filter();
+ }, {
+ 'disable_in_input': true
+ });
+
+ function addShortcut(evt) {
+ if ($('#dropdown-query').siblings('.dropdown-menu').is(':visible')) {
+ user_filter(String.fromCharCode(evt.keyCode));
+ } else {
+ auto_share(String.fromCharCode(evt.keyCode));
+ }
+ }
+ for(var i = 1; i < 10; i++) {
+ shortcut.add(i.toString(), addShortcut, {
'disable_in_input': true
});
}
@@ -585,9 +660,9 @@ function init_shortcuts() {
});
shortcut.add(shortcuts.go_website, function () {
- var url_website = $(".flux.current .link a").attr("href");
+ var url_website = $('.flux.current > .flux_header > .title > a').attr("href");
- if (auto_mark_site) {
+ if (context.auto_mark_site) {
$(".flux.current").each(function () {
mark_read($(this), true);
});
@@ -603,18 +678,37 @@ function init_shortcuts() {
}, {
'disable_in_input': true
});
+
+ shortcut.add(shortcuts.focus_search, function () {
+ focus_search();
+ }, {
+ 'disable_in_input': true
+ });
+
+ shortcut.add(shortcuts.help, function () {
+ redirect(url.help, true);
+ }, {
+ 'disable_in_input': true
+ });
+
+ shortcut.add(shortcuts.close_dropdown, function () {
+ window.location.hash = null;
+ }, {
+ 'disable_in_input': true
+ });
+
}
function init_stream(divStream) {
- divStream.on('click', '.flux_header', function (e) { //flux_header_toggle
- if ($(e.target).closest('.item.website, .item.link').length > 0) {
+ divStream.on('click', '.flux_header,.flux_content', function (e) { //flux_toggle
+ if ($(e.target).closest('.content, .item.website, .item.link').length > 0) {
return;
}
var old_active = $(".flux.current"),
new_active = $(this).parent();
- isCollapsed = true;
+ isCollapsed = true;
if (e.target.tagName.toUpperCase() === 'A') { //Leave real links alone
- if (auto_mark_article) {
+ if (context.auto_mark_article) {
mark_read(new_active, true);
}
return true;
@@ -624,6 +718,9 @@ function init_stream(divStream) {
divStream.on('click', '.flux a.read', function () {
var active = $(this).parents(".flux");
+ if (context.auto_remove_article && active.hasClass('not_read')) {
+ auto_remove(active);
+ }
mark_read(active, false);
return false;
});
@@ -635,20 +732,40 @@ function init_stream(divStream) {
});
divStream.on('click', '.item.title > a', function (e) {
+ // Allow default control-click behaviour such as open in backround-tab.
+ return e.ctrlKey;
+ });
+ divStream.on('mouseup', '.item.title > a', function (e) {
+ // Mouseup enables us to catch middle click.
if (e.ctrlKey) {
- return true; //Allow default control-click behaviour such as open in backround-tab
+ // CTRL+click, it will be manage by previous rule.
+ return;
+ }
+
+ if (e.which == 2) {
+ // If middle click, we want same behaviour as CTRL+click.
+ var ev = jQuery.Event("click");
+ ev.ctrlKey = true;
+ $(this).trigger(ev);
+ } else if(e.which == 1) {
+ // Normal click, just toggle article.
+ $(this).parent().click();
}
- $(this).parent().click(); //Will perform toggle flux_content
- return false;
});
divStream.on('click', '.flux .content a', function () {
- $(this).attr('target', '_blank');
+ $(this).attr('target', '_blank').attr('rel', 'noreferrer');
});
- if (auto_mark_site) {
- divStream.on('click', '.flux .link > a', function () {
- mark_read($(this).parent().parent().parent(), true);
+ if (context.auto_mark_site) {
+ // catch mouseup instead of click so we can have the correct behaviour
+ // with middle button click (scroll button).
+ divStream.on('mouseup', '.flux .link > a', function (e) {
+ if (e.which == 3) {
+ return;
+ }
+
+ mark_read($(this).parents(".flux"), true);
});
}
}
@@ -666,7 +783,7 @@ function init_nav_entries() {
$nav_entries.find('.up').click(function () {
var active_item = $(".flux.current"),
windowTop = $(window).scrollTop(),
- item_top = active_item.position().top;
+ item_top = active_item.offset().top;
if (windowTop > item_top) {
$("html,body").scrollTop(item_top);
@@ -677,27 +794,74 @@ function init_nav_entries() {
});
}
+// <actualize>
+var feed_processed = 0;
+
+function updateFeed(feeds, feeds_count) {
+ var feed = feeds.pop();
+ if (!feed) {
+ return;
+ }
+
+ $.ajax({
+ type: 'POST',
+ url: feed.url,
+ data : {
+ _csrf: context.csrf,
+ },
+ }).always(function (data) {
+ feed_processed++;
+ $("#actualizeProgress .progress").html(feed_processed + " / " + feeds_count);
+ $("#actualizeProgress .title").html(feed.title);
+
+ if (feed_processed === feeds_count) {
+ window.location.reload();
+ } else {
+ updateFeed(feeds, feeds_count);
+ }
+ });
+}
+
function init_actualize() {
var auto = false;
$("#actualize").click(function () {
- $.getScript('./?c=javascript&a=actualize').done(function () {
- if (auto && feed_count < 1) {
+ if (ajax_loading) {
+ return false;
+ }
+
+ ajax_loading = true;
+
+ $.getJSON('./?c=javascript&a=actualize').done(function (data) {
+ if (auto && data.feeds.length < 1) {
auto = false;
+ ajax_loading = false;
+ return false;
+ }
+ if (data.feeds.length === 0) {
+ openNotification(data.feedback_no_refresh, "good");
+ ajax_loading = false;
return;
}
-
- updateFeeds();
+ //Progress bar
+ var feeds_count = data.feeds.length;
+ $('body').after('<div id="actualizeProgress" class="notification good">' + data.feedback_actualize +
+ '<br /><span class="title">/</span><br /><span class="progress">0 / ' + feeds_count +
+ '</span></div>');
+ for (var i = 10; i > 0; i--) {
+ updateFeed(data.feeds, feeds_count);
+ }
});
+
return false;
});
- if (auto_actualize_feeds) {
+ if (context.auto_actualize_feeds) {
auto = true;
$("#actualize").click();
}
}
-
+// </actualize>
// <notification>
var notification = null,
@@ -712,11 +876,12 @@ function openNotification(msg, status) {
notification_working = true;
notification.removeClass();
+ notification.addClass("notification");
notification.addClass(status);
notification.find(".msg").html(msg);
notification.fadeIn(300);
- notification_interval = window.setInterval(closeNotification, 4000);
+ notification_interval = window.setTimeout(closeNotification, 4000);
}
function closeNotification() {
@@ -739,23 +904,78 @@ function init_notifications() {
if (notification.find(".msg").html().length > 0) {
notification_working = true;
- notification_interval = window.setInterval(closeNotification, 4000);
+ notification_interval = window.setTimeout(closeNotification, 4000);
}
}
// </notification>
+// <notifs html5>
+var notifs_html5_permission = 'denied';
+
+function notifs_html5_is_supported() {
+ return window.Notification !== undefined;
+}
+
+function notifs_html5_ask_permission() {
+ window.Notification.requestPermission(function () {
+ notifs_html5_permission = window.Notification.permission;
+ });
+}
+
+function notifs_html5_show(nb) {
+ if (notifs_html5_permission !== "granted") {
+ return;
+ }
+
+ var notification = new window.Notification(i18n.notif_title_articles, {
+ icon: "../themes/icons/favicon-256.png",
+ body: i18n.notif_body_articles.replace('%d', nb),
+ tag: "freshRssNewArticles"
+ });
+
+ notification.onclick = function() {
+ window.location.reload();
+ };
+
+ if (context.html5_notif_timeout !== 0) {
+ setTimeout(function() {
+ notification.close();
+ }, context.html5_notif_timeout * 1000);
+ }
+}
+
+function init_notifs_html5() {
+ if (!notifs_html5_is_supported()) {
+ return;
+ }
+
+ notifs_html5_permission = notifs_html5_ask_permission();
+}
+// </notifs html5>
+
function refreshUnreads() {
$.getJSON('./?c=javascript&a=nbUnreadsPerFeed').done(function (data) {
- var isAll = $('.category.all > .active').length > 0;
+ var isAll = $('.category.all.active').length > 0,
+ new_articles = false;
+
$.each(data, function(feed_id, nbUnreads) {
feed_id = 'f_' + feed_id;
- var elem = $('#' + feed_id + '>.feed').get(0),
+ var elem = $('#' + feed_id).get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
+
if ((incUnreadsFeed(null, feed_id, nbUnreads - feed_unreads) || isAll) && //Update of current view?
(nbUnreads - feed_unreads > 0)) {
- $('#new-article').show();
- };
+ $('#new-article').attr('aria-hidden', 'false').show();
+ new_articles = true;
+ }
});
+
+ var nb_unreads = str2int($('.category.all .title').attr('data-unread'));
+
+ if (nb_unreads > 0 && new_articles) {
+ faviconNbUnread(nb_unreads);
+ notifs_html5_show(nb_unreads);
+ }
});
}
@@ -774,7 +994,15 @@ function load_more_posts() {
$.get(url_load_more, function (data) {
box_load_more.children('.flux:last').after($('#stream', data).children('.flux, .day'));
$('.pagination').replaceWith($('.pagination', data));
- $('#bigMarkAsRead').attr('href', $('#nav_menu_read_all>a').attr('href'));
+ if (context.display_order === 'ASC') {
+ $('#nav_menu_read_all .read_all').attr(
+ 'formaction', $('#bigMarkAsRead').attr('formaction')
+ );
+ } else {
+ $('#bigMarkAsRead').attr(
+ 'formaction', $('#nav_menu_read_all .read_all').attr('formaction')
+ );
+ }
$('[id^=day_]').each(function (i) {
var ids = $('[id="' + this.id + '"]');
@@ -784,16 +1012,25 @@ function load_more_posts() {
});
init_load_more(box_load_more);
- init_lazyload();
$('#load_more').removeClass('loading');
load_more = false;
+ $(document.body).trigger('sticky_kit:recalc');
});
}
+function focus_search() {
+ $('#search').focus();
+}
+
+var freshrssLoadMoreEvent = document.createEvent('Event');
+freshrssLoadMoreEvent.initEvent('freshrss:load-more', true, true);
+
function init_load_more(box) {
box_load_more = box;
+ document.body.dispatchEvent(freshrssLoadMoreEvent);
+
var $next_link = $("#load_more");
if (!$next_link.length) {
// no more article to load
@@ -816,7 +1053,7 @@ function init_load_more(box) {
}
//</endless_mode>
-//<Web login form>
+//<crypto form (Web login)>
function poormanSalt() { //If crypto.getRandomValues is not available
var text = '$2a$04$',
base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789/abcdefghijklmnopqrstuvwxyz';
@@ -826,170 +1063,331 @@ function poormanSalt() { //If crypto.getRandomValues is not available
return text;
}
-function init_loginForm() {
- var $loginForm = $('#loginForm');
- if ($loginForm.length === 0) {
+function init_crypto_form() {
+ /* globals dcodeIO */
+ var $crypto_form = $('#crypto-form');
+ if ($crypto_form.length === 0) {
return;
}
+
if (!(window.dcodeIO)) {
if (window.console) {
console.log('FreshRSS waiting for bcrypt.js…');
}
- window.setTimeout(init_loginForm, 100);
+ window.setTimeout(init_crypto_form, 100);
return;
}
- $loginForm.on('submit', function() {
- $('#loginButton').attr('disabled', '');
+
+ $crypto_form.on('submit', function() {
+ var $submit_button = $(this).find('button[type="submit"]');
+ $submit_button.attr('disabled', '');
+
var success = false;
$.ajax({
url: './?c=javascript&a=nonce&user=' + $('#username').val(),
dataType: 'json',
async: false
}).done(function (data) {
- if (data.salt1 == '' || data.nonce == '') {
- alert('Invalid user!');
+ if (!data.salt1 || !data.nonce) {
+ openNotification('Invalid user!', 'bad');
} else {
try {
var strong = window.Uint32Array && window.crypto && (typeof window.crypto.getRandomValues === 'function'),
s = dcodeIO.bcrypt.hashSync($('#passwordPlain').val(), data.salt1),
- c = dcodeIO.bcrypt.hashSync(data.nonce + s, strong ? 4 : poormanSalt());
+ c = dcodeIO.bcrypt.hashSync(data.nonce + s, strong ? dcodeIO.bcrypt.genSaltSync(4) : poormanSalt());
$('#challenge').val(c);
- if (s == '' || c == '') {
- alert('Crypto error!');
+ if (!s || !c) {
+ openNotification('Crypto error!', 'bad');
} else {
success = true;
}
} catch (e) {
- alert('Crypto exception! ' + e);
+ openNotification('Crypto exception! ' + e, 'bad');
}
}
}).fail(function() {
- alert('Communication error!');
+ openNotification('Communication error!', 'bad');
});
- $('#loginButton').removeAttr('disabled');
+
+ $submit_button.removeAttr('disabled');
return success;
});
}
-//</Web login form>
+//</crypto form (Web login)>
-//<persona>
-function init_persona() {
- if (!(navigator.id)) {
- if (window.console) {
- console.log('FreshRSS waiting for Persona…');
+
+
+function init_confirm_action() {
+ $('body').on('click', '.confirm', function () {
+ var str_confirmation = $(this).attr('data-str-confirm');
+ if (!str_confirmation) {
+ str_confirmation = i18n.confirmation_default;
+ }
+
+ return confirm(str_confirmation);
+ });
+ $('button.confirm').removeAttr('disabled');
+}
+
+function init_print_action() {
+ $('.item.share > a[href="#"]').click(function () {
+ var content = "<html><head><style>" +
+ "body { font-family: Serif; text-align: justify; }" +
+ "a { color: #000; text-decoration: none; }" +
+ "a:after { content: ' [' attr(href) ']'}" +
+ "</style></head><body>" +
+ $(".flux.current .content").html() +
+ "</body></html>";
+
+ var tmp_window = window.open();
+ tmp_window.document.writeln(content);
+ tmp_window.document.close();
+ tmp_window.focus();
+ tmp_window.print();
+ tmp_window.close();
+
+ return false;
+ });
+}
+
+function init_share_observers() {
+ shares = $('.group-share').length;
+
+ $('.share.add').on('click', function(e) {
+ var opt = $(this).siblings('select').find(':selected');
+ var row = $(this).parents('form').data(opt.data('form'));
+ row = row.replace(/##label##/g, opt.html().trim());
+ row = row.replace(/##type##/g, opt.val());
+ row = row.replace(/##help##/g, opt.data('help'));
+ row = row.replace(/##key##/g, shares);
+ $(this).parents('.form-group').before(row);
+ shares++;
+
+ return false;
+ });
+}
+
+function init_stats_observers() {
+ $('.select-change').on('change', function(e) {
+ redirect($(this).find(':selected').data('url'));
+ });
+}
+
+function init_remove_observers() {
+ $('.post').on('click', 'a.remove', function(e) {
+ var remove_what = $(this).attr('data-remove');
+
+ if (remove_what !== undefined) {
+ var remove_obj = $('#' + remove_what);
+ remove_obj.remove();
}
- window.setTimeout(init_persona, 100);
+
+ return false;
+ });
+}
+
+function init_feed_observers() {
+ $('select[id="category"]').on('change', function() {
+ var detail = $('#new_category_name').parent();
+ if ($(this).val() === 'nc') {
+ detail.attr('aria-hidden', 'false').show();
+ detail.find('input').focus();
+ } else {
+ detail.attr('aria-hidden', 'true').hide();
+ }
+ });
+}
+
+function init_password_observers() {
+ $('.toggle-password').on('mousedown', function(e) {
+ var button = $(this);
+ var passwordField = $('#' + button.attr('data-toggle'));
+ passwordField.attr('type', 'text');
+ button.addClass('active');
+
+ return false;
+ }).on('mouseup', function(e) {
+ var button = $(this);
+ var passwordField = $('#' + button.attr('data-toggle'));
+ passwordField.attr('type', 'password');
+ button.removeClass('active');
+
+ return false;
+ });
+}
+
+function faviconNbUnread(n) {
+ if (typeof n === 'undefined') {
+ n = str2int($('.category.all .title').attr('data-unread'));
+ }
+ //http://remysharp.com/2010/08/24/dynamic-favicons/
+ var canvas = document.createElement('canvas'),
+ link = document.getElementById('favicon').cloneNode(true);
+ if (canvas.getContext && link) {
+ canvas.height = canvas.width = 16;
+ var img = document.createElement('img');
+ img.onload = function () {
+ var ctx = canvas.getContext('2d');
+ ctx.drawImage(this, 0, 0, canvas.width, canvas.height);
+ if (n > 0) {
+ var text = '';
+ if (n < 1000) {
+ text = n;
+ } else if (n < 100000) {
+ text = Math.floor(n / 1000) + 'k';
+ } else {
+ text = 'E' + Math.floor(Math.log10(n));
+ }
+ ctx.font = 'bold 9px "Arial", sans-serif';
+ ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
+ ctx.fillRect(0, 7, ctx.measureText(text).width, 9);
+ ctx.fillStyle = '#F00';
+ ctx.fillText(text, 0, canvas.height - 1);
+ }
+ link.href = canvas.toDataURL('image/png');
+ $('link[rel~=icon]').remove();
+ document.head.appendChild(link);
+ };
+ img.src = '../favicon.ico';
+ }
+}
+
+function init_slider_observers() {
+ var slider = $('#slider'),
+ closer = $('#close-slider');
+ if (slider.length < 1) {
return;
}
- $('a.signin').click(function() {
- navigator.id.request();
+
+ $('.post').on('click', '.open-slider', function() {
+ if (ajax_loading) {
+ return false;
+ }
+
+ ajax_loading = true;
+ var url_slide = $(this).attr('href');
+
+ $.ajax({
+ type: 'GET',
+ url: url_slide,
+ data : { ajax: true }
+ }).done(function (data) {
+ slider.html(data);
+ closer.addClass('active');
+ slider.addClass('active');
+ ajax_loading = false;
+ });
+
return false;
});
- $('a.signout').click(function() {
- navigator.id.logout();
+ closer.on('click', function() {
+ closer.removeClass('active');
+ slider.removeClass('active');
return false;
});
+}
- navigator.id.watch({
- loggedInUser: current_user_mail,
-
- onlogin: function(assertion) {
- // A user has logged in! Here you need to:
- // 1. Send the assertion to your backend for verification and to create a session.
- // 2. Update your UI.
- $.ajax ({
- type: 'POST',
- url: url_login,
- data: {assertion: assertion},
- success: function(res, status, xhr) {
- /*if (res.status === 'failure') {
- alert (res_obj.reason);
- } else*/ if (res.status === 'okay') {
- location.href = url_freshrss;
- }
- },
- error: function(res, status, xhr) {
- alert("Login failure: " + res);
+function init_configuration_alert() {
+ $(window).on('submit', function(e) {
+ window.hasSubmit = true;
+ });
+ $(window).on('beforeunload', function(e) {
+ if (window.hasSubmit) {
+ return;
+ }
+ var fields = $("[data-leave-validation]");
+ for (var i = 0; i < fields.length; i++) {
+ if ($(fields[i]).attr('type') === 'checkbox' || $(fields[i]).attr('type') === 'radio') {
+ // The use of != is done on purpose to check boolean against integer
+ if ($(fields[i]).is(':checked') != $(fields[i]).attr('data-leave-validation')) {
+ return false;
}
- });
- },
- onlogout: function() {
- // A user has logged out! Here you need to:
- // Tear down the user's session by redirecting the user or making a call to your backend.
- // Also, make sure loggedInUser will get set to null on the next page load.
- // (That's a literal JavaScript null. Not false, 0, or undefined. null.)
- $.ajax ({
- type: 'POST',
- url: url_logout,
- success: function(res, status, xhr) {
- location.href = url_freshrss;
- },
- error: function(res, status, xhr) {
- //alert("logout failure" + res);
+ } else {
+ if ($(fields[i]).attr('data-leave-validation') !== $(fields[i]).val()) {
+ return false;
}
- });
+ }
}
+ return;
});
}
-//</persona>
-function init_confirm_action() {
- $('.confirm').click(function () {
- return confirm(str_confirmation);
+function init_subscription() {
+ $('body').on('click', '.bookmarkClick', function (e) {
+ return false;
});
}
-function init_print_action() {
- $('.print-article').click(function () {
- var content = "<html><head><style>"
- + "body { font-family: Serif; text-align: justify; }"
- + "a { color: #000; text-decoration: none; }"
- + "a:after { content: ' [' attr(href) ']'}"
- + "</style></head><body>"
- + $(".flux.current .content").html()
- + "</body></html>";
+function parseJsonVars() {
+ var jsonVars = document.getElementById('jsonVars'),
+ json = JSON.parse(jsonVars.innerHTML);
+ jsonVars.outerHTML = '';
+ window.context = json.context;
+ window.shortcuts = json.shortcuts;
+ window.url = json.url;
+ window.i18n = json.i18n;
+ window.icons = json.icons;
+}
- var tmp_window = window.open();
- tmp_window.document.writeln(content);
- tmp_window.document.close();
- tmp_window.focus();
- tmp_window.print();
- tmp_window.close();
+function init_normal() {
+ $stream = $('#stream');
+ if ($stream.length < 1) {
+ if (window.console) {
+ console.log('FreshRSS waiting for content…');
+ }
+ window.setTimeout(init_normal, 100);
+ return;
+ }
+ init_column_categories();
+ init_stream($stream);
+ init_shortcuts();
+ init_actualize();
+ faviconNbUnread();
+}
- return false;
- });
+function init_beforeDOM() {
+ if (!window.$) {
+ if (window.console) {
+ console.log('FreshRSS waiting for jQuery…');
+ }
+ window.setTimeout(init_beforeDOM, 100);
+ return;
+ }
+ if (['normal', 'reader', 'global'].indexOf(context.current_view) >= 0) {
+ inject_script('jquery.sticky-kit.min.js');
+ init_normal();
+ }
}
-function init_all() {
- if (!(window.$ && window.url_freshrss && ((!full_lazyload) || $.fn.lazyload))) {
+function init_afterDOM() {
+ if (!window.$) {
if (window.console) {
- console.log('FreshRSS waiting for JS…');
+ console.log('FreshRSS waiting again for jQuery…');
}
- window.setTimeout(init_all, 50);
+ window.setTimeout(init_afterDOM, 100);
return;
}
init_notifications();
- switch (authType) {
- case 'form':
- init_loginForm();
- break;
- case 'persona':
- init_persona();
- break;
- }
- init_confirm_action();
$stream = $('#stream');
if ($stream.length > 0) {
- init_actualize();
- init_column_categories();
+ init_confirm_action();
init_load_more($stream);
init_posts();
- init_stream($stream);
init_nav_entries();
- init_shortcuts();
init_print_action();
+ init_notifs_html5();
window.setInterval(refreshUnreads, 120000);
+ } else {
+ init_subscription();
+ init_crypto_form();
+ init_share_observers();
+ init_remove_observers();
+ init_feed_observers();
+ init_password_observers();
+ init_stats_observers();
+ init_slider_observers();
+ init_configuration_alert();
}
if (window.console) {
@@ -997,16 +1395,16 @@ function init_all() {
}
}
+parseJsonVars();
+init_beforeDOM(); //Can be called before DOM is fully loaded
+
if (document.readyState && document.readyState !== 'loading') {
- if (window.console) {
- console.log('FreshRSS immediate init…');
- }
- init_all();
+ init_afterDOM();
} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
if (window.console) {
console.log('FreshRSS waiting for DOMContentLoaded…');
}
- init_all();
+ init_afterDOM();
}, false);
}
diff --git a/p/scripts/repartition.js b/p/scripts/repartition.js
new file mode 100644
index 000000000..be70456fa
--- /dev/null
+++ b/p/scripts/repartition.js
@@ -0,0 +1,72 @@
+"use strict";
+/* globals Flotr, numberFormat */
+/* jshint globalstrict: true */
+
+function initStats() {
+ if (!window.Flotr) {
+ if (window.console) {
+ console.log('FreshRSS waiting for Flotr…');
+ }
+ window.setTimeout(initStats, 50);
+ return;
+ }
+ var jsonRepartition = document.getElementById('jsonRepartition'),
+ stats = JSON.parse(jsonRepartition.innerHTML);
+ jsonRepartition.outerHTML = '';
+ // Entry per hour
+ Flotr.draw(document.getElementById('statsEntryPerHour'),
+ [{
+ data: stats.repartitionHour,
+ bars: {horizontal: false, show: true}
+ }],
+ {
+ grid: {verticalLines: false},
+ xaxis: {noTicks: 23,
+ tickFormatter: function(x1) {
+ return 1 + parseInt(x1);
+ },
+ min: -0.9,
+ max: 23.9,
+ tickDecimals: 0},
+ yaxis: {min: 0},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return numberFormat(obj.y);}}
+ });
+ // Entry per day of week
+ Flotr.draw(document.getElementById('statsEntryPerDayOfWeek'),
+ [{
+ data: stats.repartitionDayOfWeek,
+ bars: {horizontal: false, show: true}
+ }],
+ {
+ grid: {verticalLines: false},
+ xaxis: {noTicks: 6,
+ tickFormatter: function(x2) {
+ return stats.days[parseInt(x2)];
+ },
+ min: -0.9,
+ max: 6.9,
+ tickDecimals: 0},
+ yaxis: {min: 0},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return numberFormat(obj.y);}}
+ });
+ // Entry per month
+ Flotr.draw(document.getElementById('statsEntryPerMonth'),
+ [{
+ data: stats.repartitionMonth,
+ bars: {horizontal: false, show: true}
+ }],
+ {
+ grid: {verticalLines: false},
+ xaxis: {noTicks: 12,
+ tickFormatter: function(x3) {
+ return stats.months[parseInt(x3) - 1];
+ },
+ min: 0.1,
+ max: 12.9,
+ tickDecimals: 0},
+ yaxis: {min: 0},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return numberFormat(obj.y);}}
+ });
+
+}
+initStats();
diff --git a/p/scripts/shortcut.js b/p/scripts/shortcut.js
index debaffbaa..e78cf6f5e 100644
--- a/p/scripts/shortcut.js
+++ b/p/scripts/shortcut.js
@@ -43,7 +43,9 @@ shortcut = {
//Find Which key is pressed
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
- var character = String.fromCharCode(code).toLowerCase();
+ if (code == 32 || (code >= 48 && code <= 90) || (code >= 96 && code <= 111) || (code >= 186 && code <= 192) || (code >= 219 && code <= 222)) { //FreshRSS
+ var character = String.fromCharCode(code).toLowerCase();
+ }
if(code == 188) character=","; //If the user presses , when the type is onkeydown
if(code == 190) character="."; //If the user presses , when the type is onkeydown
diff --git a/p/scripts/stats.js b/p/scripts/stats.js
new file mode 100644
index 000000000..9cd14721c
--- /dev/null
+++ b/p/scripts/stats.js
@@ -0,0 +1,59 @@
+"use strict";
+/* globals Flotr, numberFormat */
+/* jshint globalstrict: true */
+
+function initStats() {
+ if (!window.Flotr) {
+ if (window.console) {
+ console.log('FreshRSS waiting for Flotr…');
+ }
+ window.setTimeout(initStats, 50);
+ return;
+ }
+ var jsonStats = document.getElementById('jsonStats'),
+ stats = JSON.parse(jsonStats.innerHTML);
+ jsonStats.outerHTML = '';
+ // Entry per day
+ var avg = [];
+ for (var i = -31; i <= 0; i++) {
+ avg.push([i, stats.average]);
+ }
+ Flotr.draw(document.getElementById('statsEntryPerDay'),
+ [{
+ data: stats.dataCount,
+ bars: {horizontal: false, show: true}
+ },{
+ data: avg,
+ lines: {show: true},
+ label: stats.average,
+ }],
+ {
+ grid: {verticalLines: false},
+ xaxis: {noTicks: 6, showLabels: false, tickDecimals: 0, min: -30.75, max: -0.25},
+ yaxis: {min: 0},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return numberFormat(obj.y);}}
+ });
+ // Feed per category
+ Flotr.draw(document.getElementById('statsFeedPerCategory'),
+ stats.feedByCategory,
+ {
+ grid: {verticalLines: false, horizontalLines: false},
+ pie: {explode: 10, show: true, labelFormatter: function(){return '';}},
+ xaxis: {showLabels: false},
+ yaxis: {showLabels: false},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return obj.series.label + ' - '+ numberFormat(obj.y) + ' ('+ (obj.fraction * 100).toFixed(1) + '%)';}},
+ legend: {container: document.getElementById('statsFeedPerCategoryLegend'), noColumns: 3}
+ });
+ // Entry per category
+ Flotr.draw(document.getElementById('statsEntryPerCategory'),
+ stats.entryByCategory,
+ {
+ grid: {verticalLines: false, horizontalLines: false},
+ pie: {explode: 10, show: true, labelFormatter: function(){return '';}},
+ xaxis: {showLabels: false},
+ yaxis: {showLabels: false},
+ mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return obj.series.label + ' - '+ numberFormat(obj.y) + ' ('+ (obj.fraction * 100).toFixed(1) + '%)';}},
+ legend: {container: document.getElementById('statsEntryPerCategoryLegend'), noColumns: 3}
+ });
+}
+initStats();
diff --git a/p/themes/.htaccess b/p/themes/.htaccess
new file mode 100644
index 000000000..bde718537
--- /dev/null
+++ b/p/themes/.htaccess
@@ -0,0 +1,21 @@
+<IfModule mod_mime.c>
+ AddType application/font-woff .woff
+
+ AddCharset UTF-8 .css
+ AddCharset UTF-8 .svg
+</IfModule>
+
+<IfModule mod_expires.c>
+ ExpiresActive on
+ ExpiresByType application/font-woff "access plus 1 month"
+ ExpiresByType image/gif "access plus 1 month"
+ ExpiresByType image/png "access plus 1 month"
+ ExpiresByType image/svg+xml "access plus 1 month"
+ ExpiresByType text/css "access plus 1 month"
+</IfModule>
+
+<IfModule mod_headers.c>
+ <FilesMatch "\.svg$">
+ Header set Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'"
+ </FilesMatch>
+</IfModule>
diff --git a/p/themes/BlueLagoon/BlueLagoon.css b/p/themes/BlueLagoon/BlueLagoon.css
new file mode 100644
index 000000000..27bae5404
--- /dev/null
+++ b/p/themes/BlueLagoon/BlueLagoon.css
@@ -0,0 +1,1205 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #fafafa;
+ font-size: 92%;
+}
+
+/*=== Links */
+a, button.as-link {
+ color: #0062BE;
+ outline: none;
+}
+
+/*=== Forms */
+.form-group{
+ width: 100%;
+ float: left;
+ height: auto;
+ display: inline-block;
+}
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ border-bottom: 1px solid #ddd;
+ font-size: 1.4em;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ background: #fff;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ color: #222;
+ line-height: 25px;
+ vertical-align: middle;
+ box-shadow: 0 1px 2px #ccc inset, 0 1px #fff;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ color: #0F0F0F;
+ box-shadow: 0 0 3px #0062BF;
+ border: solid 1px #0062BF;
+}
+input:invalid, select:invalid {
+ border-color: #f00;
+ box-shadow: 0 0 2px 2px #fdd inset;
+}
+input:disabled, select:disabled {
+ background: #eee;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+th {
+ background: #f6f6f6;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+ background: #f4f4f4;
+ border-top: 1px solid #ddd;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+ border-radius: 4px;
+ box-shadow:0 1px rgba(255,255,255,0.08) inset;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+
+.dropdown-menu .input select, .dropdown-menu .input input {
+ background:#444;
+ color:#fff;
+ box-shadow:0 2px 2px #222 inset, 0px 1px rgba(255, 255, 255, 0.08);
+ border:solid 1px #171717;
+}
+
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,.stick input:first-child {
+ border-radius: 6px 0 0 6px;
+}
+.stick .btn-important:first-child {
+}
+.stick .btn:last-child, .stick input:last-child {
+ border-radius: 0 6px 6px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left: none;
+}
+.stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 37px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ color:#222;
+ border: solid 1px #ccc;
+ border-radius: 4px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ text-shadow: 0px -1px rgba(255,255,255,0.08);
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ text-shadow: 0 0 2px #fff;
+ text-decoration:none;
+}
+.btn.active,.btn:active,.dropdown-target:target ~ .btn.dropdown-toggle {
+ background: linear-gradient(180deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(top, #EDE7DE 0%, #FFF 100%);
+}
+
+.nav_menu .btn.active, .nav_menu .btn:active, .nav_menu .dropdown-target:target ~ .btn.dropdown-toggle{
+ box-shadow: 0 1px #fff;
+ border-radius: 4px;
+ background: linear-gradient(180deg, #EDE7DE 0%, #F6F6F6 100%) #EDE7DE;
+ background: -webkit-linear-gradient(top, #EDE7DE 0%, #F6F6F6 100%);
+ border: solid 1px #ccc;
+}
+.nav_menu .btn {
+ border: 0;
+ background:transparent;
+}
+
+.read_all {
+ color:#222;
+}
+.btn.dropdown-toggle[href="#dropdown-configure"]{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ border-radius: 4px;
+ border: solid 1px #ccc;
+ box-shadow: 0 1px #fff;
+}
+.btn.dropdown-toggle:active {
+ background:transparent;
+}
+.btn-important {
+ background: linear-gradient(180deg, #0090FF 0%, #0062BE 100%) #E4992C;
+ background: -webkit-linear-gradient(top, #0090FF 0%, #0062BE 100%);
+ color: #FFF;
+ box-shadow: 0 1px rgba(255,255,255,0.08) inset;
+ border-radius: 4px;
+ text-shadow: 0px -1px rgba(255,255,255,0.08);
+ font-weight: normal;
+}
+.btn-important:hover {
+}
+.btn-important:active {
+ background: linear-gradient(0deg, #E4992C 0%, #D18114 100%) #E4992C;
+ background: -webkit-linear-gradient(bottom, #E4992C 0%, #D18114 100%);
+}
+
+.btn-attention {
+ background: #E95B57;
+ background: linear-gradient(to bottom, #E95B57, #BD362F);
+ background: -webkit-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ color: #fff;
+ border: 1px solid #C44742;
+ text-shadow: 0px -1px 0px #666;
+}
+.btn-attention:hover {
+ background: linear-gradient(to bottom, #D14641, #BD362F);
+ background: -webkit-linear-gradient(top, #D14641 0%, #BD362F 100%);
+}
+.btn-attention:active {
+ background: #BD362F;
+ box-shadow: none;
+}
+.btn[type="reset"]{
+ color: #fff;
+ background:linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ box-shadow:0 -1px rgba(255,255,255,0.08) inset;
+}
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+ text-shadow: 0 0 2px rgba(255,255,255,0.28);
+ color:#fff;
+}
+
+.nav-list .item.active {
+ background: linear-gradient(180deg, #0090FF 0%, #0062BE 100%) #E4992C;
+ background: -webkit-linear-gradient(top, #0090FF 0%, #0062BE 100%);
+ border-width: medium medium 1px;
+ border-style: none none solid;
+ border-color: -moz-use-text-color -moz-use-text-color #171717;
+ box-shadow: -1px 2px 2px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
+ margin: 0;
+}
+.nav-list .item.active a {
+ color: #fff;
+}
+.nav-list .disable {
+ color: #aaa;
+ background: #fafafa;
+ text-align: center;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+ color:#ccc;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #f39c12;
+}
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: linear-gradient(180deg, #E4992C 0%, #D18114 100%) #E4992C;
+ background: -webkit-linear-gradient(180deg, #E4992C 0%, #D18114 100%);
+}
+.nav-list .item.error a {
+ color: #BD362F;
+}
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #BD362F;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ color: #222;
+ background: transparent;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ text-align: right;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ border: 1px solid #171717;
+ border-radius: 4px;
+ box-shadow: 0 0 3px #000;
+ font-size: 0.8rem;
+ text-align: left;
+ background: #222;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ background: #222;
+ border-top: 1px solid #171717;
+ border-left: 1px solid #171717;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+}
+.dropdown-header {
+ display:none;
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+ color: #ccc;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+ color: #ccc;
+}
+.dropdown-menu > .item:hover {
+ background: linear-gradient(180deg, #0090FF 0%, #0062BE 100%) #E4992C;
+ background: -webkit-linear-gradient(top, #0090FF 0%, #0062BE 100%);
+ color: #fff;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ color: #fff;
+ text-decoration: none;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #171717;
+ box-shadow: 0 1px rgba(255,255,255,0.08);
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px;
+ color: #aaa;
+ text-shadow: 0 0 1px #eee;
+ font-size: 0.9em;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ color: inherit;
+ text-decoration: underline;
+}
+.alert-warn {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.alert-success {
+ background: #dfd;
+ border: 1px solid #cec;
+ color: #484;
+}
+.alert-error {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+
+/*=== Pagination */
+.pagination {
+ background: #fafafa;
+ text-align: center;
+ color: #333;
+ font-size: 0.8em;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+}
+.pagination .item a {
+ display: block;
+ color: #333;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+}
+.pagination .item a:hover {
+ background: #ddd;
+}
+.pagination:first-child .item {
+ border-bottom: 1px solid #aaa;
+}
+.pagination:last-child .item {
+ border-top: 1px solid #ddd;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ background: url("loader.gif") center center no-repeat #fff;
+ font-size: 0;
+ height:55px
+}
+
+/*=== Boxes */
+.box {
+ background: #F9F7F4;
+ border-radius: 4px;
+ box-shadow: 0 1px #fff;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
+ box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
+ color: #888;
+ text-shadow: 0 1px #ccc;
+ border-radius: 4px 4px 0 0;
+ font-size: 1.1rem;
+ font-weight: normal;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.9rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
+ text-shadow: 0 0 2px rgba(255,255,255,0.28);
+ color: #fff;
+}
+.tree-folder.active > .tree-folder-title > a.title{
+ color: #0090FF;
+ text-shadow: 0 1px rgba(255,255,255,0.08);
+}
+.tree-folder-items {
+ background: #171717;
+ padding: 8px 0;
+ box-shadow: 0 4px 4px #171717 inset, 0 1px rgba(255,255,255,0.08),0 -1px rgba(255,255,255,0.08);
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ border-radius: 4px;
+ margin: 0px 8px;
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset, 0 2px 2px #111;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+ color: #fff;
+ font-size: 0.92em;
+}
+.tree-folder-items > .item.active > a {
+ color: #0090FF
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 55px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ border-bottom: solid 1px #BDB7AE;
+ box-shadow: 0 -1px rgba(255,255,255,0.28) inset;
+}
+.header > .item {
+ padding: 0;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title .logo {
+ height: 60px;
+ width: 60px;
+}
+.header > .item.title{
+ width: 250px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+ font-size: 28px;
+ color:#222;
+ text-shadow: 0 1px #fff;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ background:#F9F7F4;
+ height: calc(100% - 60px);
+}
+.aside {
+ box-shadow: 0 2px 2px #171717 inset;
+ background: #222;
+ width: 235px;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 3px;
+ padding: 1px 5px;
+ color: #fff;
+ text-shadow: 0 1px rgba(255,255,255,0.08);
+}
+.aside_feed .btn-important {
+ border: none;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #e67e22;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #BD362F;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+ padding: 14px 0px;
+ text-shadow: 0 1px rgba(255,255,255,0.08);
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 180px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+.prompt input#username,.prompt input#passwordPlain{
+ border:solid 1px #ccc;
+ box-shadow: 0 4px -4px #ccc inset,0px 1px rgba(255, 255, 255, 0.08);
+ background:#fff;
+}
+.prompt input#username:focus,.prompt input#passwordPlain:focus{
+ border: solid 1px #0062BE;
+ box-shadow: 0 0 3px #0062BE;
+}
+
+/*=== New article notification */
+#new-article {
+ background: #0084CC;
+ text-align: center;
+ font-size: 0.9em;
+}
+#new-article:hover {
+ background: #0066CC;
+}
+#new-article > a {
+ line-height: 3em;
+ color: #fff;
+ font-weight: bold;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-style:italic;
+ line-height: 3em;
+ box-shadow: 0 -1px #ccc, 0 -1px rgba(255,255,255,0.28) inset;
+ background: #F9F7F4;
+ color: #666;
+ text-shadow: 0 1px rgba(255,255,255,0.28);
+ text-align: center;
+}
+#new-article + .day {
+ border-top: none;
+}
+.day .name {
+ display: none;
+}
+
+/*=== Index menu */
+.nav_menu {
+ background: linear-gradient(0deg, #EDE7DE 0%, #C2BCB3 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #C2BCB3 100%);
+ border-bottom: 1px solid #ccc;
+ box-shadow:0 -1px rgba(255, 255, 255, 0.28) inset;
+ text-align: center;
+ padding: 5px 0;
+}
+#panel >.nav_menu{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+}
+#panel > .nav_menu > #nav_menu_read_all{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ border-radius: 4px;
+ border: 1px solid #CCC;
+ box-shadow: 0px 1px #FFF;
+}
+#panel > .nav_menu > #nav_menu_read_all .dropdown > .btn.dropdown-toggle {
+ border-radius: 0 4px 4px 0;
+ border:none;
+ border-left: solid 1px #ccc;
+}
+
+/*=== Feed articles */
+.flux_content {
+ background: #FFF;
+}
+.flux {
+ background: #F9F7F4;
+}
+.flux:hover {
+ background: #F9F7F4;
+}
+.flux:not(.current):hover .item.title {
+ background: #F9F7F4;
+}
+.flux.current .flux .item.title a {
+ text-shadow:0 0 2px #ccc;
+}
+.flux.not_read:not(.current):hover .item.title {
+ opacity:0.85;
+}
+.flux.favorite {
+ background: #FFF6DA;
+}
+.flux.favorite:not(.current):hover{
+ background: #F9F7F4;
+}
+.flux.favorite:not(.current):hover .item.title {
+ background: #F9F7F4;
+}
+.flux.current {
+ background: linear-gradient(0deg, #DAD4CB 0%, #FFF 100%) #DAD4CB;
+ background: -webkit-linear-gradient(bottom, #DAD4CB 0%, #FFF 100%);
+ box-shadow: 0 -1px #fff inset, 0 2px #ccc;
+ border-left: solid 4px #0062BF;
+}
+
+.flux .item.title {
+opacity: 0.35;
+}
+.flux.favorite .item.title {
+opacity: 1;
+}
+.flux.not_read .item.title {
+opacity: 1;
+}
+.flux.current .item.title a {
+ color: #0f0f0f;
+}
+.flux .item.title a {
+ color: #333;
+}
+
+.flux_header {
+ border-top: 1px solid #ddd;
+ font-size: 0.8rem;
+ cursor: pointer;
+ box-shadow: 0 -1px rgba(255,255,255,0.28) inset;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ color: #666;
+ font-size: 0.7rem;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #000;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #ddd;
+ border: 0;
+ box-shadow: 0 2px 5px #ccc;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #fafafa;
+ border: 1px solid #eee;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ background: #fafafa;
+ color: #333;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ background:#222;
+ border: none;
+ border-radius: 0 0 6px 6px;
+ box-shadow: 0px 0px 4px rgba(0,0,0,0.45), 0 -1px rgba(255,255,255,0.08) inset, 0 2px 2px #171717 inset;
+ color:#fff;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ position:absolute;
+ top:0;
+ z-index: 10;
+ vertical-align: middle;
+}
+.notification.good {
+ color: #fff;
+}
+.notification.bad {
+ background: #222222;
+ color: #EB2901;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 -1px 0 #aaa;
+ color: #666;
+ background: #F9F7F4;
+ box-shadow: 0 1px rgba(255,255,255,0.28)inset;
+}
+#bigMarkAsRead:hover {
+ color: #000;
+ background: #F9F7F4;
+ background: radial-gradient(circle at 50% -25% , #ccc 0%, #F9F7F4 50%);
+}
+#bigMarkAsRead:hover .bigTick {
+ text-shadow: 0 0 10px #666;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #222;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ border-top: 1px solid #171717;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+ box-shadow: 0 1px rgba(255,255,255,0.08) inset, 0 -2px 2px #171717;
+ width:235px;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ border: none;
+ background: #f0f0f0;
+ color: #333;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #666;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+#stream.global {
+ padding: 24px 0;
+}
+
+.box.category .box-title {
+ background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
+ box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
+ border-radius: none;
+ line-height: 2em;
+ font-size: 1.2rem;
+ text-shadow:0 1px #ccc;
+}
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+ color: #888;
+}
+.box.category:not([data-unread="0"]) .box-title {
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ color: #222;
+ font-weight: bold;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+.box.category .item.feed:not(.empty):not(.error) .item-title {
+ color: #222;
+}
+
+/*=== PANEL */
+/*===========*/
+#panel {
+ box-shadow: 0px 0px 4px #000;
+ border-radius: 8px;
+ background:#F9F7F4;
+}
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,.aside.aside_feed .nav-form select {
+ width: 130px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #ccc;
+ background: rgba(255,255,255,0.38);
+ box-shadow: 0 1px #fff;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 250px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ overflow: hidden;
+}
+.log {
+ padding: 5px 10px;
+ background: #fafafa;
+ color: #333;
+ font-size: 0.8rem;
+}
+.log+.log {
+ border-top: 1px solid #aaa;
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+ background: #fdd;
+ color: #844;
+}
+.log.warning {
+ background: #ffe;
+ color: #c95;
+}
+.log.notice {
+ background: #f4f4f4;
+ color: #aaa;
+}
+.log.debug {
+ background: #333;
+ color: #eee;
+}
+
+#slider.active {
+ box-shadow: -4px 0 4px rgba(15, 15, 15, 0.55);
+ background: #F8F8F8;
+}
+#close-slider.active {
+ background: rgba(15, 15, 15, 0.35);
+}
+
+/*=== MOBILE */
+/*===========*/
+@media screen and (max-width: 840px) {
+ .header {
+ display: table;
+ }
+ .nav-login {
+ display: none;
+ }
+
+ .aside {
+ width: 0;
+ border-top: none;
+ box-shadow: 3px 0 3px #000;
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside:target {
+ width: 235px;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ background: #171717;
+ box-shadow: 0 1px rgba(255,255,255,0.08);
+ }
+ .aside .btn-important {
+ display: inline-block;
+ margin: 20px 0 0;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ display: none;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification a.close {
+ display: block;
+ left: 0;
+ background: transparent;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+ .nav_menu .search {
+ display: none;
+ }
+
+ #nav_entries {
+ width: 100%;
+ }
+}
+
+@media (max-width: 700px) {
+ .header{
+ display: none;
+ }
+ .nav-login {
+ display: inline-block;
+ width: 100%;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ }
+ .aside .btn-important {
+ display: none;
+ }
+}
diff --git a/p/themes/BlueLagoon/README.md b/p/themes/BlueLagoon/README.md
new file mode 100644
index 000000000..a83dd6743
--- /dev/null
+++ b/p/themes/BlueLagoon/README.md
@@ -0,0 +1,38 @@
+Blue Lagoon
+=======
+
+**C'est un cocktail (bis)! C'est la version plus "fresh" de [Screwdriver](https://github.com/misterair/Screwdriver). C'est... c'est... un thème pour l'agrégateur de flux RSS [FreshRSS](https://github.com/FreshRSS/FreshRSS/)**
+
+
+En toute modestie, ce thème tue du Nyan Cat.
+
+![screenshot](https://raw.githubusercontent.com/misterair/BlueLagoon/master/screenshot.png)
+
+
+Installation
+-----------------
+1. Placez le dossier du thème dans ledossier /FreshRSS/p/themes/Screwdriver de votre FreshRSS;
+2. Allez dans les paramètres d'Affichage et changez de thème;
+3. Profitez de votre Blue Laggon sans modération!
+4. Remontez les problèmes sur Github (*facultatif mais fortement apprécié*)
+
+
+
+Blue Lagoon est distribué sous license AlcoholWare:
+-----------------
+
+« LICENCE ALCOHOLWARE » (Révision 42):
+
+mister.air@gmail.com a créé ce fichier. Tant que vous conservez cet avertissement,
+
+vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
+
+que vous pensez que ce truc vaut le coup, vous pouvez me payer un verre (rempli) en retour.
+
+*Mister aiR*
+
+
+
+
+
+
diff --git a/p/themes/BlueLagoon/icons/bookmark.svg b/p/themes/BlueLagoon/icons/bookmark.svg
new file mode 100644
index 000000000..7f33d9753
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/bookmark.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g fill="#0062bf" transform="translate(-41.000202,-397)">
+<path style="color:#000000;enable-background:accumulate;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#0062bf"/>
+</g>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/favicon-16-32-48-64.ico b/p/themes/BlueLagoon/icons/favicon-16-32-48-64.ico
new file mode 100644
index 000000000..7c5eb5517
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/favicon-16-32-48-64.ico
Binary files differ
diff --git a/p/themes/BlueLagoon/icons/favicon-256.png b/p/themes/BlueLagoon/icons/favicon-256.png
new file mode 100644
index 000000000..dbe4ec4b7
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/favicon-256.png
Binary files differ
diff --git a/p/themes/BlueLagoon/icons/favicon.svg b/p/themes/BlueLagoon/icons/favicon.svg
new file mode 100644
index 000000000..1b6801a26
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/favicon.svg
@@ -0,0 +1,32 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs>
+<linearGradient id="linearGradient3802" y2="53.018" gradientUnits="userSpaceOnUse" x2="72.873" y1="14.64" x1="115.7">
+<stop stop-color="#0090ff" offset="0"/>
+<stop stop-color="#0062be" offset="1"/>
+</linearGradient>
+</defs>
+<g fill="#FFF" transform="matrix(1.7556028,0,0,1.7556028,2.4536682,156.92143)">
+<g transform="matrix(0.9774773,0,0,0.9774773,0.92631875,-74.208835)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g transform="translate(-4.1395349,-75.482558)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</g>
+<g fill="url(#linearGradient3802)" transform="matrix(1.7160619,0,0,1.7160619,5.3998589,23.251436)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g fill="#222" transform="matrix(1.7556028,0,0,1.7556028,-3.4937681,21.015289)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/icon.svg b/p/themes/BlueLagoon/icons/icon.svg
new file mode 100644
index 000000000..8abfea179
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/icon.svg
@@ -0,0 +1,34 @@
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="linearGradient3796">
+<stop stop-color="#0090ff" offset="0"/>
+<stop stop-color="#0062be" offset="1"/>
+</linearGradient>
+<linearGradient id="linearGradient3802" y2="53.018" xlink:href="#linearGradient3796" gradientUnits="userSpaceOnUse" x2="72.873" y1="14.64" x1="115.7"/>
+</defs>
+<g fill="#FFF" transform="matrix(0.41471269,0,0,0.41471269,0.4367596,36.849335)">
+<g transform="matrix(0.9774773,0,0,0.9774773,0.92631875,-74.208835)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g transform="translate(-4.1395349,-75.482558)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</g>
+<g fill="url(#linearGradient3802)" transform="matrix(0.40537224,0,0,0.40537224,1.1327158,5.273491)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g fill="#222" transform="matrix(0.41471269,0,0,0.41471269,-0.96815804,4.7452623)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/non-starred.svg b/p/themes/BlueLagoon/icons/non-starred.svg
new file mode 100644
index 000000000..d5c1f5ee0
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/non-starred.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g fill="#666" transform="translate(-61.000202,-397)">
+<path style="direction:ltr;baseline-shift:baseline;block-progression:tb;text-indent:0;color:#000000;enable-background:accumulate;text-transform:none;text-align:start;" d="m69.003,398.01c-0.2659-0.00099-0.49859,0.1006-0.6647,0.2393-0.16611,0.13869-0.27742,0.32137-0.38968,0.50028-0.22453,0.35782-0.39269,0.76873-0.56546,1.2036-0.17277,0.43483-0.34713,0.88766-0.5046,1.2323-0.15747,0.34465-0.3456,0.57871-0.35862,0.58776-0.01287,0.009-0.30722,0.117-0.69576,0.15181-0.38855,0.0348-0.88122,0.0492-1.3632,0.0694-0.48202,0.0202-0.9703,0.0362-1.393,0.12817-0.21138,0.046-0.4154,0.10148-0.60434,0.20956s-0.36689,0.28631-0.45004,0.53002-0.04901,0.50627,0.03636,0.70157c0.08537,0.19531,0.22656,0.36514,0.3682,0.52344,0.2833,0.31663,0.6327,0.60557,1.0079,0.89849s0.77671,0.55926,1.0678,0.81027c0.29104,0.25101,0.45422,0.50796,0.45912,0.52271,0.0048,0.0146,0.03119,0.33498-0.05456,0.70231-0.08575,0.36732-0.2238,0.81174-0.35282,1.2603-0.12902,0.44861-0.25176,0.90196-0.2917,1.3184-0.01997,0.20819-0.04285,0.40729,0.0053,0.61409,0.04814,0.20679,0.1845,0.43007,0.39902,0.58168,0.21451,0.15161,0.44936,0.1881,0.66823,0.1701s0.43535-0.0703,0.63515-0.15132c0.39961-0.16214,0.80177-0.42851,1.2064-0.68231,0.40465-0.2538,0.80822-0.52155,1.1456-0.71107,0.33734-0.18952,0.6484-0.2686,0.66445-0.26854,0.01586,0.00006,0.30338,0.0951,0.63894,0.28732,0.33556,0.19221,0.72532,0.46503,1.1276,0.72205,0.40229,0.25702,0.81996,0.49752,1.218,0.66284,0.19903,0.0827,0.38893,0.15086,0.60762,0.17059,0.2187,0.0197,0.47978-0.031,0.69551-0.18105,0.21572-0.15001,0.33928-0.35235,0.38918-0.55877s0.04291-0.43517,0.02476-0.64358c-0.03632-0.41683-0.15899-0.86394-0.2841-1.3137-0.12511-0.44978-0.26165-0.88661-0.34421-1.2548-0.08256-0.36813-0.07169-0.68662-0.06666-0.70133,0.005-0.0145,0.18746-0.25247,0.4806-0.50101,0.29313-0.24854,0.67599-0.53755,1.0536-0.82731,0.37764-0.28976,0.76716-0.57158,1.0531-0.88579,0.14298-0.1571,0.2418-0.33444,0.32882-0.52904s0.136-0.42874,0.05481-0.67306-0.27108-0.41314-0.45912-0.52272-0.36679-0.18158-0.57782-0.22931c-0.42206-0.0955-0.91359-0.14009-1.3956-0.16426-0.48198-0.0242-0.94584-0.039-1.3342-0.077s-0.71565-0.13122-0.72859-0.14037c-0.01279-0.009-0.18402-0.23636-0.3384-0.58217s-0.32658-0.78819-0.49548-1.2243c-0.1689-0.4361-0.33477-0.86429-0.55609-1.2238-0.11067-0.17977-0.23335-0.35397-0.39826-0.49396s-0.40309-0.25684-0.66899-0.25783zm0.0086,0.99424c0.0422,0.0358,0.10671,0.13602,0.1841,0.26173,0.15477,0.25141,0.33068,0.6272,0.49397,1.0488,0.16329,0.42163,0.31905,0.88645,0.49598,1.2828,0.17693,0.39633,0.31456,0.73379,0.6753,0.98889,0.36072,0.25509,0.77019,0.29763,1.2152,0.34118,0.44506,0.0435,0.92882,0.0532,1.3948,0.0765,0.46599,0.0234,0.91824,0.0697,1.2135,0.13647,0.14763,0.0334,0.25558,0.0572,0.30381,0.0853-0.02227,0.0498-0.07958,0.15478-0.17956,0.26464-0.19997,0.21973-0.53749,0.48746-0.90261,0.7676-0.36511,0.28015-0.77804,0.57219-1.114,0.85704-0.33595,0.28485-0.63992,0.53221-0.77987,0.94209-0.13995,0.40986-0.05396,0.77681,0.04065,1.1987s0.25406,0.87813,0.37502,1.313c0.12096,0.43486,0.22688,0.84692,0.25228,1.1385,0.01156,0.13264-0.01699,0.23485-0.02778,0.29267-0.05993-0.008-0.1764-0.0324-0.30381-0.0853-0.27836-0.11561-0.64649-0.32808-1.0354-0.57657-0.38894-0.24849-0.8039-0.53053-1.1885-0.75081-0.38457-0.22028-0.70791-0.39837-1.1551-0.40015-0.44722-0.002-0.79205,0.17245-1.1786,0.38965-0.38659,0.21719-0.78438,0.49517-1.1756,0.74055-0.39123,0.24538-0.77636,0.4507-1.0559,0.56412-0.13977,0.0567-0.24616,0.0856-0.3023,0.0902-0.01026-0.0578-0.01522-0.16008-0.0025-0.29243,0.02793-0.29118,0.13818-0.70893,0.26291-1.1426,0.12473-0.43372,0.25404-0.89785,0.35232-1.3188,0.09828-0.42099,0.18672-0.78846,0.05027-1.1994-0.13644-0.41097-0.43218-0.64202-0.76571-0.92967-0.33353-0.28766-0.70551-0.58555-1.0683-0.86876-0.36275-0.2832-0.7178-0.56075-0.91597-0.78224-0.09908-0.11075-0.16221-0.21163-0.1841-0.26173,0.04834-0.0276,0.15448-0.058,0.3023-0.0902,0.29562-0.0643,0.74518-0.10714,1.2112-0.1267,0.46603-0.0196,0.94824-0.0298,1.3935-0.0697,0.44531-0.0399,0.84679-0.0499,1.2097-0.30216,0.36289-0.25221,0.5383-0.60511,0.71876-1.0001,0.18046-0.39497,0.33731-0.84115,0.50435-1.2616,0.16704-0.42041,0.31848-0.83556,0.47556-1.0859,0.07853-0.12515,0.16751-0.20007,0.21012-0.23565z" fill="#666"/>
+</g>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/read.svg b/p/themes/BlueLagoon/icons/read.svg
new file mode 100644
index 000000000..269b75738
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/read.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<path fill="#666" d="M7.9688,3.5312c-3.434,0-6.3812,1.9854-7.8438,4.9063,0.69719,1.3923,1.7293,2.5805,3,3.4375l1.0625-1.063c-0.0318-0.019-0.0622-0.042-0.0937-0.062-0.9251-0.59-1.6925-1.3818-2.2813-2.3125,0.5888-0.9307,1.3562-1.7225,2.2813-2.3125,0.0602-0.0384,0.1262-0.0572,0.1874-0.0938-0.1531,0.4203-0.25,0.8706-0.25,1.3438,0,0.9994,0.3864,1.8995,1,2.5938l1.6563-1.6563c-0.0596,0.0073-0.126,0.0313-0.1875,0.0313-0.8153,0-1.4688-0.6535-1.4688-1.4688s0.6535-1.4688,1.4688-1.4688,1.4688,0.6535,1.4688,1.4688c0,0.0615-0.024,0.1279-0.0313,0.1875l3.0005-3c-0.926-0.3356-1.9313-0.5313-2.9692-0.5313zm5.9692,2.3438l-1.063,1.0625c0.486,0.4467,0.925,0.9377,1.281,1.5-0.589,0.9306-1.356,1.7225-2.281,2.3125-1.162,0.741-2.5291,1.156-3.9062,1.156h-0.0626l-1.3437,1.344c0.4628,0.076,0.9224,0.125,1.4063,0.125,3.4342,0,6.4122-2.017,7.8752-4.9375-0.486-0.9691-1.127-1.8356-1.906-2.5625zm-2.063,2.0625l-3.3125,3.3125c1.7095-0.254,3.0625-1.6016,3.3125-3.3125z"/>
+<path d="M2.4921,13.891,13.301,3.0128,15.437,2.9605,4.3409,13.891z" fill="#666"/>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/starred.svg b/p/themes/BlueLagoon/icons/starred.svg
new file mode 100644
index 000000000..10a16f04a
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/starred.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(-41.000202,-397)">
+<path style="color:#000000;enable-background:accumulate;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#0062bf"/>
+</g>
+</svg>
diff --git a/p/themes/BlueLagoon/icons/unread.svg b/p/themes/BlueLagoon/icons/unread.svg
new file mode 100644
index 000000000..bd39d683a
--- /dev/null
+++ b/p/themes/BlueLagoon/icons/unread.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<path fill="#666" d="m7.9824,3.529c-3.4339,0-6.4103,1.9996-7.8729,4.9206,1.4626,2.9214,4.439,4.9204,7.8729,4.9204,3.4338,0,6.4102-1.9996,7.8729-4.9206-1.462-2.9207-4.439-4.9204-7.8726-4.9204zm3.8819,2.6095c0.9251,0.59007,1.709,1.3804,2.2978,2.3111-0.58881,0.93063-1.3727,1.721-2.2978,2.3111-1.1624,0.7414-2.5047,1.1333-3.8818,1.1333s-2.7195-0.39189-3.8819-1.1333c-0.9248-0.59-1.7087-1.3807-2.2975-2.3114,0.5888-0.9307,1.3727-1.721,2.2978-2.3111,0.0602-0.0384,0.1211-0.0757,0.1823-0.1122-0.15312,0.42021-0.23692,0.87374-0.23692,1.3469,0,2.174,1.7624,3.9364,3.9365,3.9364,2.174,0,3.9365-1.7624,3.9365-3.9364,0-0.4732-0.0838-0.92673-0.23692-1.347,0.0612,0.036566,0.12206,0.073839,0.18234,0.11228zm-3.8816,0.7427c0,0.81528-0.66089,1.4762-1.4762,1.4762-0.81528,0-1.4762-0.66089-1.4762-1.4762,0-0.81528,0.66089-1.4762,1.4762-1.4762,0.81527,0,1.4762,0.66089,1.4762,1.4762z"/>
+</svg>
diff --git a/p/themes/BlueLagoon/loader.gif b/p/themes/BlueLagoon/loader.gif
new file mode 100644
index 000000000..a0839dcc7
--- /dev/null
+++ b/p/themes/BlueLagoon/loader.gif
Binary files differ
diff --git a/p/themes/BlueLagoon/metadata.json b/p/themes/BlueLagoon/metadata.json
new file mode 100644
index 000000000..2c415a613
--- /dev/null
+++ b/p/themes/BlueLagoon/metadata.json
@@ -0,0 +1,7 @@
+{
+ "name": "Blue Lagoon",
+ "author": "Mister aiR",
+ "description": "C'est un cocktail (bis)! C'est la version plus fresh de Screwdriver. C'est... c'est... un thème pour l'agrégateur de flux RSS FreshRSS. En toute modestie, ce thème tue du Nyan Cat.",
+ "version": 1.0,
+ "files": ["_template.css","BlueLagoon.css"]
+}
diff --git a/p/themes/BlueLagoon/template.css b/p/themes/BlueLagoon/template.css
new file mode 100644
index 000000000..8c1a4ed21
--- /dev/null
+++ b/p/themes/BlueLagoon/template.css
@@ -0,0 +1,695 @@
+@charset "UTF-8";
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ margin: 0;
+ padding: 0;
+ font-size: 92%;
+}
+
+/*=== Links */
+a {
+ text-decoration: none;
+}
+a:hover {
+ text-decoration: underline;
+}
+
+/*=== Lists */
+ul, ol, dd {
+ margin: 0;
+ padding: 0;
+}
+
+/*=== Titles */
+h1 {
+ margin: 0.6em 0 0.3em;
+ font-size: 1.5em;
+ line-height: 1.6em;
+}
+h2 {
+ margin: 0.5em 0 0.25em;
+ font-size: 1.3em;
+ line-height: 2em;
+}
+h3 {
+ margin: 0.5em 0 0.25em;
+ font-size: 1.1em;
+ line-height: 2em;
+}
+
+/*=== Paragraphs */
+p {
+ margin: 1em 0 0.5em;
+ font-size: 1em;
+}
+
+/*=== Images */
+img {
+ height: auto;
+ max-width: 100%;
+}
+img.favicon {
+ height: 16px;
+ width: 16px;
+ vertical-align: middle;
+}
+
+/*=== Videos */
+iframe, embed, object, video {
+ max-width: 100%;
+}
+
+/*=== Forms */
+legend {
+ display: block;
+ width: 100%;
+ clear: both;
+}
+label {
+ display: block;
+}
+input {
+ width: 180px;
+}
+textarea {
+ width: 300px;
+}
+input, select, textarea {
+ display: inline-block;
+ max-width: 100%;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ width: 15px !important;
+ min-height: 15px !important;
+}
+input.extend:focus {
+ width: 300px;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group::after {
+ content: "";
+ display: block;
+ clear: both;
+}
+.form-group.form-actions {
+ min-width: 250px;
+}
+.form-group .group-name {
+ display: block;
+ float: left;
+ width: 200px;
+}
+.form-group .group-controls {
+ min-width: 250px;
+ margin: 0 0 0 220px;
+}
+.form-group .group-controls .control {
+ display: block;
+}
+
+/*=== Buttons */
+.stick {
+ display: inline-block;
+ white-space: nowrap;
+}
+.btn,
+a.btn {
+ display: inline-block;
+ cursor: pointer;
+ overflow: hidden;
+}
+.btn-important {
+ font-weight: bold;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ display: block;
+}
+.nav-list .item,
+.nav-list .item > a {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.nav-head {
+ display: block;
+}
+.nav-head .item {
+ display: inline-block;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+}
+.horizontal-list .item {
+ display: table-cell;
+}
+
+/*=== Dropdown */
+.dropdown {
+ position: relative;
+ display: inline-block;
+}
+.dropdown-target {
+ display: none;
+}
+.dropdown-menu {
+ display: none;
+ min-width: 200px;
+ margin: 0;
+ position: absolute;
+ right: 0;
+ background: #fff;
+ border: 1px solid #aaa;
+}
+.dropdown-header {
+ display: block;
+}
+.dropdown-menu > .item {
+ display: block;
+}
+.dropdown-menu > .item > a,
+.dropdown-menu > .item > span {
+ display: block;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ content: '✓';
+}
+.dropdown-menu .input {
+ display: block;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ display: block;
+ max-width: 95%;
+}
+.dropdown-target:target ~ .dropdown-menu {
+ display: block;
+ z-index: 10;
+}
+.dropdown-close {
+ display: inline;
+}
+.dropdown-close a {
+ font-size: 0;
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ display: block;
+ z-index: -10;
+}
+.separator {
+ display: block;
+ height: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+/*=== Alerts */
+.alert {
+ display: block;
+ width: 90%;
+}
+.group-controls .alert {
+ width: 100%
+}
+.alert-head {
+ margin: 0;
+ font-weight: bold;
+}
+.alert ul {
+ margin: 5px 20px;
+}
+
+/*=== Icons */
+.icon {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+ line-height: 16px;
+}
+
+/*=== Pagination */
+.pagination {
+ display: table;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ table-layout: fixed;
+}
+.pagination .item {
+ display: table-cell;
+}
+.pagination .pager-first,
+.pagination .pager-previous,
+.pagination .pager-next,
+.pagination .pager-last {
+ width: 100px;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+}
+.header > .item {
+ display: table-cell;
+}
+.header > .item.title {
+ width: 250px;
+ white-space: nowrap;
+}
+.header > .item.title h1 {
+ display: inline-block;
+}
+.header > .item.title .logo {
+ display: inline-block;
+ height: 32px;
+ width: 32px;
+ vertical-align: middle;
+}
+.header > .item.configure {
+ width: 100px;
+}
+
+/*=== Body */
+#global {
+ display: table;
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+}
+.aside {
+ display: table-cell;
+ height: 100%;
+ width: 250px;
+ vertical-align: top;
+}
+.aside.aside_flux {
+ background: #fff;
+}
+
+/*=== Aside main page (categories) */
+.categories {
+ list-style: none;
+ margin: 0;
+}
+.category {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.category .btn:not([data-unread="0"])::after {
+ content: attr(data-unread);
+}
+
+/*=== Aside main page (feeds) */
+.categories .feeds {
+ width: 100%;
+ list-style: none;
+}
+.categories .feeds:not(.active) {
+ display: none;
+}
+.categories .feeds .feed {
+ display: inline-block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+}
+.categories .feeds .feed:not([data-unread="0"])::before {
+ content: "(" attr(data-unread) ") ";
+}
+.categories .feeds .dropdown-menu {
+ left: 0;
+}
+.categories .feeds .item .dropdown-toggle > .icon {
+ visibility: hidden;
+ cursor: pointer;
+ vertical-align: top;
+}
+.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.categories .feeds .item:hover .dropdown-toggle > .icon,
+.categories .feeds .item.active .dropdown-toggle > .icon {
+ visibility: visible;
+}
+
+/*=== New article notification */
+#new-article {
+ display: none;
+}
+#new-article > a {
+ display: block;
+}
+
+/*=== Day indication */
+.day .name {
+ position: absolute;
+ right: 0;
+ width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/*=== Feed article header and footer */
+.flux_header {
+ position: relative;
+}
+.flux .item {
+ line-height: 40px;
+ white-space: nowrap;
+}
+.flux .item.manage,
+.flux .item.link {
+ width: 40px;
+ text-align: center;
+}
+.flux .item.website {
+ width: 200px;
+}
+.flux.not_read .item.title,
+.flux.current .item.title {
+ font-weight: bold;
+}
+.flux:not(.current):hover .item.title {
+ position: absolute;
+ max-width: calc(100% - 320px);
+ background: #fff;
+}
+.flux .item.title a {
+ color: #000;
+ text-decoration: none;
+}
+.flux .item.date {
+ width: 145px;
+ text-align: right;
+}
+.flux .item > a {
+ display: block;
+}
+.flux .item > a {
+ display: block;
+ text-decoration: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.flux .item.share > a {
+ display: list-item;
+ list-style-position: inside;
+ list-style-type: decimal;
+}
+
+/*=== Feed article content */
+.hide_posts > .flux:not(.active) > .flux_content {
+ display: none;
+}
+.content {
+ min-height: 20em;
+ margin: auto;
+ line-height: 1.7em;
+ word-wrap: break-word;
+}
+.content.large {
+ max-width: 1000px;
+}
+.content.medium {
+ max-width: 800px;
+}
+.content.thin {
+ max-width: 550px;
+}
+.content ul,
+.content ol,
+.content dd {
+ margin: 0 0 0 15px;
+ padding: 0 0 5px 15px;
+}
+.content pre {
+ overflow: auto;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ position: absolute;
+ top: 1em;
+ left: 25%; right: 25%;
+ z-index: 10;
+ background: #fff;
+ border: 1px solid #aaa;
+}
+.notification.closed {
+ display: none;
+}
+.notification a.close {
+ position: absolute;
+ top: 0; bottom: 0;
+ right: 0;
+ display: inline-block;
+}
+
+#actualizeProgress {
+ position: fixed;
+}
+#actualizeProgress progress {
+ max-width: 100%;
+ vertical-align: middle;
+}
+#actualizeProgress .progress {
+ vertical-align: middle;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ position: fixed;
+ bottom: 0; left: 0;
+ display: table;
+ width: 250px;
+ background: #fff;
+ table-layout: fixed;
+}
+#nav_entries .item {
+ display: table-cell;
+ width: 30%;
+}
+#nav_entries a {
+ display: block;
+}
+
+/*=== "Load more" part */
+#load_more {
+ min-height: 40px;
+}
+.loading {
+ background: url("loader.gif") center center no-repeat;
+ font-size: 0;
+}
+#bigMarkAsRead {
+ display: block;
+ padding: 3em 0;
+ text-align: center;
+}
+.bigTick {
+ font-size: 7em;
+ line-height: 1.6em;
+}
+
+/*=== Statistiques */
+.stat > table {
+ width: 100%;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+/*=== Category boxes */
+#stream.global .box-category {
+ display: inline-block;
+ width: 19em;
+ max-width: 95%;
+ margin: 20px 10px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+}
+#stream.global .category {
+ width: 100%;
+}
+#stream.global .btn {
+ display: block;
+}
+#stream.global .box-category .feeds {
+ display: block;
+ overflow: auto;
+}
+#stream.global .box-category .feed {
+ width: 19em;
+ max-width: 90%;
+}
+
+/*=== Panel */
+#overlay {
+ display: none;
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ background: rgba(0, 0, 0, 0.9);
+}
+#panel {
+ display: none;
+ position: fixed;
+ top: 1em; bottom: 1em;
+ left: 2em; right: 2em;
+ overflow: auto;
+ background: #fff;
+}
+#panel .close {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ display: block;
+}
+#panel .close img {
+ display: none;
+}
+
+/*=== DIVERS */
+/*===========*/
+.nav-login,
+.nav_menu .search,
+.nav_menu .toggle_aside {
+ display: none;
+}
+
+.aside .toggle_aside {
+ position: absolute;
+ right: 0;
+ display: none;
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ text-align: center;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .header,
+ .aside .btn-important,
+ .aside .feeds .dropdown,
+ .flux_header .item.website span,
+ .item.date, .day .date,
+ .dropdown-menu > .no-mobile,
+ .no-mobile {
+ display: none;
+ }
+ .nav-login {
+ display: block;
+ }
+ .nav_menu .toggle_aside,
+ .aside .toggle_aside,
+ .nav_menu .search,
+ #panel .close img {
+ display: inline-block;
+ }
+
+ .aside {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0;
+ width: 0;
+ overflow: hidden;
+ z-index: 100;
+ }
+ .aside:target {
+ width: 90%;
+ overflow: auto;
+ }
+ .aside .categories {
+ margin: 10px 0 75px;
+ }
+
+ .flux_header .item.website {
+ width: 40px;
+ }
+
+ .flux:not(.current):hover .item.title {
+ position: relative;
+ width: auto;
+ white-space: nowrap;
+ }
+
+ .notification {
+ top: 0;
+ left: 0;
+ right: 0;
+ }
+
+ #nav_entries {
+ width: 100%;
+ }
+
+ #stream.global .box-category {
+ margin: 10px 0;
+ }
+
+ #panel {
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ }
+ #panel .close {
+ top: 0; right: 0;
+ left: auto; bottom: auto;
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ }
+}
+
+/*=== PRINTER */
+/*============*/
+@media print {
+ .header, .aside,
+ .nav_menu, .day,
+ .flux_header,
+ .flux_content .bottom,
+ .pagination,
+ #nav_entries {
+ display: none;
+ }
+ html, body {
+ background: #fff;
+ color: #000;
+ font-family: Serif;
+ }
+ #global,
+ .flux_content {
+ display: block !important;
+ }
+ .flux_content .content {
+ width: 100% !important;
+ }
+ .flux_content .content a {
+ color: #000;
+ }
+ .flux_content .content a::after {
+ content: " [" attr(href) "] ";
+ font-style: italic;
+ }
+}
diff --git a/p/themes/BlueLagoon/thumbs/original.png b/p/themes/BlueLagoon/thumbs/original.png
new file mode 100644
index 000000000..bb8695945
--- /dev/null
+++ b/p/themes/BlueLagoon/thumbs/original.png
Binary files differ
diff --git a/p/themes/Dark/dark.css b/p/themes/Dark/dark.css
new file mode 100644
index 000000000..f72ed8b5b
--- /dev/null
+++ b/p/themes/Dark/dark.css
@@ -0,0 +1,1035 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #1c1c1c;
+ color: #888;
+}
+
+/*=== Links */
+a, button.as-link {
+ color: #6986B2;
+ outline: none;
+}
+
+/*=== Images */
+img.favicon {
+ background: #fff;
+ border-radius: 2px;
+}
+
+/*=== Forms */
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ font-size: 1.4em;
+ border-bottom: 1px solid #2f2f2f;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ line-height: 25px;
+ vertical-align: middle;
+ background: #333;
+ border: 1px solid #000;
+ border-radius: 3px;
+ color: #999;
+ box-shadow: 0 2px 2px #1d1d1d inset;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ color: #6986b2;
+ border-color: #2f2f2f;
+}
+input:invalid, select:invalid {
+ border-color: #f00;
+ box-shadow: 0 0 2px 1px #f00;
+}
+input:disabled, select:disabled {
+ background: #666;
+ color: #aaa;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #333;
+}
+th {
+ background: #222;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+ background: #1a1a1a;
+ border-top: 1px solid #2f2f2f;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,
+.stick input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.stick .btn-important:first-child {
+ border-right: 1px solid #000;
+}
+.stick .btn:last-child,
+.stick input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left: none;
+}
+.stick input:focus+input {
+ border-left: 1px solid #000;
+}
+.stick input+input:focus {
+ border-left: 1px solid #333;
+}
+.stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 37px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+ background: #111;
+ border-radius: 3px;
+ border: 1px solid #000;
+ color: #888;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ text-decoration: none;
+ background: -moz-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -moz-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -webkit-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -o-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -ms-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+}
+.btn.active,
+.dropdown-target:target ~ .btn.dropdown-toggle {
+ background: #333;
+}
+.btn:active {
+ background: #26303F;
+}
+
+.btn-important {
+ font-weight: normal;
+ background: #26303F;
+}
+.btn-important:hover {
+ background: linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -moz-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -webkit-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -o-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+ background: -ms-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
+}
+.btn-important:active {
+ background: #26303F;
+}
+
+.btn-attention {
+ background: #880011;
+}
+.btn-attention:hover {
+ background: linear-gradient(top, #cc0044 0%, #880011 100%);
+ background: -moz-linear-gradient(top, #cc0044 0%, #880011 100%);
+ background: -webkit-linear-gradient(top, #cc0044 0%, #880011 100%);
+ background: -o-linear-gradient(top, #cc0044 0%, #880011 100%);
+ background: -ms-linear-gradient(top, #cc0044 0%, #880011 100%);
+}
+.btn-attention:active {
+ background: #880011;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+ background: #26303F;
+}
+.nav-list .item.active {
+ background: #333;
+}
+.nav-list .item:hover a,
+.nav-list .item.active a {
+ color: #888;
+}
+.nav-list .disable {
+ text-align: center;
+ color: #aaa;
+ background: #fafafa;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #c95;
+}
+.nav-list .item:hover.empty a,
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: #c95;
+}
+.nav-list .item.error a {
+ color: #a44;
+}
+.nav-list .item:hover.error a,
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #a44;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ font-weight: bold;
+ background: #111;
+ border-bottom: 1px solid #333;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ text-align: right;
+ background: #1c1c1c;
+ border-bottom: 1px solid #333;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ font-size: 0.8rem;
+ text-align: left;
+ background: #1a1a1a;
+ border: 1px solid #888;
+ border-radius: 5px;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ background: #1a1a1a;
+ border-top: 1px solid #888;
+ border-left: 1px solid #888;
+}
+.dropdown-header {
+ padding: 0 5px 5px;
+ font-weight: bold;
+ text-align: left;
+ color: #888;
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+}
+.dropdown-menu > .item:hover {
+ background: #26303F;
+ color: #888;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ text-decoration: none;
+ color: #888;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #333;
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ font-size: 0.9em;
+ background: #111;
+ border: 1px solid #888;
+ border-radius: 5px;
+ color: #aaa;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ text-decoration: underline;
+ color: inherit;
+}
+.alert-warn {
+ border: 1px solid #c95;
+ color: #c95;
+}
+.alert-success {
+ border: 1px solid #484;
+ color: #484;
+}
+.alert-error {
+ border: 1px solid #a44;
+ color: #a44;
+}
+
+/*=== Pagination */
+.pagination {
+ text-align: center;
+ font-size: 0.8em;
+ background: #1c1c1c;
+ color: #888;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+ background: #111;
+}
+.pagination .item a {
+ display: block;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+ color: #666;
+}
+.pagination .item a:hover {
+ background-color: #111;
+}
+.pagination:first-child .item {
+ border-bottom: 1px solid #333;
+}
+.pagination:last-child .item {
+ border-top: 1px solid #333;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ font-size: 0;
+}
+
+/*=== Boxes */
+.box {
+ border: 1px solid #000;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #26303F;
+ border-bottom: 1px solid #000;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 1rem;
+ background: #1c1c1c;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #888;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #2c2c2c;
+ font-weight: bold;
+}
+.tree-folder-items {
+ border-top: 1px solid #222;
+ border-bottom: 1px solid #222;
+ background: #161616;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #1c1c1c;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #888;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 85px;
+}
+.header > .item {
+ padding: 10px;
+ vertical-align: middle;
+ text-align: center;
+ border-bottom: 1px solid #333;
+}
+.header > .item.title{
+ width: 230px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ height: calc(100% - 85px);
+}
+.aside {
+ border-right: 1px solid #333;
+ background: #1c1c1c;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty.active {
+ background: #c95;
+}
+.feed.item.error.active {
+ background: #a44;
+}
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #c95;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #a44;
+}
+.feed.item.empty.active,
+.feed.item.empty.active > a {
+ color: #111;
+}
+.feed.item.error.active,
+.feed.item.error.active > a {
+ color: #fff;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+ background-color: #111;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 200px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+
+/*=== New article notification */
+#new-article {
+ text-align: center;
+ font-size: 0.9em;
+ background: #26303F;
+}
+#new-article:hover {
+ background: #4A5D7A;
+}
+#new-article > a {
+ line-height: 3em;
+ font-weight: bold;
+ color: #fff;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-weight: bold;
+ line-height: 3em;
+ border-top: 1px solid #333;
+ border-bottom: 1px solid #333;
+}
+.day .name {
+ padding: 0 10px 0 0;
+ font-size: 1.8em;
+ opacity: 0.3;
+ font-style: italic;
+ text-align: right;
+ color: #aab;
+ text-shadow: 0px -1px 0px #333;
+}
+
+/*=== Index menu */
+.nav_menu {
+ text-align: center;
+ padding: 5px 0;
+ border-bottom: 1px solid #2f2f2f;
+}
+
+/*=== Feed articles */
+.flux {
+ border-left: 2px solid #2f2f2f;
+}
+.flux:hover {
+ background: #111;
+}
+.flux.current {
+ border-left: 2px solid #0062BE;
+ background: #111;
+}
+.flux.not_read {
+ border-left: 2px solid #FF5300;
+}
+.flux.favorite {
+ border-left: 2px solid #FFC300;
+}
+
+
+.flux_header {
+ font-size: 0.8rem;
+ cursor: pointer;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux_header .item.title a {
+ color: #888;
+}
+.flux .website .favicon {
+ margin: 5px;
+}
+.flux .date {
+ font-size: 0.7rem;
+ color: #666;
+}
+.flux:not(.current):hover .item.title {
+ background: #111;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #888;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #666;
+ border: 0;
+ box-shadow: 0 2px 5px #666;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ border: 1px solid #000;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #000;
+ border: 1px solid #333;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #444;
+ border-bottom: 1px solid #444;
+ background: #222;
+ color: #999;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ z-index: 10;
+ vertical-align: middle;
+ border-radius: 5px;
+ box-shadow: 0 0 5px #666;
+ background: #111;
+ color: #c95;
+ border: 1px solid #c95;
+}
+.notification.good {
+ border-color: #484;
+ color: #484;
+}
+.notification.bad {
+ border-color: #a44;
+ color: #a44;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification a.close:hover {
+ background: #222;
+ border-radius: 0 3px 3px 0;
+}
+.notification.good a.close:hover {
+ background: #484;
+}
+.notification.bad a.close:hover {
+ background: #a44;
+}
+
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+}
+#bigMarkAsRead:hover {
+ background: #111;
+ color: #aaa;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ margin: 0;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+ background: #111;
+ border-top: 1px solid #333;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ border: none;
+ background: #111;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #666;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+ color: #888;
+}
+.box.category:not([data-unread="0"]) .box-title {
+ background: #34495E;
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+ background: #26303F;
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ color: #fff;
+ font-weight: bold;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+
+/*=== Panel */
+#panel {
+ background: #1c1c1c;
+ border: 1px solid #666;
+ border-radius: 3px;
+}
+
+/*=== Slider */
+#slider {
+ background-color: #1c1c1c;
+ border-left: 1px solid #666;
+}
+
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,
+.aside.aside_feed .nav-form select {
+ width: 140px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #333;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 270px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ overflow: hidden;
+ border: 1px solid #333;
+}
+.log {
+ padding: 5px 10px;
+ font-size: 0.8rem;
+ background: #111;
+ color: #888;
+}
+.log+.log {
+ border-top: 1px solid #333;
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+ background: #a44;
+ color: #fff;
+}
+.log.warning {
+ background: #c95;
+ color: #fff;
+}
+.log.notice {
+ background: #ec9;
+ color: #000;
+}
+.log.debug {
+ background: #111;
+ color: #eee;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .aside {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ text-align: center;
+ background: #111;
+ border-bottom: 1px solid #333;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ font-size: 1.1rem;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification {
+ border-top: none;
+ border-right: none;
+ border-left: none;
+ border-radius: 0;
+ }
+ .notification a.close {
+ display: block;
+ left: 0;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+}
diff --git a/p/themes/Dark/freshrss.css b/p/themes/Dark/freshrss.css
deleted file mode 100644
index f6577c645..000000000
--- a/p/themes/Dark/freshrss.css
+++ /dev/null
@@ -1,927 +0,0 @@
-@charset "UTF-8";
-
-/* STRUCTURE */
-.header {
- display: table;
- width: 100%;
- background: #1c1c1c;
- table-layout: fixed;
-}
- .header > .item {
- display: table-cell;
- padding: 10px 0;
- border-bottom: 1px solid #2f2f2f;
- vertical-align: middle;
- text-align: center;
- }
- .header > .item.title {
- width: 250px;
- white-space: nowrap;
- }
- .logo {
- display: inline-block;
- font-size: 48px;
- height: 32px;
- width: 32px;
- padding: 10px;
- }
- .header > .item.title h1 {
- display: inline-block;
- margin: 0;
- }
- .header > .item.search input {
- width: 230px;
- }
- .header .item.search input:focus {
- width: 330px;
- }
- .header > .item.configure {
- width: 100px;
- }
-
-.item a:hover {
- text-decoration: none;
-}
-
-#global {
- display: table;
- width: 100%;
- height: 100%;
- background: #1c1c1c;
- table-layout: fixed;
-}
- .aside {
- display: table-cell;
- height: 100%;
- width: 250px;
- vertical-align: top;
- border-right: 1px solid #2f2f2f;
- background: #1c1c1c;
- }
- .aside .nav-form input {
- width: 180px;
- }
- .aside.aside_flux {
- padding: 10px 0 40px;
- }
- .aside.aside_feed .nav-form input {
- width: 140px;
- }
- .aside.aside_feed .nav-form .dropdown .dropdown-menu {
- right: -20px;
- }
- .aside.aside_feed .nav-form .dropdown .dropdown-menu:after {
- right: 33px;
- }
-
- .nav-login {
- display: none;
- }
-
- .nav_menu {
- width: 100%;
- background: #1c1c1c;
- border-bottom: 1px solid #2f2f2f;
- text-align: center;
- padding: 5px 0;
- }
- .nav_menu .search {
- display:none;
- }
-
-.favicon {
- height: 16px;
- width: 16px;
-}
-
-.categories {
- margin: 0;
- padding: 0;
- text-align: center;
- list-style: none;
-}
- .category {
- display: block;
- width: 220px;
- margin: 10px auto;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .category .btn:first-child {
- width: 195px;
- position: relative;
- }
- .category.stick .btn:first-child {
- width:160px;
- }
- .category .btn:first-child:not([data-unread="0"]):after {
- content: attr(data-unread);
- position: absolute;
- top: 3px; right: 3px;
- padding: 1px 5px;
- background: #1a1a1a;
- color: #888;
- font-size: 90%;
- border: 1px solid #000;
- border-radius: 5px;
- }
- .category + .feeds:not(.active) {
- display:none;
- }
- .categories .feeds {
- width: 100%;
- margin: 0;
- list-style: none;
- }
- .categories .feeds .item.active {
- background: #26303F;
- }
- .categories .feeds .item.active .feed {
- color: #888;
- }
- .categories .feeds .item.empty .feed {
- color: #e67e22;
- }
- .categories .feeds .item.empty.active {
- background: #e67e22;
- }
- .categories .feeds .item.empty.active .feed {
- color: #fff;
- }
- .categories .feeds .item.error .feed {
- color: #BD362F;
- }
- .categories .feeds .item .feed {
- display: inline-block;
- margin: 0;
- width: 165px;
- line-height: 35px;
- font-size: 90%;
- vertical-align: middle;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .feed:not([data-unread="0"]):before {
- content: "(" attr(data-unread) ") ";
- }
- .categories .feeds .dropdown-menu {
- left: 0;
- }
- .categories .feeds .dropdown-menu:after {
- left: 2px;
- }
- .categories .feeds .item .dropdown-toggle > .icon {
- visibility: hidden;
- cursor: pointer;
- }
- .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
- .categories .feeds .item:hover .dropdown-toggle > .icon,
- .categories .feeds .item.active .dropdown-toggle > .icon {
- background-color: #1c1c1c;
- border-radius: 3px;
- visibility: visible;
- }
-
-.post {
- padding: 10px 50px;
-}
- .post form {
- margin: 10px 0;
- }
-
-.day {
- min-height: 50px;
- padding: 0 10px;
- font-size: 130%;
- font-weight: bold;
- line-height: 50px;
- background: #1c1c1c;
- border-top: 1px solid #2f2f2f;
-}
- #new-article + .day {
- border-top: none;
- }
- .day .name {
- position: absolute;
- right: 0;
- width: 50%;
- height: 1.5em;
- padding: 0 10px 0 0;
- overflow: hidden;
- color: #aab;
- font-size: 1.8em;
- opacity: .3;
- text-shadow: 0px -1px 0px #333;
- font-style: italic;
- white-space: nowrap;
- text-overflow: ellipsis;
- text-align: right;
- }
-
-#new-article {
- display: none;
- min-height: 40px;
- background: #26303F;
- text-align: center;
-}
- #new-article:hover {
- background: #4A5D7A;
- }
- #new-article > a {
- display: block;
- line-height: 40px;
- color: #fff;
- font-weight: bold;
- }
- #new-article > a:hover {
- text-decoration: none;
- }
-
-.flux {
- border-left: 3px solid #2f2f2f;
- background: #1c1c1c;
-}
- .flux.not_read {
- border-left: 3px solid #FF5300;
- background: #1c1c1c;
- }
- .flux.favorite {
- border-left: 3px solid #FFC300;
- background: #1c1c1c;
- }
- .flux.current {
- border-left: 3px solid #0062BE;
- background: #1a1a1a;
- }
-
- .horizontal-list > .item:not(.title):not(.website) > a {
- display: block;
- }
-
- .flux_header {
- background: inherit;
- height: 25px;
- font-size: 12px;
- border-top: 1px solid #2f2f2f;
- cursor: pointer;
- }
- .flux .item {
- line-height: 40px;
- white-space: nowrap;
- }
- .flux_header > .item {
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .flux .item.manage {
- width: 40px;
- text-align: center;
- }
- .flux .item.website {
- width: 200px;
- }
- .website .favicon {
- padding: 5px;
- }
- .flux .item.title {
- background: inherit;
- }
- .flux .item.title a {
- color: #888;
- outline: none;
- }
- .flux.not_read .item.title,
- .flux.current .item.title {
- font-weight: bold;
- }
- .flux .item.date {
- width: 145px;
- padding:0 5px 0 0;
- text-align: right;
- font-size: 10px;
- color: #666;
- }
- .link {
- width: 40px;
- text-align: center;
- }
-
-#stream.reader .flux {
- padding: 0 0 30px;
- border: none;
- background: #1c1c1c;
- color: #888;
-}
- #stream.reader .flux .author {
- margin: 0 0 10px;
- font-size: 90%;
- color: #666;
- }
-
-#stream.global {
- text-align: center;
-}
- #stream.global .box-category {
- display: inline-block;
- width: 280px;
- margin: 20px 10px;
- vertical-align: top;
- background: #1a1a1a;
- border: 1px solid #000;
- border-radius: 5px;
- text-align: left;
- box-shadow: 0 0 5px #2f2f2f;
- }
- #stream.global .category {
- width: 100%;
- margin: 0;
- }
- #stream.global .btn {
- display: block;
- width: auto;
- height: 35px;
- margin: 0;
- padding: 0 10px;
- background: #26303F;
- border: none;
- border-bottom: 1px solid #2f2f2f;
- border-radius: 5px 5px 0 0;
- line-height: 35px;
- font-size: 120%;
- }
- #stream.global .btn:not([data-unread="0"]) {
- background: #34495e;
- color: #fff;
- font-weight: bold;
- }
- #stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
- border: 0;
- background: none;
- color: #fff;
- font-weight: bold;
- box-shadow: none;
- }
- #stream.global .box-category .feeds {
- display: block;
- max-height: 250px;
- margin: 0;
- list-style: none;
- overflow: auto;
- }
- #stream.global .box-category .feeds .item {
- padding: 2px 10px;
- font-size: 90%;
- }
- #stream.global .box-category .feed {
- width: 220px;
- }
-
-.content {
- min-height: 150px;
- max-width: 550px;
- margin: 0 auto;
- padding: 20px 10px;
- line-height: 170%;
- word-wrap: break-word;
-}
- .content h1, .content h2, .content h3 {
- margin: 20px 0 5px;
- }
- .content > .title {
- font-size: x-large;
- margin: 0;
- }
-
- .content p {
- margin: 0 0 20px;
- }
- img.big {
- display: block;
- margin: 10px auto;
- }
- figure img.big {
- margin: 0;
- }
- .content hr {
- margin: 30px 0;
- height: 1px;
- background: #ddd;
- border: 0;
- }
- .content pre {
- margin: 10px auto;
- padding: 10px;
- overflow: auto;
- background: #000;
- color: #fff;
- font-size: 110%;
- }
- .content q, .content blockquote {
- display: block;
- margin: 5px 0;
- padding: 5px 20px;
- font-style: italic;
- border-left: 4px solid #ccc;
- color: #666;
- }
- .content blockquote p {
- margin: 0;
- }
-
-#panel {
- display: none;
- position: fixed;
- top: 10px; bottom: 10px;
- left: 100px; right: 100px;
- overflow: auto;
- background: #1c1c1c;
- border: 1px solid #95a5a6;
- border-radius: 5px;
-}
- #panel .close {
- position: fixed;
- top: 10px; right: 0;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border: 1px solid #ccc;
- border-radius: 20px;
- text-align: center;
- line-height: 26px;
- background: #fff;
- }
-
-#overlay {
- display: none;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- background: rgba(0, 0, 0, 0.9);
-}
-
-.flux_content .bottom {
- font-size: 90%;
- text-align: center;
-}
-
-.hide_posts > :not(.active) > .flux_content {
- display:none;
-}
-
-/*** PAGINATION ***/
-.pagination {
- display: table;
- width: 100%;
- margin: 0;
- background: #1a1a1a;
- text-align: center;
- color: #888;
- font-size: 80%;
- line-height: 200%;
- table-layout: fixed;
-}
- .pagination .item {
- display: table-cell;
- line-height: 40px;
- }
- .pagination .item.pager-current {
- font-weight: bold;
- font-size: 140%;
- }
- .pagination .pager-first,
- .pagination .pager-previous,
- .pagination .pager-next,
- .pagination .pager-last {
- width: 100px;
- }
- .pagination .item a {
- display: block;
- color: #333;
- font-style: italic;
- }
- .pagination:first-child .item {
- border-bottom: 1px solid #aaa;
- }
- .pagination:last-child .item {
- border-top: 1px solid #aaa;
- }
-
-#nav_entries {
- display: table;
- width: 250px;
- height: 40px;
- position: fixed;
- bottom: 0;
- left: 0;
- margin: 0;
- background: #1c1c1c;
- border-top: 1px solid #2f2f2f;
- text-align: center;
- line-height: 40px;
- table-layout: fixed;
-}
- #nav_entries .item {
- display: table-cell;
- width: 30%;
- }
- #nav_entries a {
- display: block;
- }
- #nav_entries .i_up {
- margin: 5px 0 0;
- vertical-align: top;
- }
-
-.loading {
- background: url("loader.gif") center center no-repeat;
- font-size: 0;
-}
-
-#bigMarkAsRead {
- display: block;
- font-style: normal;
- padding: 32px 0 64px 0;
- text-align: center;
- text-decoration: none;
-}
- #bigMarkAsRead:hover {
- background: #1c1c1c;
- color: #888;
- }
- .bigTick {
- font-size: 72pt;
- line-height: 1.6em;
- }
-
-/*** NOTIFICATION ***/
-#notification {
- position: absolute;
- top: 10px;
- left: 25%; right: 25%;
- min-height: 30px;
- padding: 10px;
- line-height: 30px;
- text-align: center;
- border-radius: 5px;
- box-shadow: 0 0 5px #666;
- background: #1a1a1a;
- color: #888;
- border: 1px solid #f4f899;
- font-weight: bold;
- z-index: 10;
-}
- #notification.closed {
- display: none;
- }
- #notification a.close {
- position: absolute;
- top: -10px; right: -10px;
- display: inline-block;
- width: 16px;
- height: 16px;
- padding: 5px;
- background: #1a1a1a;
- border-radius: 50px;
- line-height: 16px;
- border:1px solid #f4f899;
- }
-
-.toggle_aside, .btn.toggle_aside {
- display: none;
-}
-
-.actualizeProgress {
- position: fixed;
- top: 10px;
- left: 25%; right: 25%;
- padding: 5px;
- background: #1a1a1a;
- text-align: center;
- border: 1px solid #2f2f2f;
- border-radius: 5px;
-}
- .actualizeProgress progress {
- max-width: 100%;
- vertical-align: middle;
- }
- .actualizeProgress .progress {
- color: #888;
- font-size: 90%;
- vertical-align: middle;
- }
-
-.logs {
- border: 1px solid #aaa;
-}
- .log {
- padding: 5px 2%;
- overflow: auto;
- background: #fafafa;
- border-bottom: 1px solid #999;
- color: #333;
- font-size: 90%;
- }
- .log .date {
- display: block;
- }
- .log.error {
- background: #fdd;
- color: #844;
- }
- .log.warning {
- background: #ffe;
- color: #c95;
- }
- .log.notice {
- background: #f4f4f4;
- color: #aaa;
- }
- .log.debug {
- background: #111;
- color: #eee;
- }
-
-.form-group table {
- border-collapse:collapse;
- margin:10px 0 0 220px;
- text-align:center;
-}
-
-.form-group tr, .form-group th, .form-group td {
- border:1px solid #2f2f2f;
- font-weight:normal;
- padding:.5em;
-}
-
-select.number option {
- text-align:right;
-}
-
-@media(min-width: 841px) {
- .flux:not(.current):hover .item.title {
- max-width: calc(100% - 580px);
- padding-right: 1.5em;
- position: absolute;
- }
-}
-
-@media(max-width: 840px) {
- .header,
- .aside .btn-important,
- .aside .feeds .dropdown,
- .flux_header .item.website span,
- .item.date {
- display: none;
- }
- .flux_header .item.website {
- width: 40px;
- text-align: center;
- }
- .flux_header .item.website .favicon {
- padding: 12px;
- }
-
- .nav-login {
- display: block;
- }
-
- .pagination {
- margin: 0 0 40px;
- }
- .pagination .pager-previous, .pagination .pager-next {
- width: 100px;
- }
-
- .toggle_aside, .btn.toggle_aside {
- display: inline-block;
- }
- .aside {
- position: fixed;
- top: 0; left: 0;
- width: 0;
- overflow: hidden;
- border-right: none;
- z-index: 10;
- transition: width 200ms linear;
- }
- .aside.aside_flux {
- padding: 10px 0 0;
- }
- .aside:target {
- width: 80%;
- border-right: 1px solid #aaa;
- overflow: auto;
- }
- .aside .toggle_aside {
- position: absolute;
- right: 0;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border: 1px solid #ccc;
- border-radius: 20px;
- text-align: center;
- line-height: 26px;
- }
- .aside .categories {
- margin: 30px 0;
- }
-
- #nav_entries {
- width: 100%;
- }
-
- .nav_menu .btn {
- margin: 5px 10px;
- }
- .nav_menu .stick {
- margin: 0 10px;
- }
- .nav_menu .stick .btn {
- margin: 5px 0;
- }
- .nav_menu .search {
- display: inline-block;
- max-width: 97%;
- }
- .nav_menu .search input {
- max-width: 97%;
- width: 90px;
- }
- .nav_menu .search input:focus {
- width: 400px;
- }
-
- #panel {
- left: 5px; right: 5px;
- }
-
- .day .date {
- display: none;
- }
- .day .name {
- height: 2.6em;
- font-size: 1em;
- text-shadow: none;
- }
-
- #notification,
- .actualizeProgress {
- top: 0;
- left: 0;
- right: 0;
- border-radius: 0;
- border: none;
- border-bottom: 1px solid #f4f899;
- }
- #notification a.close {
- left: 0; right: 0;
- top: 0; bottom: 0;
- width: auto;
- height: auto;
- background: transparent;
- border: none;
- }
- #notification a.close .icon {
- display: none;
- }
-}
-
-/*** FALLBACK ***/
-.btn {
- background: #1c1c1c;
-}
- .btn:hover {
- background: -moz-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -webkit-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -o-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -ms-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- }
- .btn-important {
- background: #26303F;
- }
- .btn-important:hover {
- background: -moz-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -webkit-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -o-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- background: -ms-linear-gradient(top, #4A5D7A 0%, #26303F 100%);
- }
- .btn-attention {
- background: #880011;
- }
- .btn-attention:hover {
- background: -moz-linear-gradient(top, #cc0044 0%, #880011 100%);
- background: -webkit-linear-gradient(top, #cc0044 0%, #880011 100%);
- background: -o-linear-gradient(top, #cc0044 0%, #880011 100%);
- background: -ms-linear-gradient(top, #cc0044 0%, #880011 100%);
- }
-
-.dropdown-menu:after {
- -moz-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
-}
-
-.nav-head {
- background: #1c1c1c;
-}
-
-input.extend {
- -moz-transition: width 200ms linear;
- -webkit-transition: width 200ms linear;
- -o-transition: width 200ms linear;
- -ms-transition: width 200ms linear;
-}
-
-@media(max-width: 840px) {
- .aside {
- -moz-transition: width 200ms linear;
- -webkit-transition: width 200ms linear;
- -o-transition: width 200ms linear;
- -ms-transition: width 200ms linear;
- }
-}
-
-@media print {
- .header,
- .aside,
- .nav_menu,
- .day,
- .flux_header,
- .flux_content .bottom,
- .pagination {
- display: none;
- }
-
- html, body {
- background: #fff;
- color: #000;
- font-family: Serif;
- font-size: 12pt;
- }
-
- #global,
- .flux_content {
- display: block !important;
- }
-
- .flux_content .content {
- width: 100% !important;
- text-align: justify;
- }
-
- .flux_content .content a {
- color: #000;
- }
- .flux_content .content a:after {
- content: " (" attr(href) ") ";
- text-decoration: underline;
- }
-}
-
-.stat {
- border:1px solid #2f2f2f;
- border-radius:10px;
- margin:10px 0;
- padding:0 5px;
-}
-.stat > h2 {
- border-bottom:1px solid #2f2f2f;
- margin:0 -5px;
- padding-left:5px;
-}
-.stat > div {
- margin:5px 0;
-}
-.stat > table {
- border-collapse:collapse;
- margin:5px 0;
- width:100%;
-}
-.stat > table > thead > tr {
- border-bottom:2px solid #2f2f2f;
-}
-.stat > table > tbody > tr {
- border-bottom:1px solid #2f2f2f;
-}
-.stat > table > tbody > tr:last-child {
- border-bottom:0;
-}
-.stat > table th, .stat > table td {
- border-left:2px solid #2f2f2f;
- padding:5px;
-}
-.stat > table th:first-child, .stat > table td:first-child {
- border-left:0;
-}
-.stat > table td.numeric{
- margin:5px 0;
- text-align:center;
-}
diff --git a/p/themes/Dark/global.css b/p/themes/Dark/global.css
deleted file mode 100644
index e296f2188..000000000
--- a/p/themes/Dark/global.css
+++ /dev/null
@@ -1,531 +0,0 @@
-@charset "UTF-8";
-
-/* FONTS */
-@font-face {
- font-family: "OpenSans";
- src: url("../fonts/openSans.woff") format("woff");
-}
-
-
-* {
- margin: 0;
- padding: 0;
-}
-html, body {
- height: 100%;
- font-size: 95%;
- font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
- color: #888;
-}
-
-/* LIENS */
-a {
- color: #6986B2;
- text-decoration: none;
-}
- a:hover {
- text-decoration: underline;
- }
-
-/* LISTES */
-ul, ol, dl {
- margin: 10px 0 10px 30px;
- line-height: 190%;
-}
- dd {
- margin: 0 0 10px 30px;
- }
-
-/* TITRES */
-h1, h2, h3 {
- min-height: 40px;
- margin: 15px 0 5px;
- line-height: 40px;
-}
-
-/* IMG */
-figure {
- margin: 5px 0 10px;
- text-align: center;
-}
- figcaption {
- display: inline-block;
- padding: 3px 20px;
- color: #999;
- font-style: italic;
- border-bottom: 1px solid #ccc;
- }
-img {
- height: auto;
- max-width: 100%;
- vertical-align: middle;
-}
- a img {
- border: none;
- }
-
-/* VIDEOS */
-iframe, embed, object, video {
- max-width: 100%;
-}
-
-/* FORMULAIRES */
-legend {
- display: block;
- width: 100%;
- margin: 20px 0 5px;
- padding: 5px 0;
- border-bottom: 1px solid #2f2f2f;
- font-size: 150%;
- clear: both;
-}
-label {
- display: block;
- min-height: 25px;
- padding: 5px 0;
- font-size: 14px;
- line-height: 25px;
- cursor: pointer;
-}
-input {
- width: 180px;
-}
-textarea {
- width: 360px;
- height: 100px;
-}
-input, select, textarea {
- display: inline-block;
- max-width: 100%;
- min-height: 25px;
- padding: 5px;
- background: #333;
- border: 1px solid #000;
- border-radius: 3px;
- color: #999;
- line-height: 25px;
- vertical-align: middle;
- box-shadow: 0 2px 2px #1d1d1d inset;
-}
- option {
- padding:0 .5em 0 .5em;
- }
- input[type="radio"],
- input[type="checkbox"] {
- width: 15px !important;
- min-height: 15px !important;
- }
- input:focus, select:focus, textarea:focus {
- color: #6986b2;
- border-color: #2f2f2f;
- }
- input:invalid, select:invalid {
- border-color: red;
- box-shadow: 0 0 2px 1px red;
- }
- input:focus.extend {
- width: 300px;
- transition: width 200ms linear;
- }
-
-.form-group {
- margin: 0;
-}
- .form-group:after {
- content: "";
- display: block;
- clear: both;
- }
- .form-group.form-actions {
- min-width: 250px;
- padding: 5px 0;
- background: #1a1a1a;
- border-top: 1px solid #2f2f2f;
- }
- .form-group.form-actions .btn {
- margin: 0 10px;
- }
- .form-group .group-name {
- display: block;
- float: left;
- width: 200px;
- padding: 10px 0;
- text-align: right;
- }
- .form-group .group-controls {
- min-width: 250px;
- min-height: 25px;
- margin: 0 0 0 220px;
- padding: 5px 0;
- }
- .form-group .group-controls .control {
- display: block;
- min-height: 30px;
- padding: 5px 0;
- line-height: 25px;
- font-size: 14px;
- }
-
-.stick {
- display: inline-block;
- white-space: nowrap;
- font-size: 0px;
- vertical-align: middle;
-}
- .stick input,
- .stick .btn {
- border-radius: 0;
- font-size: 14px;
- }
- .stick .btn:first-child,
- .stick input:first-child {
- border-radius: 3px 0 0 3px;
- }
- .stick .btn-important:first-child {
- border-right: 1px solid #000;
- }
- .stick .btn:last-child,
- .stick input:last-child {
- border-radius: 0 3px 3px 0;
- }
- .stick .btn + .btn,
- .stick .btn + input,
- .stick .btn + .dropdown > .btn,
- .stick input + .btn,
- .stick input + input,
- .stick input + .dropdown > .btn,
- .stick .dropdown + .btn,
- .stick .dropdown + input,
- .stick .dropdown + .dropdown > .btn {
- border-left: none;
- }
- .stick .btn + .dropdown > .btn {
- border-left: none;
- border-radius: 0 3px 3px 0;
- }
- .stick .btn + .dropdown a {
- font-size: 12px;
- }
-
-.btn {
- display: inline-block;
- min-height: 37px;
- min-width: 15px;
- padding: 5px 10px;
- background: linear-gradient(to bottom, #fff 0%, #eee 100%);
- border-radius: 3px;
- border: 1px solid #000;
- color: #888;
- line-height: 20px;
- vertical-align: middle;
- cursor: pointer;
- overflow: hidden;
-}
- a.btn {
- min-height: 25px;
- line-height: 25px;
- }
- .btn:hover {
- background: linear-gradient(to bottom, #4A5D7A, #26303F);
- text-decoration: none;
- }
- .btn.active,
- .btn:active,
- .dropdown-target:target ~ .btn.dropdown-toggle {
- background: #26303F;
- }
-
- .btn-important {
- background: linear-gradient(to bottom, #0084CC, #0045CC);
- color: #888888;
- border: 1px solid #000000;
- }
- .btn-important:hover {
- background: linear-gradient(to bottom, #0066CC, #0045CC);
- }
- .btn-important:active {
- background: #0044CB;
- box-shadow: none;
- }
-
- .btn-attention {
- background: linear-gradient(to bottom, #E95B57, #BD362F);
- color: #888888;
- border: 1px solid #000000;
- }
- .btn-attention:hover {
- background: linear-gradient(to bottom, #D14641, #BD362F);
- }
- .btn-attention:active {
- background: #BD362F;
- box-shadow: none;
- }
-
-/* NAVIGATION */
-.nav-list .nav-header,
-.nav-list .item {
- display: block;
- height: 35px;
- line-height: 35px;
-}
- .nav-list .item:hover {
- background: #1a1a1a;
- }
- .nav-list .item:hover a {
- color: #26303F;
- }
- .nav-list .item.active {
- background: #26303F;
- color: #1a1a1a;
- }
- .nav-list .item.active a {
- color: #888;
- }
- .nav-list .disable {
- color: #aaa;
- background: #fafafa;
- text-align: center;
- }
- .nav-list .item > * {
- display: block;
- padding: 0 10px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .nav-list a:hover {
- text-decoration: none;
- }
- .nav-list .item.error a {
- color: #BD362F;
- }
- .nav-list .item.active.error a {
- color: #fff;
- background: #BD362F;
- }
- .nav-list .item.empty a {
- color: #f39c12;
- }
- .nav-list .item.active.empty a {
- color: #fff;
- background: #f39c12;
- }
-
- .nav-list .nav-header {
- padding: 0 10px;
- background: #1a1a1a;
- border-bottom: 1px solid #2f2f2f;
- font-weight: bold;
- }
- .nav-list .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #2f2f2f;
- }
-
- .nav-list .nav-form {
- padding: 3px;
- text-align: center;
- }
-
-.nav-head {
- display: block;
- margin: 0;
- background: linear-gradient(to bottom, #fff, #f0f0f0);
- border-bottom: 1px solid #2f2f2f;
- text-align: right;
-}
- .nav-head .item {
- display: inline-block;
- padding: 5px 10px;
- }
-
-/* HORIZONTAL-LIST */
-.horizontal-list {
- display: table;
- table-layout: fixed;
- margin: 0;
- padding: 0;
- width: 100%;
-}
- .horizontal-list .item {
- display: table-cell;
- vertical-align: middle;
- }
-
-/* DROPDOWN */
-.dropdown {
- position: relative;
- display: inline-block;
-}
- .dropdown-target {
- display: none;
- }
-
- .dropdown-menu {
- display: none;
- min-width: 200px;
- margin: 5px 0 0;
- padding: 5px 0;
- position: absolute;
- right: 0px;
- background: #1a1a1a;
- border: 1px solid #888;
- border-radius: 5px;
- text-align: left;
- }
- .dropdown-menu:after {
- content: "";
- position: absolute;
- top: -6px;
- right: 13px;
- width: 10px;
- height: 10px;
- background: #1a1a1a;
- border-top: 1px solid #888;
- border-left: 1px solid #888;
- z-index: -10;
- transform: rotate(45deg);
- }
- .dropdown-header {
- display: block;
- padding: 0 5px;
- color: #888;
- font-weight: bold;
- font-size: 14px;
- line-height: 30px;
- }
- .dropdown-menu .item {
- display: block;
- height: 30px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu > .item > a {
- display: block;
- padding: 0 25px;
- line-height: 30px;
- }
- .dropdown-menu > .item.share > a {
- display: list-item;
- list-style-position:inside;
- list-style-type:decimal;
- }
- .dropdown-menu > .item:hover {
- background: #26303F;
- color: #888;
- }
- .dropdown-menu > .item[aria-checked="true"] > a:before {
- content: '✓ ';
- font-weight: bold;
- margin: 0 0 0 -1.2em;
- padding: 0 0.2em 0 0;
- }
- .dropdown-menu > .item:hover > a {
- color: #888;
- text-decoration: none;
- }
- .dropdown-menu .input {
- display: block;
- height: 40px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu .input select,
- .dropdown-menu .input input {
- display: block;
- height: 20px;
- width: 95%;
- margin: auto;
- padding: 2px 5px;
- border-radius: 3px;
- }
- .dropdown-menu .input select {
- width: 70%;
- height: auto;
- }
- .dropdown-menu .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #888;
- }
- .dropdown-target:target ~ .dropdown-menu {
- display: block;
- z-index: 10;
- }
- .dropdown-close {
- display: inline;
- }
- .dropdown-close a {
- font-size: 0;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- display: block;
- z-index: -10;
- }
-
-/* ALERTS */
-.alert {
- display: block;
- width: 90%;
- margin: 15px auto;
- padding: 10px 15px;
- background: #1a1a1a;
- border: 1px solid #ccc;
- border-right: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
- border-radius: 5px;
- color: #aaa;
-}
- .alert-head {
- margin: 0;
- font-weight: bold;
- font-size: 110%;
- }
- .alert > a {
- color: inherit;
- text-decoration: underline;
- }
- .alert-warn {
- border: 1px solid #c95;
- color: #c95;
- }
- .alert-success {
- border: 1px solid #484;
- color: #484;
- }
- .alert-error {
- border: 1px solid #844;
- color: #844;
- }
-
-/* ICÔNES */
-.icon {
- display: inline-block;
- width: 16px;
- height: 16px;
- vertical-align: middle;
- line-height: 16px;
-}
-
-/* Prompt (centré) */
-.prompt {
- text-align: center;
-}
- .prompt label {
- text-align: left;
- }
- .prompt form {
- margin: 1em auto 2.5em auto;
- width: 10em;
- }
- .prompt input {
- margin: .4em auto 1.1em auto;
- width: 100%;
- }
- .prompt p {
- margin: 20px 0;
- }
diff --git a/p/themes/Dark/icons/icon.svg b/p/themes/Dark/icons/icon.svg
new file mode 100644
index 000000000..4eb53dda9
--- /dev/null
+++ b/p/themes/Dark/icons/icon.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
+ <title>Logo FreshRSS</title>
+ <circle fill="#6986B2" cx="128" cy="128" r="33"/>
+ <g fill="none" stroke="#6986B2" stroke-width="24">
+ <g stroke-opacity="0.3">
+ <path d="M12,128 A116,116 0 1,1 128,244"/>
+ <path d="M54,128 A74,74 0 1,1 128,202"/>
+ </g>
+ <path d="M128,12 A116,116 0 0,1 244,128"/>
+ <path d="M128,54 A74,74 0 0,1 202,128"/>
+ </g>
+</svg>
diff --git a/p/themes/Dark/metadata.json b/p/themes/Dark/metadata.json
index 27cae27df..bdc068c2e 100644
--- a/p/themes/Dark/metadata.json
+++ b/p/themes/Dark/metadata.json
@@ -2,6 +2,6 @@
"name": "Dark",
"author": "AD",
"description": "Le coté obscur du thème “Origine”",
- "version": 0.1,
- "files": ["global.css", "freshrss.css"]
+ "version": 0.2,
+ "files": ["_template.css", "dark.css"]
}
diff --git a/p/themes/Dark/thumbs/original.png b/p/themes/Dark/thumbs/original.png
new file mode 100644
index 000000000..fd574319f
--- /dev/null
+++ b/p/themes/Dark/thumbs/original.png
Binary files differ
diff --git a/p/themes/Flat/flat.css b/p/themes/Flat/flat.css
new file mode 100644
index 000000000..0672c6a38
--- /dev/null
+++ b/p/themes/Flat/flat.css
@@ -0,0 +1,1024 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #fafafa;
+}
+
+/*=== Links */
+a, button.as-link {
+ color: #2980b9;
+ outline: none;
+}
+
+/*=== Forms */
+legend {
+ display: inline-block;
+ width: auto;
+ margin: 20px 0 5px;
+ padding: 5px 20px;
+ font-size: 1.4em;
+ clear: both;
+ background: #ecf0f1;
+ border-radius: 20px;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+ color: #444;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ line-height: 25px;
+ vertical-align: middle;
+ background: #fff;
+ border: none;
+ border-bottom: 3px solid #ddd;
+ border-left-color: #ddd;
+ color: #666;
+ border-radius: 5px;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ color: #333;
+ border-color: #2980b9;
+}
+input:invalid, select:invalid {
+ color: #f00;
+ border-color: #f00;
+ box-shadow: none;
+}
+input:disabled, select:disabled {
+ background: #eee;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+th {
+ background: #f6f6f6;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group {
+ padding: 5px;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+.form-group::after {
+ content: "";
+ display: block;
+ clear: both;
+}
+.form-group:hover {
+ background: #fff;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ border: 1px solid #eee;
+}
+.form-group.form-actions {
+ margin: 15px 0 25px;
+ padding: 5px 0;
+ background: #ecf0f1;
+ border-top: 3px solid #bdc3c7;
+ border-radius: 5px 5px 0 0;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group .group-controls .control {
+ line-height: 2.0em;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,
+.stick input:first-child {
+ border-radius: 5px 0 0 5px;
+}
+.stick .btn:last-child,
+.stick input:last-child,
+.stick .btn + .dropdown > .btn {
+ border-radius: 0 5px 5px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left-width: 1px;
+ border-left-style: solid;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 38px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+ background: #3498db;
+ border-radius: 5px;
+ border: none;
+ border-bottom: 3px solid #2980b9;
+ border-left-color: #2980b9;
+ color: #fff;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ text-decoration: none;
+}
+.btn.active,
+.btn:active,
+.btn:hover,
+.dropdown-target:target ~ .btn.dropdown-toggle {
+ background: #2980b9;
+}
+
+.btn-important {
+ font-weight: normal;
+ background: #e67e22;
+ color: #fff;
+ border-bottom: 3px solid #d35400;
+ border-left-color: #d35400;
+}
+.btn-important:hover,
+.btn-important:active {
+ background: #d35400;
+}
+
+.btn-attention {
+ background: #e74c3c;
+ color: #fff;
+ border-bottom: 3px solid #c0392b;
+ border-left-color: #c0392b;
+}
+.btn-attention:hover,
+.btn-attention:active {
+ background: #c0392b;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover,
+.nav-list .item.active {
+ background: #2980b9;
+ color: #fff;
+}
+.nav-list .item:hover a,
+.nav-list .item.active a {
+ color: #fff;
+}
+.nav-list .disable {
+ text-align: center;
+ background: #fafafa;
+ color: #aaa;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #f39c12;
+}
+.nav-list .item:hover.empty a,
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: #f39c12;
+}
+.nav-list .item.error a {
+ color: #bd362f;
+}
+.nav-list .item:hover.error a,
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #bd362f;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ font-weight: bold;
+ background: #34495e;
+ color: #fff;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ text-align: right;
+ background: #34495e;
+ color: #fff;
+}
+.nav-head a {
+ color: #fff;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ font-size: 0.8rem;
+ text-align: left;
+ border: 1px solid #95a5a6;
+ border-radius: 3px;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ background: #fff;
+ border-top: 1px solid #95a5a6;
+ border-left: 1px solid #95a5a6;
+}
+.dropdown-header {
+ padding: 0 5px 5px;
+ font-weight: bold;
+ text-align: left;
+ color: #34495e;
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+}
+.dropdown-menu > .item:hover {
+ background: #2980b9;
+ color: #fff;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ text-decoration: none;
+ color: #fff;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #ddd;
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ font-size: 0.9em;
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px;
+ color: #aaa;
+ text-shadow: 0 0 1px #eee;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ text-decoration: underline;
+ color: inherit;
+}
+.alert-warn {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.alert-success {
+ background: #dfd;
+ border: 1px solid #cec;
+ color: #484;
+}
+.alert-error {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+
+/*=== Pagination */
+.pagination {
+ text-align: center;
+ font-size: 0.8em;
+ background: #ecf0f1;
+ color: #000;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+ background: #34495e;
+ color: #ecf0f1;
+}
+.pagination .item a {
+ display: block;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+ color: #000;
+}
+.pagination .item a:hover {
+ background: #34495e;
+ color: #ecf0f1;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ font-size: 0;
+ background: url("loader.gif") center center no-repeat #34495e;
+}
+
+/*=== Boxes */
+.box {
+ border: 1px solid #ddd;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #ecf0f1;
+ color: #333;
+ border-bottom: 1px solid #ddd;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item .configure .icon {
+ vertical-align: middle;
+ background-color: #95a5a6;
+ border-radius: 3px;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ background: #34495e;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #2980b9;
+ font-weight: bold;
+}
+.tree-folder-items {
+ background: #2c3e50;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #2980b9;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+ color: #fff;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 85px;
+ background: #ecf0f1;
+}
+.header > .item {
+ padding: 10px;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title{
+ width: 230px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ height: calc(100% - 85px);
+}
+.aside {
+ background: #ecf0f1;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+ background: #34495e;
+ border-radius: 0 10px 0 0;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty.active {
+ background: #f39c12;
+}
+.feed.item.error.active {
+ background: #bd362f;
+}
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #e67e22;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #bd362f;
+}
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
+ color: #fff;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 200px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+
+/*=== New article notification */
+#new-article {
+ text-align: center;
+ font-size: 0.9em;
+ background: #3498db;
+}
+#new-article:hover {
+ background: #2980b9;
+}
+#new-article > a {
+ line-height: 3em;
+ font-weight: bold;
+ color: #fff;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-weight: bold;
+ line-height: 3em;
+ border-left: 2px solid #ecf0f1;
+}
+.day .name {
+ padding: 0 10px 0 0;
+ font-size: 1.8em;
+ opacity: 0.3;
+ font-style: italic;
+ text-align: right;
+ color: #aab;
+}
+
+/*=== Index menu */
+.nav_menu {
+ text-align: center;
+ padding: 5px 0;
+}
+
+#dropdown-query ~ .dropdown-menu .dropdown-header .icon {
+ vertical-align: middle;
+ background-color: #95a5a6;
+ border-radius: 3px;
+}
+
+/*=== Feed articles */
+.flux {
+ border-left: 2px solid #ecf0f1;
+}
+.flux:hover {
+ background: #fff;
+}
+.flux.current {
+ border-left-color: #3498db;
+}
+.flux.not_read {
+ background: #FFF3ED;
+ border-left-color: #FF5300;
+}
+.flux.not_read:not(.current):hover .item.title {
+ background: #FFF3ED;
+}
+.flux.favorite {
+ background: #FFF6DA;
+ border-left-color: #FFC300;
+}
+.flux.favorite:not(.current):hover .item.title {
+ background: #FFF6DA;
+}
+.flux.current {
+ background: #fff;
+}
+
+
+.flux_header {
+ font-size: 0.8rem;
+ cursor: pointer;
+ border-top: 1px solid #ecf0f1;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ font-size: 0.7rem;
+ color: #666;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #000;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #ddd;
+ border: 0;
+ box-shadow: 0 2px 5px #ccc;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #fafafa;
+ border: 1px solid #eee;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ background: #fafafa;
+ color: #333;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ z-index: 10;
+ vertical-align: middle;
+ background: #ddd;
+ color: #666;
+ border-radius: 3px;
+ border: none;
+}
+.notification.good {
+ background: #1abc9c;
+ color: #fff;
+}
+.notification.bad {
+ background: #e74c3c;
+ color: #fff;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+ border-radius: 0 3px 3px 0;
+}
+.notification.good a.close:hover {
+ background: #16a085;
+}
+.notification.bad a.close:hover {
+ background: #c0392b;
+}
+
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+ background: #ecf0f1;
+}
+#bigMarkAsRead:hover {
+ background: #34495e;
+ color: #fff;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ margin: 0;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+ background: #34495e;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ background: #ecf0f1;
+ color: #34495e;
+ border: none;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #999;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+}
+.box.category:not([data-unread="0"]) .box-title {
+ background: #3498db;
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+ background: #2980b9;
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ font-weight: bold;
+ color: #fff;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,
+.aside.aside_feed .nav-form select {
+ width: 140px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #ddd;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 270px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ overflow: hidden;
+ border: 1px solid #aaa;
+}
+.log {
+ margin: 10px 0;
+ padding: 5px 2%;
+ overflow: auto;
+ font-size: 0.8rem;
+ background: #fafafa;
+ color: #666;
+}
+
+.log > .date {
+ margin: 0 10px 0 0;
+ padding: 5px 10px;
+ border-radius: 20px;
+}
+.log.error > .date {
+ background: #e74c3c;
+ color: #fff;
+}
+.log.warning > .date {
+ background: #f39c12;
+}
+.log.notice > .date {
+ background: #ecf0f1;
+}
+.log.debug > .date {
+ background: #111;
+ color: #eee;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .aside {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ text-align: center;
+ background: #2c3e50;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ font-size: 1.1rem;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification {
+ border-radius: 0;
+ }
+ .notification a.close {
+ display: block;
+ left: 0;
+ background: transparent;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+}
diff --git a/p/themes/Flat/freshrss.css b/p/themes/Flat/freshrss.css
deleted file mode 100644
index 1d551d8fb..000000000
--- a/p/themes/Flat/freshrss.css
+++ /dev/null
@@ -1,905 +0,0 @@
-@charset "UTF-8";
-
-/* STRUCTURE */
-body {
- background: #fafafa;
-}
-
-.header {
- display: table;
- width: 100%;
- table-layout: fixed;
- background: #ecf0f1;
-}
- .header > .item {
- display: table-cell;
- padding: 10px 0;
- vertical-align: middle;
- text-align: center;
- }
- .header > .item.title {
- width: 250px;
- white-space: nowrap;
- }
- .logo {
- display: inline-block;
- font-size: 48px;
- height: 32px;
- width: 32px;
- padding: 10px;
- }
- .header > .item.title h1 {
- display: inline-block;
- margin: 0;
- }
- .header > .item.search input {
- width: 230px;
- }
- .header .item.search input:focus {
- width: 330px;
- }
- .header > .item.configure {
- width: 100px;
- }
-
-.item a:hover {
- text-decoration: none;
-}
-
-#global {
- display: table;
- width: 100%;
- height: 100%;
- table-layout: fixed;
-}
- .aside {
- display: table-cell;
- height: 100%;
- width: 250px;
- vertical-align: top;
- background: #ecf0f1;
- }
- .aside .nav-form input {
- width: 180px;
- }
- .aside.aside_flux {
- padding: 10px 0 40px;
- }
- .aside.aside_feed .nav-form input {
- width: 140px;
- }
- .aside.aside_feed .nav-form .dropdown-menu {
- right: -20px;
- }
- .aside.aside_feed .nav-form .dropdown-menu:after {
- right: 33px;
- }
-
- .nav-login {
- display: none;
- }
-
- .nav_menu {
- width: 100%;
- text-align: center;
- padding: 5px 0;
- }
- .nav_menu .search {
- display:none;
- }
-
-.favicon {
- height: 16px;
- width: 16px;
-}
-
-.categories {
- margin: 0;
- padding: 0;
- text-align: center;
- list-style: none;
-}
- .category {
- display: block;
- width: 220px;
- margin: 10px auto;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .category .btn:first-child {
- width: 195px;
- position: relative;
- }
- .category.stick .btn:first-child {
- width:160px;
- }
- .category .btn:first-child:not([data-unread="0"]):after {
- content: attr(data-unread);
- position: absolute;
- top: 5px; right: 5px;
- padding: 0 5px;
- color: #fff;
- font-size: 90%;
- background: #3498DB;
- border-radius: 5px;
- }
- .category + .feeds:not(.active) {
- display:none;
- }
- .categories .feeds {
- width: 100%;
- margin: 0 auto;
- list-style: none;
- }
- .categories .feeds .item.active:after {
- content: "⇢";
- line-height: 35px;
- float: right;
- }
- .categories .feeds .item.empty .feed {
- color: #e67e22;
- }
- .categories .feeds .item.error .feed {
- color: #BD362F;
- }
- .categories .feeds .item .feed {
- display: inline-block;
- margin: 0;
- width: 165px;
- line-height: 35px;
- font-size: 90%;
- vertical-align: middle;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .feed:not([data-unread="0"]) {
- font-weight:bold;
- }
- .feed:not([data-unread="0"]):before {
- content: "(" attr(data-unread) ") ";
- }
- .categories .feeds .dropdown-menu {
- left: 0;
- }
- .categories .feeds .dropdown-menu:after {
- left: 2px;
- }
- .categories .feeds .item .dropdown-toggle > .icon {
- visibility: hidden;
- cursor: pointer;
- }
- .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
- .categories .feeds .item:hover .dropdown-toggle > .icon,
- .categories .feeds .item.active .dropdown-toggle > .icon {
- background-color: #95a5a6;
- border-radius: 3px;
- visibility: visible;
- }
- .categories .btn:hover .notRead,
- .categories .btn.active .notRead {
- background: #2980B9;
- border-left: 3px solid #3498DB;
- }
-
-.post {
- padding: 10px 50px;
-}
- .post form {
- margin: 10px 0;
- }
-
-.day {
- padding: 5px 15px;
- font-size: 130%;
- font-weight: bold;
- line-height: 50px;
- border-left: 3px solid #ecf0f1;
-}
- .day .name {
- position: absolute;
- right: 0;
- width: 50%;
- height: 1.5em;
- padding: 0 10px 0 0;
- overflow: hidden;
- color: #aab;
- font-size: 1.8em;
- opacity: .3;
- font-style: italic;
- text-align: right;
- white-space: nowrap;
- text-overflow: ellipsis;
- z-index: -10;
- }
-
-#new-article {
- display: none;
- min-height: 40px;
- background: #3498db;
- text-align: center;
-}
- #new-article:hover {
- background: #2980b9;
- }
- #new-article > a {
- display: block;
- line-height: 40px;
- color: #fff;
- font-weight: bold;
- }
- #new-article > a:hover {
- text-decoration: none;
- }
-
-.flux {
- border-left: 3px solid #ecf0f1;
-}
- .flux:hover {
- background: #fff;
- }
- .flux.not_read {
- border-left-color: #FF5300;
- background: #FFF3ED;
- }
- .flux.favorite {
- border-left-color: #FFC300;
- background: #FFF6DA;
- }
- .flux.current {
- border-left-color: #3498db;
- background: #fff;
- }
-
- .horizontal-list > .item:not(.title):not(.website) > a {
- display: block;
- }
-
- .flux_header {
- background: inherit;
- height: 25px;
- font-size: 12px;
- border-top: 1px solid #ecf0f1;
- cursor: pointer;
- }
- .flux .item {
- line-height: 40px;
- white-space: nowrap;
- }
- .flux_header > .item {
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .flux .item.manage {
- width: 40px;
- text-align: center;
- }
- .flux .item.website {
- width: 200px;
- }
- .website .favicon {
- padding: 5px;
- }
- .flux .item.title {
- background: inherit;
- }
- .flux .item.title a {
- color: #333;
- outline: none;
- }
- .flux.current .item.title,
- .flux.not_read .item.title {
- font-weight: bold;
- }
- .flux .item.date {
- width: 145px;
- padding:0 5px 0 0;
- text-align: right;
- font-size: 10px;
- color: #666;
- }
- .link {
- width: 40px;
- text-align: center;
- }
-
-#stream.reader .flux {
- position: relative;
- padding: 0 0 30px;
- border: none;
- background: #ecf0f1;
- color: #34495e;
- font-size: 120%;
-}
- #stream.reader .flux .author {
- margin: 0 0 10px;
- font-size: 90%;
- color: #aaa;
- }
-
-#stream.global {
- text-align: center;
-}
- #stream.global .box-category {
- display: inline-block;
- width: 280px;
- margin: 20px 10px;
- vertical-align: top;
- border: 1px solid #ddd;
- border-radius: 5px;
- text-align: left;
- }
- #stream.global .category {
- width: 100%;
- margin: 0;
- }
- #stream.global .btn {
- display: block;
- width: auto;
- height: 35px;
- margin: 0;
- padding: 0 10px;
- background: #ecf0f1;
- color: #333;
- border-bottom: 1px solid #ddd;
- border-radius: 5px 5px 0 0;
- line-height: 35px;
- font-size: 120%;
- }
- #stream.global .btn:not([data-unread="0"]) {
- background: #3498db;
- color: #fff;
- font-weight: bold;
- }
- #stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
- border: 0;
- background: none;
- color: #fff;
- font-weight: bold;
- box-shadow: none;
- }
- #stream.global .box-category .feeds {
- display: block;
- max-height: 250px;
- margin: 0;
- list-style: none;
- overflow: auto;
- }
- #stream.global .box-category .feeds .item {
- padding: 2px 10px;
- font-size: 90%;
- }
- #stream.global .box-category .feed {
- width: 220px;
- }
-
-.content {
- min-height: 150px;
- max-width: 550px;
- margin: 0 auto;
- padding: 20px 10px;
- line-height: 170%;
- word-wrap: break-word;
-}
- .content h1, .content h2, .content h3 {
- margin: 20px 0 5px;
- }
- .content > .title {
- font-size: x-large;
- margin: 0;
- }
-
- .content p {
- margin: 0 0 20px;
- }
- img.big {
- display: block;
- margin: 10px auto;
- }
- figure img.big {
- margin: 0;
- }
- .content hr {
- margin: 30px 0;
- height: 1px;
- background: #ddd;
- border: 0;
- }
- .content pre {
- margin: 10px auto;
- padding: 10px;
- overflow: auto;
- background: #000;
- color: #fff;
- font-size: 110%;
- }
- .content q, .content blockquote {
- display: block;
- margin: 5px 0;
- padding: 5px 20px;
- font-style: italic;
- border-left: 4px solid #ccc;
- color: #666;
- }
- .content blockquote p {
- margin: 0;
- }
-
-#panel {
- display: none;
- position: fixed;
- top: 10px; bottom: 10px;
- left: 100px; right: 100px;
- overflow: auto;
- background: #fff;
- border: 1px solid #95a5a6;
- border-radius: 5px;
-}
- #panel .close {
- position: fixed;
- top: 10px; right: 0px;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border-radius: 3px;
- text-align: center;
- line-height: 24px;
- background: #95a5a6;
- }
- #panel .close:hover {
- background: #7f8c8d;
- }
-
-#overlay {
- display: none;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- background: rgba(0, 0, 0, 0.9);
-}
-
-.flux_content .bottom {
- font-size: 90%;
- text-align: center;
-}
-
-.hide_posts > :not(.active) > .flux_content {
- display:none;
-}
-
-/*** PAGINATION ***/
-.pagination {
- display: table;
- width: 100%;
- margin: 0;
- background: #ecf0f1;
- text-align: center;
- color: #000;
- font-size: 80%;
- line-height: 200%;
- table-layout: fixed;
- font-weight: bold;
-}
- .pagination .item {
- display: table-cell;
- line-height: 40px;
- vertical-align: top;
- }
- .pagination .item.pager-current {
- font-weight: bold;
- font-size: 140%;
- color: #ecf0f1;
- background: #34495e;
- }
- .pagination .item.pager-first,
- .pagination .item.pager-previous,
- .pagination .item.pager-next,
- .pagination .item.pager-last {
- width: 100px;
- }
- .pagination .item a {
- display: block;
- color: #000;
- font-weight: bold;
- line-height: 40px;
- }
- .pagination .item a:hover {
- color: #ecf0f1;
- background: #34495e;
- }
-
-#nav_entries {
- display: table;
- width: 250px;
- height: 40px;
- position: fixed;
- bottom: 0;
- left: 0;
- margin: 0;
- background: #34495e;
- text-align: center;
- line-height: 40px;
- table-layout: fixed;
-}
- #nav_entries .item {
- display: table-cell;
- width: 30%;
- }
- #nav_entries a {
- display: block;
- }
- #nav_entries .i_up {
- margin: 5px 0 0;
- vertical-align: top;
- }
-
-.pagination .loading,
-.pagination a:hover.loading {
- background: url("loader.gif") center center no-repeat #34495e;
- font-size: 0;
-}
-
-#bigMarkAsRead {
- background: #ecf0f1;
- display: block;
- font-style: normal;
- padding: 32px 0 64px 0;
- text-align: center;
- text-decoration: none;
- text-shadow: 0 -1px 0 #aaa;
-}
- #bigMarkAsRead:hover {
- background: #34495e;
- color: #fff;
- }
- .bigTick {
- font-size: 72pt;
- line-height: 1.6em;
- }
-
-/*** NOTIFICATION ***/
-#notification {
- position: absolute;
- top: 10px;
- left: 25%; right: 25%;
- min-height: 30px;
- padding: 10px;
- line-height: 30px;
- text-align: center;
- border-radius: 3px;
- background: #ddd;
- color: #666;
- font-weight: bold;
- z-index: 10;
-}
- #notification.closed {
- display: none;
- }
- #notification.good {
- background: #1abc9c;
- color: #fff;
- }
- #notification.bad {
- background: #e74c3c;
- color: #fff;
- }
- #notification a.close {
- position: absolute;
- top: -6px; right: -6px;
- display: inline-block;
- width: 16px;
- height: 16px;
- padding: 5px;
- border-radius: 3px;
- line-height: 16px;
- }
- #notification.good a.close {
- background: #1abc9c;
- }
- #notification.bad a.close {
- background: #e74c3c;
- }
-
-.toggle_aside, .btn.toggle_aside {
- display: none;
-}
-
-.actualizeProgress {
- position: fixed;
- top: 10px;
- left: 25%; right: 25%;
- padding: 5px;
- background: #3498db;
- color: #fff;
- text-align: center;
- border-radius: 3px;
- font-weight: bold;
-}
- .actualizeProgress progress {
- max-width: 100%;
- width: 250px;
- height: 15px;
- vertical-align: middle;
- background: #fff;
- border: none;
- }
- .actualizeProgress .progress {
- color: #ecf0f1;
- }
-
-.logs {
- border: 1px solid #34495e;
-}
- .log {
- margin: 10px 0;
- padding: 5px 2%;
- overflow: auto;
- background: #fafafa;
- color: #666;
- font-size: 90%;
- }
- .log>.date {
- margin: 0 10px 0 0;
- padding: 5px 10px;
- border-radius: 20px;
- }
- .log.error>.date {
- background: #e74c3c;
- color: #fff;
- }
- .log.warning>.date {
- background: #f39c12;
- }
- .log.notice>.date {
- background: #ecf0f1;
- }
- .log.debug>.date {
- background: #111;
- color: #eee;
- }
-
-.form-group table {
- border-collapse:collapse;
- margin:10px 0 0 220px;
- text-align:center;
-}
-
-.form-group tr, .form-group th, .form-group td {
- font-weight:normal;
- padding:.5em;
-}
-
-select.number option {
- text-align:right;
-}
-
-@media(min-width: 841px) {
- .flux:not(.current):hover .item.title {
- max-width: calc(100% - 580px);
- padding-right: 1.5em;
- position: absolute;
- }
-}
-
-@media(max-width: 840px) {
- .header,
- .aside .btn-important,
- .aside .feeds .dropdown,
- .flux_header .item.website span,
- .item.date {
- display: none;
- }
- .flux_header .item.website {
- width: 40px;
- text-align: center;
- }
- .flux_header .item.website .favicon {
- padding: 12px;
- }
-
- .nav-login {
- display: block;
- }
-
- .pagination {
- margin: 0 0 40px;
- }
- .pagination .pager-previous, .pagination .pager-next {
- width: 100px;
- }
-
- .toggle_aside, .btn.toggle_aside {
- display: inline-block;
- }
- .aside {
- position: fixed;
- top: 0; left: 0;
- width: 0;
- overflow: hidden;
- z-index: 10;
- transition: width 200ms linear;
- background: #ecf0f1;
- }
- .aside.aside_flux {
- padding: 10px 0 0;
- }
- .aside:target {
- width: 80%;
- border-right: 1px solid #aaa;
- overflow: auto;
- }
- .aside .toggle_aside {
- position: absolute;
- right: 10px;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border-radius: 3px;
- text-align: center;
- line-height: 24px;
- background: #95a5a6;
- }
- .aside .toggle_aside:hover {
- background: #7f8c8d;
- }
- .aside .categories {
- margin: 30px 0;
- }
-
- #nav_entries {
- width: 100%;
- }
-
- .nav_menu .btn {
- margin: 5px 10px;
- }
- .nav_menu .stick {
- margin: 0 10px;
- }
- .nav_menu .stick .btn {
- margin: 5px 0;
- }
- .nav_menu .search {
- display: inline-block;
- max-width: 97%;
- }
- .nav_menu .search input {
- max-width: 97%;
- width: 90px;
- }
- .nav_menu .search input:focus {
- width: 400px;
- }
-
- #panel {
- left: 5px; right: 5px;
- }
-
- .day .date {
- display: none;
- }
- .day .name {
- height: 2.6em;
- font-size: 1em;
- text-shadow: none;
- }
-
- #notification,
- .actualizeProgress {
- top: 0;
- left: 0;
- right: 0;
- border-radius: 0;
- }
- #notification a.close,
- #notification.good a.close,
- #notification.bad a.close {
- left: 0; right: 0;
- top: 0; bottom: 0;
- width: auto;
- height: auto;
- background: transparent;
- border: none;
- }
- #notification a.close .icon {
- display: none;
- }
-}
-
-/*** FALLBACK ***/
-.dropdown-menu:after {
- -moz-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
-}
-
-input.extend {
- -moz-transition: width 200ms linear;
- -webkit-transition: width 200ms linear;
- -o-transition: width 200ms linear;
- -ms-transition: width 200ms linear;
-}
-
-@media print {
- .header,
- .aside,
- .nav_menu,
- .day,
- .flux_header,
- .flux_content .bottom,
- .pagination {
- display: none;
- }
-
- html, body {
- background: #fff;
- color: #000;
- font-family: Serif;
- font-size: 12pt;
- }
-
- #global,
- .flux_content {
- display: block !important;
- }
-
- .flux_content .content {
- width: 100% !important;
- text-align: justify;
- }
-
- .flux_content .content a {
- color: #000;
- }
- .flux_content .content a:after {
- content: " (" attr(href) ") ";
- text-decoration: underline;
- }
-}
-
-.stat {
- border:1px solid #aaa;
- border-radius:10px;
- box-shadow:2px 2px 5px #aaa;
- margin:10px 0;
- padding:0 5px;
-}
-.stat > h2 {
- border-bottom:1px solid #aaa;
- margin:0 -5px;
- padding-left:5px;
-}
-.stat > div {
- margin:5px 0;
-}
-.stat > table {
- border-collapse:collapse;
- margin:5px 0;
- width:100%;
-}
-.stat > table > thead > tr {
- border-bottom:2px solid #aaa;
-}
-.stat > table > tbody > tr {
- border-bottom:1px solid #aaa;
-}
-.stat > table > tbody > tr:last-child {
- border-bottom:0;
-}
-.stat > table th, .stat > table td {
- border-left:2px solid #aaa;
- padding:5px;
-}
-.stat > table th:first-child, .stat > table td:first-child {
- border-left:0;
-}
-.stat > table td.numeric{
- margin:5px 0;
- text-align:center;
-} \ No newline at end of file
diff --git a/p/themes/Flat/global.css b/p/themes/Flat/global.css
deleted file mode 100644
index 4044dd781..000000000
--- a/p/themes/Flat/global.css
+++ /dev/null
@@ -1,534 +0,0 @@
-@charset "UTF-8";
-
-/* FONTS */
-@font-face {
- font-family: "OpenSans";
- src: url("../fonts/openSans.woff") format("woff");
-}
-
-
-* {
- margin: 0;
- padding: 0;
-}
-html, body {
- height: 100%;
- font-size: 95%;
- font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
-}
-
-/* LIENS */
-a {
- color: #2980b9;
- text-decoration: none;
-}
- a:hover {
- text-decoration: underline;
- }
-
-/* LISTES */
-ul, ol, dl {
- margin: 10px 0 10px 30px;
- line-height: 190%;
-}
- dd {
- margin: 0 0 10px 30px;
- }
-
-/* TITRES */
-h1, h2, h3 {
- min-height: 40px;
- margin: 15px 0 5px;
- line-height: 40px;
-}
-
-/* IMG */
-figure {
- margin: 5px 0 10px;
- text-align: center;
-}
- figcaption {
- display: inline-block;
- padding: 3px 20px;
- color: #999;
- font-style: italic;
- border-bottom: 1px solid #ccc;
- }
-img {
- height: auto;
- max-width: 100%;
- vertical-align: middle;
-}
- a img {
- border: none;
- }
-
-/* VIDEOS */
-iframe, embed, object, video {
- max-width: 100%;
-}
-
-/* FORMULAIRES */
-legend {
- display: inline-block;
- margin: 20px 0 5px;
- padding: 5px 20px;
- font-size: 150%;
- clear: both;
- background: #ecf0f1;
- border-radius: 20px;
-}
-label {
- display: block;
- min-height: 25px;
- padding: 5px 0;
- font-size: 12px;
- line-height: 25px;
- cursor: pointer;
- font-weight: bold;
- color: #444;
-}
-input {
- width: 180px;
-}
-textarea {
- width: 360px;
- height: 100px;
-}
-input, select, textarea {
- display: inline-block;
- max-width: 100%;
- min-height: 25px;
- padding: 5px;
- background: #FFF;
- border: none;
- border-bottom: 3px solid #ddd;
- color: #666;
- line-height: 25px;
- vertical-align: middle;
- border-radius: 5px;
-}
- option {
- padding:0 .5em 0 .5em;
- }
- input[type="radio"],
- input[type="checkbox"] {
- width: 15px !important;
- min-height: 15px !important;
- }
- input:focus, select:focus, textarea:focus {
- color: #333;
- border-color: #2980b9;
- }
- input:invalid, select:invalid {
- border-color: red;
- box-shadow: 0 0 2px 1px red;
- }
- input:focus.extend {
- width: 300px;
- transition: width 200ms linear;
- }
-
-.form-group {
- margin: 5px 0;
- border: 1px solid transparent;
-}
- .form-group:after {
- content: "";
- display: block;
- clear: both;
- }
- .form-group:hover {
- background: #fff;
- border: 1px solid #eee;
- border-radius: 3px;
- }
- .form-group.form-actions {
- min-width: 250px;
- margin: 20px 0;
- padding: 5px 0;
- background: #ecf0f1;
- border-top: 3px solid #bdc3c7;
- border-radius: 5px 5px 0 0;
- }
- .form-group.form-actions .btn {
- margin: 0 10px;
- }
- .form-group .group-name {
- display: block;
- float: left;
- width: 200px;
- padding: 10px 0;
- text-align: right;
- }
- .form-group .group-controls {
- min-width: 250px;
- min-height: 25px;
- margin: 0 0 0 220px;
- padding: 5px 0;
- }
- .form-group .group-controls label {
- font-weight: normal;
- font-size: 14px;
- color: #000;
- }
- .form-group .group-controls .control {
- display: block;
- min-height: 30px;
- padding: 5px 0;
- line-height: 25px;
- font-size: 14px;
- }
-
-.stick {
- display: inline-block;
- white-space: nowrap;
- font-size: 0px;
- vertical-align: middle;
-}
- .stick .btn,
- .stick input {
- font-size: 14px;
- border-radius: 0;
- }
- .stick .btn:first-child,
- .stick input:first-child {
- border-radius: 5px 0 0 5px;
- }
- .stick .btn:last-child,
- .stick input:last-child,
- .stick .btn + .dropdown > .btn {
- border-radius: 0 5px 5px 0;
- }
- .stick .btn + .dropdown a {
- font-size: 12px;
- }
-
-.btn {
- display: inline-block;
- min-height: 38px;
- min-width: 18px;
- padding: 5px 10px;
- background: #3498db;
- border-radius: 5px;
- border: none;
- border-bottom: 3px solid #2980b9;
- color: #fff;
- line-height: 20px;
- vertical-align: middle;
- cursor: pointer;
- overflow: hidden;
-}
- a.btn {
- min-height: 25px;
- line-height: 25px;
- }
- .btn.active,
- .btn:active,
- .btn:hover,
- .dropdown-target:target ~ .btn.dropdown-toggle {
- background: #2980b9;
- text-decoration: none;
- }
-
- .btn-important {
- background: #e67e22;
- color: #fff;
- border-bottom: 3px solid #d35400;
- }
- .btn-important:active,
- .btn-important:hover {
- background: #d35400;
- }
-
- .btn-attention {
- background: #e74c3c;
- color: #fff;
- border-bottom: 3px solid #c0392b;
- }
- .btn-attention:hover,
- .btn-attention:active {
- background: #c0392b;
- }
-
-/* NAVIGATION */
-.nav-list {
- border-right: 1px solid #ecf0f1;
-}
-.nav-list .nav-header,
-.nav-list .item {
- display: block;
- height: 35px;
- line-height: 35px;
- margin: 5px 0;
-}
- .nav-list .item:hover,
- .nav-list .item.active {
- background: #2980b9;
- color: #fff;
- }
- .nav-list .item:hover a,
- .nav-list .item.active a {
- color: #fff;
- }
- .nav-list .disable {
- color: #aaa;
- background: #fafafa;
- text-align: center;
- }
- .nav-list .item > * {
- display: block;
- padding: 0 10px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .nav-list a:hover {
- text-decoration: none;
- }
- .nav-list .item.error a {
- color: #BD362F;
- }
- .nav-list .item:hover.error a,
- .nav-list .item.active.error a {
- color: #fff;
- background: #BD362F;
- }
- .nav-list .item.empty a {
- color: #f39c12;
- }
- .nav-list .item:hover.empty a,
- .nav-list .item.active.empty a {
- color: #fff;
- background: #f39c12;
- }
-
- .nav-list .nav-header {
- padding: 0 10px;
- margin: 0;
- color: #fff;
- background: #34495e;
- font-weight: bold;
- }
- .nav-list .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #ddd;
- }
-
- .nav-list .nav-form {
- padding: 3px;
- text-align: center;
- }
-
-.nav-head {
- display: block;
- margin: 0;
- background: #34495e;
- color: #fff;
- text-align: right;
-}
- .nav-head a {
- color: #fff;
- }
- .nav-head .item {
- display: inline-block;
- padding: 5px 10px;
- }
-
-/* HORIZONTAL-LIST */
-.horizontal-list {
- display: table;
- table-layout: fixed;
- margin: 0;
- padding: 0;
- width: 100%;
-}
- .horizontal-list .item {
- display: table-cell;
- vertical-align: middle;
- }
-
-/* DROPDOWN */
-.dropdown {
- position: relative;
- display: inline-block;
-}
- .dropdown-target {
- display: none;
- }
-
- .dropdown-menu {
- display: none;
- min-width: 200px;
- margin: 5px 0 0;
- padding: 5px 0;
- position: absolute;
- right: 0px;
- background: #fff;
- border: 1px solid #95a5a6;
- border-radius: 3px;
- text-align: left;
- }
- .dropdown-menu:after {
- content: "";
- position: absolute;
- top: -6px;
- right: 13px;
- width: 10px;
- height: 10px;
- background: #fff;
- border-top: 1px solid #95a5a6;
- border-left: 1px solid #95a5a6;
- z-index: -10;
- transform: rotate(45deg);
- }
- .dropdown-header {
- display: block;
- padding: 0 5px;
- color: #34495e;
- font-weight: bold;
- font-size: 14px;
- line-height: 30px;
- }
- .dropdown-menu > .item {
- display: block;
- height: 30px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu > .item > a {
- display: block;
- padding: 0 25px;
- line-height: 30px;
- }
- .dropdown-menu > .item.share > a {
- display: list-item;
- list-style-position:inside;
- list-style-type:decimal;
- }
- .dropdown-menu > .item:hover > a {
- background: #2980b9;
- color: #fff;
- }
- .dropdown-menu > .item[aria-checked="true"] > a:before {
- content: '✓ ';
- font-weight: bold;
- margin: 0 0 0 -1.2em;
- padding: 0 0.2em 0 0;
- }
- .dropdown-menu > .item:hover > a {
- color: #fff;
- text-decoration: none;
- }
- .dropdown-menu .input {
- display: block;
- height: 40px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu label {
- font-weight: normal;
- }
- .dropdown-menu .input select,
- .dropdown-menu .input input {
- display: block;
- height: 20px;
- width: 95%;
- margin: auto;
- padding: 2px 5px;
- border-radius: 3px;
- }
- .dropdown-menu .input select {
- width: 70%;
- height: auto;
- }
- .dropdown-menu .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #95a5a6;
- }
- .dropdown-target:target ~ .dropdown-menu {
- display: block;
- z-index: 10;
- }
- .dropdown-close {
- display: inline;
- }
- .dropdown-close a {
- font-size: 0;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- display: block;
- z-index: -10;
- }
-
-/* ALERTS */
-.alert {
- display: block;
- width: 90%;
- margin: 15px auto;
- padding: 10px 15px;
- background: #f4f4f4;
- border: 1px solid #ccc;
- border-right: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
- border-radius: 5px;
- color: #aaa;
- text-shadow: 0 0 1px #eee;
-}
- .alert-head {
- margin: 0;
- font-weight: bold;
- font-size: 110%;
- }
- .alert > a {
- color: inherit;
- text-decoration: underline;
- }
- .alert-warn {
- background: #ffe;
- border: 1px solid #eeb;
- color: #c95;
- }
- .alert-success {
- background: #dfd;
- border: 1px solid #cec;
- color: #484;
- }
- .alert-error {
- background: #fdd;
- border: 1px solid #ecc;
- color: #844;
- }
-
-/* ICÔNES */
-.icon {
- display: inline-block;
- width: 16px;
- height: 16px;
- vertical-align: middle;
- line-height: 16px;
-}
-
-/* Prompt (centré) */
-.prompt {
- text-align: center;
-}
- .prompt label {
- text-align: left;
- }
- .prompt form {
- margin: 1em auto 2.5em auto;
- width: 10em;
- }
- .prompt input {
- margin: .4em auto 1.1em auto;
- width: 100%;
- }
- .prompt p {
- margin: 20px 0;
- }
diff --git a/p/themes/Flat/icons/icon.svg b/p/themes/Flat/icons/icon.svg
new file mode 100644
index 000000000..9657d020c
--- /dev/null
+++ b/p/themes/Flat/icons/icon.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
+ <title>Logo FreshRSS</title>
+ <circle fill="#2980b9" cx="128" cy="128" r="33"/>
+ <g fill="none" stroke="#2980b9" stroke-width="24">
+ <g stroke-opacity="0.3">
+ <path d="M12,128 A116,116 0 1,1 128,244"/>
+ <path d="M54,128 A74,74 0 1,1 128,202"/>
+ </g>
+ <path d="M128,12 A116,116 0 0,1 244,128"/>
+ <path d="M128,54 A74,74 0 0,1 202,128"/>
+ </g>
+</svg>
diff --git a/p/themes/Flat/icons/key.svg b/p/themes/Flat/icons/key.svg
new file mode 100644
index 000000000..77d0218e5
--- /dev/null
+++ b/p/themes/Flat/icons/key.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(-340.99994,-257)" fill="#ffffff">
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m346,260c-2.7496,0-5,2.2504-5,5s2.2504,5,5,5c1.5862,0,2.9034-0.84459,3.8125-2h4.8438,0.75l0.21875-0.75,1.0312-4,0.3125-1.25h-1.2812-5.875c-0.90914-1.1554-2.2263-2-3.8125-2zm0,2c1.1158,0,2.0379,0.59507,2.5625,1.5l0.3125,0.5h0.5625,4.9688l-0.53125,2h-4.4375-0.5625l-0.3125,0.5c-0.52462,0.90493-1.4466,1.5-2.5625,1.5-1.6687,0-3-1.3313-3-3s1.3313-3,3-3z"/>
+<path opacity="0.35" style="enable-background:accumulate;color:#000000;" d="M355.5,265,350,265,349.44,267,355,267z" fill-rule="nonzero"/>
+<path style="enable-background:accumulate;color:#000000;" d="m346,265c0,0.55228-0.44772,1-1,1s-1-0.44772-1-1,0.44772-1,1-1,1,0.44772,1,1z" fill-rule="nonzero"/>
+</g>
+</svg>
diff --git a/p/themes/Flat/icons/rss.svg b/p/themes/Flat/icons/rss.svg
new file mode 100644
index 000000000..4d4faf7ae
--- /dev/null
+++ b/p/themes/Flat/icons/rss.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g fill-rule="nonzero" transform="translate(-561,-301.00012)" fill="#fff">
+<path style="enable-background:new;color:#000000;" d="m325.06,97.188c0,1.7872-0.89543,3.2361-2,3.2361s-2-1.4488-2-3.2361c0-1.7872,0.89543-3.2361,2-3.2361s2,1.4488,2,3.2361z" transform="matrix(1.0000007,0,0,0.61803426,241.93747,252.93479)"/>
+<path style="enable-background:new;color:#000000;" d="m563,303,0,1c0,0.55016,0.45347,1,1,1,4.9706,0,9,4.0294,9,9,0,0.55016,0.45347,1,1,1h1v-1c0-6.0751-4.9249-11-11-11h-1zm0,4,0,1c0,0.55016,0.45347,1,1,1,2.7614,0,5,2.2386,5,5,0,0.55016,0.45347,1,1,1h1v-1c0-3.866-3.134-7-7-7h-1z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Flat/icons/view-global.svg b/p/themes/Flat/icons/view-global.svg
new file mode 100644
index 000000000..9d2cd0f32
--- /dev/null
+++ b/p/themes/Flat/icons/view-global.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-61-867)" fill="#fff" color="#000"><rect height="2" rx=".385" ry=".379" width="2" x="64" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="64" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="64" y="878"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="878"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="878"/></g></svg> \ No newline at end of file
diff --git a/p/themes/Flat/icons/view-normal.svg b/p/themes/Flat/icons/view-normal.svg
new file mode 100644
index 000000000..8eda2047e
--- /dev/null
+++ b/p/themes/Flat/icons/view-normal.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-40-746)" fill="#fff" color="#fff"><path d="m43 749h10v2h-10z"/><path d="m43 753h10v2h-10z"/><path d="m43 757h10v2h-10z"/></g></svg> \ No newline at end of file
diff --git a/p/themes/Flat/icons/view-reader.svg b/p/themes/Flat/icons/view-reader.svg
new file mode 100644
index 000000000..0e4f60a1a
--- /dev/null
+++ b/p/themes/Flat/icons/view-reader.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-181-867)" fill="#fff" color="#fff"><path d="m 181,868 0,1 0,11 0,1 1,0 5,0 c 0.1754,0 0.52538,0.15166 0.8125,0.34375 0.28712,0.19209 0.46875,0.375 0.46875,0.375 L 189,882.4375 l 0.71875,-0.75 c 0,0 0.8963,-0.6875 1.28125,-0.6875 l 5,0 1,0 0,-1 0,-11 0,-1 -1,0 -5,0 c -0.87652,0 -1.56017,0.34756 -2.03125,0.6875 -0.0301,-0.0207 -0.031,-0.0105 -0.0625,-0.0312 C 188.44557,868.35254 187.82811,868 187,868 l -5,0 -1,0 z m 2,2 4,0 c 0.13821,0 0.51476,0.14746 0.8125,0.34375 0.29774,0.19629 0.5,0.375 0.5,0.375 l 0.71875,0.6875 0.6875,-0.71875 c 0,0 0.89975,-0.6875 1.28125,-0.6875 l 4,0 0,9 -4,0 c -0.87693,0 -1.56008,0.34735 -2.03125,0.6875 -0.0196,-0.0135 -0.011,-0.0177 -0.0312,-0.0312 C 188.47725,879.34834 187.83512,879 187,879 l -4,0 0,-9 z"/><g transform="scale(-1 1)"><rect height="2" rx=".375" width="3" x="-187" y="872"/><rect height="2" rx=".375" width="3" x="-187" y="875"/><rect height="2" rx=".375" width="3" x="-194" y="872"/><rect height="2" rx=".375" width="3" x="-194" y="875"/></g></g></svg> \ No newline at end of file
diff --git a/p/themes/Flat/metadata.json b/p/themes/Flat/metadata.json
index 6b94d11c2..3afdc98af 100644
--- a/p/themes/Flat/metadata.json
+++ b/p/themes/Flat/metadata.json
@@ -2,6 +2,6 @@
"name": "Flat design",
"author": "Marien Fressinaud",
"description": "Thème plat pour FreshRSS",
- "version": 0.1,
- "files": ["global.css", "freshrss.css"]
+ "version": 0.2,
+ "files": ["_template.css", "flat.css"]
} \ No newline at end of file
diff --git a/p/themes/Flat/thumbs/original.png b/p/themes/Flat/thumbs/original.png
new file mode 100644
index 000000000..b9cafa9c8
--- /dev/null
+++ b/p/themes/Flat/thumbs/original.png
Binary files differ
diff --git a/p/themes/Origine/freshrss.css b/p/themes/Origine/freshrss.css
deleted file mode 100644
index 86bd508df..000000000
--- a/p/themes/Origine/freshrss.css
+++ /dev/null
@@ -1,961 +0,0 @@
-@charset "UTF-8";
-
-/* STRUCTURE */
-.header {
- display: table;
- width: 100%;
- background: #f4f4f4;
- table-layout: fixed;
-}
- .header > .item {
- display: table-cell;
- padding: 10px 0;
- border-bottom: 1px solid #aaa;
- vertical-align: middle;
- text-align: center;
- }
- .header > .item.title {
- width: 250px;
- white-space: nowrap;
- }
- .logo {
- display: inline-block;
- font-size: 48px;
- height: 32px;
- width: 32px;
- padding: 10px;
- }
- .header > .item.title h1 {
- display: inline-block;
- margin: 0;
- text-shadow: 1px -1px 0 #ccc;
- }
- .header > .item.search input {
- width: 230px;
- }
- .header .item.search input:focus {
- width: 330px;
- }
- .header > .item.configure {
- width: 100px;
- }
-
-.item a:hover {
- text-decoration: none;
-}
-
-#global {
- display: table;
- width: 100%;
- height: 100%;
- background: #fafafa;
- table-layout: fixed;
-}
- .aside {
- display: table-cell;
- height: 100%;
- width: 250px;
- vertical-align: top;
- border-right: 1px solid #aaa;
- background: #fff;
- }
- .aside .nav-form input {
- width: 180px;
- }
- .aside.aside_flux {
- padding: 10px 0 40px;
- }
- .aside.aside_feed .nav-form input {
- width: 140px;
- }
- .aside.aside_feed .nav-form .dropdown .dropdown-menu {
- right: -20px;
- }
- .aside.aside_feed .nav-form .dropdown .dropdown-menu:after {
- right: 33px;
- }
-
- .nav-login {
- display: none;
- }
-
- .nav_menu {
- width: 100%;
- background: #fafafa;
- border-bottom: 1px solid #aaa;
- text-align: center;
- padding: 5px 0;
- }
- .nav_menu .search {
- display:none;
- }
-
-.favicon {
- height: 16px;
- width: 16px;
-}
-
-.categories {
- margin: 0;
- padding: 0;
- text-align: center;
- list-style: none;
-}
- .category {
- display: block;
- width: 220px;
- margin: 10px auto;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .category .btn:first-child {
- width: 195px;
- position: relative;
- }
- .category.stick .btn:first-child {
- width:160px;
- }
- .category .btn:first-child:not([data-unread="0"]):after {
- content: attr(data-unread);
- position: absolute;
- top: 3px; right: 3px;
- padding: 1px 5px;
- background: #ccc;
- color: #fff;
- font-size: 90%;
- border: 1px solid #bbb;
- border-radius: 5px;
- box-shadow: 1px 3px 3px #aaa inset;
- text-shadow: 0 0 1px #aaa;
- }
- .category + .feeds:not(.active) {
- display:none;
- }
- .categories .feeds {
- width: 100%;
- margin: 0;
- list-style: none;
- }
- .categories .feeds .item.active {
- background: #0062BE;
- }
- .categories .feeds .item.active .feed {
- color: #fff;
- }
- .categories .feeds .item.empty .feed {
- color: #e67e22;
- }
- .categories .feeds .item.empty.active {
- background: #e67e22;
- }
- .categories .feeds .item.empty.active .feed {
- color: #fff;
- }
- .categories .feeds .item.error .feed {
- color: #BD362F;
- }
- .categories .feeds .item .feed {
- display: inline-block;
- margin: 0;
- width: 165px;
- line-height: 35px;
- font-size: 90%;
- vertical-align: middle;
- text-align: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .feed:not([data-unread="0"]) {
- font-weight:bold;
- }
- .feed:not([data-unread="0"]):before {
- content: "(" attr(data-unread) ") ";
- }
- .categories .feeds .dropdown-menu {
- left: 0;
- }
- .categories .feeds .dropdown-menu:after {
- left: 2px;
- }
- .categories .feeds .item .dropdown-toggle > .icon {
- visibility: hidden;
- cursor: pointer;
- }
- .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
- .categories .feeds .item:hover .dropdown-toggle > .icon,
- .categories .feeds .item.active .dropdown-toggle > .icon {
- background-color: #fff;
- border-radius: 3px;
- visibility: visible;
- }
-
-.post {
- padding: 10px 50px;
-}
- .post form {
- margin: 10px 0;
- }
-
-.day {
- min-height: 50px;
- padding: 0 10px;
- font-size: 130%;
- font-weight: bold;
- line-height: 50px;
- background: #fff;
- border-top: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
-}
- #new-article + .day {
- border-top: none;
- }
- .day .name {
- position: absolute;
- right: 0;
- width: 50%;
- height: 1.5em;
- padding: 0 10px 0 0;
- overflow: hidden;
- color: #aab;
- font-size: 1.8em;
- opacity: .3;
- text-shadow: 0px -1px 0px #333;
- font-style: italic;
- white-space: nowrap;
- text-overflow: ellipsis;
- text-align: right;
- }
-
-#new-article {
- display: none;
- min-height: 40px;
- background: #0084CC;
- text-align: center;
-}
- #new-article:hover {
- background: #0066CC;
- }
- #new-article > a {
- display: block;
- line-height: 40px;
- color: #fff;
- font-weight: bold;
- }
- #new-article > a:hover {
- text-decoration: none;
- }
-
-.flux {
- border-left: 3px solid #aaa;
- background: #fafafa;
-}
- .flux:hover {
- background: #fff;
- }
- .flux.not_read {
- border-left: 3px solid #FF5300;
- background: #FFF3ED;
- }
- .flux.favorite {
- border-left: 3px solid #FFC300;
- background: #FFF6DA;
- }
- .flux.current {
- border-left: 3px solid #0062BE;
- background: #fff;
- }
-
- .horizontal-list > .item:not(.title):not(.website) > a {
- display: block;
- }
-
- .flux_header {
- background: inherit;
- height: 25px;
- font-size: 12px;
- border-top: 1px solid #ddd;
- cursor: pointer;
- }
- .flux .item {
- line-height: 40px;
- white-space: nowrap;
- }
- .flux_header > .item {
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .flux .item.manage {
- width: 40px;
- text-align: center;
- }
- .flux .item.website {
- width: 200px;
- }
- .website .favicon {
- padding: 5px;
- }
- .flux .item.title {
- background: inherit;
- }
- .flux .item.title a {
- color: #000;
- outline: none;
- }
- .flux.not_read .item.title,
- .flux.current .item.title {
- font-weight: bold;
- }
- .flux .item.date {
- width: 145px;
- padding:0 5px 0 0;
- text-align: right;
- font-size: 10px;
- color: #666;
- }
- .link {
- width: 40px;
- text-align: center;
- }
-
-#stream.reader .flux {
- padding: 0 0 30px;
- border: none;
- background: #f0f0f0;
- color: #333;
-}
- #stream.reader .flux .author {
- margin: 0 0 10px;
- font-size: 90%;
- color: #666;
- }
-
-#stream.global {
- text-align: center;
-}
- #stream.global .box-category {
- display: inline-block;
- width: 280px;
- margin: 20px 10px;
- vertical-align: top;
- background: #fff;
- border: 1px solid #aaa;
- border-radius: 5px;
- text-align: left;
- box-shadow: 0 0 5px #bbb;
- }
- #stream.global .category {
- width: 100%;
- margin: 0;
- }
- #stream.global .btn {
- display: block;
- width: auto;
- height: 35px;
- margin: 0;
- padding: 0 10px;
- background: #eee;
- border: none;
- border-bottom: 1px solid #aaa;
- border-radius: 5px 5px 0 0;
- line-height: 35px;
- font-size: 120%;
- }
- #stream.global .btn:not([data-unread="0"]) {
- background: #0084CC;
- color: #fff;
- font-weight: bold;
- text-shadow: none;
- }
- #stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
- border: 0;
- background: none;
- color: #fff;
- font-weight: bold;
- box-shadow: none;
- text-shadow: none;
- }
- #stream.global .box-category .feeds {
- display: block;
- max-height: 250px;
- margin: 0;
- list-style: none;
- overflow: auto;
- }
- #stream.global .box-category .feeds .item {
- padding: 2px 10px;
- font-size: 90%;
- }
- #stream.global .box-category .feed {
- width: 220px;
- }
-
-.content {
- min-height: 150px;
- max-width: 550px;
- margin: 0 auto;
- padding: 20px 10px;
- line-height: 170%;
- word-wrap: break-word;
-}
- .content h1, .content h2, .content h3 {
- margin: 20px 0 5px;
- }
- .content > .title {
- font-size: x-large;
- margin: 0;
- }
-
- .content p {
- margin: 0 0 20px;
- }
- img.big {
- display: block;
- margin: 10px auto;
- }
- figure img.big {
- margin: 0;
- }
- .content hr {
- margin: 30px 0;
- height: 1px;
- background: #ddd;
- border: 0;
- }
- .content pre {
- margin: 10px auto;
- padding: 10px;
- overflow: auto;
- background: #000;
- color: #fff;
- font-size: 110%;
- }
- .content q, .content blockquote {
- display: block;
- margin: 5px 0;
- padding: 5px 20px;
- font-style: italic;
- border-left: 4px solid #ccc;
- color: #666;
- }
- .content blockquote p {
- margin: 0;
- }
-
-#panel {
- display: none;
- position: fixed;
- top: 10px; bottom: 10px;
- left: 100px; right: 100px;
- overflow: auto;
- background: #fff;
- border: 1px solid #95a5a6;
- border-radius: 5px;
-}
- #panel .close {
- position: fixed;
- top: 10px; right: 0;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border: 1px solid #ccc;
- border-radius: 20px;
- text-align: center;
- line-height: 26px;
- background: #fff;
- }
-
-#overlay {
- display: none;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- background: rgba(0, 0, 0, 0.9);
-}
-
-.flux_content .bottom {
- font-size: 90%;
- text-align: center;
-}
-
-.hide_posts > :not(.active) > .flux_content {
- display:none;
-}
-
-/*** PAGINATION ***/
-.pagination {
- display: table;
- width: 100%;
- margin: 0;
- background: #fafafa;
- text-align: center;
- color: #333;
- font-size: 80%;
- line-height: 200%;
- table-layout: fixed;
-}
- .pagination .item {
- display: table-cell;
- line-height: 40px;
- }
- .pagination .item.pager-current {
- font-weight: bold;
- font-size: 140%;
- }
- .pagination .pager-first,
- .pagination .pager-previous,
- .pagination .pager-next,
- .pagination .pager-last {
- width: 100px;
- }
- .pagination .item a {
- display: block;
- color: #333;
- font-style: italic;
- }
- .pagination:first-child .item {
- border-bottom: 1px solid #aaa;
- }
- .pagination:last-child .item {
- border-top: 1px solid #aaa;
- }
-
-#nav_entries {
- display: table;
- width: 250px;
- height: 40px;
- position: fixed;
- bottom: 0;
- left: 0;
- margin: 0;
- background: #fff;
- border-top: 1px solid #ddd;
- text-align: center;
- line-height: 40px;
- table-layout: fixed;
-}
- #nav_entries .item {
- display: table-cell;
- width: 30%;
- }
- #nav_entries a {
- display: block;
- }
- #nav_entries .i_up {
- margin: 5px 0 0;
- vertical-align: top;
- }
-
-.loading {
- background: url("loader.gif") center center no-repeat;
- font-size: 0;
-}
-
-#bigMarkAsRead {
- display: block;
- font-style: normal;
- padding: 32px 0 64px 0;
- text-align: center;
- text-decoration: none;
- text-shadow: 0 -1px 0 #aaa;
-}
- #bigMarkAsRead:hover {
- background: #333;
- color: #fff;
- }
- .bigTick {
- font-size: 72pt;
- line-height: 1.6em;
- }
-
-/*** NOTIFICATION ***/
-#notification {
- position: absolute;
- top: 10px;
- left: 25%; right: 25%;
- min-height: 30px;
- padding: 10px;
- line-height: 30px;
- text-align: center;
- border-radius: 5px;
- box-shadow: 0 0 5px #666;
- background: #ddd;
- color: #666;
- font-weight: bold;
- z-index: 10;
-}
- #notification.closed {
- display: none;
- }
- #notification.good {
- background: #f4f899;
- }
- #notification.bad {
- background: #f4a899;
- }
- #notification a.close {
- position: absolute;
- top: -10px; right: -10px;
- display: inline-block;
- width: 16px;
- height: 16px;
- padding: 5px;
- background: #fff;
- border-radius: 50px;
- border: 1px solid #aaa;
- line-height: 16px;
- }
-
-.toggle_aside, .btn.toggle_aside {
- display: none;
-}
-
-.actualizeProgress {
- position: fixed;
- top: 10px;
- left: 25%; right: 25%;
- padding: 5px;
- background: #fff;
- text-align: center;
- border: 1px solid #ddd;
- border-radius: 5px;
-}
- .actualizeProgress progress {
- max-width: 100%;
- vertical-align: middle;
- }
- .actualizeProgress .progress {
- color: #999;
- font-size: 90%;
- vertical-align: middle;
- }
-
-.logs {
- border: 1px solid #aaa;
-}
- .log {
- padding: 5px 2%;
- overflow: auto;
- background: #fafafa;
- border-bottom: 1px solid #999;
- color: #333;
- font-size: 90%;
- }
- .log .date {
- display: block;
- }
- .log.error {
- background: #fdd;
- color: #844;
- }
- .log.warning {
- background: #ffe;
- color: #c95;
- }
- .log.notice {
- background: #f4f4f4;
- color: #aaa;
- }
- .log.debug {
- background: #111;
- color: #eee;
- }
-
-.form-group table {
- border-collapse:collapse;
- margin:10px 0 0 220px;
- text-align:center;
-}
-
-.form-group tr, .form-group th, .form-group td {
- border:1px solid #DDD;
- font-weight:normal;
- padding:.5em;
-}
-
-select.number option {
- text-align:right;
-}
-
-@media(min-width: 841px) {
- .flux:not(.current):hover .item.title {
- max-width: calc(100% - 580px);
- padding-right: 1.5em;
- position: absolute;
- }
-}
-
-@media(max-width: 840px) {
- .header,
- .aside .btn-important,
- .aside .feeds .dropdown,
- .flux_header .item.website span,
- .item.date {
- display: none;
- }
- .flux_header .item.website {
- width: 40px;
- text-align: center;
- }
- .flux_header .item.website .favicon {
- padding: 12px;
- }
-
- .nav-login {
- display: block;
- }
-
- .pagination {
- margin: 0 0 40px;
- }
- .pagination .pager-previous, .pagination .pager-next {
- width: 100px;
- }
-
- .toggle_aside, .btn.toggle_aside {
- display: inline-block;
- }
- .aside {
- position: fixed;
- top: 0; left: 0;
- width: 0;
- overflow: hidden;
- border-right: none;
- z-index: 10;
- transition: width 200ms linear;
- }
- .aside.aside_flux {
- padding: 10px 0 0;
- }
- .aside:target {
- width: 80%;
- border-right: 1px solid #aaa;
- overflow: auto;
- }
- .aside .toggle_aside {
- position: absolute;
- right: 0;
- display: inline-block;
- width: 26px;
- height: 26px;
- margin: 0 10px 0 0;
- border: 1px solid #ccc;
- border-radius: 20px;
- text-align: center;
- line-height: 26px;
- }
- .aside .categories {
- margin: 30px 0;
- }
-
- #nav_entries {
- width: 100%;
- }
-
- .nav_menu .btn {
- margin: 5px 10px;
- }
- .nav_menu .stick {
- margin: 0 10px;
- }
- .nav_menu .stick .btn {
- margin: 5px 0;
- }
- .nav_menu .search {
- display: inline-block;
- max-width: 97%;
- }
- .nav_menu .search input {
- max-width: 97%;
- width: 90px;
- }
- .nav_menu .search input:focus {
- width: 400px;
- }
-
- #panel {
- left: 5px; right: 5px;
- }
-
- .day .date {
- display: none;
- }
- .day .name {
- height: 2.6em;
- font-size: 1em;
- text-shadow: none;
- }
-
- #notification,
- .actualizeProgress {
- top: 0;
- left: 0;
- right: 0;
- border-radius: 0;
- }
- #notification a.close {
- left: 0; right: 0;
- top: 0; bottom: 0;
- width: auto;
- height: auto;
- background: transparent;
- border: none;
- }
- #notification a.close .icon {
- display: none;
- }
-}
-
-/*** FALLBACK ***/
-.btn {
- background: #fff;
- background: -moz-linear-gradient(top, #fff 0%, #eee 100%);
- background: -webkit-linear-gradient(top, #fff 0%, #eee 100%);
- background: -o-linear-gradient(top, #fff 0%, #eee 100%);
- background: -ms-linear-gradient(top, #fff 0%, #eee 100%);
-}
- .btn:hover {
- background: #f0f0f0;
- background: -moz-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
- background: -webkit-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
- background: -o-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
- background: -ms-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
- }
- .btn-important {
- background: #0084CC;
- background: -moz-linear-gradient(top, #0084CC 0%, #0045CC 100%);
- background: -webkit-linear-gradient(top, #0084CC 0%, #0045CC 100%);
- background: -o-linear-gradient(top, #0084CC 0%, #0045CC 100%);
- background: -ms-linear-gradient(top, #0084CC 0%, #0045CC 100%);
- }
- .btn-important:hover {
- background: -moz-linear-gradient(top, #0066CC 0%, #0045CC 100%);
- background: -webkit-linear-gradient(top, #0066CC 0%, #0045CC 100%);
- background: -o-linear-gradient(top, #0066CC 0%, #0045CC 100%);
- background: -ms-linear-gradient(top, #0066CC 0%, #0045CC 100%);
- }
- .btn-attention {
- background: #E95B57;
- background: -moz-linear-gradient(top, #E95B57 0%, #BD362F 100%);
- background: -webkit-linear-gradient(top, #E95B57 0%, #BD362F 100%);
- background: -o-linear-gradient(top, #E95B57 0%, #BD362F 100%);
- background: -ms-linear-gradient(top, #E95B57 0%, #BD362F 100%);
- }
- .btn-attention:hover {
- background: -moz-linear-gradient(top, #D14641 0%, #BD362F 100%);
- background: -webkit-linear-gradient(top, #D14641 0%, #BD362F 100%);
- background: -o-linear-gradient(top, #D14641 0%, #BD362F 100%);
- background: -ms-linear-gradient(top, #D14641 0%, #BD362F 100%);
- }
-
-.dropdown-menu:after {
- -moz-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
-}
-
-.nav-head {
- background: #fff;
- background: -moz-linear-gradient(top, #fff 0%, #f0f0f0 100%);
- background: -webkit-linear-gradient(top, #fff 0%, #f0f0f0 100%);
- background: -o-linear-gradient(top, #fff 0%, #f0f0f0 100%);
- background: -ms-linear-gradient(top, #fff 0%, #f0f0f0 100%);
-}
-
-input.extend {
- -moz-transition: width 200ms linear;
- -webkit-transition: width 200ms linear;
- -o-transition: width 200ms linear;
- -ms-transition: width 200ms linear;
-}
-
-@media(max-width: 840px) {
- .aside {
- -moz-transition: width 200ms linear;
- -webkit-transition: width 200ms linear;
- -o-transition: width 200ms linear;
- -ms-transition: width 200ms linear;
- }
-}
-
-@media print {
- .header,
- .aside,
- .nav_menu,
- .day,
- .flux_header,
- .flux_content .bottom,
- .pagination {
- display: none;
- }
-
- html, body {
- background: #fff;
- color: #000;
- font-family: Serif;
- font-size: 12pt;
- }
-
- #global,
- .flux_content {
- display: block !important;
- }
-
- .flux_content .content {
- width: 100% !important;
- text-align: justify;
- }
-
- .flux_content .content a {
- color: #000;
- }
- .flux_content .content a:after {
- content: " (" attr(href) ") ";
- text-decoration: underline;
- }
-}
-
-.stat {
- border:1px solid #aaa;
- border-radius:10px;
- box-shadow:2px 2px 5px #aaa;
- margin:10px 0;
- padding:0 5px;
-}
-.stat > h2 {
- border-bottom:1px solid #aaa;
- margin:0 -5px;
- padding-left:5px;
-}
-.stat > div {
- margin:5px 0;
-}
-.stat > table {
- border-collapse:collapse;
- margin:5px 0;
- width:100%;
-}
-.stat > table > thead > tr {
- border-bottom:2px solid #aaa;
-}
-.stat > table > tbody > tr {
- border-bottom:1px solid #aaa;
-}
-.stat > table > tbody > tr:last-child {
- border-bottom:0;
-}
-.stat > table th, .stat > table td {
- border-left:2px solid #aaa;
- padding:5px;
-}
-.stat > table th:first-child, .stat > table td:first-child {
- border-left:0;
-}
-.stat > table td.numeric{
- margin:5px 0;
- text-align:center;
-} \ No newline at end of file
diff --git a/p/themes/Origine/global.css b/p/themes/Origine/global.css
deleted file mode 100644
index 5792c9e4d..000000000
--- a/p/themes/Origine/global.css
+++ /dev/null
@@ -1,547 +0,0 @@
-@charset "UTF-8";
-
-/* FONTS */
-@font-face {
- font-family: "OpenSans";
- src: url("../fonts/openSans.woff") format("woff");
-}
-
-
-* {
- margin: 0;
- padding: 0;
-}
-html, body {
- height: 100%;
- font-size: 95%;
- font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
-}
-
-/* LIENS */
-a {
- color: #0062BE;
- text-decoration: none;
-}
- a:hover {
- text-decoration: underline;
- }
-
-/* LISTES */
-ul, ol, dl {
- margin: 10px 0 10px 30px;
- line-height: 190%;
-}
- dd {
- margin: 0 0 10px 30px;
- }
-
-/* TITRES */
-h1, h2, h3 {
- min-height: 40px;
- margin: 15px 0 5px;
- line-height: 40px;
-}
-
-/* IMG */
-figure {
- margin: 5px 0 10px;
- text-align: center;
-}
- figcaption {
- display: inline-block;
- padding: 3px 20px;
- color: #999;
- font-style: italic;
- border-bottom: 1px solid #ccc;
- }
-img {
- height: auto;
- max-width: 100%;
- vertical-align: middle;
-}
- a img {
- border: none;
- }
-
-/* VIDEOS */
-iframe, embed, object, video {
- max-width: 100%;
-}
-
-/* FORMULAIRES */
-legend {
- display: block;
- width: 100%;
- margin: 20px 0 5px;
- padding: 5px 0;
- border-bottom: 1px solid #ddd;
- font-size: 150%;
- clear: both;
-}
-label {
- display: block;
- min-height: 25px;
- padding: 5px 0;
- font-size: 14px;
- line-height: 25px;
- cursor: pointer;
-}
-input {
- width: 180px;
-}
-textarea {
- width: 360px;
- height: 100px;
-}
-input, select, textarea {
- display: inline-block;
- max-width: 100%;
- min-height: 25px;
- padding: 5px;
- background: #fdfdfd;
- border: 1px solid #bbb;
- border-radius: 3px;
- color: #666;
- line-height: 25px;
- vertical-align: middle;
- box-shadow: 0 2px 2px #eee inset;
-}
- option {
- padding:0 .5em 0 .5em;
- }
- input[type="radio"],
- input[type="checkbox"] {
- width: 15px !important;
- min-height: 15px !important;
- }
- input:focus, select:focus, textarea:focus {
- color: #0062BE;
- border-color: #33BBFF;
- box-shadow: 0 2px 2px #DDDDFF inset;
- }
- input:invalid, select:invalid {
- border-color: red;
- box-shadow: 0 0 2px 1px red;
- }
- input:focus.extend {
- width: 300px;
- transition: width 200ms linear;
- }
-
-.form-group {
- margin: 0;
-}
- .form-group:after {
- content: "";
- display: block;
- clear: both;
- }
- .form-group.form-actions {
- min-width: 250px;
- padding: 5px 0;
- background: #f4f4f4;
- border-top: 1px solid #ddd;
- }
- .form-group.form-actions .btn {
- margin: 0 10px;
- }
- .form-group .group-name {
- display: block;
- float: left;
- width: 200px;
- padding: 10px 0;
- text-align: right;
- }
- .form-group .group-controls {
- min-width: 250px;
- min-height: 25px;
- margin: 0 0 0 220px;
- padding: 5px 0;
- }
- .form-group .group-controls .control {
- display: block;
- min-height: 30px;
- padding: 5px 0;
- line-height: 25px;
- font-size: 14px;
- }
-
-.stick {
- display: inline-block;
- white-space: nowrap;
- font-size: 0px;
- vertical-align: middle;
-}
- .stick input,
- .stick .btn {
- border-radius: 0;
- font-size: 14px;
- }
- .stick .btn:first-child,
- .stick input:first-child {
- border-radius: 3px 0 0 3px;
- }
- .stick .btn-important:first-child {
- border-right: 1px solid #06f;
- }
- .stick .btn:last-child,
- .stick input:last-child {
- border-radius: 0 3px 3px 0;
- }
- .stick .btn + .btn,
- .stick .btn + input,
- .stick .btn + .dropdown > .btn,
- .stick input + .btn,
- .stick input + input,
- .stick input + .dropdown > .btn,
- .stick .dropdown + .btn,
- .stick .dropdown + input,
- .stick .dropdown + .dropdown > .btn {
- border-left: none;
- }
- .stick input + .btn {
- border-top: 1px solid #bbb;
- }
- .stick .btn + .dropdown > .btn {
- border-left: none;
- border-radius: 0 3px 3px 0;
- }
- .stick .btn + .dropdown a {
- font-size: 12px;
- }
-
-.btn {
- display: inline-block;
- min-height: 37px;
- min-width: 15px;
- padding: 5px 10px;
- background: linear-gradient(to bottom, #fff 0%, #eee 100%);
- border-radius: 3px;
- border: 1px solid #ddd;
- border-bottom: 1px solid #aaa;
- border-right: 1px solid #aaa;
- color: #666;
- text-shadow: 0px -1px 0 #ddd;
- line-height: 20px;
- vertical-align: middle;
- cursor: pointer;
- overflow: hidden;
-}
- a.btn {
- min-height: 25px;
- line-height: 25px;
- }
- .btn:hover {
- background: linear-gradient(to bottom, #f8f8f8, #f0f0f0);
- text-decoration: none;
- }
- .btn.active,
- .btn:active,
- .dropdown-target:target ~ .btn.dropdown-toggle {
- box-shadow: 0px 2px 4px #e0e0e0 inset, 0px 1px 2px #fafafa;
- background: #eee;
- }
-
- .btn-important {
- background: linear-gradient(to bottom, #0084CC, #0045CC);
- color: #fff;
- border: 1px solid #0062B7;
- text-shadow: 0px -1px 0 #aaa;
- }
- .btn-important:hover {
- background: linear-gradient(to bottom, #0066CC, #0045CC);
- }
- .btn-important:active {
- background: #0044CB;
- box-shadow: none;
- }
-
- .btn-attention {
- background: linear-gradient(to bottom, #E95B57, #BD362F);
- color: #fff;
- border: 1px solid #C44742;
- text-shadow: 0px -1px 0px #666;
- }
- .btn-attention:hover {
- background: linear-gradient(to bottom, #D14641, #BD362F);
- }
- .btn-attention:active {
- background: #BD362F;
- box-shadow: none;
- }
-
-/* NAVIGATION */
-.nav-list .nav-header,
-.nav-list .item {
- display: block;
- height: 35px;
- line-height: 35px;
-}
- .nav-list .item:hover {
- background: #fafafa;
- }
- .nav-list .item:hover a {
- color: #003388;
- }
- .nav-list .item.active {
- background: #0062BE;
- color: #fff;
- }
- .nav-list .item.active a {
- color: #fff;
- }
- .nav-list .disable {
- color: #aaa;
- background: #fafafa;
- text-align: center;
- }
- .nav-list .item > * {
- display: block;
- padding: 0 10px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .nav-list a:hover {
- text-decoration: none;
- }
- .nav-list .item.error a {
- color: #BD362F;
- }
- .nav-list .item.active.error a {
- color: #fff;
- background: #BD362F;
- }
- .nav-list .item.empty a {
- color: #f39c12;
- }
- .nav-list .item.active.empty a {
- color: #fff;
- background: #f39c12;
- }
-
- .nav-list .nav-header {
- padding: 0 10px;
- color: #888;
- background: #f4f4f4;
- border-bottom: 1px solid #ddd;
- font-weight: bold;
- text-shadow: 0 0 1px #ddd;
- }
- .nav-list .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #ddd;
- }
-
- .nav-list .nav-form {
- padding: 3px;
- text-align: center;
- }
-
-.nav-head {
- display: block;
- margin: 0;
- background: linear-gradient(to bottom, #fff, #f0f0f0);
- border-bottom: 1px solid #ddd;
- text-align: right;
-}
- .nav-head .item {
- display: inline-block;
- padding: 5px 10px;
- }
-
-/* HORIZONTAL-LIST */
-.horizontal-list {
- display: table;
- table-layout: fixed;
- margin: 0;
- padding: 0;
- width: 100%;
-}
- .horizontal-list .item {
- display: table-cell;
- vertical-align: middle;
- }
-
-/* DROPDOWN */
-.dropdown {
- position: relative;
- display: inline-block;
-}
- .dropdown-target {
- display: none;
- }
-
- .dropdown-menu {
- display: none;
- min-width: 200px;
- margin: 5px 0 0;
- padding: 5px 0;
- position: absolute;
- right: 0px;
- background: #fff;
- border: 1px solid #ddd;
- border-radius: 5px;
- text-align: left;
- box-shadow: 3px 3px 3px #ddd;
- }
- .dropdown-menu:after {
- content: "";
- position: absolute;
- top: -6px;
- right: 13px;
- width: 10px;
- height: 10px;
- background: #fff;
- border-top: 1px solid #ddd;
- border-left: 1px solid #ddd;
- z-index: -10;
- transform: rotate(45deg);
- }
- .dropdown-header {
- display: block;
- padding: 0 5px;
- color: #888;
- font-weight: bold;
- font-size: 14px;
- line-height: 30px;
- }
- .dropdown-menu > .item {
- display: block;
- height: 30px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu > .item > a {
- display: block;
- padding: 0 25px;
- line-height: 30px;
- }
- .dropdown-menu > .item.share > a {
- display: list-item;
- list-style-position:inside;
- list-style-type:decimal;
- }
- .dropdown-menu > .item:hover {
- background: #0062BE;
- color: #fff;
- }
- .dropdown-menu > .item[aria-checked="true"] > a:before {
- content: '✓ ';
- font-weight: bold;
- margin: 0 0 0 -1.2em;
- padding: 0 0.2em 0 0;
- }
- .dropdown-menu > .item:hover > a {
- color: #fff;
- text-decoration: none;
- }
- .dropdown-menu .input {
- display: block;
- height: 40px;
- font-size: 90%;
- line-height: 30px;
- }
- .dropdown-menu .input select,
- .dropdown-menu .input input {
- display: block;
- height: 20px;
- width: 95%;
- margin: auto;
- padding: 2px 5px;
- border-radius: 3px;
- }
- .dropdown-menu .input select {
- width: 70%;
- height: auto;
- }
- .dropdown-menu .separator {
- display: block;
- height: 0;
- margin: 5px 0;
- border-bottom: 1px solid #ddd;
- }
- .dropdown-target:target ~ .dropdown-menu {
- display: block;
- z-index: 10;
- }
- .dropdown-close {
- display: inline;
- }
- .dropdown-close a {
- font-size: 0;
- position: fixed;
- top: 0; bottom: 0;
- left: 0; right: 0;
- display: block;
- z-index: -10;
- }
-
-/* ALERTS */
-.alert {
- display: block;
- width: 90%;
- margin: 15px auto;
- padding: 10px 15px;
- background: #f4f4f4;
- border: 1px solid #ccc;
- border-right: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
- border-radius: 5px;
- color: #aaa;
- text-shadow: 0 0 1px #eee;
-}
- .alert-head {
- margin: 0;
- font-weight: bold;
- font-size: 110%;
- }
- .alert > a {
- color: inherit;
- text-decoration: underline;
- }
- .alert-warn {
- background: #ffe;
- border: 1px solid #eeb;
- color: #c95;
- }
- .alert-success {
- background: #dfd;
- border: 1px solid #cec;
- color: #484;
- }
- .alert-error {
- background: #fdd;
- border: 1px solid #ecc;
- color: #844;
- }
-
-/* ICÔNES */
-.icon {
- display: inline-block;
- width: 16px;
- height: 16px;
- vertical-align: middle;
- line-height: 16px;
-}
-
-/* Prompt (centré) */
-.prompt {
- text-align: center;
-}
- .prompt label {
- text-align: left;
- }
- .prompt form {
- margin: 1em auto 2.5em auto;
- width: 10em;
- }
- .prompt input {
- margin: .4em auto 1.1em auto;
- width: 100%;
- }
- .prompt p {
- margin: 20px 0;
- }
diff --git a/p/themes/Origine/metadata.json b/p/themes/Origine/metadata.json
index f93dcbc3f..774320eb4 100644
--- a/p/themes/Origine/metadata.json
+++ b/p/themes/Origine/metadata.json
@@ -2,6 +2,6 @@
"name": "Origine",
"author": "Marien Fressinaud",
"description": "Le thème par défaut pour FreshRSS",
- "version": 0.1,
- "files": ["global.css", "freshrss.css"]
+ "version": 0.2,
+ "files": ["_template.css", "origine.css"]
}
diff --git a/p/themes/Origine/origine.css b/p/themes/Origine/origine.css
new file mode 100644
index 000000000..da461087b
--- /dev/null
+++ b/p/themes/Origine/origine.css
@@ -0,0 +1,1071 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #fafafa;
+}
+
+/*=== Links */
+a, button.as-link {
+ color: #0062be;
+ outline: none;
+}
+
+/*=== Forms */
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ border-bottom: 1px solid #ddd;
+ font-size: 1.4em;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ background: #fdfdfd;
+ border: 1px solid #bbb;
+ border-radius: 3px;
+ color: #666;
+ line-height: 25px;
+ vertical-align: middle;
+ box-shadow: 0 2px 2px #eee inset;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ color: #0062be;
+ border-color: #33bbff;
+ box-shadow: 0 2px 2px #ddddff inset;
+}
+input:invalid, select:invalid {
+ border-color: #f00;
+ box-shadow: 0 0 2px 2px #fdd inset;
+}
+input:disabled, select:disabled {
+ background: #eee;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+th {
+ background: #f6f6f6;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+ background: #f4f4f4;
+ border-top: 1px solid #ddd;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,
+.stick input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.stick .btn-important:first-child {
+ border-right: 1px solid #06f;
+}
+.stick .btn:last-child,
+.stick input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left: none;
+}
+.stick input + .btn {
+ border-top: 1px solid #bbb;
+}
+.stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 37px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ background: #fff;
+ background: linear-gradient(to bottom, #fff 0%, #eee 100%);
+ background: -moz-linear-gradient(top, #fff 0%, #eee 100%);
+ background: -webkit-linear-gradient(top, #fff 0%, #eee 100%);
+ background: -o-linear-gradient(top, #fff 0%, #eee 100%);
+ background: -ms-linear-gradient(top, #fff 0%, #eee 100%);
+ border-radius: 3px;
+ border: 1px solid #ddd;
+ border-bottom: 1px solid #aaa;
+ border-right: 1px solid #aaa;
+ color: #666;
+ text-shadow: 0px -1px 0 #ddd;
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ background: #f0f0f0;
+ background: linear-gradient(to bottom, #f8f8f8, #f0f0f0);
+ background: -moz-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
+ background: -webkit-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
+ background: -o-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
+ background: -ms-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%);
+ text-decoration: none;
+}
+.btn.active,
+.btn:active,
+.dropdown-target:target ~ .btn.dropdown-toggle {
+ box-shadow: 0px 2px 4px #e0e0e0 inset, 0px 1px 2px #fafafa;
+ background: #eee;
+}
+
+.btn-important {
+ background: #0084CC;
+ background: linear-gradient(to bottom, #0084CC, #0045CC);
+ background: -moz-linear-gradient(top, #0084CC 0%, #0045CC 100%);
+ background: -webkit-linear-gradient(top, #0084CC 0%, #0045CC 100%);
+ background: -o-linear-gradient(top, #0084CC 0%, #0045CC 100%);
+ background: -ms-linear-gradient(top, #0084CC 0%, #0045CC 100%);
+ color: #fff;
+ border: 1px solid #0062B7;
+ text-shadow: 0px -1px 0 #aaa;
+ font-weight: normal;
+}
+.btn-important:hover {
+ background: linear-gradient(to bottom, #0066CC, #0045CC);
+ background: -moz-linear-gradient(top, #0066CC 0%, #0045CC 100%);
+ background: -webkit-linear-gradient(top, #0066CC 0%, #0045CC 100%);
+ background: -o-linear-gradient(top, #0066CC 0%, #0045CC 100%);
+ background: -ms-linear-gradient(top, #0066CC 0%, #0045CC 100%);
+}
+.btn-important:active {
+ background: #0044CB;
+ box-shadow: none;
+}
+
+.btn-attention {
+ background: #E95B57;
+ background: linear-gradient(to bottom, #E95B57, #BD362F);
+ background: -moz-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ background: -webkit-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ background: -o-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ background: -ms-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ color: #fff;
+ border: 1px solid #C44742;
+ text-shadow: 0px -1px 0px #666;
+}
+.btn-attention:hover {
+ background: linear-gradient(to bottom, #D14641, #BD362F);
+ background: -moz-linear-gradient(top, #D14641 0%, #BD362F 100%);
+ background: -webkit-linear-gradient(top, #D14641 0%, #BD362F 100%);
+ background: -o-linear-gradient(top, #D14641 0%, #BD362F 100%);
+ background: -ms-linear-gradient(top, #D14641 0%, #BD362F 100%);
+}
+.btn-attention:active {
+ background: #BD362F;
+ box-shadow: none;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+ background: #fafafa;
+}
+.nav-list .item:hover a {
+ color: #003388;
+}
+.nav-list .item.active {
+ background: #0062BE;
+ color: #fff;
+}
+.nav-list .item.active a {
+ color: #fff;
+}
+.nav-list .disable {
+ color: #aaa;
+ background: #fafafa;
+ text-align: center;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #f39c12;
+}
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: #f39c12;
+}
+.nav-list .item.error a {
+ color: #BD362F;
+}
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #BD362F;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ color: #888;
+ background: #f4f4f4;
+ border-bottom: 1px solid #ddd;
+ font-weight: bold;
+ text-shadow: 0 0 1px #ddd;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ background: #fff;
+ background: linear-gradient(to bottom, #fff, #f0f0f0);
+ background: -moz-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -webkit-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -o-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -ms-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ border-bottom: 1px solid #ddd;
+ text-align: right;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ border: 1px solid #ddd;
+ border-radius: 5px;
+ box-shadow: 3px 3px 3px #ddd;
+ font-size: 0.8rem;
+ text-align: left;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ background: #fff;
+ border-top: 1px solid #ddd;
+ border-left: 1px solid #ddd;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+}
+.dropdown-header {
+ padding: 0 5px 5px;
+ color: #888;
+ font-weight: bold;
+ text-align: left;
+}
+.dropdown-menu > .item {
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+}
+.dropdown-menu > .item:hover {
+ background: #0062BE;
+ color: #fff;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ color: #fff;
+ text-decoration: none;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #ddd;
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px;
+ color: #aaa;
+ text-shadow: 0 0 1px #eee;
+ font-size: 0.9em;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ color: inherit;
+ text-decoration: underline;
+}
+.alert-warn {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.alert-success {
+ background: #dfd;
+ border: 1px solid #cec;
+ color: #484;
+}
+.alert-error {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+
+/*=== Pagination */
+.pagination {
+ background: #fafafa;
+ text-align: center;
+ color: #333;
+ font-size: 0.8em;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+}
+.pagination .item a {
+ display: block;
+ color: #333;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+}
+.pagination .item a:hover {
+ background: #ddd;
+}
+.pagination:first-child .item {
+ border-bottom: 1px solid #aaa;
+}
+.pagination:last-child .item {
+ border-top: 1px solid #aaa;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ background: url("loader.gif") center center no-repeat #fff;
+ font-size: 0;
+}
+
+/*=== Boxes */
+.box {
+ background: #fff;
+ border-radius: 5px;
+ box-shadow: 0 0 3px #bbb;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #f6f6f6;
+ border-bottom: 1px solid #ddd;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ min-height: 2.5em;
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ background: #fff;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #444;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #f0f0f0;
+ font-weight: bold;
+}
+.tree-folder.active .tree-folder-title .title {
+ color: #0062BE;
+}
+.tree-folder-items {
+ border-top: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ background: #f6f6f6;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #0062be;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #fff;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 85px;
+ background: #f4f4f4;
+}
+.header > .item {
+ padding: 10px;
+ border-bottom: 1px solid #aaa;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title{
+ width: 230px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+ text-shadow: 1px -1px 0 #ccc;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ height: calc(100% - 85px);
+}
+.aside {
+ border-right: 1px solid #aaa;
+ background: #fff;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+ background: #fff;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .category .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty.active {
+ background: #e67e22;
+}
+.feed.item.error.active {
+ background: #bd362f;
+}
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #e67e22;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #bd362f;
+}
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
+ color: #fff;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ background-color: #fff;
+ border-radius: 3px;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 200px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+
+/*=== New article notification */
+#new-article {
+ background: #0084CC;
+ text-align: center;
+ font-size: 0.9em;
+}
+#new-article:hover {
+ background: #0066CC;
+}
+#new-article > a {
+ line-height: 3em;
+ color: #fff;
+ font-weight: bold;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-weight: bold;
+ line-height: 3em;
+ background: #fff;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+}
+#new-article + .day {
+ border-top: none;
+}
+.day .name {
+ padding: 0 10px 0 0;
+ color: #aab;
+ font-size: 1.8em;
+ opacity: 0.3;
+ text-shadow: 0px -1px 0px #666;
+ font-style: italic;
+ text-align: right;
+}
+
+/*=== Index menu */
+.nav_menu {
+ background: #fafafa;
+ border-bottom: 1px solid #aaa;
+ text-align: center;
+ padding: 5px 0;
+}
+
+/*=== Feed articles */
+.flux {
+ border-left: 2px solid #aaa;
+ background: #fafafa;
+}
+.flux:hover {
+ background: #fff;
+}
+.flux.current {
+ border-left: 2px solid #0062BE;
+}
+.flux.not_read {
+ border-left: 2px solid #FF5300;
+ background: #FFF3ED;
+}
+.flux.not_read:not(.current):hover .item.title {
+ background: #FFF3ED;
+}
+.flux.favorite {
+ border-left: 2px solid #FFC300;
+ background: #FFF6DA;
+}
+.flux.favorite:not(.current):hover .item.title {
+ background: #FFF6DA;
+}
+.flux.current {
+ background: #fff;
+}
+
+
+.flux_header {
+ border-top: 1px solid #ddd;
+ font-size: 0.8rem;
+ cursor: pointer;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ color: #666;
+ font-size: 0.7rem;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #000;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #ddd;
+ border: 0;
+ box-shadow: 0 2px 5px #ccc;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #fafafa;
+ border: 1px solid #eee;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ background: #fafafa;
+ color: #333;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ border: 1px solid #eeb;
+ border-radius: 3px;
+ box-shadow: 0 0 5px #ddd;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ z-index: 10;
+ vertical-align: middle;
+}
+.notification.good {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.notification.bad {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification.good a.close:hover {
+ background: #eeb;
+}
+.notification.bad a.close:hover {
+ background: #ecc;
+}
+
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 -1px 0 #aaa;
+ color: #666;
+ background: #fafafa;
+}
+#bigMarkAsRead:hover {
+ color: #0062be;
+ background: #fff;
+ box-shadow: 0 -5px 10px #eee inset;
+}
+#bigMarkAsRead:hover .bigTick {
+ text-shadow: 0 0 5px #0062be;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ margin: 0;
+ background: #fff;
+ border-top: 1px solid #ddd;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ border: none;
+ background: #f0f0f0;
+ color: #333;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #666;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+}
+.box.category:not([data-unread="0"]) .box-title {
+ background: #0084CC;
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+ background: #3498db;
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ color: #fff;
+ font-weight: bold;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ color: #fff;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,
+.aside.aside_feed .nav-form select {
+ width: 140px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #ddd;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 270px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ overflow: hidden;
+}
+.log {
+ padding: 5px 10px;
+ background: #fafafa;
+ color: #333;
+ font-size: 0.8rem;
+}
+.log+.log {
+ border-top: 1px solid #aaa;
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+ background: #fdd;
+ color: #844;
+}
+.log.warning {
+ background: #ffe;
+ color: #c95;
+}
+.log.notice {
+ background: #f4f4f4;
+ color: #aaa;
+}
+.log.debug {
+ background: #333;
+ color: #eee;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .aside {
+ box-shadow: 3px 0 3px #aaa;
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ text-align: center;
+ background: #f6f6f6;
+ border-bottom: 1px solid #ddd;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ font-size: 1.1rem;
+ text-shadow: none;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification a.close {
+ display: block;
+ left: 0;
+ background: transparent;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+}
diff --git a/p/themes/Origine/thumbs/original.png b/p/themes/Origine/thumbs/original.png
new file mode 100644
index 000000000..d26d4fbed
--- /dev/null
+++ b/p/themes/Origine/thumbs/original.png
Binary files differ
diff --git a/p/themes/Pafat/README.md b/p/themes/Pafat/README.md
new file mode 100644
index 000000000..adddc1bf0
--- /dev/null
+++ b/p/themes/Pafat/README.md
@@ -0,0 +1,4 @@
+Pafat
+=====
+
+Thème Pafat pour FreshRSS
diff --git a/p/themes/Pafat/icons/all.svg b/p/themes/Pafat/icons/all.svg
new file mode 100644
index 000000000..14fa80366
--- /dev/null
+++ b/p/themes/Pafat/icons/all.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-40.0002,-746)" fill="#FFF">
+<rect style="color:#FFF;" height="2.0002" width="9.9996" y="749" x="43"/>
+<rect style="color:#FFF;" height="2.0002" width="9.9996" y="753" x="43"/>
+<rect style="color:#FFF;" height="2.0002" width="9.9996" y="757" x="43"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/bookmark.svg b/p/themes/Pafat/icons/bookmark.svg
new file mode 100644
index 000000000..70d0c81fb
--- /dev/null
+++ b/p/themes/Pafat/icons/bookmark.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="enable-background:accumulate;color:#000000;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#FFF"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/down.svg b/p/themes/Pafat/icons/down.svg
new file mode 100644
index 000000000..050d6b969
--- /dev/null
+++ b/p/themes/Pafat/icons/down.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-181.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m195.03,751,0,1c-0.00091,0.0111,0.00059,0.021-0.00009,0.0312-0.0112,0.25496-0.12835,0.50994-0.31251,0.6875l-5.7188,6.2977-5.7188-6.2977c-0.18821-0.1881-0.28121-0.45346-0.28122-0.71875v-1h1c0.26531,0.00007,0.53059,0.0931,0.71873,0.28131l4.2812,4.829,4.2813-4.829c0.19464-0.21073,0.46925-0.30315,0.74998-0.2813z" fill-rule="nonzero" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/icon.svg b/p/themes/Pafat/icons/icon.svg
new file mode 100644
index 000000000..b489e18da
--- /dev/null
+++ b/p/themes/Pafat/icons/icon.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
+ <title>Logo FreshRSS</title>
+ <circle fill="#C5C6CA" cx="128" cy="128" r="33"/>
+ <g fill="none" stroke="#C5C6CA" stroke-width="24">
+ <g stroke-opacity="0.3">
+ <path d="M12,128 A116,116 0 1,1 128,244"/>
+ <path d="M54,128 A74,74 0 1,1 128,202"/>
+ </g>
+ <path d="M128,12 A116,116 0 0,1 244,128"/>
+ <path d="M128,54 A74,74 0 0,1 202,128"/>
+ </g>
+</svg>
diff --git a/p/themes/Pafat/icons/link.svg b/p/themes/Pafat/icons/link.svg
new file mode 100644
index 000000000..cc30f9f8b
--- /dev/null
+++ b/p/themes/Pafat/icons/link.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16.004" width="16">
+<g fill="#666" transform="translate(-183,-529)">
+<path style="enable-background:accumulate;color:#000000;" d="m191,533.85,0,10.38-2.344-2.2882-1.3394,2.7346c-0.32808,0.73962-2.0337,0.14492-1.5487-0.84412l1.3255-2.8393h-2.9579l6.8645-7.1436z" fill-rule="nonzero" display="block"/>
+<path d="m190.16,530.06c-3.8266,0.46006-6.5788,3.9578-6.0938,7.7812,0.13127,1.0347,0.29377,1.3818,0.29377,1.3818l1.675-1.6318c-0.33104-2.7534,1.6216-5.2315,4.375-5.5625,2.7534-0.33104,5.2315,1.6216,5.5625,4.375,0.31355,2.608-1.3913,5.0249-3.9688,5.5312l0.0312,2s0.52086-0.1059,0.62354-0.13097c3.4156-0.83385,5.7063-4.1273,5.2827-7.6503-0.46006-3.8266-3.9547-6.5538-7.7812-6.0938z" style="baseline-shift:baseline;block-progression:tb;color:#666;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;"/>
+<path opacity="0.3" style="enable-background:accumulate;color:#666;" d="m187.11,536.81,0-0.20574-0.19826,0.0186c0.0165-0.13095,0.0329-0.26167,0.0496-0.3926h-0.11578l-0.11556,0.14959-0.11578,0.0559-0.1653-0.0932-0.0165-0.20575,0.0331-0.22438,0.24798-0.18688h0.19826l0.0329-0.11229,0.24786,0.0559,0.18183,0.2246,0.0331-0.37419,0.31401-0.26167,0.11567-0.28055,0.23133-0.0934,0.1322-0.18688,0.29738-0.0564,0.14885-0.22415h-0.44623l0.28094-0.13095h0.19814l0.28106-0.0937,0.0331-0.11186-0.0992-0.0937-0.11567-0.0375,0.0331-0.11208-0.0826-0.16822-0.19837,0.0746,0.0331-0.14947-0.23134-0.13096-0.18171,0.3177,0.0165,0.11229-0.18171,0.075-0.11578,0.24302-0.0495-0.22438-0.31402-0.13095-0.0496-0.16822,0.41315-0.24325,0.18182-0.16822,0.0165-0.20563-0.0991-0.0562-0.13219-0.0188-0.0826,0.20575s-0.1382,0.0271-0.17373,0.0358c-0.45378,0.41804-1.3707,1.3204-1.5837,3.024,0.008,0.0395,0.15441,0.26854,0.15441,0.26854l0.347,0.20552,0.347,0.0937m3.9661-4.3003-0.4298-0.16833-0.49552,0.0561-0.61161,0.16822-0.11567,0.11229,0.38008,0.26167,0,0.14959-0.14875,0.14959,0.19846,0.39294,0.13188-0.075,0.16561-0.26168c0.2553-0.0789,0.4842-0.16833,0.72686-0.28053l0.19846-0.5048m2.5292,0.34192-0.375,0.0937-0.21875,0.15625,0,0.125-0.375,0.25,0.0937,0.34375,0.21875-0.15625,0.125,0.15625,0.15625,0.0937,0.0937-0.28125-0.0625-0.15625,0.0625-0.0937,0.21875-0.1875,0.0937,0-0.0937,0.21875,0,0.1875c0.0892-0.0242,0.1588-0.051,0.25-0.0625l-0.25,0.1875v0.125l-0.3125,0.21875-0.28125-0.0625v-0.15625l-0.125,0.0625,0.0625,0.15625h-0.21875l-0.125,0.21875-0.15625,0.15625-0.0937,0.0312v0.1875l0.0312,0.15625h-0.0312v0.53125l0.0625-0.0312,0.0937-0.21875,0.1875-0.125,0.0312-0.0937,0.28125-0.0625,0.15625,0.1875,0.1875,0.0937-0.0937,0.1875,0.15625-0.0312,0.0625-0.21875-0.1875-0.21875h0.0625l0.21875,0.15625,0.0312,0.21875,0.15625,0.21875,0.0625-0.3125,0.0937-0.0312c0.0959,0.0996,0.1692,0.23163,0.25,0.34375h0.28125l0.1875,0.125-0.0937,0.0937-0.15625,0.15625h-0.25l-0.34375-0.0937h-0.1875l-0.125,0.15625-0.34375-0.375-0.25-0.0625-0.375,0.0625-0.15625,0.0937v2.4062l0.0312,0.0312,0.25-0.15625,0.0937,0.0937h0.28125l0.125,0.15625-0.0937,0.3125,0.1875,0.1875v0.375l0.125,0.25-0.0937,0.25c-0.009,0.16159,0,0.30714,0,0.46875,0.0795,0.21894,0.14355,0.43575,0.21875,0.65625l0.0625,0.34375v0.1875h0.125l0.21875-0.125h0.25l0.375-0.4375-0.0312-0.15625,0.25-0.21875-0.1875-0.1875,0.21875-0.1875,0.21875-0.125,0.0937-0.125-0.0625-0.25v-0.59375l0.1875-0.375,0.1875-0.25,0.25-0.5625v-0.15625c-0.11654,0.0146-0.22972,0.0231-0.34375,0.0312-0.0722,0.005-0.14446,0-0.21875,0-0.12359-0.25961-0.2183-0.50966-0.3125-0.78125l-0.15625-0.1875-0.0937-0.3125,0.0625-0.0625,0.21875,0.25,0.25,0.5625,0.15625,0.15625-0.0625,0.21875,0.15625,0.15625,0.25-0.25,0.3125-0.21875,0.15625-0.1875v-0.21875c-0.0389-0.0732-0.0547-0.14545-0.0937-0.21875l-0.15625,0.1875-0.125-0.15625-0.1875-0.125v-0.28125l0.21875,0.21875,0.21875-0.0312c0.10166,0.0923,0.19205,0.20751,0.28125,0.3125l0.15625-0.1875c0-0.17463-0.19976-1.0204-0.625-1.75-0.42526-0.72932-1.1562-1.4062-1.1562-1.4062l-0.0625,0.0937-0.21875,0.21875-0.25-0.25h0.25l0.125-0.125-0.46875-0.0937-0.25-0.0937z" fill-rule="nonzero"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/login.svg b/p/themes/Pafat/icons/login.svg
new file mode 100644
index 000000000..cf2b347ad
--- /dev/null
+++ b/p/themes/Pafat/icons/login.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-181.0002,-237)" fill="#666">
+<path style="color:#666;" d="m184,244c-0.554,0-1,0.446-1,1v0.53125,5.4688h12v-5.4688-0.53c0-0.554-0.446-1-1-1h-10z" fill-rule="nonzero"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m188,238c-1.6447,0-3,1.3553-3,3v7c0,1.6447,1.3553,3,3,3h2c1.6447,0,3-1.3553,3-3v-7c0-1.6447-1.3553-3-3-3h-2zm0,2,2,0c0.5713,0,1,0.4287,1,1v7c0,0.5713-0.4287,1-1,1h-2c-0.5713,0-1-0.4287-1-1v-7c0-0.5713,0.4287-1,1-1z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/logout.svg b/p/themes/Pafat/icons/logout.svg
new file mode 100644
index 000000000..ac2d180d8
--- /dev/null
+++ b/p/themes/Pafat/icons/logout.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-201.0002,-237)" fill="#666">
+<path style="color:#666;" d="m204,246c-0.554,0-1,0.446-1,1v0.53125,5.4688h12v-5.4688-0.53c0-0.554-0.446-1-1-1h-10z" fill-rule="nonzero"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m208,237c-1.6447,0-3,1.3553-3,3v3h2v-3c0-0.57129,0.42873-1,1-1h2c0.57127,0,1,0.42871,1,1v7h2v-7c0-1.6447-1.3553-3-3-3h-2z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/next.svg b/p/themes/Pafat/icons/next.svg
new file mode 100644
index 000000000..59d512450
--- /dev/null
+++ b/p/themes/Pafat/icons/next.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-121.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m125,749,1,0c0.0104-0.00012,0.0208-0.00046,0.0313,0,0.25495,0.0112,0.50987,0.12858,0.6875,0.3125l6.2977,5.7188-6.2977,5.7188c-0.18816,0.18819-0.45346,0.28125-0.71875,0.28125h-1v-1c0-0.26529,0.0931-0.53058,0.28125-0.71875l4.829-4.2812-4.829-4.2812c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75z" fill-rule="nonzero" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/non-starred.svg b/p/themes/Pafat/icons/non-starred.svg
new file mode 100644
index 000000000..e019daffd
--- /dev/null
+++ b/p/themes/Pafat/icons/non-starred.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-61.000202,-397)">
+<path style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" fill="#666" d="m69.003,398.01c-0.2659-0.00099-0.49859,0.1006-0.6647,0.2393-0.16611,0.13869-0.27742,0.32137-0.38968,0.50028-0.22453,0.35782-0.39269,0.76873-0.56546,1.2036-0.17277,0.43483-0.34713,0.88766-0.5046,1.2323-0.15747,0.34465-0.3456,0.57871-0.35862,0.58776-0.01287,0.009-0.30722,0.117-0.69576,0.15181-0.38855,0.0348-0.88122,0.0492-1.3632,0.0694-0.48202,0.0202-0.9703,0.0362-1.393,0.12817-0.21138,0.046-0.4154,0.10148-0.60434,0.20956s-0.36689,0.28631-0.45004,0.53002-0.04901,0.50627,0.03636,0.70157c0.08537,0.19531,0.22656,0.36514,0.3682,0.52344,0.2833,0.31663,0.6327,0.60557,1.0079,0.89849s0.77671,0.55926,1.0678,0.81027c0.29104,0.25101,0.45422,0.50796,0.45912,0.52271,0.0048,0.0146,0.03119,0.33498-0.05456,0.70231-0.08575,0.36732-0.2238,0.81174-0.35282,1.2603-0.12902,0.44861-0.25176,0.90196-0.2917,1.3184-0.01997,0.20819-0.04285,0.40729,0.0053,0.61409,0.04814,0.20679,0.1845,0.43007,0.39902,0.58168,0.21451,0.15161,0.44936,0.1881,0.66823,0.1701s0.43535-0.0703,0.63515-0.15132c0.39961-0.16214,0.80177-0.42851,1.2064-0.68231,0.40465-0.2538,0.80822-0.52155,1.1456-0.71107,0.33734-0.18952,0.6484-0.2686,0.66445-0.26854,0.01586,0.00006,0.30338,0.0951,0.63894,0.28732,0.33556,0.19221,0.72532,0.46503,1.1276,0.72205,0.40229,0.25702,0.81996,0.49752,1.218,0.66284,0.19903,0.0827,0.38893,0.15086,0.60762,0.17059,0.2187,0.0197,0.47978-0.031,0.69551-0.18105,0.21572-0.15001,0.33928-0.35235,0.38918-0.55877s0.04291-0.43517,0.02476-0.64358c-0.03632-0.41683-0.15899-0.86394-0.2841-1.3137-0.12511-0.44978-0.26165-0.88661-0.34421-1.2548-0.08256-0.36813-0.07169-0.68662-0.06666-0.70133,0.005-0.0145,0.18746-0.25247,0.4806-0.50101,0.29313-0.24854,0.67599-0.53755,1.0536-0.82731,0.37764-0.28976,0.76716-0.57158,1.0531-0.88579,0.14298-0.1571,0.2418-0.33444,0.32882-0.52904s0.136-0.42874,0.05481-0.67306-0.27108-0.41314-0.45912-0.52272-0.36679-0.18158-0.57782-0.22931c-0.42206-0.0955-0.91359-0.14009-1.3956-0.16426-0.48198-0.0242-0.94584-0.039-1.3342-0.077s-0.71565-0.13122-0.72859-0.14037c-0.01279-0.009-0.18402-0.23636-0.3384-0.58217s-0.32658-0.78819-0.49548-1.2243c-0.1689-0.4361-0.33477-0.86429-0.55609-1.2238-0.11067-0.17977-0.23335-0.35397-0.39826-0.49396s-0.40309-0.25684-0.66899-0.25783zm0.0086,0.99424c0.0422,0.0358,0.10671,0.13602,0.1841,0.26173,0.15477,0.25141,0.33068,0.6272,0.49397,1.0488,0.16329,0.42163,0.31905,0.88645,0.49598,1.2828,0.17693,0.39633,0.31456,0.73379,0.6753,0.98889,0.36072,0.25509,0.77019,0.29763,1.2152,0.34118,0.44506,0.0435,0.92882,0.0532,1.3948,0.0765,0.46599,0.0234,0.91824,0.0697,1.2135,0.13647,0.14763,0.0334,0.25558,0.0572,0.30381,0.0853-0.02227,0.0498-0.07958,0.15478-0.17956,0.26464-0.19997,0.21973-0.53749,0.48746-0.90261,0.7676-0.36511,0.28015-0.77804,0.57219-1.114,0.85704-0.33595,0.28485-0.63992,0.53221-0.77987,0.94209-0.13995,0.40986-0.05396,0.77681,0.04065,1.1987s0.25406,0.87813,0.37502,1.313c0.12096,0.43486,0.22688,0.84692,0.25228,1.1385,0.01156,0.13264-0.01699,0.23485-0.02778,0.29267-0.05993-0.008-0.1764-0.0324-0.30381-0.0853-0.27836-0.11561-0.64649-0.32808-1.0354-0.57657-0.38894-0.24849-0.8039-0.53053-1.1885-0.75081-0.38457-0.22028-0.70791-0.39837-1.1551-0.40015-0.44722-0.002-0.79205,0.17245-1.1786,0.38965-0.38659,0.21719-0.78438,0.49517-1.1756,0.74055-0.39123,0.24538-0.77636,0.4507-1.0559,0.56412-0.13977,0.0567-0.24616,0.0856-0.3023,0.0902-0.01026-0.0578-0.01522-0.16008-0.0025-0.29243,0.02793-0.29118,0.13818-0.70893,0.26291-1.1426,0.12473-0.43372,0.25404-0.89785,0.35232-1.3188,0.09828-0.42099,0.18672-0.78846,0.05027-1.1994-0.13644-0.41097-0.43218-0.64202-0.76571-0.92967-0.33353-0.28766-0.70551-0.58555-1.0683-0.86876-0.36275-0.2832-0.7178-0.56075-0.91597-0.78224-0.09908-0.11075-0.16221-0.21163-0.1841-0.26173,0.04834-0.0276,0.15448-0.058,0.3023-0.0902,0.29562-0.0643,0.74518-0.10714,1.2112-0.1267,0.46603-0.0196,0.94824-0.0298,1.3935-0.0697,0.44531-0.0399,0.84679-0.0499,1.2097-0.30216,0.36289-0.25221,0.5383-0.60511,0.71876-1.0001,0.18046-0.39497,0.33731-0.84115,0.50435-1.2616,0.16704-0.42041,0.31848-0.83556,0.47556-1.0859,0.07853-0.12515,0.16751-0.20007,0.21012-0.23565z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/prev.svg b/p/themes/Pafat/icons/prev.svg
new file mode 100644
index 000000000..000ecb10d
--- /dev/null
+++ b/p/themes/Pafat/icons/prev.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-301.0002,-747)">
+<path style="block-progression:tb;color:#666;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m313.01,749-1,0c-0.0104-0.00012-0.0208-0.00046-0.0313,0-0.25495,0.0112-0.50987,0.12858-0.6875,0.3125l-6.2977,5.7188,6.2977,5.7188c0.18816,0.18819,0.45346,0.28125,0.71875,0.28125h1v-1c0-0.26529-0.0931-0.53058-0.28125-0.71875l-4.829-4.2812,4.829-4.2812c0.21074-0.19463,0.30316-0.46925,0.28125-0.75z" fill-rule="nonzero" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/read.svg b/p/themes/Pafat/icons/read.svg
new file mode 100644
index 000000000..f3ce7532d
--- /dev/null
+++ b/p/themes/Pafat/icons/read.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16.001" width="16">
+<g transform="translate(-60.99995,-296.9989)">
+<path opacity="1" style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" fill="#666" d="m68.875,297a1.0001,1.0001,0,0,0,-0.5,0.25l-4.9062,4a1.0001,1.0001,0,0,0,-0.0625,0.0312s-0.32587,0.29728-0.65625,0.75c-0.22334,0.30605-0.3527,0.8316-0.5,1.3125a1.0001,1.0001,0,0,0,-0.03125,0.0312,1.0001,1.0001,0,0,0,-0.21875,0.5625c-0.00051,0.0118,0.00036,0.0195,0,0.0312a1.0001,1.0001,0,0,0,0,0.0312,1.0001,1.0001,0,0,0,0,0.15625v7.8438a1.0001,1.0001,0,0,0,1,1h12a1.0001,1.0001,0,0,0,1,-1v-7.8438a1.0001,1.0001,0,0,0,0,-0.15625,1.0001,1.0001,0,0,0,-0.21875,-0.65625,1.0001,1.0001,0,0,0,-0.03125,-0.0312c-0.32774-1.1879-1.125-2-1.125-2a1.0001,1.0001,0,0,0,-0.0312,-0.0312l-4.969-4.02a1.0001,1.0001,0,0,0,-0.65625,-0.25,1.0001,1.0001,0,0,0,-0.0937,0zm0.125,2.2812,4.3125,3.5312,0.0312,0.0312c0.021,0.0255,0.18032,0.24952,0.34375,0.5l-4.6874,3.5312-4.6875-3.5312c0.0259-0.0394,0.0349-0.0872,0.0625-0.125,0.1908-0.26146,0.31874-0.41421,0.34375-0.4375l0.03125-0.0312,4.25-3.4688zm-5,5.0938,4.6875,3.5312,0.3125,0.21875,0.3125-0.21875,4.6875-3.5312,0,6.625-10,0,0-6.625z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/share.svg b/p/themes/Pafat/icons/share.svg
new file mode 100644
index 000000000..5010082cb
--- /dev/null
+++ b/p/themes/Pafat/icons/share.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g fill="#666" transform="translate(-581.0002,-196)">
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,148.15963,-64.49107)"/>
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,158.12818,-59.49107)"/>
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,158.12818,-69.49107)"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m593.62,198.16-10.062,4.875-1.8125,0.90625,1.8125,0.90625,10.031,5.0625,0.90625-1.8125-8.2188-4.1562,8.2188-4-0.875-1.7812z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/starred.svg b/p/themes/Pafat/icons/starred.svg
new file mode 100644
index 000000000..b9ab2f9f7
--- /dev/null
+++ b/p/themes/Pafat/icons/starred.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="enable-background:accumulate;color:#000000;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/tag.svg b/p/themes/Pafat/icons/tag.svg
new file mode 100644
index 000000000..9908d4665
--- /dev/null
+++ b/p/themes/Pafat/icons/tag.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-141.0002,-807)">
+<path d="m149,809,0,13,4-4,4,4c0.0525-6.8494-0.0285-10.584,0-13z" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/unread.svg b/p/themes/Pafat/icons/unread.svg
new file mode 100644
index 000000000..77ce9c8b4
--- /dev/null
+++ b/p/themes/Pafat/icons/unread.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-40.99995,-297)" fill="#666">
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m43.781,301a1.0001,1.0001,0,0,0,-0.40625,1.7812l5,4,0.625,0.5,0.625-0.5,5-4a1.0005,1.0005,0,1,0,-1.25,-1.5625l-4.375,3.5-4.375-3.5a1.0001,1.0001,0,0,0,-0.844,-0.22z"/>
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="M42.906,300a1.0001,1.0001,0,0,0,-0.906,1v9a1.0001,1.0001,0,0,0,1,1h12a1.0001,1.0001,0,0,0,1,-1v-9a1.0001,1.0001,0,0,0,-1,-1h-12a1.0001,1.0001,0,0,0,-0.09375,0zm1.094,2h10v7h-10v-7z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/icons/up.svg b/p/themes/Pafat/icons/up.svg
new file mode 100644
index 000000000..bd9be09e9
--- /dev/null
+++ b/p/themes/Pafat/icons/up.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-201.0002,-747)">
+<path style="block-progression:tb;color:#666;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m215.03,759,0-1c-0.00091-0.0111,0.00059-0.021-0.00009-0.0312-0.0112-0.25496-0.12835-0.50994-0.31251-0.6875l-5.7188-6.2977-5.7188,6.2977c-0.18821,0.1881-0.28121,0.45346-0.28122,0.71875v1h1c0.26531-0.00007,0.53059-0.0931,0.71873-0.28131l4.2812-4.829,4.2813,4.829c0.19464,0.21073,0.46925,0.30315,0.74998,0.2813z" fill-rule="nonzero" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Pafat/loader.gif b/p/themes/Pafat/loader.gif
new file mode 100644
index 000000000..a3d327a18
--- /dev/null
+++ b/p/themes/Pafat/loader.gif
Binary files differ
diff --git a/p/themes/Pafat/metadata.json b/p/themes/Pafat/metadata.json
new file mode 100644
index 000000000..ba82e0a09
--- /dev/null
+++ b/p/themes/Pafat/metadata.json
@@ -0,0 +1,7 @@
+{
+ "name": "Pafat",
+ "author": "Plopoyop",
+ "description": "Un thème pour FreshRSS",
+ "version": 0.2,
+ "files": ["_template.css", "pafat.css"]
+}
diff --git a/p/themes/Pafat/pafat.css b/p/themes/Pafat/pafat.css
new file mode 100644
index 000000000..abe808eab
--- /dev/null
+++ b/p/themes/Pafat/pafat.css
@@ -0,0 +1,1079 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #fafafa;
+ color : #666;
+}
+
+/*=== Links */
+a {
+ color: #2980b9;
+ outline: none;
+}
+
+/*=== Forms */
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ border-bottom: 1px solid #ddd;
+ font-size: 1.4em;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 1px;
+ background: #fdfdfd;
+ border: 1px solid #bbb;
+ border-radius: 3px;
+ color: #666;
+ line-height: 21px;
+ vertical-align: middle;
+}
+
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ outline-color: #aaa;
+}
+
+input:invalid, select:invalid {
+ border-color: #f00;
+ box-shadow: 0 0 2px 2px #fdd inset;
+ outline-color: #fdd;
+}
+input:disabled, select:disabled {
+ background: #eee;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+th {
+ background: #f6f6f6;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+ background: #f4f4f4;
+ border-top: 1px solid #ddd;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+ margin : 10px 0 10px 220px;
+
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+ min-width: 215px;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,
+.stick input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.stick .btn-important:first-child {
+ width:176px;
+}
+.stick .btn:last-child,
+.stick input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left: none;
+
+}
+
+.stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 29px;
+ min-width: 15px;
+ margin: 0;
+ padding: 1px 5px;
+ background: #fff;
+ border-radius: 3px;
+ border: 1px solid #aaa;
+ color: #666;
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+}
+
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+
+
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+
+.read_all.btn {
+ height:29px;
+}
+
+.btn:hover {
+ background: #f0f0f0;
+ text-decoration: none;
+}
+
+.btn.active,
+.btn:active,
+.dropdown-target:target ~ .btn.dropdown-toggle {
+ background: #eee;
+}
+
+.btn-important {
+ background: #5cb85c;
+ color: #fff;
+ border-color: #5cb85c;
+ font-weight: normal;
+}
+.btn-important:hover, .btn-important:active {
+ background:#47a447;
+ border-color : #47a447;
+ box-shadow: none;
+}
+
+.btn-attention {
+ background: #d9534f;
+ color: #fff;
+ border: 1px solid #d9534f;
+ outline-color : #aaa;
+}
+.btn-attention:hover {
+ background: #d2322d;
+ border-color : #d2322d;
+}
+.btn-attention:active {
+ background: #d2322d;
+ box-shadow: none;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+ background: #fafafa;
+}
+.nav-list .item:hover a {
+ color: #003388;
+}
+.nav-list .item.active {
+ background: #3498DB;
+ color: #fff;
+}
+.nav-list .item.active a {
+ color: #fff;
+}
+.nav-list .disable {
+ color: #aaa;
+ background: #fafafa;
+ text-align: center;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #f39c12;
+}
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: #f39c12;
+}
+.nav-list .item.error a {
+ color: #BD362F;
+}
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #BD362F;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ color: #888;
+ background: #f4f4f4;
+ border-bottom: 1px solid #ddd;
+ font-weight: bold;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ background: #fff;
+ background: linear-gradient(to bottom, #fff, #f0f0f0);
+ background: -moz-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -webkit-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -o-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ background: -ms-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+ border-bottom: 1px solid #ddd;
+ text-align: right;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ font-size: 0.8rem;
+ text-align: left;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ background: #fff;
+ border-top: 1px solid #aaa;
+ border-left: 1px solid #aaa;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+}
+.dropdown-header {
+ padding: 0 5px 5px;
+ color: #888;
+ font-weight: bold;
+ text-align: left;
+}
+.dropdown-menu > .item {
+}
+
+.dropdown-menu > .item > a {
+ padding: 0 22px;
+ line-height: 2.5em;
+ color: #666;
+ font-size: 0.8rem;
+}
+
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+ font-size: 0.8rem;
+}
+
+.dropdown-menu > .item:hover {
+ background: #eee;
+ color: #666;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ color: #666;
+ text-decoration: none;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #ddd;
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px;
+ color: #aaa;
+ font-size: 0.9em;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ color: inherit;
+ text-decoration: underline;
+}
+.alert-warn {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.alert-success {
+ background: #dfd;
+ border: 1px solid #cec;
+ color: #484;
+}
+.alert-error {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+
+/*=== Pagination */
+.pagination {
+ background: #fff;
+ text-align: center;
+ color: #41444f;
+ font-size: 0.8em;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+}
+.pagination .item a {
+ display: block;
+ color: #41444f;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+}
+.pagination .item a:hover {
+ background: #ddd;
+}
+.pagination:first-child .item {
+ border-bottom: 1px solid #aaa;
+}
+.pagination:last-child .item {
+ border-top: 1px solid #aaa;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ background: url("loader.gif") center center no-repeat #fff;
+ font-size: 0;
+}
+
+/*=== Boxes */
+.box {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #f6f6f6;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ margin: 5px;
+ padding: 0 10px;
+ line-height: 2rem;
+ font-size: 0.9rem;
+ background: #5bc0de;
+ color: #fff;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ border-radius: 5px;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #39b3d7;
+ font-weight: bold;
+ font-size: 1rem;
+ border-top: 1px solid #666;
+ border-bottom: 1px solid #666;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #5cb85c;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #fff;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 85px;
+ background: #41444f;
+}
+.header > .item {
+ padding: 10px;
+ border-bottom: 1px solid #aaa;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title{
+ width: 230px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+
+.header > .item.title h1 a, a.signin {
+ text-decoration: none;
+ color : #C5C6CA;
+}
+
+.header > .item.search input {
+ width: 230px;
+ height : 29px;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.header > .item.search button {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ height : 29px;
+}
+
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ height: calc(100% - 85px);
+}
+.aside {
+ border-right: 1px solid #aaa;
+ background: #fff;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 0.25rem; right: 3px;
+ padding: 0px 5px;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ font-size: 0.8rem;
+ line-height: 1.5rem;
+}
+.aside_feed .tree-folder.all .tree-folder-title {
+ background: #428bca;
+}
+.aside_feed .tree-folder.all.active .tree-folder-title {
+ background: #3276b1;
+}
+.aside_feed .tree-folder.favorites .tree-folder-title {
+ background: #f0ad4e;
+}
+.aside_feed .tree-folder.favorites.active .tree-folder-title {
+ background: #ed9c28;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty.active {
+ background: #e67e22;
+}
+.feed.item.error.active {
+ background: #bd362f;
+}
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #e67e22;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #bd362f;
+}
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
+ color: #fff;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+ background-color: #fff;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 200px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+
+/*=== New article notification */
+#new-article {
+ background: #428bca;
+ text-align: center;
+ font-size: 0.9em;
+}
+#new-article:hover {
+ background: #3276b1;
+}
+#new-article > a {
+ line-height: 3em;
+ color: #fff;
+ font-weight: bold;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-weight: bold;
+ line-height: 3em;
+ background: #fff;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ color : #666;
+}
+#new-article + .day {
+ border-top: none;
+}
+.day .name {
+ padding: 0 10px 0 0;
+ color : #666;
+ font-size: 1.8em;
+ opacity: 0.3;
+ font-style: italic;
+ text-align: right;
+}
+
+/*=== Index menu */
+.nav_menu {
+ background: #fafafa;
+ border-bottom: 1px solid #aaa;
+ text-align: center;
+ padding: 5px 0;
+}
+
+/*=== Feed articles */
+.flux {
+ border-left: 3px solid #5cb85c;
+ background: #fafafa;
+}
+.flux:hover {
+ background: #fff;
+}
+.flux.current {
+ border-left: 3px solid #39b3d7;
+}
+.flux.not_read {
+ border-left: 3px solid #d9534f;
+}
+.flux .item.title a, .flux.not_read:not(.current):hover .item.title {
+ color : #333;
+}
+.flux.favorite {
+ border-left: 2px solid #428bca;
+ background: #FFF6DA;
+}
+.flux.favorite:not(.current):hover .item.title {
+ background: #FFF6DA;
+}
+.flux.current {
+ background: #fff;
+}
+
+
+.flux_header {
+ border-top: 1px solid #ddd;
+ font-size: 0.8rem;
+ cursor: pointer;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ color: #666;
+ font-size: 0.7rem;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #333;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #ddd;
+ border: 0;
+ box-shadow: 0 2px 5px #ccc;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #fafafa;
+ border: 1px solid #eee;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ background: #fafafa;
+ color: #41444f;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ border: 1px solid #eeb;
+ border-radius: 3px;
+ box-shadow: 0 0 5px #ddd;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ z-index: 10;
+ vertical-align: middle;
+}
+.notification.good {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.notification.bad {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification.good a.close:hover {
+ background: #eeb;
+}
+.notification.bad a.close:hover {
+ background: #ecc;
+}
+
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+ color: #666;
+ background: #fafafa;
+}
+#bigMarkAsRead:hover {
+ color: #000;
+ background: #f0f0f0;
+}
+
+#bigMarkAsRead:hover .bigTick {
+/* text-shadow: 0 0 10px #666;*/
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ margin: 0;
+ background: #fff;
+ border-top: 1px solid #ddd;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+}
+
+#nav_entries .item:hover {
+ background:#eee ;
+}
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ border: none;
+ background: #f0f0f0;
+ color: #41444f;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #666;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+}
+.box.category:not([data-unread="0"]) .box-title {
+ background: #5BC0DE;
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ font-weight: bold;
+ color: #fff;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
+ font-size: 0.8rem;
+ line-height: 1.6rem;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,
+.aside.aside_feed .nav-form select {
+ width: 140px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #ddd;
+ text-align: center;
+}
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 250px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ overflow: hidden;
+}
+.log {
+ padding: 5px 10px;
+ background: #fafafa;
+ color: #41444f;
+ font-size: 0.8rem;
+}
+.log+.log {
+ border-top: 1px solid #aaa;
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+ background: #fdd;
+ color: #844;
+}
+.log.warning {
+ background: #ffe;
+ color: #c95;
+}
+.log.notice {
+ background: #f4f4f4;
+ color: #aaa;
+}
+.log.debug {
+ background: #41444f;
+ color: #eee;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .aside {
+ box-shadow: 3px 0 3px #aaa;
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ background: #f6f6f6;
+ border-bottom: 1px solid #ddd;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ font-size: 1.1rem;
+ text-shadow: none;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification a.close {
+ display: block;
+ left: 0;
+ background: transparent;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+} \ No newline at end of file
diff --git a/p/themes/Pafat/thumbs/original.png b/p/themes/Pafat/thumbs/original.png
new file mode 100644
index 000000000..fe05f7260
--- /dev/null
+++ b/p/themes/Pafat/thumbs/original.png
Binary files differ
diff --git a/p/themes/Screwdriver/README.md b/p/themes/Screwdriver/README.md
new file mode 100644
index 000000000..385e1dc71
--- /dev/null
+++ b/p/themes/Screwdriver/README.md
@@ -0,0 +1,36 @@
+Screwdriver
+=======
+
+**C'est un cocktail! C'est chaud mais "fresh" à la fois. C'est... c'est... un thème pour l'agrégateur de flux RSS<a href="https://github.com/FreshRSS/FreshRSS/" target="blank">FreshRSS</a>!!**
+En toute modestie, ce thème tue du chaton.
+
+![screenshot](https://github.com/misterair/Screwdriver/blob/master/screenshot.png)
+
+
+Installation
+-----------------
+1. Placez le dossier du thème dans ledossier /FreshRSS/p/themes/Screwdriver de votre FreshRSS;
+2. Allez dans les paramètres d'Affichage et changez de thème;
+3. Profitez de votre Screwdriver!
+4. Remontez les problèmes sur Github (facultatif mais fortement apprécié)
+
+
+
+Screwdriver est distribué sous license BeerWare:
+-----------------
+
+« LICENCE BEERWARE » (Révision 42):
+
+mister.air@gmail.com a créé ce fichier. Tant que vous conservez cet avertissement,
+
+vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
+
+que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en retour.
+
+*Mister aiR*
+
+
+
+
+
+
diff --git a/p/themes/Screwdriver/icons/bookmark.svg b/p/themes/Screwdriver/icons/bookmark.svg
new file mode 100644
index 000000000..edf5a02db
--- /dev/null
+++ b/p/themes/Screwdriver/icons/bookmark.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="color:#000000;enable-background:accumulate;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#d18104"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Screwdriver/icons/favicon-16-32-48-64.ico b/p/themes/Screwdriver/icons/favicon-16-32-48-64.ico
new file mode 100644
index 000000000..7c5eb5517
--- /dev/null
+++ b/p/themes/Screwdriver/icons/favicon-16-32-48-64.ico
Binary files differ
diff --git a/p/themes/Screwdriver/icons/favicon-256.png b/p/themes/Screwdriver/icons/favicon-256.png
new file mode 100644
index 000000000..235b18c97
--- /dev/null
+++ b/p/themes/Screwdriver/icons/favicon-256.png
Binary files differ
diff --git a/p/themes/Screwdriver/icons/favicon.svg b/p/themes/Screwdriver/icons/favicon.svg
new file mode 100644
index 000000000..895a727bb
--- /dev/null
+++ b/p/themes/Screwdriver/icons/favicon.svg
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="linearGradient4149">
+<stop stop-color="#d18114" offset="0"/>
+<stop stop-color="#ed9514" offset="1"/>
+</linearGradient>
+<linearGradient id="linearGradient4155" y2="28.285" xlink:href="#linearGradient4149" gradientUnits="userSpaceOnUse" x2="144.51" y1="28.285" x1="64.102"/>
+<linearGradient id="linearGradient4159" y2="-11.652" xlink:href="#linearGradient4149" gradientUnits="userSpaceOnUse" x2="126.84" y1="69.532" x1="64.102"/>
+</defs>
+<g fill="#FFF" transform="matrix(1.7556028,0,0,1.7556028,2.4536682,156.92143)">
+<g transform="matrix(0.9774773,0,0,0.9774773,0.92631875,-74.208835)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g transform="translate(-4.1395349,-75.482558)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</g>
+<g fill="url(#linearGradient4155)" transform="matrix(1.7160619,0,0,1.7160619,5.3998589,23.251436)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g fill="#222" transform="matrix(1.7556028,0,0,1.7556028,-3.4937681,21.015289)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</svg>
diff --git a/p/themes/Screwdriver/icons/icon.svg b/p/themes/Screwdriver/icons/icon.svg
new file mode 100644
index 000000000..268814463
--- /dev/null
+++ b/p/themes/Screwdriver/icons/icon.svg
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="linearGradient4149">
+<stop stop-color="#d18114" offset="0"/>
+<stop stop-color="#ed9514" offset="1"/>
+</linearGradient>
+<linearGradient id="linearGradient4155" y2="28.285" xlink:href="#linearGradient4149" gradientUnits="userSpaceOnUse" x2="144.51" y1="28.285" x1="64.102"/>
+<linearGradient id="linearGradient4159" y2="-11.652" xlink:href="#linearGradient4149" gradientUnits="userSpaceOnUse" x2="126.84" y1="69.532" x1="64.102"/>
+</defs>
+<g fill="#FFF" transform="matrix(0.40427237,0,0,0.40427237,0.65228897,36.70875)">
+<g transform="matrix(0.9774773,0,0,0.9774773,0.92631875,-74.208835)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g transform="translate(-4.1395349,-75.482558)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</g>
+<g fill="url(#linearGradient4155)" transform="matrix(0.39516706,0,0,0.39516706,1.3307246,5.9278164)">
+<path d="m64.102-11.469,0,14.25c36.018,0.0418,65.198,29.235,65.218,65.259h15.189c-0.46275-43.994-36.228-79.509-80.332-79.509-0.02635,0-0.05196-0.000025-0.0783,0z"/>
+<path d="m64.102,14.799,0,14.876c21.188,0.12639,38.346,17.217,38.639,38.365h15.581c-0.21-29.445-24.175-53.241-53.669-53.241-0.18468,0-0.36384-0.0019-0.54807,0z"/>
+</g>
+<g fill="#222" transform="matrix(0.40427237,0,0,0.40427237,-0.71726009,5.4128854)">
+<path d="M61.077,4.2013c-32.069,3.4709-57.062,30.537-57.188,63.5h11.906c-0.001-0.13569,0-0.27032,0-0.40625,0-26.472,19.725-48.306,45.281-51.656v-11.437z"/>
+<path d="m61.077,25.42c-20.105,3.4776-35.409,20.946-35.469,42.031h11.125c0.11711-14.724,10.509-27.002,24.344-30.062v-11.969z"/>
+<path d="m68.171,50.108c-9.502,0-17.188,7.6855-17.188,17.188,0,9.502,7.6855,17.219,17.188,17.219,9.502,0,17.219-7.7167,17.219-17.219,0-9.502-7.7167-17.188-17.219-17.188z"/>
+<path d="m98.14,74.17c-2.9607,13.954-15.281,24.445-30.094,24.562v11.656c0.12455,0.001,0.2502,0,0.375,0,21.41,0,39.173-15.697,42.344-36.219h-12.625z"/>
+<path d="m119.58,74.17c-3.3587,25.459-25.062,45.157-51.406,45.281v12.656c33.284-0.0636,60.6-25.457,63.719-57.938h-12.312z"/>
+</g>
+</svg>
diff --git a/p/themes/Screwdriver/icons/read.svg b/p/themes/Screwdriver/icons/read.svg
new file mode 100644
index 000000000..5e454e36b
--- /dev/null
+++ b/p/themes/Screwdriver/icons/read.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16.001" width="16">
+<path fill="#CCC" d="m8.0005,3.2833c-3.4339,0-6.4103,1.9996-7.8729,4.9206,1.4626,2.9209,4.439,4.9206,7.8729,4.9206,3.4338,0,6.4102-1.9996,7.8729-4.9206-1.462-2.9204-4.439-4.9201-7.8725-4.9201zm3.8819,2.6095c0.9251,0.59007,1.709,1.3804,2.2978,2.3111-0.58881,0.93063-1.3727,1.721-2.2978,2.3111-1.1624,0.7414-2.5047,1.1333-3.8818,1.1333s-2.7195-0.39189-3.8819-1.1333c-0.92507-0.59004-1.709-1.3804-2.2978-2.3111,0.58881-0.93066,1.3727-1.721,2.2978-2.3111,0.06025-0.038442,0.12111-0.075682,0.18234-0.11225-0.15312,0.42021-0.23692,0.87374-0.23692,1.3469,0,2.174,1.7624,3.9364,3.9364,3.9364s3.9365-1.7624,3.9365-3.9364c0-0.4732-0.0838-0.92673-0.23692-1.347,0.0612,0.036566,0.12206,0.073839,0.18234,0.11228zm-3.8815,0.7427c0,0.81528-0.66089,1.4762-1.4762,1.4762-0.81528,0-1.4762-0.66089-1.4762-1.4762,0-0.81528,0.66089-1.4762,1.4762-1.4762,0.81527,0,1.4762,0.66089,1.4762,1.4762z"/>
+</svg> \ No newline at end of file
diff --git a/p/themes/Screwdriver/icons/starred.svg b/p/themes/Screwdriver/icons/starred.svg
new file mode 100644
index 000000000..cd06525fd
--- /dev/null
+++ b/p/themes/Screwdriver/icons/starred.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="color:#000000;enable-background:accumulate;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#eaa904"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/Screwdriver/icons/unread.svg b/p/themes/Screwdriver/icons/unread.svg
new file mode 100644
index 000000000..a27acf2b6
--- /dev/null
+++ b/p/themes/Screwdriver/icons/unread.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<path fill="#666" d="m7.9824,3.529c-3.4339,0-6.4103,1.9996-7.8729,4.9206,1.4626,2.9214,4.439,4.9204,7.8729,4.9204,3.4338,0,6.4102-1.9996,7.8729-4.9206-1.462-2.9207-4.439-4.9204-7.8726-4.9204zm3.8819,2.6095c0.9251,0.59007,1.709,1.3804,2.2978,2.3111-0.58881,0.93063-1.3727,1.721-2.2978,2.3111-1.1624,0.7414-2.5047,1.1333-3.8818,1.1333s-2.7195-0.39189-3.8819-1.1333c-0.9248-0.59-1.7087-1.3807-2.2975-2.3114,0.5888-0.9307,1.3727-1.721,2.2978-2.3111,0.0602-0.0384,0.1211-0.0757,0.1823-0.1122-0.15312,0.42021-0.23692,0.87374-0.23692,1.3469,0,2.174,1.7624,3.9364,3.9365,3.9364,2.174,0,3.9365-1.7624,3.9365-3.9364,0-0.4732-0.0838-0.92673-0.23692-1.347,0.0612,0.036566,0.12206,0.073839,0.18234,0.11228zm-3.8816,0.7427c0,0.81528-0.66089,1.4762-1.4762,1.4762-0.81528,0-1.4762-0.66089-1.4762-1.4762,0-0.81528,0.66089-1.4762,1.4762-1.4762,0.81527,0,1.4762,0.66089,1.4762,1.4762z"/>
+</svg> \ No newline at end of file
diff --git a/p/themes/Screwdriver/loader.gif b/p/themes/Screwdriver/loader.gif
new file mode 100644
index 000000000..5ff26f0e3
--- /dev/null
+++ b/p/themes/Screwdriver/loader.gif
Binary files differ
diff --git a/p/themes/Screwdriver/metadata.json b/p/themes/Screwdriver/metadata.json
new file mode 100644
index 000000000..46095e507
--- /dev/null
+++ b/p/themes/Screwdriver/metadata.json
@@ -0,0 +1,7 @@
+{
+ "name": "Screwdriver",
+ "author": "Mister aiR",
+ "description": "C'est un cocktail ! C'est chaud mais « fresh » à la fois. Ce thème tue du chaton.",
+ "version": 1.1,
+ "files": ["_template.css","screwdriver.css"]
+}
diff --git a/p/themes/Screwdriver/screwdriver.css b/p/themes/Screwdriver/screwdriver.css
new file mode 100644
index 000000000..9dbe523a1
--- /dev/null
+++ b/p/themes/Screwdriver/screwdriver.css
@@ -0,0 +1,1204 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+ background: #fafafa;
+ font-size: 92%;
+}
+
+/*=== Links */
+a, button.as-link {
+ color: #D18114;
+ outline: none;
+}
+
+/*=== Forms */
+.form-group{
+ width: 100%;
+ float: left;
+ height: auto;
+ display: inline-block;
+}
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ border-bottom: 1px solid #ddd;
+ font-size: 1.4em;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ background: #fff;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ color: #222;
+ line-height: 25px;
+ vertical-align: middle;
+ box-shadow: 0 1px 2px #ccc inset, 0 1px #fff;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+ color: #0F0F0F;
+ box-shadow: 0 0 3px #E7AB34;
+ border: solid 1px #E7AB34;
+}
+input:invalid, select:invalid {
+ border-color: #f00;
+ box-shadow: 0 0 2px 2px #fdd inset;
+}
+input:disabled, select:disabled {
+ background: #eee;
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+th {
+ background: #f6f6f6;
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+ background: #f4f4f4;
+ border-top: 1px solid #ddd;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+ border-radius: 4px;
+ box-shadow:0 1px rgba(255,255,255,0.08) inset;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+
+.dropdown-menu .input select, .dropdown-menu .input input {
+ background:#444;
+ color:#fff;
+ box-shadow:0 2px 2px #222 inset, 0px 1px rgba(255, 255, 255, 0.08);
+ border:solid 1px #171717;
+}
+
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+ border-radius: 0;
+}
+.stick .btn:first-child,.stick input:first-child {
+ border-radius: 6px 0 0 6px;
+}
+.stick .btn-important:first-child {
+}
+.stick .btn:last-child, .stick input:last-child {
+ border-radius: 0 6px 6px 0;
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+ border-left: none;
+}
+.stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+}
+
+.btn {
+ display: inline-block;
+ min-height: 37px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ color:#222;
+ border: solid 1px #ccc;
+ border-radius: 4px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ text-shadow: 0px -1px rgba(255,255,255,0.08);
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ text-shadow: 0 0 2px #fff;
+ text-decoration:none;
+}
+.btn.active,.btn:active,.dropdown-target:target ~ .btn.dropdown-toggle {
+ background: linear-gradient(180deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(top, #EDE7DE 0%, #FFF 100%);
+}
+
+.nav_menu .btn.active, .nav_menu .btn:active, .nav_menu .dropdown-target:target ~ .btn.dropdown-toggle{
+ box-shadow: 0 1px #fff;
+ border-radius: 4px;
+ background: linear-gradient(180deg, #EDE7DE 0%, #F6F6F6 100%) #EDE7DE;
+ background: -webkit-linear-gradient(top, #EDE7DE 0%, #F6F6F6 100%);
+ border: solid 1px #ccc;
+}
+.nav_menu .btn {
+ border: 0;
+ background:transparent;
+}
+
+.read_all {
+ color:#222;
+}
+.btn.dropdown-toggle[href="#dropdown-configure"]{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ border-radius: 4px;
+ border: solid 1px #ccc;
+ box-shadow: 0 1px #fff;
+}
+.btn.dropdown-toggle:active {
+ background:transparent;
+}
+.btn-important {
+ background: linear-gradient(180deg, #E4992C 0%, #D18114 100%) #E4992C;
+ background: -webkit-linear-gradient(top, #E4992C 0%, #D18114 100%);
+ color: #FFF;
+ box-shadow: 0 1px rgba(255,255,255,0.08) inset;
+ border-radius: 4px;
+ text-shadow: 0px -1px rgba(255,255,255,0.08);
+ font-weight: normal;
+}
+.btn-important:hover {
+}
+.btn-important:active {
+ background: linear-gradient(0deg, #E4992C 0%, #D18114 100%) #E4992C;
+ background: -webkit-linear-gradient(bottom, #E4992C 0%, #D18114 100%);
+}
+
+.btn-attention {
+ background: #E95B57;
+ background: linear-gradient(to bottom, #E95B57, #BD362F);
+ background: -webkit-linear-gradient(top, #E95B57 0%, #BD362F 100%);
+ color: #fff;
+ border: 1px solid #C44742;
+ text-shadow: 0px -1px 0px #666;
+}
+.btn-attention:hover {
+ background: linear-gradient(to bottom, #D14641, #BD362F);
+ background: -webkit-linear-gradient(top, #D14641 0%, #BD362F 100%);
+}
+.btn-attention:active {
+ background: #BD362F;
+ box-shadow: none;
+}
+.btn[type="reset"]{
+ color: #fff;
+ background:linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ box-shadow:0 -1px rgba(255,255,255,0.08) inset;
+}
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+ text-shadow: 0 0 2px rgba(255,255,255,0.28);
+ color:#fff;
+}
+
+.nav-list .item.active {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) repeat scroll 0% 0% #171717;
+ background: -webkit-linear-gradient(180deg, #222 0%, #171717 100%);
+ border-width: medium medium 1px;
+ border-style: none none solid;
+ border-color: -moz-use-text-color -moz-use-text-color #171717;
+ box-shadow: -1px 2px 2px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
+ margin: 0;
+}
+.nav-list .item.active a {
+ color: #D18114;
+}
+.nav-list .disable {
+ color: #aaa;
+ background: #fafafa;
+ text-align: center;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+ color:#ccc;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+ color: #f39c12;
+}
+.nav-list .item.active.empty a {
+ color: #fff;
+ background: linear-gradient(180deg, #E4992C 0%, #D18114 100%) #E4992C;
+ background: -webkit-linear-gradient(180deg, #E4992C 0%, #D18114 100%);
+}
+.nav-list .item.error a {
+ color: #BD362F;
+}
+.nav-list .item.active.error a {
+ color: #fff;
+ background: #BD362F;
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ color: #222;
+ background: transparent;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ text-align: right;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ border: 1px solid #171717;
+ border-radius: 4px;
+ box-shadow: 0 0 3px #000;
+ font-size: 0.8rem;
+ text-align: left;
+ background: #222;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ background: #222;
+ border-top: 1px solid #171717;
+ border-left: 1px solid #171717;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+}
+.dropdown-header {
+ display:none;
+}
+.dropdown-menu > .item {
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+ color: #ccc;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+ color: #ccc;
+}
+.dropdown-menu > .item:hover {
+ background: #171717;
+ color: #fff;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ color: #fff;
+ text-decoration: none;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+ border-radius: 3px;
+}
+
+.separator {
+ margin: 5px 0;
+ border-bottom: 1px solid #171717;
+ box-shadow: 0 1px rgba(255,255,255,0.08);
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px;
+ color: #aaa;
+ text-shadow: 0 0 1px #eee;
+ font-size: 0.9em;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ color: inherit;
+ text-decoration: underline;
+}
+.alert-warn {
+ background: #ffe;
+ border: 1px solid #eeb;
+ color: #c95;
+}
+.alert-success {
+ background: #dfd;
+ border: 1px solid #cec;
+ color: #484;
+}
+.alert-error {
+ background: #fdd;
+ border: 1px solid #ecc;
+ color: #844;
+}
+
+/*=== Pagination */
+.pagination {
+ background: #fafafa;
+ text-align: center;
+ color: #333;
+ font-size: 0.8em;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+}
+.pagination .item a {
+ display: block;
+ color: #333;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+}
+.pagination .item a:hover {
+ background: #ddd;
+}
+.pagination:first-child .item {
+ border-bottom: 1px solid #aaa;
+}
+.pagination:last-child .item {
+ border-top: 1px solid #ddd;
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ background: url("loader.gif") center center no-repeat #fff;
+ font-size: 0;
+}
+
+/*=== Boxes */
+.box {
+ background: #EDE7DE;
+ border-radius: 4px;
+ box-shadow: 0 1px #fff;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
+ box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
+ color: #888;
+ text-shadow: 0 1px #ccc;
+ border-radius: 4px 4px 0 0;
+ font-size: 1.1rem;
+ font-weight: normal;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.9rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
+ text-shadow: 0 0 2px rgba(255,255,255,0.28);
+ color: #fff;
+}
+.tree-folder-items {
+ background: #171717;
+ padding: 8px 0;
+ box-shadow: 0 4px 4px #171717 inset, 0 1px rgba(255,255,255,0.08),0 -1px rgba(255,255,255,0.08);
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ border-radius: 4px;
+ margin: 0px 8px;
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset, 0 2px 2px #111;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+ color: #fff;
+ font-size: 0.92em;
+}
+.tree-folder-items > .item.active > a {
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 55px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+}
+.header > .item {
+ padding: 0;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title .logo {
+ height: 60px;
+ width: 60px;
+}
+.header > .item.title{
+ width: 250px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+ font-size: 28px;
+ color:#222;
+ text-shadow: 0 1px #fff;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ background:#EDE7DE;
+ height: calc(100% - 60px);
+}
+.aside {
+ border-radius: 0px 12px 0px 0px;
+ box-shadow: 0px -1px #FFF, 0 2px 2px #171717 inset;
+ border-top: 1px solid #CCC;
+ background: #222;
+ width: 235px;
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 3px;
+ padding: 1px 5px;
+ color: #fff;
+ text-shadow: 0 1px rgba(255,255,255,0.08);
+}
+.aside_feed .btn-important {
+ border: none;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty,
+.feed.item.empty > a {
+ color: #e67e22;
+}
+.feed.item.error,
+.feed.item.error > a {
+ color: #BD362F;
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+ padding: 14px 0px;
+ text-shadow: 0 1px rgba(255,255,255,0.08);
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 180px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+.prompt input#username,.prompt input#passwordPlain{
+ border:solid 1px #ccc;
+ box-shadow: 0 4px -4px #ccc inset,0px 1px rgba(255, 255, 255, 0.08);
+ background:#fff;
+}
+.prompt input#username:focus,.prompt input#passwordPlain:focus{
+ border: solid 1px #E7AB34;
+ box-shadow: 0 0 3px #E7AB34;
+}
+
+/*=== New article notification */
+#new-article {
+ background: #0084CC;
+ text-align: center;
+ font-size: 0.9em;
+}
+#new-article:hover {
+ background: #0066CC;
+}
+#new-article > a {
+ line-height: 3em;
+ color: #fff;
+ font-weight: bold;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-style:italic;
+ line-height: 3em;
+ box-shadow: 0 1px #BDB7AE inset, 0 -1px rgba(255,255,255,0.28) inset;
+ background: linear-gradient(0deg, #EDE7DE 0%, #C2BCB3 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #C2BCB3 0%, #FFF 100%);
+ color: #666;
+ text-shadow: 0 1px rgba(255,255,255,0.28);
+ text-align: center;
+}
+#new-article + .day {
+ border-top: none;
+}
+.day .name {
+ display: none;
+}
+
+/*=== Index menu */
+.nav_menu {
+ background: #EDE7DE;
+ border-bottom: 1px solid #ccc;
+ box-shadow:0 -1px rgba(255, 255, 255, 0.28) inset;
+ text-align: center;
+ padding: 5px 0;
+}
+#panel >.nav_menu{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+}
+#panel > .nav_menu > #nav_menu_read_all{
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ border-radius: 4px;
+ border: 1px solid #CCC;
+ box-shadow: 0px 1px #FFF;
+}
+#panel > .nav_menu > #nav_menu_read_all .dropdown > .btn.dropdown-toggle {
+ border-radius: 0 4px 4px 0;
+ border:none;
+ border-left: solid 1px #ccc;
+}
+
+/*=== Feed articles */
+.flux_content {
+ background: #FFF;
+ border-radius: 10px;
+}
+.flux {
+ background: #EDE7DE;
+}
+.flux:hover {
+ background: #F9F7F4;
+}
+.flux:not(.current):hover .item.title {
+ background: #F9F7F4;
+}
+.flux.current .flux .item.title a {
+ text-shadow:0 0 2px #ccc;
+}
+.flux.not_read:not(.current):hover .item.title {
+ opacity:0.85;
+}
+.flux.favorite {
+ background: #FFF6DA;
+}
+.flux.favorite:not(.current):hover{
+ background: #F9F7F4;
+}
+.flux.favorite:not(.current):hover .item.title {
+ background: #F9F7F4;
+}
+.flux.current {
+ background: linear-gradient(0deg, #EDE7DE 0%, #FFF 100%) #EDE7DE;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #FFF 100%);
+ box-shadow: 0 -1px #fff inset, 0 2px #ccc;
+ border-radius: 10px;
+ margin: 3px 6px;
+}
+
+.flux .item.title {
+opacity: 0.35;
+}
+.flux.favorite .item.title {
+opacity: 1;
+}
+.flux.not_read .item.title {
+opacity: 1;
+}
+.flux.current .item.title a {
+ color: #0f0f0f;
+}
+.flux .item.title a {
+ color: #333;
+}
+
+.flux_header {
+ border-top: 1px solid #ddd;
+ font-size: 0.8rem;
+ cursor: pointer;
+ box-shadow: 0 -1px rgba(255,255,255,0.28) inset;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ color: #666;
+ font-size: 0.7rem;
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+ color: #000;
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+ background: #ddd;
+ border: 0;
+ box-shadow: 0 2px 5px #ccc;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ background: #222;
+ color: #fff;
+ font-size: 0.9rem;
+ border-radius: 3px;
+}
+.content code {
+ padding: 2px 5px;
+ color: #dd1144;
+ background: #fafafa;
+ border: 1px solid #eee;
+ border-radius: 3px;
+}
+.content pre code {
+ background: transparent;
+ color: #fff;
+ border: none;
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ background: #fafafa;
+ color: #333;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ background:#222;
+ border: none;
+ border-radius: 0 0 12px 12px;
+ box-shadow: 0px 0px 4px rgba(0,0,0,0.45), 0 -1px rgba(255,255,255,0.08) inset, 0 2px 2px #171717 inset;
+ color:#fff;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ position:absolute;
+ top:0;
+ z-index: 10;
+ vertical-align: middle;
+}
+.notification.good {
+ color: #c95;
+}
+.notification.bad {
+ background: #fdd;
+ color: #844;
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 -1px 0 #aaa;
+ color: #666;
+ background: #EDE7DE;
+ box-shadow: 0 1px rgba(255,255,255,0.28)inset;
+}
+#bigMarkAsRead:hover {
+ color: #000;
+ background: #EDE7DE;
+ background: radial-gradient(circle at 50% -25% , #ccc 0%, #EDE7DE 50%);
+}
+#bigMarkAsRead:hover .bigTick {
+ text-shadow: 0 0 10px #666;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #222;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ border-top: 1px solid #171717;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+ box-shadow: 0 1px rgba(255,255,255,0.08) inset, 0 -2px 2px #171717;
+ width:235px;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+ border: none;
+ background: #f0f0f0;
+ color: #333;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+ color: #666;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+#stream.global {
+ padding: 24px 0;
+ box-shadow: 0px 8px 8px #C2BCB3 inset;
+}
+
+.box.category .box-title {
+ background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
+ box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
+ border-radius: none;
+ line-height: 2em;
+ font-size: 1.2rem;
+ text-shadow:0 1px #ccc;
+}
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+ color: #888;
+}
+.box.category:not([data-unread="0"]) .box-title {
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ color: #222;
+ font-weight: bold;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+.box.category .item.feed:not(.empty):not(.error) .item-title {
+ color: #222;
+}
+
+/*=== PANEL */
+/*===========*/
+#panel {
+ box-shadow: 0px 0px 4px #000;
+ border-radius: 8px;
+ background:#EDE7DE;
+}
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,.aside.aside_feed .nav-form select {
+ width: 130px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+ border: none;
+}
+.stat > table td,
+.stat > table th {
+ border-bottom: 1px solid #ccc;
+ background: rgba(255,255,255,0.38);
+ box-shadow: 0 1px #fff;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 250px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ overflow: hidden;
+}
+.log {
+ padding: 5px 10px;
+ background: #fafafa;
+ color: #333;
+ font-size: 0.8rem;
+}
+.log+.log {
+ border-top: 1px solid #aaa;
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+ background: #fdd;
+ color: #844;
+}
+.log.warning {
+ background: #ffe;
+ color: #c95;
+}
+.log.notice {
+ background: #f4f4f4;
+ color: #aaa;
+}
+.log.debug {
+ background: #333;
+ color: #eee;
+}
+
+#slider.active {
+ box-shadow: -4px 0 4px rgba(15, 15, 15, 0.55);
+ background: #F8F8F8;
+}
+#close-slider.active {
+ background: rgba(15, 15, 15, 0.35);
+}
+
+/*=== MOBILE */
+/*===========*/
+@media screen and (max-width: 840px) {
+ .header {
+ display: table;
+ }
+ .nav-login {
+ display: none;
+ }
+
+ .aside {
+ width: 0;
+ border-top: none;
+ box-shadow: 3px 0 3px #000;
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside:target {
+ width: 235px;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ background: #171717;
+ box-shadow: 0 1px rgba(255,255,255,0.08);
+ border-radius: 0 8px 0 8px;
+ }
+ .aside .btn-important {
+ display: inline-block;
+ margin: 20px 0 0;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ display: none;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification a.close {
+ display: block;
+ left: 0;
+ background: transparent;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+ .nav_menu .search {
+ display: none;
+ }
+
+ #nav_entries {
+ width: 100%;
+ }
+}
+
+@media (max-width: 700px) {
+ .header{
+ display: none;
+ }
+ .nav-login {
+ display: inline-block;
+ width: 100%;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ }
+ .aside .btn-important {
+ display: none;
+ }
+}
diff --git a/p/themes/Screwdriver/thumbs/original.png b/p/themes/Screwdriver/thumbs/original.png
new file mode 100644
index 000000000..ba9bacf90
--- /dev/null
+++ b/p/themes/Screwdriver/thumbs/original.png
Binary files differ
diff --git a/p/themes/base-theme/README.md b/p/themes/base-theme/README.md
new file mode 100644
index 000000000..9f7d635ca
--- /dev/null
+++ b/p/themes/base-theme/README.md
@@ -0,0 +1,12 @@
+FreshRSS-base-theme
+===================
+
+A base theme for [FreshRSS](http://freshrss.org)
+
+1. Custom ```base.css``` file with colors, backgrounds and borders
+2. Change information in ```metadata.json``` file (at least, give a name!)
+3. Choose your new theme in FreshRSS configuration
+4. Enjoy your wonderful theme!
+
+Don't hesitate to share your theme with us [on Github](https://github.com/FreshRSS/FreshRSS/issues) :)
+
diff --git a/p/themes/base-theme/base.css b/p/themes/base-theme/base.css
new file mode 100644
index 000000000..192a957c9
--- /dev/null
+++ b/p/themes/base-theme/base.css
@@ -0,0 +1,818 @@
+@charset "UTF-8";
+
+/*=== FONTS */
+@font-face {
+ font-family: "OpenSans";
+ src: url("../fonts/openSans.woff") format("woff");
+}
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ height: 100%;
+ font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
+}
+
+/*=== Links */
+a, button.as-link {
+ outline: none;
+}
+
+/*=== Forms */
+legend {
+ margin: 20px 0 5px;
+ padding: 5px 0;
+ font-size: 1.4em;
+}
+label {
+ min-height: 25px;
+ padding: 5px 0;
+ cursor: pointer;
+}
+textarea {
+ width: 360px;
+ height: 100px;
+}
+input, select, textarea {
+ min-height: 25px;
+ padding: 5px;
+ line-height: 25px;
+ vertical-align: middle;
+}
+option {
+ padding: 0 .5em;
+}
+input:focus, select:focus, textarea:focus {
+}
+input:invalid, select:invalid {
+}
+input:disabled, select:disabled {
+}
+input.extend {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+}
+
+/*=== Tables */
+table {
+ border-collapse: collapse;
+}
+
+tr, th, td {
+ padding: 0.5em;
+}
+th {
+}
+form td,
+form th {
+ font-weight: normal;
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+/*=== Forms */
+.form-group.form-actions {
+ padding: 5px 0;
+}
+.form-group.form-actions .btn {
+ margin: 0 10px;
+}
+.form-group .group-name {
+ padding: 10px 0;
+ text-align: right;
+}
+.form-group .group-controls {
+ min-height: 25px;
+ padding: 5px 0;
+}
+.form-group table {
+ margin: 10px 0 0 220px;
+}
+
+/*=== Buttons */
+.stick {
+ vertical-align: middle;
+ font-size: 0;
+}
+.stick input,
+.stick .btn {
+}
+.stick .btn:first-child,
+.stick input:first-child {
+}
+.stick .btn-important:first-child {
+}
+.stick .btn:last-child,
+.stick input:last-child {
+}
+.stick .btn + .btn,
+.stick .btn + input,
+.stick .btn + .dropdown > .btn,
+.stick input + .btn,
+.stick input + input,
+.stick input + .dropdown > .btn,
+.stick .dropdown + .btn,
+.stick .dropdown + input,
+.stick .dropdown + .dropdown > .btn {
+}
+.stick input + .btn {
+}
+.stick .btn + .dropdown > .btn {
+}
+
+.btn {
+ display: inline-block;
+ min-height: 37px;
+ min-width: 15px;
+ margin: 0;
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ vertical-align: middle;
+ cursor: pointer;
+ overflow: hidden;
+}
+a.btn {
+ min-height: 25px;
+ line-height: 25px;
+}
+.btn:hover {
+ text-decoration: none;
+}
+.btn.active,
+.btn:active,
+.dropdown-target:target ~ .btn.dropdown-toggle {
+}
+
+.btn-important {
+ font-weight: normal;
+}
+.btn-important:hover {
+}
+.btn-important:active {
+}
+
+.btn-attention {
+}
+.btn-attention:hover {
+}
+.btn-attention:active {
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ height: 2.5em;
+ line-height: 2.5em;
+ font-size: 0.9rem;
+}
+.nav-list .item:hover {
+}
+.nav-list .item:hover a {
+}
+.nav-list .item.active {
+}
+.nav-list .item.active a {
+}
+.nav-list .disable {
+ text-align: center;
+}
+.nav-list .item > a {
+ padding: 0 10px;
+}
+.nav-list a:hover {
+ text-decoration: none;
+}
+.nav-list .item.empty a {
+}
+.nav-list .item.active.empty a {
+}
+.nav-list .item.error a {
+}
+.nav-list .item.active.error a {
+}
+
+.nav-list .nav-header {
+ padding: 0 10px;
+ font-weight: bold;
+}
+
+.nav-list .nav-form {
+ padding: 3px;
+ text-align: center;
+}
+
+.nav-head {
+ margin: 0;
+ text-align: right;
+}
+.nav-head .item {
+ padding: 5px 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ margin: 0;
+ padding: 0;
+}
+.horizontal-list .item {
+ vertical-align: middle;
+}
+
+/*=== Dropdown */
+.dropdown-menu {
+ margin: 5px 0 0;
+ padding: 5px 0;
+ font-size: 0.8rem;
+ text-align: left;
+}
+.dropdown-menu::after {
+ content: "";
+ position: absolute;
+ top: -6px;
+ right: 13px;
+ width: 10px;
+ height: 10px;
+ z-index: -10;
+ transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+}
+.dropdown-header {
+ padding: 0 5px 5px;
+ font-weight: bold;
+ text-align: left;
+}
+.dropdown-menu > .item {
+}
+.dropdown-menu > .item > a {
+ padding: 0 25px;
+ line-height: 2.5em;
+}
+.dropdown-menu > .item > span,
+.dropdown-menu > .item > .as-link {
+ padding: 0 22px;
+ line-height: 2em;
+}
+.dropdown-menu > .item:hover {
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ font-weight: bold;
+ margin: 0 0 0 -14px;
+}
+.dropdown-menu > .item:hover > a {
+ text-decoration: none;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ margin: 0 auto 5px;
+ padding: 2px 5px;
+}
+
+.separator {
+ margin: 5px 0;
+}
+
+/*=== Alerts */
+.alert {
+ margin: 15px auto;
+ padding: 10px 15px;
+ font-size: 0.9em;
+}
+.alert-head {
+ font-size: 1.15em;
+}
+.alert > a {
+ text-decoration: underline;
+}
+.alert-warn {
+}
+.alert-success {
+}
+.alert-error {
+}
+
+/*=== Pagination */
+.pagination {
+ text-align: center;
+ font-size: 0.8em;
+}
+.content .pagination {
+ margin: 0;
+ padding: 0;
+}
+.pagination .item.pager-current {
+ font-weight: bold;
+ font-size: 1.5em;
+}
+.pagination .item a {
+ display: block;
+ font-style: italic;
+ line-height: 3em;
+ text-decoration: none;
+}
+.pagination .item a:hover {
+}
+.pagination:first-child .item {
+}
+.pagination:last-child .item {
+}
+
+.pagination .loading,
+.pagination a:hover.loading {
+ font-size: 0;
+}
+
+/*=== Boxes */
+.box {
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ font-weight: bold;
+}
+.tree-folder.active .tree-folder-title .title {
+}
+.tree-folder-items {
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ height: 85px;
+}
+.header > .item {
+ padding: 10px;
+ vertical-align: middle;
+ text-align: center;
+}
+.header > .item.title{
+ width: 230px;
+}
+.header > .item.title h1 {
+ margin: 0.5em 0;
+}
+.header > .item.title h1 a {
+ text-decoration: none;
+}
+.header > .item.search input {
+ width: 230px;
+}
+.header .item.search input:focus {
+ width: 350px;
+}
+
+/*=== Body */
+#global {
+ height: calc(100% - 85px);
+}
+.aside {
+}
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ margin: 10px 0 50px;
+}
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"])::after {
+ position: absolute;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+}
+
+/*=== Aside main page (feeds) */
+.feed.item.empty.active {
+}
+.feed.item.error.active {
+}
+.feed.item.empty,
+.feed.item.empty > a {
+}
+.feed.item.error,
+.feed.item.error > a {
+}
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
+}
+.aside_feed .tree-folder-items .dropdown-menu::after {
+ left: 2px;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
+}
+
+/*=== Configuration pages */
+.post {
+ padding: 10px 50px;
+ font-size: 0.9em;
+}
+.post form {
+ margin: 10px 0;
+}
+.post.content {
+ max-width: 550px;
+}
+
+/*=== Prompt (centered) */
+.prompt {
+ text-align: center;
+}
+.prompt label {
+ text-align: left;
+}
+.prompt form {
+ margin: 10px auto 20px auto;
+ width: 180px;
+}
+.prompt input {
+ margin: 5px auto;
+ width: 100%;
+}
+.prompt p {
+ margin: 20px 0;
+}
+
+/*=== New article notification */
+#new-article {
+ text-align: center;
+ font-size: 0.9em;
+}
+#new-article:hover {
+}
+#new-article > a {
+ line-height: 3em;
+ font-weight: bold;
+}
+#new-article > a:hover {
+ text-decoration: none;
+}
+
+/*=== Day indication */
+.day {
+ padding: 0 10px;
+ font-weight: bold;
+ line-height: 3em;
+}
+#new-article + .day {
+}
+.day .name {
+ padding: 0 10px 0 0;
+ font-size: 1.8em;
+ opacity: 0.3;
+ font-style: italic;
+ text-align: right;
+}
+
+/*=== Index menu */
+.nav_menu {
+ text-align: center;
+ padding: 5px 0;
+}
+
+/*=== Feed articles */
+.flux {
+}
+.flux:hover {
+}
+.flux.current {
+}
+.flux.not_read {
+}
+.flux.not_read:not(.current):hover .item.title {
+}
+.flux.favorite {
+}
+.flux.favorite:not(.current):hover .item.title {
+}
+.flux.current {
+}
+
+
+.flux_header {
+ font-size: 0.8rem;
+ cursor: pointer;
+}
+.flux_header .title {
+ font-size: 0.9rem;
+}
+.flux .website .favicon {
+ padding: 5px;
+}
+.flux .date {
+ font-size: 0.7rem;
+}
+.flux:not(.current):hover .item.title {
+}
+
+.flux .bottom {
+ font-size: 0.8rem;
+ text-align: center;
+}
+
+/*=== Content of feed articles */
+.content {
+ padding: 20px 10px;
+}
+.content > h1.title > a {
+}
+
+.content hr {
+ margin: 30px 10px;
+ height: 1px;
+}
+
+.content pre {
+ margin: 10px auto;
+ padding: 10px 20px;
+ overflow: auto;
+ font-size: 0.9rem;
+}
+.content code {
+ padding: 2px 5px;
+}
+.content pre code {
+}
+
+.content blockquote {
+ display: block;
+ margin: 0;
+ padding: 5px 20px;
+}
+.content blockquote p {
+ margin: 0;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ padding: 0 0 0 5px;
+ text-align: center;
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 3em;
+ z-index: 10;
+ vertical-align: middle;
+}
+.notification.good {
+}
+.notification.bad {
+}
+.notification a.close {
+ padding: 0 15px;
+ line-height: 3em;
+}
+.notification.good a.close:hover {
+}
+.notification.bad a.close:hover {
+}
+
+.notification#actualizeProgress {
+ line-height: 2em;
+}
+
+/*=== "Load more" part */
+#bigMarkAsRead {
+ text-align: center;
+ text-decoration: none;
+}
+#bigMarkAsRead:hover {
+}
+#bigMarkAsRead:hover .bigTick {
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ margin: 0;
+ text-align: center;
+ line-height: 3em;
+ table-layout: fixed;
+}
+
+/*=== READER VIEW */
+/*================*/
+#stream.reader .flux {
+ padding: 0 0 50px;
+}
+#stream.reader .flux .author {
+ margin: 0 0 10px;
+ font-size: 90%;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+}
+.box.category:not([data-unread="0"]) .box-title {
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+}
+.box.category:not([data-unread="0"]) .box-title .title {
+ font-weight: bold;
+}
+.box.category .title:not([data-unread="0"])::after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
+}
+.box.category .item.feed {
+ padding: 2px 10px;
+ font-size: 0.8rem;
+}
+
+/*=== DIVERS */
+/*===========*/
+.aside.aside_feed .nav-form input,
+.aside.aside_feed .nav-form select {
+ width: 140px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu {
+ right: -20px;
+}
+.aside.aside_feed .nav-form .dropdown .dropdown-menu::after {
+ right: 33px;
+}
+
+/*=== STATISTICS */
+/*===============*/
+.stat {
+ margin: 10px 0 20px;
+}
+
+.stat th,
+.stat td,
+.stat tr {
+}
+.stat > table td,
+.stat > table th {
+ text-align: center;
+}
+
+.stat > .horizontal-list {
+ margin: 0 0 5px;
+}
+.stat > .horizontal-list .item {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.stat > .horizontal-list .item:first-child {
+ width: 250px;
+}
+
+/*=== LOGS */
+/*=========*/
+.loglist {
+ overflow: hidden;
+}
+.log {
+ padding: 5px 10px;
+ font-size: 0.8rem;
+}
+.log+.log {
+}
+.log .date {
+ display: block;
+ font-weight: bold;
+}
+.log.error {
+}
+.log.warning {
+}
+.log.notice {
+}
+.log.debug {
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .aside {
+ transition: width 200ms linear;
+ -moz-transition: width 200ms linear;
+ -webkit-transition: width 200ms linear;
+ -o-transition: width 200ms linear;
+ -ms-transition: width 200ms linear;
+ }
+ .aside .toggle_aside,
+ #panel .close {
+ display: block;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ text-align: center;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+
+ .nav_menu .btn {
+ margin: 5px 10px;
+ }
+ .nav_menu .stick {
+ margin: 0 10px;
+ }
+ .nav_menu .stick .btn {
+ margin: 5px 0;
+ }
+ .nav_menu .search {
+ display: inline-block;
+ max-width: 97%;
+ }
+ .nav_menu .search input {
+ max-width: 97%;
+ width: 90px;
+ }
+ .nav_menu .search input:focus {
+ width: 400px;
+ }
+
+ .day .name {
+ font-size: 1.1rem;
+ }
+
+ .pagination {
+ margin: 0 0 3.5em;
+ }
+
+ .notification a.close {
+ display: block;
+ left: 0;
+ }
+ .notification a.close:hover {
+ opacity: 0.5;
+ }
+ .notification a.close .icon {
+ display: none;
+ }
+}
diff --git a/p/themes/base-theme/loader.gif b/p/themes/base-theme/loader.gif
new file mode 100644
index 000000000..5ff26f0e3
--- /dev/null
+++ b/p/themes/base-theme/loader.gif
Binary files differ
diff --git a/p/themes/base-theme/metadata.json b/p/themes/base-theme/metadata.json
new file mode 100644
index 000000000..4d59365a8
--- /dev/null
+++ b/p/themes/base-theme/metadata.json
@@ -0,0 +1,7 @@
+{
+ "name": "",
+ "author": "Your name",
+ "description": "A wonderful base theme",
+ "version": 0.1,
+ "files": ["template.css", "base.css"]
+}
diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css
new file mode 100644
index 000000000..cc36c3ffa
--- /dev/null
+++ b/p/themes/base-theme/template.css
@@ -0,0 +1,918 @@
+@charset "UTF-8";
+
+/*=== GENERAL */
+/*============*/
+html, body {
+ margin: 0;
+ padding: 0;
+ font-size: 100%;
+}
+
+/*=== Links */
+a {
+ text-decoration: none;
+}
+a:hover {
+ text-decoration: underline;
+}
+
+/*=== Lists */
+ul, ol, dd {
+ margin: 0;
+ padding: 0;
+}
+
+/*=== Titles */
+h1 {
+ margin: 0.6em 0 0.3em;
+ font-size: 1.5em;
+ line-height: 1.6em;
+}
+h2 {
+ margin: 0.5em 0 0.25em;
+ font-size: 1.3em;
+ line-height: 2em;
+}
+h3 {
+ margin: 0.5em 0 0.25em;
+ font-size: 1.1em;
+ line-height: 2em;
+}
+
+/*=== Paragraphs */
+p {
+ margin: 1em 0 0.5em;
+ font-size: 1em;
+}
+sup {
+ line-height: 25px;
+ position: relative;
+ top: -0.8em;
+ vertical-align: baseline;
+}
+
+/*=== Images */
+img {
+ height: auto;
+ max-width: 100%;
+}
+img.favicon {
+ height: 16px;
+ width: 16px;
+ vertical-align: middle;
+}
+
+/*=== Videos */
+iframe, embed, object, video {
+ max-width: 100%;
+}
+
+/*=== Forms */
+legend {
+ display: block;
+ width: 100%;
+ clear: both;
+}
+label {
+ display: block;
+}
+input {
+ width: 180px;
+}
+textarea,
+input[type="file"],
+input.long,
+input.extend:focus {
+ width: 300px;
+}
+input, select, textarea {
+ display: inline-block;
+ max-width: 100%;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ width: 15px !important;
+ min-height: 15px !important;
+}
+button.as-link,
+button.as-link:hover,
+button.as-link:active {
+ background: transparent;
+ border: none;
+ color: inherit;
+ cursor: pointer;
+ font-size: 1.1em;
+ text-align: left;
+}
+
+/*=== Tables */
+table {
+ max-width: 100%;
+}
+th.numeric,
+td.numeric {
+ text-align: center;
+}
+
+/*=== COMPONENTS */
+/*===============*/
+
+[aria-hidden="true"] {
+ display: none;
+}
+
+/*=== Forms */
+.form-group::after {
+ content: "";
+ display: block;
+ clear: both;
+}
+.form-group.form-actions {
+ min-width: 250px;
+}
+.form-group .group-name {
+ display: block;
+ float: left;
+ width: 200px;
+}
+.form-group .group-controls {
+ min-width: 250px;
+ margin: 0 0 0 220px;
+}
+.form-group .group-controls .control {
+ display: block;
+}
+
+/*=== Buttons */
+.stick {
+ display: inline-block;
+ white-space: nowrap;
+}
+.btn,
+a.btn {
+ display: inline-block;
+ cursor: pointer;
+ overflow: hidden;
+}
+.btn-important {
+ font-weight: bold;
+}
+
+/*=== Navigation */
+.nav-list .nav-header,
+.nav-list .item {
+ display: block;
+}
+.nav-list .item,
+.nav-list .item > a {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.nav-head {
+ display: block;
+}
+.nav-head .item {
+ display: inline-block;
+}
+
+/*=== Horizontal-list */
+.horizontal-list {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+}
+.horizontal-list .item {
+ display: table-cell;
+}
+
+/*=== Dropdown */
+.dropdown {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.dropdown-target {
+ display: none;
+}
+.dropdown-menu {
+ display: none;
+ min-width: 200px;
+ margin: 0;
+ position: absolute;
+ right: 0;
+ background: #fff;
+ border: 1px solid #aaa;
+}
+.dropdown-header {
+ display: block;
+}
+.dropdown-menu > .item {
+ display: block;
+}
+.dropdown-menu > .item > a,
+.dropdown-menu > .item > .as-link,
+.dropdown-menu > .item > span {
+ display: block;
+ min-width: 200px;
+}
+.dropdown-menu > .item[aria-checked="true"] > a::before {
+ content: '✓';
+}
+.dropdown-menu .input {
+ display: block;
+}
+.dropdown-menu .input select,
+.dropdown-menu .input input {
+ display: block;
+ max-width: 95%;
+}
+.dropdown-target:target ~ .dropdown-menu {
+ display: block;
+ z-index: 10;
+}
+.dropdown-close {
+ display: inline;
+}
+.dropdown-close a {
+ font-size: 0;
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ display: block;
+ z-index: -10;
+}
+.separator {
+ display: block;
+ height: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+/*=== Alerts */
+.alert {
+ display: block;
+ width: 90%;
+}
+.group-controls .alert {
+ width: 100%
+}
+.alert-head {
+ margin: 0;
+ font-weight: bold;
+}
+.alert ul {
+ margin: 5px 20px;
+}
+
+/*=== Icons */
+.icon {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+ line-height: 16px;
+}
+
+/*=== Pagination */
+.pagination {
+ display: table;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ table-layout: fixed;
+}
+.pagination .item {
+ display: table-cell;
+}
+.pagination .pager-first,
+.pagination .pager-previous,
+.pagination .pager-next,
+.pagination .pager-last {
+ width: 100px;
+}
+
+/*=== Boxes */
+.box {
+ display: inline-block;
+ width: 20rem;
+ max-width: 95%;
+ margin: 20px 10px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+}
+.box .box-title {
+ position: relative;
+ font-size: 1.2rem;
+ font-weight: bold;
+ text-align: center;
+}
+.box .box-title a {
+ display: block;
+}
+.box .box-title form {
+ margin: 0;
+}
+.box .box-content {
+ display: block;
+ overflow: auto;
+}
+.box .box-content .item {
+ display: block;
+}
+.box .box-content .item.disabled {
+ text-align: center;
+ font-style: italic;
+}
+
+.box .box-content-centered {
+ padding: 30px 5px;
+ text-align: center;
+}
+.box .box-content-centered .btn {
+ margin: 20px 0 0;
+}
+
+/*=== Draggable */
+.drag-hover {
+ margin: 0 0 5px;
+ border-bottom: 2px solid #ccc;
+}
+[draggable=true] {
+ cursor: grab;
+}
+
+/*=== Tree */
+.tree {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ text-align: left;
+}
+.tree-folder-items {
+ padding: 0;
+ list-style: none;
+}
+.tree-folder-title {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.tree-folder-title .title {
+ display: inline-block;
+ width: 100%;
+ vertical-align: middle;
+}
+.tree-folder-items > .item {
+ display: block;
+ white-space: nowrap;
+}
+.tree-folder-items > .item > a {
+ display: inline-block;
+ vertical-align: middle;
+ width: calc(100% - 32px);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/*=== STRUCTURE */
+/*===============*/
+/*=== Header */
+.header {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+}
+.header > .item {
+ display: table-cell;
+}
+.header > .item.title {
+ width: 250px;
+ white-space: nowrap;
+}
+.header > .item.title h1 {
+ display: inline-block;
+}
+.header > .item.title .logo {
+ display: inline-block;
+ height: 32px;
+ width: 32px;
+ vertical-align: middle;
+}
+.header > .item.configure {
+ width: 100px;
+}
+
+/*=== Body */
+#global {
+ display: table;
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+}
+.aside {
+ display: table-cell;
+ height: 100%;
+ width: 300px;
+ vertical-align: top;
+}
+
+/*=== Aside main page */
+.aside_feed .category .title {
+ width: calc(100% - 35px);
+}
+
+.aside_feed .tree-folder-title .icon {
+ padding: 5px;
+}
+.aside_feed .tree-folder-items .item.feed {
+ padding: 0px 15px;
+}
+.aside_feed .tree-folder-items:not(.active) {
+ display: none;
+}
+.aside_feed .tree-folder-items .dropdown {
+ vertical-align: top;
+}
+.aside_feed .tree-folder-items .dropdown-menu {
+ left: 0;
+}
+.aside_feed .tree-folder-items .item .dropdown-toggle > .icon {
+ visibility: hidden;
+ cursor: pointer;
+}
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ visibility: visible;
+}
+
+/*=== New article notification */
+#new-article {
+ display: none;
+}
+#new-article > a {
+ display: block;
+}
+
+/*=== Day indication */
+.day .name {
+ position: absolute;
+ right: 0;
+ width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/*=== Feed article header and footer */
+.flux_header {
+ position: relative;
+}
+.flux .item {
+ line-height: 40px;
+ white-space: nowrap;
+}
+.flux .item.manage,
+.flux .item.link {
+ width: 40px;
+ text-align: center;
+}
+.flux .item.website {
+ width: 200px;
+}
+.flux.not_read .item.title,
+.flux.current .item.title {
+ font-weight: bold;
+}
+.flux:not(.current):hover .item.title {
+ position: absolute;
+ max-width: calc(100% - 320px);
+ background: #fff;
+}
+.flux .item.title a {
+ color: #000;
+ text-decoration: none;
+}
+.flux .item.date {
+ width: 155px;
+ text-align: right;
+ overflow: hidden;
+}
+.flux .item > a {
+ display: block;
+}
+.flux .item > a {
+ display: block;
+ text-decoration: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.flux .item.share > a,
+.item.query > a {
+ display: list-item;
+ list-style-position: inside;
+ list-style-type: decimal;
+}
+
+/*=== Feed article content */
+.hide_posts > .flux:not(.active) > .flux_content {
+ display: none;
+}
+.content {
+ min-height: 20em;
+ margin: auto;
+ line-height: 1.7em;
+ word-wrap: break-word;
+}
+.content.large {
+ max-width: 1000px;
+}
+.content.medium {
+ max-width: 800px;
+}
+.content.thin {
+ max-width: 550px;
+}
+.content ul,
+.content ol,
+.content dd {
+ margin: 0 0 0 15px;
+ padding: 0 0 5px 15px;
+}
+.content pre {
+ overflow: auto;
+}
+br {
+ line-height: 1em;
+}
+br + br + br {
+ display: none;
+}
+
+/*=== Notification and actualize notification */
+.notification {
+ position: absolute;
+ top: 1em;
+ left: 25%; right: 25%;
+ z-index: 10;
+ background: #fff;
+ border: 1px solid #aaa;
+}
+.notification.closed {
+ display: none;
+}
+.notification a.close {
+ position: absolute;
+ top: 0; bottom: 0;
+ right: 0;
+ display: inline-block;
+}
+
+#actualizeProgress {
+ position: fixed;
+}
+#actualizeProgress progress {
+ max-width: 100%;
+ vertical-align: middle;
+}
+#actualizeProgress .progress {
+ vertical-align: middle;
+}
+
+/*=== Navigation menu (for articles) */
+#nav_entries {
+ position: fixed;
+ bottom: 0; left: 0;
+ display: table;
+ width: 300px;
+ background: #fff;
+ table-layout: fixed;
+}
+#nav_entries .item {
+ display: table-cell;
+ width: 30%;
+}
+#nav_entries a {
+ display: block;
+}
+
+/*=== "Load more" part */
+#load_more {
+ min-height: 40px;
+}
+.loading {
+ background: url("loader.gif") center center no-repeat;
+ font-size: 0;
+}
+#bigMarkAsRead {
+ display: block;
+ width: 100%;
+ padding: 1em 0;
+ text-align: center;
+ font-size: 1.4em;
+}
+.bigTick {
+ font-size: 4em;
+}
+
+/*=== Statistiques */
+.stat {
+ margin: 15px 0;
+}
+.stat.half {
+ display: inline-block;
+ width: 46%;
+ padding: 0 2%;
+}
+.stat > table {
+ width: 100%;
+}
+.statGraph {
+ height: 300px;
+}
+
+/*=== GLOBAL VIEW */
+/*================*/
+#stream.global {
+ text-align: center;
+}
+
+#stream.global .box {
+ text-align: left;
+}
+
+/*=== Panel */
+#overlay {
+ display: none;
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ background: rgba(0, 0, 0, 0.9);
+}
+#panel {
+ display: none;
+ position: fixed;
+ top: 1em; bottom: 1em;
+ left: 2em; right: 2em;
+ overflow: auto;
+ background: #fff;
+}
+#overlay .close {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0; right: 0;
+ display: block;
+}
+#overlay .close img {
+ display: none;
+}
+
+/*=== Slider */
+#slider {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 100%; right: 0;
+ overflow: auto;
+ background: #fff;
+ border-left: 1px solid #aaa;
+ transition: left 200ms linear;
+ -moz-transition: left 200ms linear;
+ -webkit-transition: left 200ms linear;
+ -o-transition: left 200ms linear;
+ -ms-transition: left 200ms linear;
+}
+#slider.active {
+ left: 40%;
+}
+#close-slider {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 100%; right: 0;
+ cursor: pointer;
+}
+#close-slider.active {
+ left: 0;
+}
+
+/*=== SLIDESHOW */
+/*==============*/
+.slides {
+ padding: 0;
+ height: 320px;
+ display: block;
+ position: relative;
+ min-width: 260px;
+ max-width: 640px;
+ margin-bottom: 30px;
+ border: 1px solid #aaa;
+}
+.slides input {
+ display: none;
+}
+.slide-container {
+ display: block;
+}
+.slide {
+ top: 0;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+ position: absolute;
+ transform: scale(0);
+ transition: all .7s ease-in-out;
+}
+.slide img {
+ width: 100%;
+ height: 100%;
+}
+.nav label {
+ width: 10%;
+ height: 100%;
+ display: none;
+ position: absolute;
+ opacity: 0;
+ z-index: 9;
+ cursor: pointer;
+ transition: opacity .2s;
+ color: #FFF;
+ font-size: 1000%;
+ text-align: center;
+ line-height: 225%;
+ font-family: "Varela Round", sans-serif;
+ background-color: rgba(255, 255, 255, .3);
+ text-shadow: 0px 0px 15px rgb(119, 119, 119);
+ padding: 0;
+}
+.properties {
+ display: none;
+ bottom: 0;
+ left: 0; right: 0;
+ position: absolute;
+ padding: 5px;
+ background: rgba(255, 255, 255, 0.7);
+ color: #000;
+ border-top: 1px solid #aaa;
+ z-index: 10;
+}
+.properties .page-number {
+ right: 5px;
+ top: 0;
+ position: absolute;
+}
+.slide:hover + .nav label {
+ opacity: 0.5;
+}
+.nav label:hover {
+ opacity: 1;
+}
+.nav .next {
+ right: 0;
+}
+input:checked + .slide-container .slide {
+ opacity: 1;
+ transform: scale(1);
+ transition: opacity 1s ease-in-out;
+}
+input:checked + .slide-container .nav label {
+ display: block;
+}
+input:checked + .slide-container .properties {
+ display: block;
+}
+
+/*=== DIVERS */
+/*===========*/
+.category .title:not([data-unread="0"])::after {
+ content: attr(data-unread);
+}
+.category .title.error::before {
+ content: "⚠ ";
+ color: #bd362f;
+}
+.feed .item-title:not([data-unread="0"])::before {
+ content: "(" attr(data-unread) ") ";
+}
+.feed .item-title:not([data-unread="0"]) {
+ font-weight: bold;
+}
+
+.state_unread .category:not(.active)[data-unread="0"],
+.state_unread .feed:not(.active)[data-unread="0"] {
+ display: none;
+}
+
+.nav-login,
+.nav_menu .search,
+.aside .toggle_aside,
+.nav_menu .toggle_aside {
+ display: none;
+}
+
+.enclosure > [download] {
+ font-size: xx-large;
+ margin-left: .8em;
+}
+
+/*=== MOBILE */
+/*===========*/
+@media(max-width: 840px) {
+ .header,
+ .aside .btn-important,
+ .flux_header .item.website span,
+ .item.date, .day .date,
+ .dropdown-menu > .no-mobile,
+ .no-mobile {
+ display: none;
+ }
+ .aside .toggle_aside,
+ .nav-login {
+ display: block;
+ }
+ .nav_menu .toggle_aside,
+ .nav_menu .search,
+ #panel .close img {
+ display: inline-block;
+ }
+
+ .aside {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 0;
+ width: 0;
+ overflow: hidden;
+ z-index: 100;
+ }
+ .aside:target {
+ width: 90%;
+ overflow: auto;
+ }
+
+ .flux_header .item.website {
+ width: 40px;
+ }
+
+ .flux:not(.current):hover .item.title {
+ position: relative;
+ width: auto;
+ white-space: nowrap;
+ }
+
+ .notification {
+ top: 0;
+ left: 0;
+ right: 0;
+ }
+
+ #nav_entries {
+ width: 100%;
+ }
+
+ #panel {
+ top: 25px; bottom: 30px;
+ left: 0; right: 0;
+ }
+ #panel .close {
+ top: 0; right: 0;
+ left: auto; bottom: auto;
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ }
+}
+
+/*=== PRINTER */
+/*============*/
+@media print {
+ .header, .aside,
+ .nav_menu, .day,
+ .flux_header,
+ .flux_content .bottom,
+ .pagination,
+ #nav_entries {
+ display: none;
+ }
+ html, body {
+ background: #fff;
+ color: #000;
+ font-family: Serif;
+ }
+ #global,
+ .flux_content {
+ display: block !important;
+ }
+ .flux_content .content {
+ width: 100% !important;
+ }
+ .flux_content .content a {
+ color: #000;
+ }
+ .flux_content .content a::after {
+ content: " [" attr(href) "] ";
+ font-style: italic;
+ }
+}
diff --git a/p/themes/icons/add.svg b/p/themes/icons/add.svg
index 425c9b4aa..652491775 100644
--- a/p/themes/icons/add.svg
+++ b/p/themes/icons/add.svg
@@ -1,30 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='list-add-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:object-paths='true' inkscape:cy='17.83946' inkscape:current-layer='layer12' inkscape:window-width='1920' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='false' objecttolerance='10' showgrid='true' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='0' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='1' inkscape:snap-global='true' inkscape:window-y='26' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='1021' borderopacity='1' guidetolerance='10' inkscape:snap-bbox-midpoints='false' inkscape:cx='-2.56708' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
- <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer10' inkscape:label='devices'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer11' inkscape:label='apps'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer12' inkscape:label='actions'>
-
- <path d='m 67.0002,729 0,4 -4,0 0,2 4,0 0,4 2,0 0,-4 4,0 0,-2 -4,0 0,-4 -2,0 z' id='rect31992' style='color:#666666;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
- </g>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer13' inkscape:label='places'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline'/>
- <g transform='translate(-60.0002,-726)' inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-60.0002,-726)">
+<path style="color:#666666;" fill="#666" d="m67,729,0,4-4,0,0,2,4,0,0,4,2,0,0-4,4,0,0-2-4,0,0-4-2,0z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/all.svg b/p/themes/icons/all.svg
index 2180f7a4b..aeaa96277 100644
--- a/p/themes/icons/all.svg
+++ b/p/themes/icons/all.svg
@@ -1,32 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='view-list-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='71.95215' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1198' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='1582' inkscape:snap-global='true' inkscape:window-y='85' gridtolerance='10' inkscape:window-height='1079' inkscape:snap-to-guides='true' inkscape:current-layer='layer12' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='244.57499' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer9' style='display:inline'/>
- <g inkscape:label='devices' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer12'>
-
- <rect inkscape:label='a' x='43.000397' y='748.99976' id='rect7356' height='2.0002136' width='9.9996014' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
- <rect inkscape:label='a' x='43.000397' y='752.99976' id='rect7358' height='2.0002136' width='9.9996014' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
- <rect inkscape:label='a' x='43.000397' y='756.99976' id='rect7360' height='2.0002136' width='9.9996014' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
- </g>
- <g inkscape:label='places' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-40.0002,-746)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-40.0002,-746)" fill="#bebebe">
+<rect style="color:#bebebe;" height="2.0002" width="9.9996" y="749" x="43"/>
+<rect style="color:#bebebe;" height="2.0002" width="9.9996" y="753" x="43"/>
+<rect style="color:#bebebe;" height="2.0002" width="9.9996" y="757" x="43"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/apple-touch-icon.png b/p/themes/icons/apple-touch-icon.png
new file mode 100644
index 000000000..0bbab07ea
--- /dev/null
+++ b/p/themes/icons/apple-touch-icon.png
Binary files differ
diff --git a/p/themes/icons/bookmark-add.svg b/p/themes/icons/bookmark-add.svg
new file mode 100644
index 000000000..51db9c498
--- /dev/null
+++ b/p/themes/icons/bookmark-add.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-141.0002,-807)" fill="#bebebe">
+<path d="m143,807,0,13,4-4,4,4,0-4,0-1-2,0,0-4,2,0,0-4z"/>
+<path d="m152,810,0,2-2,0,0,2,2,0,0,2,2,0,0-2,2,0,0-2-2,0,0-2-2,0z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/bookmark.svg b/p/themes/icons/bookmark.svg
index d6e2cebb5..63a44908f 100644
--- a/p/themes/icons/bookmark.svg
+++ b/p/themes/icons/bookmark.svg
@@ -1,32 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='starred-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='0.50817' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1457' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='86' inkscape:snap-global='true' inkscape:window-y='51' gridtolerance='10' inkscape:window-height='1093' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='19.029058' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
- <g inkscape:label='folder-remote' transform='translate(-186.9996,-599)' id='g11910-1'>
-
- </g>
- <path sodipodi:cy='180.96373' sodipodi:r2='3.8276224' transform='matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)' inkscape:rounded='0.2104596' inkscape:flatsided='false' inkscape:transform-center-x='-0.0094346789' inkscape:transform-center-y='-0.69491065' d='m 530.9488,186.70897 c -0.77941,0.55189 -3.15759,-1.90601 -4.11253,-1.9179 -0.95532,-0.0119 -3.39494,2.38585 -4.16096,1.8149 -0.76573,-0.57072 0.83698,-3.59203 0.55319,-4.50391 -0.2839,-0.91223 -3.31818,-2.49151 -3.01189,-3.39647 0.30617,-0.90461 3.67487,-0.31399 4.45442,-0.86567 0.77986,-0.5519 1.3442,-3.92569 2.29952,-3.91404 0.95494,0.0116 1.43421,3.39798 2.19979,3.9689 0.76588,0.57114 4.14893,0.0653 4.43307,0.97746 0.28402,0.9118 -2.78848,2.41405 -3.09488,3.31858 -0.30652,0.90489 1.21999,3.96605 0.44027,4.51815 z' id='path11922-0' sodipodi:type='star' sodipodi:arg1='0.95492637' sodipodi:r1='7.0383992' style='color:#000000;fill:#f1c40f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate' sodipodi:arg2='1.5829876' inkscape:randomized='0' sodipodi:cx='526.88293' sodipodi:sides='5'/>
- </g>
- <g inkscape:label='devices' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="enable-background:accumulate;color:#000000;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#f1c40f"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/category-white.svg b/p/themes/icons/category-white.svg
index 5e61aeea5..5bb5cecd9 100644
--- a/p/themes/icons/category-white.svg
+++ b/p/themes/icons/category-white.svg
@@ -1,31 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='folder-symbolic.svg' version='1.1' inkscape:version='0.48.0 r9654' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='-173.07332' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:window-width='1310' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='true' bordercolor='#FFFFFF' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='52' inkscape:snap-global='true' inkscape:window-y='24' gridtolerance='10' inkscape:window-height='690' inkscape:snap-to-guides='true' inkscape:current-layer='layer13' inkscape:zoom='1' inkscape:cx='-157.67647' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer9' style='display:inline'/>
- <g inkscape:label='devices' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer13'>
- <g transform='translate(234.0002,-820)' id='g14154'>
- <path inkscape:connector-curvature='0' d='m 208.53105,997 c -0.28913,0 -0.53125,0.24212 -0.53125,0.53125 l 0,13.93755 c 0,0.2985 0.23264,0.5312 0.53125,0.5312 l 14.9375,0 c 0.2986,0 0.53125,-0.2326 0.53125,-0.5312 l 0,-8.9376 c 0,-0.2891 -0.24212,-0.5312 -0.53125,-0.5312 l -12.46875,0 0,7.5 c 0,0.277 -0.223,0.5 -0.5,0.5 -0.277,0 -0.5,-0.223 -0.5,-0.5 l 0,-8 c 0,-0.277 0.223,-0.5 0.5,-0.5 l 2.96875,0 8.53125,0 0,-1.4062 c 0,-0.3272 -0.26666,-0.5938 -0.59375,-0.5938 l -7.40625,0 0,-1.46875 C 213.9998,997.2421 213.75768,997 213.46855,997 z' id='rect3845' sodipodi:nodetypes='ccccccccccsccccccccccc' style='fill:#FFFFFF;fill-opacity:1;stroke:none;display:inline'/>
-
- </g>
- </g>
- <g inkscape:label='mimetypes' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-442,-176)">
+<g transform="translate(234.0002,-820)">
+<path d="m208.53,997c-0.28913,0-0.53125,0.24212-0.53125,0.53125v13.938c0,0.2985,0.23264,0.5312,0.53125,0.5312h14.938c0.2986,0,0.53125-0.2326,0.53125-0.5312v-8.9376c0-0.2891-0.24212-0.5312-0.53125-0.5312h-12.469v7.5c0,0.277-0.223,0.5-0.5,0.5s-0.5-0.223-0.5-0.5v-8c0-0.277,0.223-0.5,0.5-0.5h2.9688,8.5312v-1.4062c0-0.3272-0.26666-0.5938-0.59375-0.5938h-7.4062v-1.4688c0-0.39-0.24-0.63-0.53-0.63z" fill="#FFF"/>
+</g>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/category.svg b/p/themes/icons/category.svg
index 71f95490e..b5470d84a 100644
--- a/p/themes/icons/category.svg
+++ b/p/themes/icons/category.svg
@@ -1,31 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='folder-symbolic.svg' version='1.1' inkscape:version='0.48.0 r9654' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='-173.07332' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:window-width='1310' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='true' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='52' inkscape:snap-global='true' inkscape:window-y='24' gridtolerance='10' inkscape:window-height='690' inkscape:snap-to-guides='true' inkscape:current-layer='layer13' inkscape:zoom='1' inkscape:cx='-157.67647' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer9' style='display:inline'/>
- <g inkscape:label='devices' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer13'>
- <g transform='translate(234.0002,-820)' id='g14154'>
- <path inkscape:connector-curvature='0' d='m 208.53105,997 c -0.28913,0 -0.53125,0.24212 -0.53125,0.53125 l 0,13.93755 c 0,0.2985 0.23264,0.5312 0.53125,0.5312 l 14.9375,0 c 0.2986,0 0.53125,-0.2326 0.53125,-0.5312 l 0,-8.9376 c 0,-0.2891 -0.24212,-0.5312 -0.53125,-0.5312 l -12.46875,0 0,7.5 c 0,0.277 -0.223,0.5 -0.5,0.5 -0.277,0 -0.5,-0.223 -0.5,-0.5 l 0,-8 c 0,-0.277 0.223,-0.5 0.5,-0.5 l 2.96875,0 8.53125,0 0,-1.4062 c 0,-0.3272 -0.26666,-0.5938 -0.59375,-0.5938 l -7.40625,0 0,-1.46875 C 213.9998,997.2421 213.75768,997 213.46855,997 z' id='rect3845' sodipodi:nodetypes='ccccccccccsccccccccccc' style='fill:#666666;fill-opacity:1;stroke:none;display:inline'/>
-
- </g>
- </g>
- <g inkscape:label='mimetypes' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-442,-176)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-442,-176)">
+<g transform="translate(234.0002,-820)">
+<path d="m208.53,997c-0.28913,0-0.53125,0.24212-0.53125,0.53125v13.938c0,0.2985,0.23264,0.5312,0.53125,0.5312h14.938c0.2986,0,0.53125-0.2326,0.53125-0.5312v-8.9376c0-0.2891-0.24212-0.5312-0.53125-0.5312h-12.469v7.5c0,0.277-0.223,0.5-0.5,0.5s-0.5-0.223-0.5-0.5v-8c0-0.277,0.223-0.5,0.5-0.5h2.9688,8.5312v-1.4062c0-0.3272-0.26666-0.5938-0.59375-0.5938h-7.4062v-1.4688c0-0.39-0.24-0.63-0.53-0.63z" fill="#666"/>
+</g>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/close.svg b/p/themes/icons/close.svg
index c0c786fd6..20d1577ab 100644
--- a/p/themes/icons/close.svg
+++ b/p/themes/icons/close.svg
@@ -1,28 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' version='1.1' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs id='defs7386'/>
- <g transform='translate(-60,-518)' id='layer9' style='display:inline'/>
- <g transform='translate(-60,-518)' id='layer10'/>
- <g transform='translate(-60,-518)' id='layer11'/>
- <g transform='translate(-60,-518)' id='layer12'>
- <g transform='translate(19,-242)' id='layer4-4-1' style='display:inline'>
-
- <path inkscape:connector-curvature='0' d='m 45,764 1,0 c 0.01037,-1.2e-4 0.02079,-4.6e-4 0.03125,0 0.254951,0.0112 0.50987,0.12858 0.6875,0.3125 L 49,766.59375 51.3125,764.3125 C 51.578125,764.082 51.759172,764.007 52,764 l 1,0 0,1 c 0,0.28647 -0.03434,0.55065 -0.25,0.75 l -2.28125,2.28125 2.25,2.25 C 52.906938,770.46942 52.999992,770.7347 53,771 l 0,1 -1,0 c -0.265301,-10e-6 -0.530586,-0.0931 -0.71875,-0.28125 L 49,769.4375 46.71875,771.71875 C 46.530586,771.90694 46.26529,772 46,772 l -1,0 0,-1 c -3e-6,-0.26529 0.09306,-0.53058 0.28125,-0.71875 l 2.28125,-2.25 L 45.28125,765.75 C 45.070508,765.55537 44.97809,765.28075 45,765 l 0,-1 z' id='path10839-9' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono'/>
- </g>
- </g>
- <g transform='translate(-60,-518)' id='layer13'/>
- <g transform='translate(-60,-518)' id='layer14'/>
- <g transform='translate(-60,-518)' id='layer15'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-60,-518)">
+<g transform="translate(19,-242)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m45,764,1,0c0.01037-0.00012,0.02079-0.00046,0.03125,0,0.25495,0.0112,0.50987,0.12858,0.6875,0.3125l2.282,2.28,2.312-2.28c0.266-0.23,0.447-0.3,0.688-0.31h1v1c0,0.28647-0.03434,0.55065-0.25,0.75l-2.2812,2.2812,2.25,2.25c0.188,0.19,0.281,0.45,0.281,0.72v1h-1c-0.2653-0.00001-0.53059-0.0931-0.71875-0.28125l-2.281-2.28-2.281,2.28c-0.188,0.19-0.454,0.28-0.719,0.28h-1v-1c-0.000003-0.26529,0.09306-0.53058,0.28125-0.71875l2.2812-2.25-2.281-2.28c-0.21-0.19-0.303-0.47-0.281-0.75v-1z" fill-rule="nonzero" fill="#bebebe"/>
+</g>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/configure.svg b/p/themes/icons/configure.svg
index 52df8bca7..2957a7abe 100644
--- a/p/themes/icons/configure.svg
+++ b/p/themes/icons/configure.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns='http://www.w3.org/2000/svg' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' width='16' sodipodi:docname='emblem-system-symbolic.svg' height='16' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' version='1.1' inkscape:version='0.48.1 r9760'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:window-height='967' inkscape:snap-bbox-midpoints='false' inkscape:snap-grids='true' inkscape:object-paths='false' pagecolor='#555753' inkscape:zoom='1' inkscape:current-layer='layer15' borderopacity='1' inkscape:snap-others='false' inkscape:window-x='2259' inkscape:window-y='356' inkscape:snap-to-guides='true' gridtolerance='10' id='namedview88' inkscape:snap-global='true' inkscape:cx='9.30971' inkscape:cy='-0.23089111' bordercolor='#666666' inkscape:window-width='1226' inkscape:snap-bbox='true' guidetolerance='10' showguides='true' showborder='false' inkscape:guide-bbox='true' inkscape:object-nodes='false' inkscape:pageopacity='1' inkscape:window-maximized='0' objecttolerance='10' showgrid='false' inkscape:snap-nodes='true' inkscape:bbox-paths='false' inkscape:pageshadow='2'>
- <inkscape:grid visible='true' spacingx='1px' spacingy='1px' id='grid4866' type='xygrid' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' id='layer9' style='display:inline' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='devices' id='layer10' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='apps' id='layer11' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='places' id='layer13' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='mimetypes' id='layer14' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='emblems' id='layer15' style='display:inline' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'>
-
- <path id='path35543-6-4' d='m 449.0004,402.00002 c -0.22065,0 -0.44081,0.0113 -0.65625,0.0312 l -0.40625,2.09375 c -0.33446,0.0733 -0.66305,0.17589 -0.96875,0.3125 l -1.53125,-1.46875 c -0.38863,0.23011 -0.72695,0.51408 -1.0625,0.8125 l 0.90625,1.90625 c -0.22242,0.24899 -0.42425,0.5225 -0.59375,0.8125 l -2.09375,-0.28125 c -0.17772,0.40877 -0.30872,0.83637 -0.40625,1.28125 l 1.84375,1 c -0.0171,0.16809 -0.0312,0.3274 -0.0312,0.5 0,0.1726 0.0142,0.33191 0.0312,0.5 l -1.84375,1 c 0.0975,0.44488 0.22853,0.87248 0.40625,1.28125 l 2.09375,-0.28125 c 0.1695,0.29 0.37133,0.56351 0.59375,0.8125 l -0.90625,1.90625 c 0.33555,0.29842 0.67387,0.58239 1.0625,0.8125 l 1.53125,-1.46875 c 0.3057,0.13661 0.63429,0.23916 0.96875,0.3125 l 0.40625,2.09375 c 0.21544,0.02 0.4356,0.0312 0.65625,0.0312 0.22065,0 0.44081,-0.0113 0.65625,-0.0312 l 0.40625,-2.09375 c 0.33446,-0.0733 0.66305,-0.17589 0.96875,-0.3125 l 1.53125,1.46875 c 0.38863,-0.23011 0.72695,-0.51408 1.0625,-0.8125 l -0.90625,-1.90625 c 0.22242,-0.24899 0.42425,-0.5225 0.59375,-0.8125 l 2.09375,0.28125 c 0.17772,-0.40877 0.30872,-0.83637 0.40625,-1.28125 l -1.84375,-1 c 0.0171,-0.16809 0.0312,-0.3274 0.0312,-0.5 0,-0.1726 -0.0142,-0.33191 -0.0312,-0.5 l 1.84375,-1 c -0.0975,-0.44488 -0.22853,-0.87248 -0.40625,-1.28125 l -2.09375,0.28125 c -0.1695,-0.29 -0.37133,-0.56351 -0.59375,-0.8125 l 0.90625,-1.90625 c -0.33555,-0.29842 -0.67387,-0.58239 -1.0625,-0.8125 l -1.53125,1.46875 c -0.3057,-0.13661 -0.63429,-0.23916 -0.96875,-0.3125 l -0.40625,-2.09375 c -0.21544,-0.02 -0.4356,-0.0312 -0.65625,-0.0312 z m 0,4 c 1.65685,0 3,1.34315 3,3 0,1.65685 -1.34315,3 -3,3 -1.65685,0 -3,-1.34315 -3,-3 0,-1.65685 1.34315,-3 3,-3 z' style='color:#666666;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate' inkscape:connector-curvature='0' sodipodi:nodetypes='sccccccccccsccccccccccsccccccccccsccccccccccssssss'/>
- </g>
- <g inkscape:label='emotes' id='g71291' style='display:inline' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='categories' id='g4953' style='display:inline' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
- <g inkscape:label='actions' id='layer12' style='display:inline' transform='translate(-441.0002,-400.99999)' inkscape:groupmode='layer'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-441.0002,-400.99999)">
+<path style="color:#666666;enable-background:accumulate;" d="m449,402c-0.22065,0-0.44081,0.0113-0.65625,0.0312l-0.40625,2.0938c-0.33446,0.0733-0.66305,0.17589-0.96875,0.3125l-1.5312-1.4688c-0.38863,0.23011-0.72695,0.51408-1.0625,0.8125l0.90625,1.9062c-0.22242,0.24899-0.42425,0.5225-0.59375,0.8125l-2.0938-0.28125c-0.17772,0.40877-0.30872,0.83637-0.40625,1.2812l1.8438,1c-0.0171,0.16809-0.0312,0.3274-0.0312,0.5s0.0142,0.33191,0.0312,0.5l-1.8438,1c0.0975,0.44488,0.22853,0.87248,0.40625,1.2812l2.0938-0.28125c0.1695,0.29,0.37133,0.56351,0.59375,0.8125l-0.90625,1.9062c0.33555,0.29842,0.67387,0.58239,1.0625,0.8125l1.5312-1.4688c0.3057,0.13661,0.63429,0.23916,0.96875,0.3125l0.40625,2.0938c0.21544,0.02,0.4356,0.0312,0.65625,0.0312s0.44081-0.0113,0.65625-0.0312l0.40625-2.0938c0.33446-0.0733,0.66305-0.17589,0.96875-0.3125l1.5312,1.4688c0.38863-0.23011,0.72695-0.51408,1.0625-0.8125l-0.90625-1.9062c0.22242-0.24899,0.42425-0.5225,0.59375-0.8125l2.0938,0.28125c0.17772-0.40877,0.30872-0.83637,0.40625-1.2812l-1.8438-1c0.0171-0.16809,0.0312-0.3274,0.0312-0.5s-0.0142-0.33191-0.0312-0.5l1.8438-1c-0.0975-0.44488-0.22853-0.87248-0.40625-1.2812l-2.0938,0.28125c-0.1695-0.29-0.37133-0.56351-0.59375-0.8125l0.90625-1.9062c-0.33555-0.29842-0.67387-0.58239-1.0625-0.8125l-1.5312,1.4688c-0.3057-0.13661-0.63429-0.23916-0.96875-0.3125l-0.40625-2.0938c-0.21544-0.02-0.4356-0.0312-0.65625-0.0312zm0,4c1.6568,0,3,1.3432,3,3s-1.3432,3-3,3-3-1.3432-3-3,1.3432-3,3-3z" fill-rule="nonzero" fill="#666"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/default_favicon.ico b/p/themes/icons/default_favicon.ico
new file mode 100644
index 000000000..e4d5e8f67
--- /dev/null
+++ b/p/themes/icons/default_favicon.ico
Binary files differ
diff --git a/p/themes/icons/down.svg b/p/themes/icons/down.svg
index 06d031fae..8a234ee99 100644
--- a/p/themes/icons/down.svg
+++ b/p/themes/icons/down.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='go-down-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.4 r9939' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-nodes='false' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='18.648774' inkscape:cy='9.99302' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1408' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='60px' originy='530px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-181.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-181.0002,-747)'>
-
- <path inkscape:connector-curvature='0' d='m 195.03152,751.00323 0,1.00001 c -9.1e-4,0.0111 5.9e-4,0.021 -9e-5,0.0312 -0.0112,0.25496 -0.12835,0.50994 -0.31251,0.6875 l -5.71875,6.29767 -5.71875,-6.29773 c -0.18821,-0.1881 -0.28121,-0.45346 -0.28122,-0.71875 l 0,-1.00001 1,0 c 0.26531,7e-5 0.53059,0.0931 0.71873,0.28131 l 4.28125,4.82896 4.28127,-4.82896 c 0.19464,-0.21073 0.46925,-0.30315 0.74998,-0.2813 z' id='path10839-9-9-5-9-1' sodipodi:nodetypes='ccsccccccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono'/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-181.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m195.03,751,0,1c-0.00091,0.0111,0.00059,0.021-0.00009,0.0312-0.0112,0.25496-0.12835,0.50994-0.31251,0.6875l-5.7188,6.2977-5.7188-6.2977c-0.18821-0.1881-0.28121-0.45346-0.28122-0.71875v-1h1c0.26531,0.00007,0.53059,0.0931,0.71873,0.28131l4.2812,4.829,4.2813-4.829c0.19464-0.21073,0.46925-0.30315,0.74998-0.2813z" fill-rule="nonzero" fill="#bebebe"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/favicon.svg b/p/themes/icons/favicon.svg
index a44f0a1c0..a252050b9 100644
--- a/p/themes/icons/favicon.svg
+++ b/p/themes/icons/favicon.svg
@@ -1,11 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<title>Logo FreshRSS</title>
-
<circle fill="#FFF" cx="128" cy="128" r="128"/>
-
<circle fill="#0062BE" cx="128" cy="128" r="33"/>
-
<g fill="none" stroke="#0062BE" stroke-width="24">
<g stroke-opacity="0.3">
<path d="M12,128 A116,116 0 1,1 128,244"/>
diff --git a/p/themes/icons/help.svg b/p/themes/icons/help.svg
index b103ec46d..9a0022f76 100644
--- a/p/themes/icons/help.svg
+++ b/p/themes/icons/help.svg
@@ -1,32 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='help-browser-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:object-paths='true' inkscape:cy='-218.16054' inkscape:current-layer='layer11' inkscape:window-width='1920' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='false' objecttolerance='10' showgrid='true' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='0' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='1' inkscape:snap-global='true' inkscape:window-y='26' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='1021' borderopacity='1' guidetolerance='10' inkscape:snap-bbox-midpoints='false' inkscape:cx='-124.56688' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
- <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer10' inkscape:label='devices'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer11' inkscape:label='apps'>
- <path d='m 190,490 c -4.4147,0 -8,3.5853 -8,8 0,4.4147 3.5853,8 8,8 4.4147,0 8,-3.5853 8,-8 0,-4.4147 -3.5853,-8 -8,-8 z m 0,2 c 3.3413,0 6,2.6587 6,6 0,3.3413 -2.6587,6 -6,6 -3.3413,0 -6,-2.6587 -6,-6 0,-3.3413 2.6587,-6 6,-6 z' id='rect11749-5-0-3' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
-
- <path d='M 189.34375,495 C 188.05763,495 187,496.05763 187,497.34375 l 0,1.3125 c 0,1.28612 1.05763,2.34375 2.34375,2.34375 l 1.3125,0 C 191.94237,501 193,499.94237 193,498.65625 l 0,-1.3125 C 193,496.05763 191.94237,495 190.65625,495 l -1.3125,0 z m 0,1 1.3125,0 c 0.74942,0 1.34375,0.59433 1.34375,1.34375 l 0,1.3125 C 192,499.40567 191.40567,500 190.65625,500 l -1.3125,0 C 188.59433,500 188,499.40567 188,498.65625 l 0,-1.3125 C 188,496.59433 188.59433,496 189.34375,496 z' id='rect11749-5-0-3-3' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
- <path inkscape:connector-curvature='0' d='m 186.71875,491.4375 c -1.51031,0.6073 -2.6811,1.7985 -3.28125,3.3125 l 3.75,1.875 c 0.25196,-0.64029 0.74249,-1.17056 1.375,-1.4375 l -1.84375,-3.75 z m 6.5625,0 -1.84375,3.75 c 0.63251,0.26694 1.12304,0.79721 1.375,1.4375 l 3.75,-1.875 c -0.60015,-1.514 -1.77094,-2.7052 -3.28125,-3.3125 z m -6.09375,8 -3.75,1.875 c 0.60709,1.48862 1.78896,2.64995 3.28125,3.25 l 1.875,-3.75 c -0.62682,-0.25556 -1.14334,-0.75203 -1.40625,-1.375 z m 5.625,0 c -0.26291,0.62297 -0.77943,1.11944 -1.40625,1.375 l 1.875,3.75 c 1.49229,-0.60005 2.67416,-1.76138 3.28125,-3.25 l -3.75,-1.875 z' id='path4624' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
- </g>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer12' inkscape:label='actions'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer13' inkscape:label='places'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline'/>
- <g transform='translate(-182,-490)' inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-182,-490)" fill="#bebebe">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m190,490c-4.4147,0-8,3.5853-8,8s3.5853,8,8,8,8-3.5853,8-8-3.5853-8-8-8zm0,2c3.3413,0,6,2.6587,6,6s-2.6587,6-6,6-6-2.6587-6-6,2.6587-6,6-6z"/>
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="M189.34,495c-1.28,0-2.34,1.06-2.34,2.34v1.3125c0,1.2861,1.0576,2.3438,2.3438,2.3438h1.3125c1.29,0.01,2.35-1.05,2.35-2.33v-1.3125c0-1.29-1.06-2.35-2.34-2.35h-1.3125zm0,1,1.3125,0c0.74942,0,1.3438,0.59433,1.3438,1.3438v1.3125c0.01,0.76-0.58,1.35-1.33,1.35h-1.3125c-0.76,0-1.35-0.59-1.35-1.34v-1.3125c0-0.76,0.59-1.35,1.34-1.35z"/>
+<path d="m186.72,491.44c-1.5103,0.6073-2.6811,1.7985-3.2812,3.3125l3.75,1.875c0.25196-0.64029,0.74249-1.1706,1.375-1.4375l-1.8438-3.75zm6.5625,0-1.8438,3.75c0.63251,0.26694,1.123,0.79721,1.375,1.4375l3.75-1.875c-0.60015-1.514-1.7709-2.7052-3.2812-3.3125zm-6.0938,8-3.75,1.875c0.60709,1.4886,1.789,2.65,3.2812,3.25l1.875-3.75c-0.62682-0.25556-1.1433-0.75203-1.4062-1.375zm5.625,0c-0.26291,0.62297-0.77943,1.1194-1.4062,1.375l1.875,3.75c1.4923-0.60005,2.6742-1.7614,3.2812-3.25l-3.75-1.875z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/icon.svg b/p/themes/icons/icon.svg
index 742c04b6e..caa987dac 100644
--- a/p/themes/icons/icon.svg
+++ b/p/themes/icons/icon.svg
@@ -1,9 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<title>Logo FreshRSS</title>
-
<circle fill="#0062BE" cx="128" cy="128" r="33"/>
-
<g fill="none" stroke="#0062BE" stroke-width="24">
<g stroke-opacity="0.3">
<path d="M12,128 A116,116 0 1,1 128,244"/>
diff --git a/p/themes/icons/import.svg b/p/themes/icons/import.svg
new file mode 100644
index 000000000..18a54ab59
--- /dev/null
+++ b/p/themes/icons/import.svg
@@ -0,0 +1 @@
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="16"><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"><path d="m84.406 657a0.5 0.5 0 0 0-0.312 0.219l-1 1.5a0.5 0.5 0 1 0 0.813 0.563l1-1.5A0.5 0.5 0 0 0 84.406 657zm7 0a0.5 0.5 0 0 0-0.312 0.781l1 1.5a0.5 0.5 0 1 0 0.813-0.562l-1-1.5A0.5 0.5 0 0 0 91.406 657z" style="-inkscape-font-specification:Sans;baseline-shift:baseline;block-progression:tb;direction:ltr;fill:#ffffff;font-family:Sans;font-size:medium;letter-spacing:normal;line-height:normal;text-align:start;text-anchor:start;text-decoration:none;text-indent:0;text-transform:none;word-spacing:normal;writing-mode:lr-tb"/><g transform="translate(-80,110)"><path d="m167 539 0 5.563-1.281-1.281C165.531 543.093 165.265 543 165 543l-1 0 0 1c0 0.265 0.093 0.531 0.281 0.719l3 3 0.281 0.281 0.875 0 0.281-0.281 3-3C171.907 544.531 172 544.265 172 544l0-1-1 0c-0.265 0-0.531 0.093-0.719 0.281L169 544.563 169 539z" style="-inkscape-font-specification:Bitstream Vera Sans;block-progression:tb;direction:ltr;fill:#ffffff;font-family:Bitstream Vera Sans;font-size:medium;letter-spacing:normal;line-height:normal;text-align:start;text-anchor:start;text-decoration:none;text-indent:0;text-transform:none;word-spacing:normal;writing-mode:lr-tb"/><path d="m163 549 0 4 10 0 0-4zm3.344 1.438c0.021-0.001 0.042-0.001 0.063 0 0.291-0.056 0.599 0.204 0.594 0.5l0 0.063 2 0 0-0.062c-0.004-0.264 0.236-0.507 0.5-0.507 0.264 0 0.504 0.243 0.5 0.507L170 551c0 0.545-0.455 1-1 1l-2 0c-0.545 0-1-0.455-1-1l0-0.062c-0.011-0.217 0.137-0.432 0.344-0.5z" fill="#ffffff"/></g></g><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/></svg>
diff --git a/p/themes/icons/key.svg b/p/themes/icons/key.svg
new file mode 100644
index 000000000..9193f4552
--- /dev/null
+++ b/p/themes/icons/key.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(-340.99994,-257)" fill="#666666">
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m346,260c-2.7496,0-5,2.2504-5,5s2.2504,5,5,5c1.5862,0,2.9034-0.84459,3.8125-2h4.8438,0.75l0.21875-0.75,1.0312-4,0.3125-1.25h-1.2812-5.875c-0.90914-1.1554-2.2263-2-3.8125-2zm0,2c1.1158,0,2.0379,0.59507,2.5625,1.5l0.3125,0.5h0.5625,4.9688l-0.53125,2h-4.4375-0.5625l-0.3125,0.5c-0.52462,0.90493-1.4466,1.5-2.5625,1.5-1.6687,0-3-1.3313-3-3s1.3313-3,3-3z"/>
+<path opacity="0.35" style="enable-background:accumulate;color:#000000;" d="M355.5,265,350,265,349.44,267,355,267z" fill-rule="nonzero"/>
+<path style="enable-background:accumulate;color:#000000;" d="m346,265c0,0.55228-0.44772,1-1,1s-1-0.44772-1-1,0.44772-1,1-1,1,0.44772,1,1z" fill-rule="nonzero"/>
+</g>
+</svg>
diff --git a/p/themes/icons/link.svg b/p/themes/icons/link.svg
index ddc8e0706..e5290af76 100644
--- a/p/themes/icons/link.svg
+++ b/p/themes/icons/link.svg
@@ -1,33 +1,7 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' id='svg7384' sodipodi:docname='web-browser-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' width='16' xmlns='http://www.w3.org/2000/svg' height='16.00366'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:object-paths='false' inkscape:current-layer='layer11' inkscape:bbox-paths='false' inkscape:pageshadow='2' inkscape:snap-bbox='true' inkscape:pageopacity='1' inkscape:guide-bbox='true' pagecolor='#555753' bordercolor='#666666' showguides='true' inkscape:snap-bbox-midpoints='false' inkscape:window-maximized='0' inkscape:snap-grids='true' inkscape:window-width='1595' id='namedview88' inkscape:window-x='2191' inkscape:window-y='111' gridtolerance='10' borderopacity='1' showgrid='false' inkscape:cx='21.026784' inkscape:cy='2.9913602' inkscape:snap-nodes='false' inkscape:window-height='1162' inkscape:snap-global='true' inkscape:object-nodes='false' objecttolerance='10' inkscape:snap-others='false' inkscape:zoom='1' guidetolerance='10' inkscape:snap-to-guides='true' showborder='false'>
- <inkscape:grid enabled='true' type='xygrid' id='grid4866' visible='true' snapvisiblegridlinesonly='true' empspacing='2' spacingx='1px' spacingy='1px'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g style='display:inline' inkscape:groupmode='layer' id='layer9' inkscape:label='status' transform='translate(-183,-529)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-183,-529)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-183,-529)'>
-
- <path style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate' sodipodi:nodetypes='cccccccc' id='path6242' inkscape:connector-curvature='0' d='m 191.0002,533.84553 0,10.38049 -2.34399,-2.28818 -1.33941,2.73465 c -0.32808,0.73962 -2.03368,0.14492 -1.5487,-0.84412 l 1.32547,-2.83928 -2.95789,0 6.86452,-7.14356 z'/>
- <path style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans' sodipodi:nodetypes='csccssccsssc' id='path23405' inkscape:connector-curvature='0' d='m 190.15645,530.0625 c -3.82659,0.46006 -6.57883,3.95775 -6.09375,7.78125 0.13127,1.03473 0.29377,1.38184 0.29377,1.38184 l 1.67498,-1.63184 c -0.33104,-2.75343 1.62156,-5.23146 4.375,-5.5625 2.75344,-0.33104 5.23146,1.62156 5.5625,4.375 0.31355,2.60795 -1.39127,5.02493 -3.96875,5.53125 l 0.0312,2 c 0,0 0.52086,-0.1059 0.62354,-0.13097 3.41561,-0.83385 5.70627,-4.1273 5.28271,-7.65028 -0.46006,-3.8266 -3.95466,-6.55381 -7.78125,-6.09375 z'/>
- <path style='opacity:0.3;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate' id='path11289' inkscape:connector-curvature='0' d='m 187.11293,536.81497 0,-0.20574 -0.19826,0.0186 c 0.0165,-0.13095 0.0329,-0.26167 0.0496,-0.3926 l -0.11578,0 -0.11556,0.14959 -0.11578,0.0559 -0.1653,-0.0932 -0.0165,-0.20575 0.0331,-0.22438 0.24798,-0.18688 0.19826,0 0.0329,-0.11229 0.24786,0.0559 0.18183,0.2246 0.0331,-0.37419 0.31401,-0.26167 0.11567,-0.28055 0.23133,-0.0934 0.1322,-0.18688 0.29738,-0.0564 0.14885,-0.22415 c -0.14874,0 -0.29749,0 -0.44623,0 l 0.28094,-0.13095 0.19814,0 0.28106,-0.0937 0.0331,-0.11186 -0.0992,-0.0937 -0.11567,-0.0375 0.0331,-0.11208 -0.0826,-0.16822 -0.19837,0.0746 0.0331,-0.14947 -0.23134,-0.13096 -0.18171,0.3177 0.0165,0.11229 -0.18171,0.075 -0.11578,0.24302 -0.0495,-0.22438 -0.31402,-0.13095 -0.0496,-0.16822 0.41315,-0.24325 0.18182,-0.16822 0.0165,-0.20563 -0.0991,-0.0562 -0.13219,-0.0188 -0.0826,0.20575 c 0,0 -0.1382,0.0271 -0.17373,0.0358 -0.45378,0.41804 -1.37066,1.32044 -1.58368,3.02405 0.008,0.0395 0.15441,0.26854 0.15441,0.26854 l 0.347,0.20552 0.347,0.0937 m 3.96609,-4.30034 -0.4298,-0.16833 -0.49552,0.0561 -0.61161,0.16822 -0.11567,0.11229 0.38008,0.26167 0,0.14959 -0.14875,0.14959 0.19846,0.39294 0.13188,-0.075 0.16561,-0.26168 c 0.2553,-0.0789 0.4842,-0.16833 0.72686,-0.28053 l 0.19846,-0.5048 m 2.52925,0.34192 -0.375,0.0937 -0.21875,0.15625 0,0.125 -0.375,0.25 0.0937,0.34375 0.21875,-0.15625 0.125,0.15625 0.15625,0.0937 0.0937,-0.28125 -0.0625,-0.15625 0.0625,-0.0937 0.21875,-0.1875 0.0937,0 -0.0937,0.21875 0,0.1875 c 0.0892,-0.0242 0.1588,-0.051 0.25,-0.0625 l -0.25,0.1875 0,0.125 -0.3125,0.21875 -0.28125,-0.0625 0,-0.15625 -0.125,0.0625 0.0625,0.15625 -0.21875,0 -0.125,0.21875 -0.15625,0.15625 -0.0937,0.0312 0,0.1875 0.0312,0.15625 -0.0312,0 0,0.53125 0.0625,-0.0312 0.0937,-0.21875 0.1875,-0.125 0.0312,-0.0937 0.28125,-0.0625 0.15625,0.1875 0.1875,0.0937 -0.0937,0.1875 0.15625,-0.0312 0.0625,-0.21875 -0.1875,-0.21875 0.0625,0 0.21875,0.15625 0.0312,0.21875 0.15625,0.21875 0.0625,-0.3125 0.0937,-0.0312 c 0.0959,0.0996 0.1692,0.23163 0.25,0.34375 l 0.28125,0 0.1875,0.125 -0.0937,0.0937 -0.15625,0.15625 -0.25,0 -0.34375,-0.0937 -0.1875,0 -0.125,0.15625 -0.34375,-0.375 -0.25,-0.0625 -0.375,0.0625 -0.15625,0.0937 0,2.40625 0.0312,0.0312 0.25,-0.15625 0.0937,0.0937 0.28125,0 0.125,0.15625 -0.0937,0.3125 0.1875,0.1875 0,0.375 0.125,0.25 -0.0937,0.25 c -0.009,0.16159 0,0.30714 0,0.46875 0.0795,0.21894 0.14355,0.43575 0.21875,0.65625 l 0.0625,0.34375 0,0.1875 0.125,0 0.21875,-0.125 0.25,0 0.375,-0.4375 -0.0312,-0.15625 0.25,-0.21875 -0.1875,-0.1875 0.21875,-0.1875 0.21875,-0.125 0.0937,-0.125 -0.0625,-0.25 0,-0.59375 0.1875,-0.375 0.1875,-0.25 0.25,-0.5625 0,-0.15625 c -0.11654,0.0146 -0.22972,0.0231 -0.34375,0.0312 -0.0722,0.005 -0.14446,0 -0.21875,0 -0.12359,-0.25961 -0.2183,-0.50966 -0.3125,-0.78125 l -0.15625,-0.1875 -0.0937,-0.3125 0.0625,-0.0625 0.21875,0.25 0.25,0.5625 0.15625,0.15625 -0.0625,0.21875 0.15625,0.15625 0.25,-0.25 0.3125,-0.21875 0.15625,-0.1875 0,-0.21875 c -0.0389,-0.0732 -0.0547,-0.14545 -0.0937,-0.21875 l -0.15625,0.1875 -0.125,-0.15625 -0.1875,-0.125 0,-0.28125 0.21875,0.21875 0.21875,-0.0312 c 0.10166,0.0923 0.19205,0.20751 0.28125,0.3125 l 0.15625,-0.1875 c 0,-0.17463 -0.19976,-1.02044 -0.625,-1.75 -0.42526,-0.72932 -1.15625,-1.40625 -1.15625,-1.40625 l -0.0625,0.0937 -0.21875,0.21875 -0.25,-0.25 0.25,0 0.125,-0.125 -0.46875,-0.0937 -0.25,-0.0937 z'/>
- </g>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-183,-529)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-183,-529)'/>
- <g style='display:inline' inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' transform='translate(-183,-529)'/>
- <g style='display:inline' inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' transform='translate(-183,-529)'/>
- <g style='display:inline' inkscape:groupmode='layer' id='g4953' inkscape:label='categories' transform='translate(-183,-529)'/>
- <g style='display:inline' inkscape:groupmode='layer' id='layer12' inkscape:label='actions' transform='translate(-183,-529)'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16.004" width="16">
+<g fill="#bebebe" transform="translate(-183,-529)">
+<path style="enable-background:accumulate;color:#000000;" d="m191,533.85,0,10.38-2.344-2.2882-1.3394,2.7346c-0.32808,0.73962-2.0337,0.14492-1.5487-0.84412l1.3255-2.8393h-2.9579l6.8645-7.1436z" fill-rule="nonzero" display="block"/>
+<path d="m190.16,530.06c-3.8266,0.46006-6.5788,3.9578-6.0938,7.7812,0.13127,1.0347,0.29377,1.3818,0.29377,1.3818l1.675-1.6318c-0.33104-2.7534,1.6216-5.2315,4.375-5.5625,2.7534-0.33104,5.2315,1.6216,5.5625,4.375,0.31355,2.608-1.3913,5.0249-3.9688,5.5312l0.0312,2s0.52086-0.1059,0.62354-0.13097c3.4156-0.83385,5.7063-4.1273,5.2827-7.6503-0.46006-3.8266-3.9547-6.5538-7.7812-6.0938z" style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;"/>
+<path opacity="0.3" style="enable-background:accumulate;color:#000000;" d="m187.11,536.81,0-0.20574-0.19826,0.0186c0.0165-0.13095,0.0329-0.26167,0.0496-0.3926h-0.11578l-0.11556,0.14959-0.11578,0.0559-0.1653-0.0932-0.0165-0.20575,0.0331-0.22438,0.24798-0.18688h0.19826l0.0329-0.11229,0.24786,0.0559,0.18183,0.2246,0.0331-0.37419,0.31401-0.26167,0.11567-0.28055,0.23133-0.0934,0.1322-0.18688,0.29738-0.0564,0.14885-0.22415h-0.44623l0.28094-0.13095h0.19814l0.28106-0.0937,0.0331-0.11186-0.0992-0.0937-0.11567-0.0375,0.0331-0.11208-0.0826-0.16822-0.19837,0.0746,0.0331-0.14947-0.23134-0.13096-0.18171,0.3177,0.0165,0.11229-0.18171,0.075-0.11578,0.24302-0.0495-0.22438-0.31402-0.13095-0.0496-0.16822,0.41315-0.24325,0.18182-0.16822,0.0165-0.20563-0.0991-0.0562-0.13219-0.0188-0.0826,0.20575s-0.1382,0.0271-0.17373,0.0358c-0.45378,0.41804-1.3707,1.3204-1.5837,3.024,0.008,0.0395,0.15441,0.26854,0.15441,0.26854l0.347,0.20552,0.347,0.0937m3.9661-4.3003-0.4298-0.16833-0.49552,0.0561-0.61161,0.16822-0.11567,0.11229,0.38008,0.26167,0,0.14959-0.14875,0.14959,0.19846,0.39294,0.13188-0.075,0.16561-0.26168c0.2553-0.0789,0.4842-0.16833,0.72686-0.28053l0.19846-0.5048m2.5292,0.34192-0.375,0.0937-0.21875,0.15625,0,0.125-0.375,0.25,0.0937,0.34375,0.21875-0.15625,0.125,0.15625,0.15625,0.0937,0.0937-0.28125-0.0625-0.15625,0.0625-0.0937,0.21875-0.1875,0.0937,0-0.0937,0.21875,0,0.1875c0.0892-0.0242,0.1588-0.051,0.25-0.0625l-0.25,0.1875v0.125l-0.3125,0.21875-0.28125-0.0625v-0.15625l-0.125,0.0625,0.0625,0.15625h-0.21875l-0.125,0.21875-0.15625,0.15625-0.0937,0.0312v0.1875l0.0312,0.15625h-0.0312v0.53125l0.0625-0.0312,0.0937-0.21875,0.1875-0.125,0.0312-0.0937,0.28125-0.0625,0.15625,0.1875,0.1875,0.0937-0.0937,0.1875,0.15625-0.0312,0.0625-0.21875-0.1875-0.21875h0.0625l0.21875,0.15625,0.0312,0.21875,0.15625,0.21875,0.0625-0.3125,0.0937-0.0312c0.0959,0.0996,0.1692,0.23163,0.25,0.34375h0.28125l0.1875,0.125-0.0937,0.0937-0.15625,0.15625h-0.25l-0.34375-0.0937h-0.1875l-0.125,0.15625-0.34375-0.375-0.25-0.0625-0.375,0.0625-0.15625,0.0937v2.4062l0.0312,0.0312,0.25-0.15625,0.0937,0.0937h0.28125l0.125,0.15625-0.0937,0.3125,0.1875,0.1875v0.375l0.125,0.25-0.0937,0.25c-0.009,0.16159,0,0.30714,0,0.46875,0.0795,0.21894,0.14355,0.43575,0.21875,0.65625l0.0625,0.34375v0.1875h0.125l0.21875-0.125h0.25l0.375-0.4375-0.0312-0.15625,0.25-0.21875-0.1875-0.1875,0.21875-0.1875,0.21875-0.125,0.0937-0.125-0.0625-0.25v-0.59375l0.1875-0.375,0.1875-0.25,0.25-0.5625v-0.15625c-0.11654,0.0146-0.22972,0.0231-0.34375,0.0312-0.0722,0.005-0.14446,0-0.21875,0-0.12359-0.25961-0.2183-0.50966-0.3125-0.78125l-0.15625-0.1875-0.0937-0.3125,0.0625-0.0625,0.21875,0.25,0.25,0.5625,0.15625,0.15625-0.0625,0.21875,0.15625,0.15625,0.25-0.25,0.3125-0.21875,0.15625-0.1875v-0.21875c-0.0389-0.0732-0.0547-0.14545-0.0937-0.21875l-0.15625,0.1875-0.125-0.15625-0.1875-0.125v-0.28125l0.21875,0.21875,0.21875-0.0312c0.10166,0.0923,0.19205,0.20751,0.28125,0.3125l0.15625-0.1875c0-0.17463-0.19976-1.0204-0.625-1.75-0.42526-0.72932-1.1562-1.4062-1.1562-1.4062l-0.0625,0.0937-0.21875,0.21875-0.25-0.25h0.25l0.125-0.125-0.46875-0.0937-0.25-0.0937z" fill-rule="nonzero"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/login.svg b/p/themes/icons/login.svg
index 0a8af162f..954a0b74b 100644
--- a/p/themes/icons/login.svg
+++ b/p/themes/icons/login.svg
@@ -1,33 +1,6 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='changes-prevent-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='9.416826' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1296' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='1941' inkscape:snap-global='true' inkscape:window-y='81' gridtolerance='10' inkscape:window-height='1013' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='52.563336' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
- <g inkscape:label='lock' transform='translate(161.0002,-39)' id='g4053' style='fill:#bebebe;fill-opacity:1'>
-
- </g>
- <path inkscape:connector-curvature='0' d='m 184,244 c -0.554,0 -1,0.446 -1,1 l 0,0.53125 0,5.46875 12,0 0,-5.46875 L 195,245 c 0,-0.554 -0.446,-1 -1,-1 l -10,0 z' id='rect4063' sodipodi:nodetypes='csccccscc' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
- <path inkscape:connector-curvature='0' d='m 188,238 c -1.6447,0 -3,1.3553 -3,3 l 0,7 c 0,1.6447 1.3553,3 3,3 l 2,0 c 1.6447,0 3,-1.3553 3,-3 l 0,-7 c 0,-1.6447 -1.3553,-3 -3,-3 l -2,0 z m 0,2 2,0 c 0.5713,0 1,0.4287 1,1 l 0,7 c 0,0.5713 -0.4287,1 -1,1 l -2,0 c -0.5713,0 -1,-0.4287 -1,-1 l 0,-7 c 0,-0.5713 0.4287,-1 1,-1 z' id='rect4291' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
- </g>
- <g inkscape:label='devices' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-181.0002,-237)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-181.0002,-237)" fill="#bebebe">
+<path style="color:#bebebe;" d="m184,244c-0.554,0-1,0.446-1,1v0.53125,5.4688h12v-5.4688-0.53c0-0.554-0.446-1-1-1h-10z" fill-rule="nonzero"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m188,238c-1.6447,0-3,1.3553-3,3v7c0,1.6447,1.3553,3,3,3h2c1.6447,0,3-1.3553,3-3v-7c0-1.6447-1.3553-3-3-3h-2zm0,2,2,0c0.5713,0,1,0.4287,1,1v7c0,0.5713-0.4287,1-1,1h-2c-0.5713,0-1-0.4287-1-1v-7c0-0.5713,0.4287-1,1-1z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/logout.svg b/p/themes/icons/logout.svg
index 284a67578..8dd4ef08b 100644
--- a/p/themes/icons/logout.svg
+++ b/p/themes/icons/logout.svg
@@ -1,33 +1,6 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='changes-allow-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='9.416826' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1296' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='1941' inkscape:snap-global='true' inkscape:window-y='81' gridtolerance='10' inkscape:window-height='1013' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='32.563336' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
- <g inkscape:label='lock' transform='translate(181.0002,-39)' id='g4053-3' style='fill:#bebebe;fill-opacity:1'>
-
- </g>
- <path inkscape:connector-curvature='0' d='m 204,246 c -0.554,0 -1,0.446 -1,1 l 0,0.53125 0,5.46875 12,0 0,-5.46875 L 215,247 c 0,-0.554 -0.446,-1 -1,-1 l -10,0 z' id='rect4063-6' sodipodi:nodetypes='csccccscc' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
- <path inkscape:connector-curvature='0' d='m 208.0002,237 c -1.64469,0 -3,1.35529 -3,3 l 0,3 2,0 0,-3 c 0,-0.57129 0.42873,-1 1,-1 l 2,0 c 0.57127,0 1,0.42871 1,1 l 0,7 2,0 0,-7 c 0,-1.64471 -1.35531,-3 -3,-3 l -2,0 z' id='rect4291-4' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
- </g>
- <g inkscape:label='devices' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-201.0002,-237)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-201.0002,-237)" fill="#bebebe">
+<path style="color:#bebebe;" d="m204,246c-0.554,0-1,0.446-1,1v0.53125,5.4688h12v-5.4688-0.53c0-0.554-0.446-1-1-1h-10z" fill-rule="nonzero"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m208,237c-1.6447,0-3,1.3553-3,3v3h2v-3c0-0.57129,0.42873-1,1-1h2c0.57127,0,1,0.42871,1,1v7h2v-7c0-1.6447-1.3553-3-3-3h-2z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/next.svg b/p/themes/icons/next.svg
index 72637b4e6..d504d096c 100644
--- a/p/themes/icons/next.svg
+++ b/p/themes/icons/next.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='go-next-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.4 r9939' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-nodes='false' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='78.648774' inkscape:cy='9.99302' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1408' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='120px' originy='530px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-121.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-121.0002,-747)'>
-
- <path inkscape:connector-curvature='0' d='m 125.0004,749 1,0 c 0.0104,-1.2e-4 0.0208,-4.6e-4 0.0313,0 0.25495,0.0112 0.50987,0.12858 0.6875,0.3125 l 6.29767,5.71875 -6.29772,5.71875 c -0.18816,0.18819 -0.45346,0.28125 -0.71875,0.28125 l -1,0 0,-1 c 0,-0.26529 0.0931,-0.53058 0.28125,-0.71875 l 4.82897,-4.28125 -4.82897,-4.28125 c -0.21074,-0.19463 -0.30316,-0.46925 -0.28125,-0.75 z' id='path10839-9-9-5-9' sodipodi:nodetypes='ccsccccccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono'/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-121.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m125,749,1,0c0.0104-0.00012,0.0208-0.00046,0.0313,0,0.25495,0.0112,0.50987,0.12858,0.6875,0.3125l6.2977,5.7188-6.2977,5.7188c-0.18816,0.18819-0.45346,0.28125-0.71875,0.28125h-1v-1c0-0.26529,0.0931-0.53058,0.28125-0.71875l4.829-4.2812-4.829-4.2812c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75z" fill-rule="nonzero" fill="#bebebe"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/non-starred.svg b/p/themes/icons/non-starred.svg
index 346717f78..4ebcfccbd 100644
--- a/p/themes/icons/non-starred.svg
+++ b/p/themes/icons/non-starred.svg
@@ -1,32 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='non-starred-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='0.50817' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1457' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='86' inkscape:snap-global='true' inkscape:window-y='51' gridtolerance='10' inkscape:window-height='1093' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='-0.97094164' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
- <g inkscape:label='folder-remote' transform='translate(-166.9996,-599)' id='g5516'>
-
- </g>
- <path inkscape:connector-curvature='0' d='m 69.002994,398.0051 c -0.2659,-9.9e-4 -0.498591,0.1006 -0.664702,0.2393 -0.166111,0.13869 -0.277415,0.32137 -0.389683,0.50028 -0.224526,0.35782 -0.392692,0.76873 -0.565462,1.20357 -0.17277,0.43483 -0.347131,0.88766 -0.504599,1.23232 -0.157468,0.34465 -0.345596,0.57871 -0.35862,0.58776 -0.01287,0.009 -0.307217,0.117 -0.695765,0.15181 -0.388547,0.0348 -0.881219,0.0492 -1.36324,0.0694 -0.482021,0.0202 -0.970296,0.0362 -1.393042,0.12817 -0.211377,0.046 -0.4154,0.10148 -0.604343,0.20956 -0.188943,0.10808 -0.366894,0.28631 -0.450041,0.53002 -0.08315,0.24371 -0.04901,0.50627 0.03636,0.70157 0.08537,0.19531 0.226562,0.36514 0.368205,0.52344 0.283296,0.31663 0.632701,0.60557 1.007899,0.89849 0.375198,0.29292 0.776711,0.55926 1.067753,0.81027 0.291042,0.25101 0.454223,0.50796 0.459122,0.52271 0.0048,0.0146 0.03119,0.33498 -0.05456,0.70231 -0.08575,0.36732 -0.223801,0.81174 -0.352819,1.26034 -0.129019,0.44861 -0.25176,0.90196 -0.291704,1.31835 -0.01997,0.20819 -0.04285,0.40729 0.0053,0.61409 0.04814,0.20679 0.184498,0.43007 0.399016,0.58168 0.214508,0.15161 0.449359,0.1881 0.668233,0.1701 0.218874,-0.018 0.435347,-0.0703 0.635153,-0.15132 0.399612,-0.16214 0.801767,-0.42851 1.206417,-0.68231 0.404649,-0.2538 0.808218,-0.52155 1.145553,-0.71107 0.337335,-0.18952 0.648398,-0.2686 0.66445,-0.26854 0.01586,6e-5 0.303381,0.0951 0.638936,0.28732 0.335555,0.19221 0.725321,0.46503 1.127607,0.72205 0.402287,0.25702 0.819957,0.49752 1.218019,0.66284 0.199027,0.0827 0.388928,0.15086 0.607623,0.17059 0.218695,0.0197 0.479784,-0.031 0.695512,-0.18105 0.215717,-0.15001 0.339276,-0.35235 0.389178,-0.55877 0.0499,-0.20642 0.04291,-0.43517 0.02476,-0.64358 -0.03632,-0.41683 -0.158989,-0.86394 -0.284099,-1.31372 -0.12511,-0.44978 -0.261649,-0.88661 -0.344206,-1.25475 -0.08256,-0.36813 -0.07169,-0.68662 -0.06666,-0.70133 0.005,-0.0145 0.187465,-0.25247 0.480599,-0.50101 0.293134,-0.24854 0.675989,-0.53755 1.053628,-0.82731 0.37764,-0.28976 0.767161,-0.57158 1.053124,-0.88579 0.142977,-0.1571 0.241796,-0.33444 0.32882,-0.52904 0.08702,-0.1946 0.135998,-0.42874 0.05481,-0.67306 -0.08119,-0.24432 -0.271084,-0.41314 -0.459122,-0.52272 -0.188037,-0.10958 -0.366789,-0.18158 -0.577821,-0.22931 -0.422064,-0.0955 -0.913586,-0.14009 -1.395564,-0.16426 -0.481977,-0.0242 -0.945835,-0.039 -1.334196,-0.077 -0.388361,-0.038 -0.715653,-0.13122 -0.728592,-0.14037 -0.01279,-0.009 -0.184019,-0.23636 -0.338404,-0.58217 -0.154385,-0.34581 -0.326584,-0.78819 -0.495481,-1.22429 -0.168896,-0.4361 -0.334766,-0.86429 -0.556091,-1.2238 -0.110668,-0.17977 -0.233352,-0.35397 -0.398259,-0.49396 -0.164907,-0.13999 -0.40309,-0.25684 -0.66899,-0.25783 z m 0.0086,0.99424 c 0.0422,0.0358 0.106711,0.13602 0.184103,0.26173 0.154773,0.25141 0.330675,0.6272 0.493967,1.04883 0.163292,0.42163 0.319052,0.88645 0.495985,1.28277 0.176933,0.39633 0.314564,0.73379 0.675296,0.98889 0.360721,0.25509 0.770187,0.29763 1.215244,0.34118 0.445058,0.0435 0.92882,0.0532 1.394807,0.0765 0.465988,0.0234 0.918236,0.0697 1.213479,0.13647 0.147627,0.0334 0.255581,0.0572 0.303811,0.0853 -0.02227,0.0498 -0.07958,0.15478 -0.179562,0.26464 -0.199968,0.21973 -0.537491,0.48746 -0.902606,0.7676 -0.365114,0.28015 -0.778037,0.57219 -1.113986,0.85704 -0.33595,0.28485 -0.639918,0.53221 -0.779871,0.94209 -0.139952,0.40986 -0.05396,0.77681 0.04065,1.19869 0.09461,0.42189 0.25406,0.87813 0.375016,1.31299 0.120956,0.43486 0.226877,0.84692 0.25228,1.13851 0.01156,0.13264 -0.01699,0.23485 -0.02778,0.29267 -0.05993,-0.008 -0.176402,-0.0324 -0.303811,-0.0853 -0.278362,-0.11561 -0.646494,-0.32808 -1.03543,-0.57657 -0.388935,-0.24849 -0.803899,-0.53053 -1.18847,-0.75081 -0.38457,-0.22028 -0.707909,-0.39837 -1.155138,-0.40015 -0.447219,-0.002 -0.792046,0.17245 -1.178633,0.38965 -0.386587,0.21719 -0.784375,0.49517 -1.175607,0.74055 -0.391232,0.24538 -0.776359,0.4507 -1.055898,0.56412 -0.139769,0.0567 -0.246155,0.0856 -0.302298,0.0902 -0.01026,-0.0578 -0.01522,-0.16008 -0.0025,-0.29243 0.02793,-0.29118 0.138178,-0.70893 0.262912,-1.14264 0.124734,-0.43372 0.254035,-0.89785 0.352315,-1.31883 0.09828,-0.42099 0.186721,-0.78846 0.05027,-1.19943 -0.136442,-0.41097 -0.43218,-0.64202 -0.765707,-0.92967 -0.333527,-0.28766 -0.705509,-0.58555 -1.068257,-0.86876 -0.362749,-0.2832 -0.717797,-0.56075 -0.915974,-0.78224 -0.09908,-0.11075 -0.162208,-0.21163 -0.184103,-0.26173 0.04834,-0.0276 0.154481,-0.058 0.302298,-0.0902 0.295625,-0.0643 0.745175,-0.10714 1.211209,-0.1267 0.466034,-0.0196 0.948238,-0.0298 1.393546,-0.0697 0.445308,-0.0399 0.846793,-0.0499 1.209695,-0.30216 0.362893,-0.25221 0.5383,-0.60511 0.718755,-1.00009 0.180456,-0.39497 0.33731,-0.84115 0.504347,-1.26156 0.167037,-0.42041 0.318485,-0.83556 0.475555,-1.08586 0.07853,-0.12515 0.167511,-0.20007 0.21012,-0.23565 z' id='path5520' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1.04970646;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
- </g>
- <g inkscape:label='devices' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-61.000202,-397)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-61.000202,-397)">
+<path style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" fill="#bebebe" d="m69.003,398.01c-0.2659-0.00099-0.49859,0.1006-0.6647,0.2393-0.16611,0.13869-0.27742,0.32137-0.38968,0.50028-0.22453,0.35782-0.39269,0.76873-0.56546,1.2036-0.17277,0.43483-0.34713,0.88766-0.5046,1.2323-0.15747,0.34465-0.3456,0.57871-0.35862,0.58776-0.01287,0.009-0.30722,0.117-0.69576,0.15181-0.38855,0.0348-0.88122,0.0492-1.3632,0.0694-0.48202,0.0202-0.9703,0.0362-1.393,0.12817-0.21138,0.046-0.4154,0.10148-0.60434,0.20956s-0.36689,0.28631-0.45004,0.53002-0.04901,0.50627,0.03636,0.70157c0.08537,0.19531,0.22656,0.36514,0.3682,0.52344,0.2833,0.31663,0.6327,0.60557,1.0079,0.89849s0.77671,0.55926,1.0678,0.81027c0.29104,0.25101,0.45422,0.50796,0.45912,0.52271,0.0048,0.0146,0.03119,0.33498-0.05456,0.70231-0.08575,0.36732-0.2238,0.81174-0.35282,1.2603-0.12902,0.44861-0.25176,0.90196-0.2917,1.3184-0.01997,0.20819-0.04285,0.40729,0.0053,0.61409,0.04814,0.20679,0.1845,0.43007,0.39902,0.58168,0.21451,0.15161,0.44936,0.1881,0.66823,0.1701s0.43535-0.0703,0.63515-0.15132c0.39961-0.16214,0.80177-0.42851,1.2064-0.68231,0.40465-0.2538,0.80822-0.52155,1.1456-0.71107,0.33734-0.18952,0.6484-0.2686,0.66445-0.26854,0.01586,0.00006,0.30338,0.0951,0.63894,0.28732,0.33556,0.19221,0.72532,0.46503,1.1276,0.72205,0.40229,0.25702,0.81996,0.49752,1.218,0.66284,0.19903,0.0827,0.38893,0.15086,0.60762,0.17059,0.2187,0.0197,0.47978-0.031,0.69551-0.18105,0.21572-0.15001,0.33928-0.35235,0.38918-0.55877s0.04291-0.43517,0.02476-0.64358c-0.03632-0.41683-0.15899-0.86394-0.2841-1.3137-0.12511-0.44978-0.26165-0.88661-0.34421-1.2548-0.08256-0.36813-0.07169-0.68662-0.06666-0.70133,0.005-0.0145,0.18746-0.25247,0.4806-0.50101,0.29313-0.24854,0.67599-0.53755,1.0536-0.82731,0.37764-0.28976,0.76716-0.57158,1.0531-0.88579,0.14298-0.1571,0.2418-0.33444,0.32882-0.52904s0.136-0.42874,0.05481-0.67306-0.27108-0.41314-0.45912-0.52272-0.36679-0.18158-0.57782-0.22931c-0.42206-0.0955-0.91359-0.14009-1.3956-0.16426-0.48198-0.0242-0.94584-0.039-1.3342-0.077s-0.71565-0.13122-0.72859-0.14037c-0.01279-0.009-0.18402-0.23636-0.3384-0.58217s-0.32658-0.78819-0.49548-1.2243c-0.1689-0.4361-0.33477-0.86429-0.55609-1.2238-0.11067-0.17977-0.23335-0.35397-0.39826-0.49396s-0.40309-0.25684-0.66899-0.25783zm0.0086,0.99424c0.0422,0.0358,0.10671,0.13602,0.1841,0.26173,0.15477,0.25141,0.33068,0.6272,0.49397,1.0488,0.16329,0.42163,0.31905,0.88645,0.49598,1.2828,0.17693,0.39633,0.31456,0.73379,0.6753,0.98889,0.36072,0.25509,0.77019,0.29763,1.2152,0.34118,0.44506,0.0435,0.92882,0.0532,1.3948,0.0765,0.46599,0.0234,0.91824,0.0697,1.2135,0.13647,0.14763,0.0334,0.25558,0.0572,0.30381,0.0853-0.02227,0.0498-0.07958,0.15478-0.17956,0.26464-0.19997,0.21973-0.53749,0.48746-0.90261,0.7676-0.36511,0.28015-0.77804,0.57219-1.114,0.85704-0.33595,0.28485-0.63992,0.53221-0.77987,0.94209-0.13995,0.40986-0.05396,0.77681,0.04065,1.1987s0.25406,0.87813,0.37502,1.313c0.12096,0.43486,0.22688,0.84692,0.25228,1.1385,0.01156,0.13264-0.01699,0.23485-0.02778,0.29267-0.05993-0.008-0.1764-0.0324-0.30381-0.0853-0.27836-0.11561-0.64649-0.32808-1.0354-0.57657-0.38894-0.24849-0.8039-0.53053-1.1885-0.75081-0.38457-0.22028-0.70791-0.39837-1.1551-0.40015-0.44722-0.002-0.79205,0.17245-1.1786,0.38965-0.38659,0.21719-0.78438,0.49517-1.1756,0.74055-0.39123,0.24538-0.77636,0.4507-1.0559,0.56412-0.13977,0.0567-0.24616,0.0856-0.3023,0.0902-0.01026-0.0578-0.01522-0.16008-0.0025-0.29243,0.02793-0.29118,0.13818-0.70893,0.26291-1.1426,0.12473-0.43372,0.25404-0.89785,0.35232-1.3188,0.09828-0.42099,0.18672-0.78846,0.05027-1.1994-0.13644-0.41097-0.43218-0.64202-0.76571-0.92967-0.33353-0.28766-0.70551-0.58555-1.0683-0.86876-0.36275-0.2832-0.7178-0.56075-0.91597-0.78224-0.09908-0.11075-0.16221-0.21163-0.1841-0.26173,0.04834-0.0276,0.15448-0.058,0.3023-0.0902,0.29562-0.0643,0.74518-0.10714,1.2112-0.1267,0.46603-0.0196,0.94824-0.0298,1.3935-0.0697,0.44531-0.0399,0.84679-0.0499,1.2097-0.30216,0.36289-0.25221,0.5383-0.60511,0.71876-1.0001,0.18046-0.39497,0.33731-0.84115,0.50435-1.2616,0.16704-0.42041,0.31848-0.83556,0.47556-1.0859,0.07853-0.12515,0.16751-0.20007,0.21012-0.23565z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/prev.svg b/p/themes/icons/prev.svg
index 67685c50c..ea4372098 100644
--- a/p/themes/icons/prev.svg
+++ b/p/themes/icons/prev.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='go-next-rtl-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.4 r9939' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-nodes='false' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='-101.35123' inkscape:cy='9.99302' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1408' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-60px' originy='530px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-301.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-301.0002,-747)'>
-
- <path inkscape:connector-curvature='0' d='m 313.01372,749 -1,0 c -0.0104,-1.2e-4 -0.0208,-4.6e-4 -0.0313,0 -0.25495,0.0112 -0.50987,0.12858 -0.6875,0.3125 l -6.29767,5.71875 6.29772,5.71875 c 0.18816,0.18819 0.45346,0.28125 0.71875,0.28125 l 1,0 0,-1 c 0,-0.26529 -0.0931,-0.53058 -0.28125,-0.71875 l -4.82897,-4.28125 4.82897,-4.28125 c 0.21074,-0.19463 0.30316,-0.46925 0.28125,-0.75 z' id='path5441' sodipodi:nodetypes='ccsccccccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono'/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-301.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m313.01,749-1,0c-0.0104-0.00012-0.0208-0.00046-0.0313,0-0.25495,0.0112-0.50987,0.12858-0.6875,0.3125l-6.2977,5.7188,6.2977,5.7188c0.18816,0.18819,0.45346,0.28125,0.71875,0.28125h1v-1c0-0.26529-0.0931-0.53058-0.28125-0.71875l-4.829-4.2812,4.829-4.2812c0.21074-0.19463,0.30316-0.46925,0.28125-0.75z" fill-rule="nonzero" fill="#bebebe"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/read.svg b/p/themes/icons/read.svg
index 932bfd860..d72c198df 100644
--- a/p/themes/icons/read.svg
+++ b/p/themes/icons/read.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns='http://www.w3.org/2000/svg' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' width='16' xmlns:cc='http://creativecommons.org/ns#' height='16.001099' sodipodi:docname='mail-read-symbolic.svg' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.1 r9760' version='1.1'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:window-width='1226' id='namedview88' showgrid='false' objecttolerance='10' inkscape:pageopacity='1' inkscape:cx='12.92257' inkscape:cy='-1.422716' inkscape:snap-bbox='true' borderopacity='1' inkscape:object-nodes='false' inkscape:current-layer='layer9' inkscape:snap-to-guides='true' inkscape:snap-others='false' inkscape:snap-grids='true' bordercolor='#666666' inkscape:window-height='967' inkscape:snap-bbox-midpoints='false' showborder='false' inkscape:bbox-paths='false' inkscape:guide-bbox='true' inkscape:window-x='2657' inkscape:window-y='338' inkscape:snap-global='true' inkscape:snap-nodes='true' pagecolor='#555753' inkscape:object-paths='false' inkscape:pageshadow='2' inkscape:zoom='1' inkscape:window-maximized='0' gridtolerance='10' guidetolerance='10' showguides='true'>
- <inkscape:grid id='grid4866' empspacing='2' type='xygrid' visible='true' snapvisiblegridlinesonly='true' enabled='true' spacingx='1px' spacingy='1px'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g id='layer9' inkscape:groupmode='layer' style='display:inline' transform='translate(-60.99995,-296.9989)' inkscape:label='status'>
-
- <path id='path35631' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.35;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans' d='m 68.8752,297 a 1.0001,1.0001 0 0 0 -0.5,0.25 l -4.90625,4 a 1.0001,1.0001 0 0 0 -0.0625,0.0312 c 0,0 -0.32587,0.29728 -0.65625,0.75 -0.22334,0.30605 -0.3527,0.8316 -0.5,1.3125 a 1.0001,1.0001 0 0 0 -0.03125,0.0312 1.0001,1.0001 0 0 0 -0.21875,0.5625 c -5.1e-4,0.0118 3.6e-4,0.0195 0,0.0312 a 1.0001,1.0001 0 0 0 0,0.0312 1.0001,1.0001 0 0 0 0,0.15625 l 0,7.84375 a 1.0001,1.0001 0 0 0 1,1 l 12,0 a 1.0001,1.0001 0 0 0 1,-1 l 0,-7.84375 a 1.0001,1.0001 0 0 0 0,-0.15625 1.0001,1.0001 0 0 0 -0.21875,-0.65625 1.0001,1.0001 0 0 0 -0.03125,-0.0312 c -0.32774,-1.18787 -1.125,-2 -1.125,-2 a 1.0001,1.0001 0 0 0 -0.0312,-0.0312 L 69.6252,297.25 a 1.0001,1.0001 0 0 0 -0.65625,-0.25 1.0001,1.0001 0 0 0 -0.0937,0 z m 0.125,2.28125 4.3125,3.53125 0.0312,0.0312 c 0.021,0.0255 0.18032,0.24952 0.34375,0.5 l -4.68745,3.53125 -4.6875,-3.53125 c 0.0259,-0.0394 0.0349,-0.0872 0.0625,-0.125 0.1908,-0.26146 0.31874,-0.41421 0.34375,-0.4375 l 0.03125,-0.0312 4.25,-3.46875 z m -5,5.09375 4.6875,3.53125 0.3125,0.21875 0.3125,-0.21875 4.6875,-3.53125 0,6.625 -10,0 0,-6.625 z' inkscape:connector-curvature='0'/>
- </g>
- <g id='layer10' inkscape:groupmode='layer' transform='translate(-60.99995,-296.9989)' inkscape:label='devices'/>
- <g id='layer11' inkscape:groupmode='layer' transform='translate(-60.99995,-296.9989)' inkscape:label='apps'/>
- <g id='layer13' inkscape:groupmode='layer' transform='translate(-60.99995,-296.9989)' inkscape:label='places'/>
- <g id='layer14' inkscape:groupmode='layer' transform='translate(-60.99995,-296.9989)' inkscape:label='mimetypes'/>
- <g id='layer15' inkscape:groupmode='layer' style='display:inline' transform='translate(-60.99995,-296.9989)' inkscape:label='emblems'/>
- <g id='g71291' inkscape:groupmode='layer' style='display:inline' transform='translate(-60.99995,-296.9989)' inkscape:label='emotes'/>
- <g id='g4953' inkscape:groupmode='layer' style='display:inline' transform='translate(-60.99995,-296.9989)' inkscape:label='categories'/>
- <g id='layer12' inkscape:groupmode='layer' style='display:inline' transform='translate(-60.99995,-296.9989)' inkscape:label='actions'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16.001" width="16">
+<g transform="translate(-60.99995,-296.9989)">
+<path opacity="0.35" style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" fill="#bebebe" d="m68.875,297a1.0001,1.0001,0,0,0,-0.5,0.25l-4.9062,4a1.0001,1.0001,0,0,0,-0.0625,0.0312s-0.32587,0.29728-0.65625,0.75c-0.22334,0.30605-0.3527,0.8316-0.5,1.3125a1.0001,1.0001,0,0,0,-0.03125,0.0312,1.0001,1.0001,0,0,0,-0.21875,0.5625c-0.00051,0.0118,0.00036,0.0195,0,0.0312a1.0001,1.0001,0,0,0,0,0.0312,1.0001,1.0001,0,0,0,0,0.15625v7.8438a1.0001,1.0001,0,0,0,1,1h12a1.0001,1.0001,0,0,0,1,-1v-7.8438a1.0001,1.0001,0,0,0,0,-0.15625,1.0001,1.0001,0,0,0,-0.21875,-0.65625,1.0001,1.0001,0,0,0,-0.03125,-0.0312c-0.32774-1.1879-1.125-2-1.125-2a1.0001,1.0001,0,0,0,-0.0312,-0.0312l-4.969-4.02a1.0001,1.0001,0,0,0,-0.65625,-0.25,1.0001,1.0001,0,0,0,-0.0937,0zm0.125,2.2812,4.3125,3.5312,0.0312,0.0312c0.021,0.0255,0.18032,0.24952,0.34375,0.5l-4.6874,3.5312-4.6875-3.5312c0.0259-0.0394,0.0349-0.0872,0.0625-0.125,0.1908-0.26146,0.31874-0.41421,0.34375-0.4375l0.03125-0.0312,4.25-3.4688zm-5,5.0938,4.6875,3.5312,0.3125,0.21875,0.3125-0.21875,4.6875-3.5312,0,6.625-10,0,0-6.625z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/refresh.svg b/p/themes/icons/refresh.svg
index 11728fc5d..62fe56c1e 100644
--- a/p/themes/icons/refresh.svg
+++ b/p/themes/icons/refresh.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' xmlns:cc='http://creativecommons.org/ns#' id='svg7384' sodipodi:docname='view-refresh-symbolic.svg' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns='http://www.w3.org/2000/svg' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' inkscape:version='0.48.1 r9760' version='1.1' width='16' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:zoom='1' inkscape:bbox-paths='false' inkscape:pageopacity='1' guidetolerance='10' inkscape:snap-bbox='true' inkscape:window-height='1162' objecttolerance='10' id='namedview88' showborder='false' inkscape:window-x='2191' inkscape:window-y='111' inkscape:cx='9.3351214' inkscape:cy='10.6119' gridtolerance='10' inkscape:snap-bbox-midpoints='false' showguides='true' inkscape:pageshadow='2' pagecolor='#555753' bordercolor='#666666' inkscape:snap-global='true' inkscape:window-maximized='0' inkscape:object-nodes='false' inkscape:snap-nodes='false' inkscape:guide-bbox='true' inkscape:window-width='1595' inkscape:snap-others='false' borderopacity='1' showgrid='false' inkscape:snap-to-guides='true' inkscape:object-paths='false' inkscape:snap-grids='true' inkscape:current-layer='layer12'>
- <inkscape:grid enabled='true' spacingx='1px' spacingy='1px' id='grid4866' visible='true' snapvisiblegridlinesonly='true' empspacing='2' type='xygrid'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g id='layer9' transform='translate(-241.0002,-627)' inkscape:label='status' style='display:inline' inkscape:groupmode='layer'/>
- <g id='layer10' transform='translate(-241.0002,-627)' inkscape:label='devices' inkscape:groupmode='layer'/>
- <g id='layer11' transform='translate(-241.0002,-627)' inkscape:label='apps' inkscape:groupmode='layer'/>
- <g id='layer13' transform='translate(-241.0002,-627)' inkscape:label='places' inkscape:groupmode='layer'/>
- <g id='layer14' transform='translate(-241.0002,-627)' inkscape:label='mimetypes' inkscape:groupmode='layer'/>
- <g id='layer15' transform='translate(-241.0002,-627)' inkscape:label='emblems' style='display:inline' inkscape:groupmode='layer'/>
- <g id='g71291' transform='translate(-241.0002,-627)' inkscape:label='emotes' style='display:inline' inkscape:groupmode='layer'/>
- <g id='g4953' transform='translate(-241.0002,-627)' inkscape:label='categories' style='display:inline' inkscape:groupmode='layer'/>
- <g id='layer12' transform='translate(-241.0002,-627)' inkscape:label='actions' style='display:inline' inkscape:groupmode='layer'>
-
- <path id='path4597' d='m 253.90645,628.96875 a 1.0001,1.0001 0 0 0 -0.125,0.0312 1.0001,1.0001 0 0 0 -0.78125,1 l 0,1.6875 c -0.38225,-0.57796 -0.84927,-1.08223 -1.40625,-1.5 -1.15563,-0.86677 -2.53199,-1.25227 -3.875,-1.1875 -0.19186,0.009 -0.37223,0.0353 -0.5625,0.0625 -1.52218,0.21741 -2.97815,1.02304 -3.96875,2.34375 -1.98119,2.64144 -1.42267,6.42505 1.21875,8.40625 2.64147,1.98122 6.42504,1.42267 8.40625,-1.21875 A 1.0063276,1.0063276 0 0 0 253.0002,638 a 1.0063276,1.0063276 0 0 0 0,-0.15625 l 0,-0.84375 -0.8125,0 -0.0937,0 a 1.0063276,1.0063276 0 0 0 -0.0937,0 1.0063276,1.0063276 0 0 0 -0.8125,0.40625 c -1.33265,1.77674 -3.81702,2.11387 -5.59375,0.78125 -1.77674,-1.33264 -2.1139,-3.81699 -0.78125,-5.59375 1.33265,-1.77674 3.817,-2.11389 5.59375,-0.78125 0.42946,0.32212 0.76954,0.73295 1.03125,1.1875 l -1.4375,0 a 1.0001,1.0001 0 0 0 -1,1 1.0001,1.0001 0 0 0 0,0.21875 l 0,0.78125 0.84375,0 0.15625,0 4,0 1,0 0,-1 0,-4 a 1.0001,1.0001 0 0 0 0,-0.1875 l 0,-0.8125 -0.8125,0 a 1.0001,1.0001 0 0 0 -0.28125,-0.0312 z' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#666666;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans' inkscape:connector-curvature='0'/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-241.0002,-627)">
+<path style="baseline-shift:baseline;block-progression:tb;color:#666666;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" fill="#666" d="m253.91,628.97a1.0001,1.0001,0,0,0,-0.125,0.0312,1.0001,1.0001,0,0,0,-0.78125,1v1.6875c-0.38225-0.57796-0.84927-1.0822-1.4062-1.5-1.1556-0.86677-2.532-1.2523-3.875-1.1875-0.19186,0.009-0.37223,0.0353-0.5625,0.0625-1.5222,0.21741-2.9782,1.023-3.9688,2.3438-1.9812,2.6414-1.4227,6.425,1.2188,8.4062s6.425,1.4227,8.4062-1.2188a1.0063,1.0063,0,0,0,0.18,-0.59,1.0063,1.0063,0,0,0,0,-0.15625v-0.84375h-0.8125-0.0937a1.0063,1.0063,0,0,0,-0.0937,0,1.0063,1.0063,0,0,0,-0.8125,0.40625c-1.3326,1.7767-3.817,2.1139-5.5938,0.78125-1.7767-1.3326-2.1139-3.817-0.78125-5.5938,1.3326-1.7767,3.817-2.1139,5.5938-0.78125,0.42946,0.32212,0.76954,0.73295,1.0312,1.1875h-1.4375a1.0001,1.0001,0,0,0,-1,1,1.0001,1.0001,0,0,0,0,0.21875v0.78125h0.84375,0.15625,4,1v-1-4a1.0001,1.0001,0,0,0,0,-0.1875v-0.8125h-0.8125a1.0001,1.0001,0,0,0,-0.28125,-0.0312z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/rss.svg b/p/themes/icons/rss.svg
index ceaddceee..2a8713be3 100644
--- a/p/themes/icons/rss.svg
+++ b/p/themes/icons/rss.svg
@@ -1,32 +1,6 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='application-rss+xml-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.3.1 r9886' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-paths='false' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer14' inkscape:cx='27.01134' inkscape:cy='1.367038' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='709' inkscape:window-maximized='1' inkscape:window-width='1366' inkscape:window-x='0' inkscape:window-y='27' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-319.9998px' originy='84.00012px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-561,-301.00012)'>
-
- <path sodipodi:cx='323.0625' sodipodi:cy='97.1875' d='m 325.0625,97.1875 a 2,3.236068 0 1 1 -4,0 2,3.236068 0 1 1 4,0 z' id='path4983' sodipodi:rx='2' sodipodi:ry='3.236068' style='color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.69602728;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(1.0000007,0,0,0.61803426,241.93747,252.93479)' sodipodi:type='arc'/>
- <path inkscape:connector-curvature='0' d='m 563.0002,303 0,1 c 0,0.55016 0.45347,1 1,1 4.97056,0 9,4.02944 9,9 0,0.55016 0.45347,1 1,1 l 1,0 0,-1 c 0,-6.07513 -4.92487,-11 -11,-11 l -1,0 z m 0,4 0,1 c 0,0.55016 0.45347,1 1,1 2.76143,0 5,2.23857 5,5 0,0.55016 0.45347,1 1,1 l 1,0 0,-1 c 0,-3.866 -3.134,-7 -7,-7 l -1,0 z' id='path5814' style='color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33333492;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new'/>
- </g>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-561,-301.00012)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-561,-301.00012)'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g fill-rule="nonzero" transform="translate(-561,-301.00012)" fill="#666">
+<path style="enable-background:new;color:#000000;" d="m325.06,97.188c0,1.7872-0.89543,3.2361-2,3.2361s-2-1.4488-2-3.2361c0-1.7872,0.89543-3.2361,2-3.2361s2,1.4488,2,3.2361z" transform="matrix(1.0000007,0,0,0.61803426,241.93747,252.93479)"/>
+<path style="enable-background:new;color:#000000;" d="m563,303,0,1c0,0.55016,0.45347,1,1,1,4.9706,0,9,4.0294,9,9,0,0.55016,0.45347,1,1,1h1v-1c0-6.0751-4.9249-11-11-11h-1zm0,4,0,1c0,0.55016,0.45347,1,1,1,2.7614,0,5,2.2386,5,5,0,0.55016,0.45347,1,1,1h1v-1c0-3.866-3.134-7-7-7h-1z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/search.svg b/p/themes/icons/search.svg
index acfb364cc..35a28dfca 100644
--- a/p/themes/icons/search.svg
+++ b/p/themes/icons/search.svg
@@ -1,32 +1,6 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='folder-saved-search-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16.000002' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-paths='false' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer13' inkscape:cx='-151.02446' inkscape:cy='0.353386' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1168' inkscape:window-maximized='1' inkscape:window-width='1600' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-441.0004,-195)'>
- <path inkscape:connector-curvature='0' d='m 447.50781,195.99554 c -3.02886,0 -5.51073,2.47905 -5.51073,5.50447 0,3.02541 2.48187,5.50446 5.51073,5.50446 3.02885,0 5.51072,-2.47905 5.51072,-5.50446 0,-3.02542 -2.48187,-5.50447 -5.51072,-5.50447 z m 0,2.00893 c 1.94735,0 3.49951,1.55039 3.49951,3.49554 0,1.94514 -1.55216,3.49553 -3.49951,3.49553 -1.94736,0 -3.49952,-1.55039 -3.49952,-3.49553 0,-1.94515 1.55216,-3.49554 3.49952,-3.49554 z' id='path5079' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#666666;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1.55467153;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans'/>
- <path inkscape:connector-curvature='0' d='m 450.8125,204 a 1.0001,1.0001 0 0 0 -0.5,1.71875 l 4,4 a 1.0054782,1.0054782 0 1 0 1.40625,-1.4375 l -4,-4 A 1.0001,1.0001 0 0 0 450.8125,204 z' id='path5081' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#666666;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans'/>
-
- </g>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-441.0004,-195)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-441.0004,-195)'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g fill="#666" transform="translate(-441.0004,-195)">
+<path style="baseline-shift:baseline;block-progression:tb;color:#666666;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m447.51,196c-3.0289,0-5.5107,2.479-5.5107,5.5045,0,3.0254,2.4819,5.5045,5.5107,5.5045s5.5107-2.479,5.5107-5.5045c0-3.0254-2.4819-5.5045-5.5107-5.5045zm0,2.0089c1.9474,0,3.4995,1.5504,3.4995,3.4955s-1.5522,3.4955-3.4995,3.4955c-1.9474,0-3.4995-1.5504-3.4995-3.4955,0-1.9452,1.5522-3.4955,3.4995-3.4955z"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#666666;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m450.81,204a1.0001,1.0001,0,0,0,-0.5,1.7188l4,4a1.0055,1.0055,0,1,0,1.4062,-1.4375l-4-4a1.0001,1.0001,0,0,0,-0.91,-0.28z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/share.svg b/p/themes/icons/share.svg
index 443321882..db7a3649c 100644
--- a/p/themes/icons/share.svg
+++ b/p/themes/icons/share.svg
@@ -1,34 +1,8 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='folder-publicshare-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.3.1 r9886' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-paths='false' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer13' inkscape:cx='-55.50224' inkscape:cy='-178.38158' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-340px' originy='-20.999999px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-581.0002,-196)'>
-
- <path sodipodi:cx='289.03125' sodipodi:cy='178.03125' d='m 291,178.03125 a 1.96875,1.96875 0 1 1 -3.9375,0 1.96875,1.96875 0 1 1 3.9375,0 z' id='path8192' sodipodi:rx='1.96875' sodipodi:ry='1.96875' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(1.5079365,0,0,1.5079365,148.15963,-64.49107)' sodipodi:type='arc'/>
- <path sodipodi:cx='289.03125' sodipodi:cy='178.03125' d='m 291,178.03125 a 1.96875,1.96875 0 1 1 -3.9375,0 1.96875,1.96875 0 1 1 3.9375,0 z' id='path8194' sodipodi:rx='1.96875' sodipodi:ry='1.96875' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(1.5079365,0,0,1.5079365,158.12818,-59.49107)' sodipodi:type='arc'/>
- <path sodipodi:cx='289.03125' sodipodi:cy='178.03125' d='m 291,178.03125 a 1.96875,1.96875 0 1 1 -3.9375,0 1.96875,1.96875 0 1 1 3.9375,0 z' id='path8196' sodipodi:rx='1.96875' sodipodi:ry='1.96875' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(1.5079365,0,0,1.5079365,158.12818,-69.49107)' sodipodi:type='arc'/>
- <path inkscape:connector-curvature='0' d='m 593.625,198.15625 -10.0625,4.875 -1.8125,0.90625 1.8125,0.90625 10.03125,5.0625 0.90625,-1.8125 -8.21875,-4.15625 8.21875,-4 -0.875,-1.78125 z' id='path8198' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
- </g>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-581.0002,-196)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-581.0002,-196)'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g fill="#bebebe" transform="translate(-581.0002,-196)">
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,148.15963,-64.49107)"/>
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,158.12818,-59.49107)"/>
+<path style="enable-background:new;color:#000000;" d="m291,178.03c0,1.0873-0.88144,1.9688-1.9688,1.9688-1.0873,0-1.9688-0.88144-1.9688-1.9688,0-1.0873,0.88144-1.9688,1.9688-1.9688,1.0873,0,1.9688,0.88144,1.9688,1.9688z" fill-rule="nonzero" transform="matrix(1.5079365,0,0,1.5079365,158.12818,-69.49107)"/>
+<path style="baseline-shift:baseline;block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m593.62,198.16-10.062,4.875-1.8125,0.90625,1.8125,0.90625,10.031,5.0625,0.90625-1.8125-8.2188-4.1562,8.2188-4-0.875-1.7812z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/starred.svg b/p/themes/icons/starred.svg
index d6e2cebb5..63a44908f 100644
--- a/p/themes/icons/starred.svg
+++ b/p/themes/icons/starred.svg
@@ -1,32 +1,5 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='starred-symbolic.svg' version='1.1' inkscape:version='0.48.1 r9760' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='0.50817' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:object-paths='true' inkscape:window-width='1457' showguides='true' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='false' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='86' inkscape:snap-global='true' inkscape:window-y='51' gridtolerance='10' inkscape:window-height='1093' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:snap-bbox-midpoints='false' inkscape:zoom='1' inkscape:cx='19.029058' inkscape:snap-grids='true' inkscape:pageopacity='1'>
- <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:label='status' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
- <g inkscape:label='folder-remote' transform='translate(-186.9996,-599)' id='g11910-1'>
-
- </g>
- <path sodipodi:cy='180.96373' sodipodi:r2='3.8276224' transform='matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)' inkscape:rounded='0.2104596' inkscape:flatsided='false' inkscape:transform-center-x='-0.0094346789' inkscape:transform-center-y='-0.69491065' d='m 530.9488,186.70897 c -0.77941,0.55189 -3.15759,-1.90601 -4.11253,-1.9179 -0.95532,-0.0119 -3.39494,2.38585 -4.16096,1.8149 -0.76573,-0.57072 0.83698,-3.59203 0.55319,-4.50391 -0.2839,-0.91223 -3.31818,-2.49151 -3.01189,-3.39647 0.30617,-0.90461 3.67487,-0.31399 4.45442,-0.86567 0.77986,-0.5519 1.3442,-3.92569 2.29952,-3.91404 0.95494,0.0116 1.43421,3.39798 2.19979,3.9689 0.76588,0.57114 4.14893,0.0653 4.43307,0.97746 0.28402,0.9118 -2.78848,2.41405 -3.09488,3.31858 -0.30652,0.90489 1.21999,3.96605 0.44027,4.51815 z' id='path11922-0' sodipodi:type='star' sodipodi:arg1='0.95492637' sodipodi:r1='7.0383992' style='color:#000000;fill:#f1c40f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate' sodipodi:arg2='1.5829876' inkscape:randomized='0' sodipodi:cx='526.88293' sodipodi:sides='5'/>
- </g>
- <g inkscape:label='devices' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer10'/>
- <g inkscape:label='apps' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer11'/>
- <g inkscape:label='actions' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer12'/>
- <g inkscape:label='places' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer13'/>
- <g inkscape:label='mimetypes' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer14'/>
- <g inkscape:label='emblems' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='layer15' style='display:inline'/>
- <g inkscape:label='categories' transform='translate(-41.000202,-397)' inkscape:groupmode='layer' id='g4953' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-41.000202,-397)">
+<path style="enable-background:accumulate;color:#000000;" d="m530.95,186.71c-0.77941,0.55189-3.1576-1.906-4.1125-1.9179-0.95532-0.0119-3.3949,2.3858-4.161,1.8149-0.76573-0.57072,0.83698-3.592,0.55319-4.5039-0.2839-0.91223-3.3182-2.4915-3.0119-3.3965,0.30617-0.90461,3.6749-0.31399,4.4544-0.86567,0.77986-0.5519,1.3442-3.9257,2.2995-3.914,0.95494,0.0116,1.4342,3.398,2.1998,3.9689,0.76588,0.57114,4.1489,0.0653,4.4331,0.97746,0.28402,0.9118-2.7885,2.414-3.0949,3.3186-0.30652,0.90489,1.22,3.966,0.44027,4.5182z" fill-rule="nonzero" transform="matrix(1.0472113,-0.00871584,0.00871584,1.0472113,-504.35434,220.15425)" fill="#f1c40f"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/stats.svg b/p/themes/icons/stats.svg
new file mode 100644
index 000000000..90a23215f
--- /dev/null
+++ b/p/themes/icons/stats.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-142,-490)" fill="#bebebe">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="M144.19,490c-1.21,0-2.19,1.02-2.19,2.22v10.562c0,1.2008,0.98238,2.2188,2.1875,2.2188h11.625c1.2051,0,2.1875-1.0179,2.1875-2.2188v-10.562c-0.01-1.2-0.99-2.22-2.2-2.22h-11.625zm0,2,11.625,0c0.12026,0,0.1875,0.08,0.1875,0.21875v10.562c-0.01,0.14-0.08,0.22-0.2,0.22h-11.625c-0.12026,0-0.1875-0.08-0.1875-0.21875v-10.562c0.01-0.14,0.08-0.22,0.2-0.22z"/>
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m151.31,493.97a0.50005,0.50005,0,0,0,-0.34375,0.34375l-1.6875,6.0938-0.875-1.1875a0.50005,0.50005,0,0,0,-0.4,-0.21h-2.5-0.5v1h0.5,2.25l1.3125,1.7812a0.50005,0.50005,0,0,0,0.875,-0.15625l1.5312-5.4375,1.0625,3.4688a0.50005,0.50005,0,0,0,0.47,0.35h1.5,0.5v-1h-0.5-1.125l-1.4375-4.6875a0.50005,0.50005,0,0,0,-0.625,-0.34375z"/>
+</g>
+</svg>
diff --git a/p/themes/icons/tag.svg b/p/themes/icons/tag.svg
index 688aca7a4..0d6db6ed8 100644
--- a/p/themes/icons/tag.svg
+++ b/p/themes/icons/tag.svg
@@ -1,134 +1,5 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="tag.svg"
- height="16"
- id="svg7384"
- inkscape:version="0.48.4 r9939"
- version="1.1"
- width="16">
- <metadata
- id="metadata90">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:bbox-paths="false"
- bordercolor="#666666"
- borderopacity="1"
- inkscape:current-layer="layer12"
- inkscape:cx="63.620645"
- inkscape:cy="27.761176"
- gridtolerance="10"
- inkscape:guide-bbox="true"
- guidetolerance="10"
- id="namedview88"
- inkscape:object-nodes="false"
- inkscape:object-paths="false"
- objecttolerance="10"
- pagecolor="#555753"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- showborder="false"
- showgrid="false"
- showguides="true"
- inkscape:snap-bbox="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-global="true"
- inkscape:snap-grids="true"
- inkscape:snap-nodes="false"
- inkscape:snap-others="false"
- inkscape:snap-to-guides="true"
- inkscape:window-height="709"
- inkscape:window-maximized="1"
- inkscape:window-width="1366"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:zoom="4">
- <inkscape:grid
- empspacing="2"
- enabled="true"
- id="grid4866"
- snapvisiblegridlinesonly="true"
- spacingx="1px"
- spacingy="1px"
- type="xygrid"
- visible="true" />
- </sodipodi:namedview>
- <title
- id="title9167">Gnome Symbolic Icon Theme</title>
- <defs
- id="defs7386" />
- <g
- inkscape:groupmode="layer"
- id="layer9"
- inkscape:label="status"
- style="display:inline"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer10"
- inkscape:label="devices"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer11"
- inkscape:label="apps"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer13"
- inkscape:label="places"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer14"
- inkscape:label="mimetypes"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer15"
- inkscape:label="emblems"
- style="display:inline"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="g71291"
- inkscape:label="emotes"
- style="display:inline"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="g4953"
- inkscape:label="categories"
- style="display:inline"
- transform="translate(-141.0002,-807)" />
- <g
- inkscape:groupmode="layer"
- id="layer12"
- inkscape:label="actions"
- style="display:inline"
- transform="translate(-141.0002,-807)">
- <path
- inkscape:connector-curvature="0"
- d="m 149.0002,809 0,13 4,-4 4,4 c 0.0525,-6.84943 -0.0285,-10.58353 0,-13 z"
- id="path12292"
- sodipodi:nodetypes="cccccc"
- style="fill:#bebebe;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-141.0002,-807)">
+<path d="m149,809,0,13,4-4,4,4c0.0525-6.8494-0.0285-10.584,0-13z" fill="#bebebe"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/unread.svg b/p/themes/icons/unread.svg
index f541fb25b..dc1cc609c 100644
--- a/p/themes/icons/unread.svg
+++ b/p/themes/icons/unread.svg
@@ -1,30 +1,6 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='mail-unread-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:cy='-166.8292' inkscape:current-layer='layer9' inkscape:window-width='1310' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='true' objecttolerance='10' showgrid='false' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='54' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='0' inkscape:snap-global='true' inkscape:window-y='25' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='690' borderopacity='1' guidetolerance='10' inkscape:cx='315.82499' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
- <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'>
-
- <path d='m 43.78125,301 a 1.0000999,1.0000999 0 0 0 -0.40625,1.78125 l 5,4 0.625,0.5 0.625,-0.5 5,-4 a 1.0004882,1.0004882 0 1 0 -1.25,-1.5625 l -4.375,3.5 -4.375,-3.5 A 1.0000999,1.0000999 0 0 0 43.78125,301 z' id='path35600' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#e74c3c;fill-opacity:1;stroke:none;stroke-width:1.99999976;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
- <path d='M 42.90625,300 A 1.0001,1.0001 0 0 0 42,301 l 0,9 a 1.0001,1.0001 0 0 0 1,1 l 12,0 a 1.0001,1.0001 0 0 0 1,-1 l 0,-9 a 1.0001,1.0001 0 0 0 -1,-1 l -12,0 a 1.0001,1.0001 0 0 0 -0.09375,0 z M 44,302 l 10,0 0,7 -10,0 0,-7 z' id='rect35604' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#e74c3c;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
- </g>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer10' inkscape:label='devices'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer11' inkscape:label='apps'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer12' inkscape:label='actions'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer13' inkscape:label='places'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes'/>
- <g transform='translate(-40.99995,-297)' inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline'/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-40.99995,-297)" fill="#e74c3c">
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="m43.781,301a1.0001,1.0001,0,0,0,-0.40625,1.7812l5,4,0.625,0.5,0.625-0.5,5-4a1.0005,1.0005,0,1,0,-1.25,-1.5625l-4.375,3.5-4.375-3.5a1.0001,1.0001,0,0,0,-0.844,-0.22z"/>
+<path style="block-progression:tb;color:#000000;direction:ltr;text-indent:0;text-align:start;enable-background:accumulate;text-transform:none;" d="M42.906,300a1.0001,1.0001,0,0,0,-0.906,1v9a1.0001,1.0001,0,0,0,1,1h12a1.0001,1.0001,0,0,0,1,-1v-9a1.0001,1.0001,0,0,0,-1,-1h-12a1.0001,1.0001,0,0,0,-0.09375,0zm1.094,2h10v7h-10v-7z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/up.svg b/p/themes/icons/up.svg
index dab31a20d..4819c9205 100644
--- a/p/themes/icons/up.svg
+++ b/p/themes/icons/up.svg
@@ -1,31 +1,5 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='go-up-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.4 r9939' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
- <metadata id='metadata90'>
- <rdf:RDF>
- <cc:Work rdf:about=''>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
- <dc:title>Gnome Symbolic Icon Theme</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview inkscape:bbox-nodes='false' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='-1.351226' inkscape:cy='9.99302' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1408' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
- <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='40px' originy='530px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
- </sodipodi:namedview>
- <title id='title9167'>Gnome Symbolic Icon Theme</title>
- <defs id='defs7386'/>
- <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-201.0002,-747)'/>
- <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-201.0002,-747)'>
-
- <path inkscape:connector-curvature='0' d='m 215.03152,758.99677 0,-1.00001 c -9.1e-4,-0.0111 5.9e-4,-0.021 -9e-5,-0.0312 -0.0112,-0.25496 -0.12835,-0.50994 -0.31251,-0.6875 l -5.71875,-6.29767 -5.71875,6.29773 c -0.18821,0.1881 -0.28121,0.45346 -0.28122,0.71875 l 0,1.00001 1,0 c 0.26531,-7e-5 0.53059,-0.0931 0.71873,-0.28131 l 4.28125,-4.82896 4.28127,4.82896 c 0.19464,0.21073 0.46925,0.30315 0.74998,0.2813 z' id='path10839-9-9-5-9-1-0' sodipodi:nodetypes='ccsccccccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono'/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
+<g transform="translate(-201.0002,-747)">
+<path style="block-progression:tb;color:#bebebe;direction:ltr;text-indent:0;text-align:start;enable-background:new;text-transform:none;" d="m215.03,759,0-1c-0.00091-0.0111,0.00059-0.021-0.00009-0.0312-0.0112-0.25496-0.12835-0.50994-0.31251-0.6875l-5.7188-6.2977-5.7188,6.2977c-0.18821,0.1881-0.28121,0.45346-0.28122,0.71875v1h1c0.26531-0.00007,0.53059-0.0931,0.71873-0.28131l4.2812-4.829,4.2813,4.829c0.19464,0.21073,0.46925,0.30315,0.74998,0.2813z" fill-rule="nonzero" fill="#bebebe"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/p/themes/icons/view-global.svg b/p/themes/icons/view-global.svg
new file mode 100644
index 000000000..d81e79790
--- /dev/null
+++ b/p/themes/icons/view-global.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-61-867)" fill="#666" color="#000"><rect height="2" rx=".385" ry=".379" width="2" x="64" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="870"/><rect height="2" rx=".385" ry=".379" width="2" x="64" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="874.02"/><rect height="2" rx=".385" ry=".379" width="2" x="64" y="878"/><rect height="2" rx=".385" ry=".379" width="2" x="68" y="878"/><rect height="2" rx=".385" ry=".379" width="2" x="72" y="878"/></g></svg> \ No newline at end of file
diff --git a/p/themes/icons/view-normal.svg b/p/themes/icons/view-normal.svg
new file mode 100644
index 000000000..c35b101df
--- /dev/null
+++ b/p/themes/icons/view-normal.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-40-746)" fill="#666" color="#666"><path d="m43 749h10v2h-10z"/><path d="m43 753h10v2h-10z"/><path d="m43 757h10v2h-10z"/></g></svg> \ No newline at end of file
diff --git a/p/themes/icons/view-reader.svg b/p/themes/icons/view-reader.svg
new file mode 100644
index 000000000..3243aed6e
--- /dev/null
+++ b/p/themes/icons/view-reader.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-181-867)" fill="#666" color="#666"><path d="m 181,868 0,1 0,11 0,1 1,0 5,0 c 0.1754,0 0.52538,0.15166 0.8125,0.34375 0.28712,0.19209 0.46875,0.375 0.46875,0.375 L 189,882.4375 l 0.71875,-0.75 c 0,0 0.8963,-0.6875 1.28125,-0.6875 l 5,0 1,0 0,-1 0,-11 0,-1 -1,0 -5,0 c -0.87652,0 -1.56017,0.34756 -2.03125,0.6875 -0.0301,-0.0207 -0.031,-0.0105 -0.0625,-0.0312 C 188.44557,868.35254 187.82811,868 187,868 l -5,0 -1,0 z m 2,2 4,0 c 0.13821,0 0.51476,0.14746 0.8125,0.34375 0.29774,0.19629 0.5,0.375 0.5,0.375 l 0.71875,0.6875 0.6875,-0.71875 c 0,0 0.89975,-0.6875 1.28125,-0.6875 l 4,0 0,9 -4,0 c -0.87693,0 -1.56008,0.34735 -2.03125,0.6875 -0.0196,-0.0135 -0.011,-0.0177 -0.0312,-0.0312 C 188.47725,879.34834 187.83512,879 187,879 l -4,0 0,-9 z"/><g transform="scale(-1 1)"><rect height="2" rx=".375" width="3" x="-187" y="872"/><rect height="2" rx=".375" width="3" x="-187" y="875"/><rect height="2" rx=".375" width="3" x="-194" y="872"/><rect height="2" rx=".375" width="3" x="-194" y="875"/></g></g></svg> \ No newline at end of file
diff --git a/p/themes/index.html b/p/themes/index.html
new file mode 100644
index 000000000..85faaa37e
--- /dev/null
+++ b/p/themes/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB">
+<head>
+<meta charset="UTF-8" />
+<meta http-equiv="Refresh" content="0; url=/" />
+<title>Redirection</title>
+<meta name="robots" content="noindex" />
+</head>
+
+<body>
+<p><a href="/">Redirection</a></p>
+</body>
+</html>
diff --git a/p/themes/p.css b/p/themes/p.css
new file mode 100644
index 000000000..171b2078b
--- /dev/null
+++ b/p/themes/p.css
@@ -0,0 +1,17 @@
+@charset "UTF-8";
+
+body {
+ font-family: sans-serif;
+ text-align: center;
+}
+h1 {
+ font-size: xx-large;
+ text-shadow: 1px -1px 0 #CCCCCC;
+}
+h1 a {
+ color: #0062BE;
+ text-decoration: none;
+}
+img {
+ border: 0;
+}