commit 394389a85cac2b4df85e392e3ef495c4cfa9d672 Author: Jason Date: Mon Feb 14 16:43:40 2022 -0500 🦈🏠🐜❗ Initial Commit ❗🐜🦈🏠 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99a5f5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# gitignore created on 02/09/22 at 12:16 +# Disable reminder in prompt +ignoredirmessage + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Other +.installed + + +# ignore commit message +.gitcommit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0013592 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +FROM casjaysdev/alpine:latest AS build + +ENV \ + ARIANG_VERSION=1.2.3 \ + DOMAIN=0.0.0.0:8080 + +RUN apk -U upgrade && \ + apk add --no-cache \ + nginx \ + aria2 && \ + rm -R /etc/nginx && \ + mkdir -p /aria2/config /aria2/data /usr/local/www/ariang + +# AriaNG +WORKDIR /usr/local/www/ariang +COPY ./src/web/. ./ + +# config files +COPY ./config/. /etc/ +COPY ./bin/. /usr/local/bin/ + +FROM build +ARG BUILD_DATE="$(date +'%Y-%m-%d %H:%M')" + +LABEL \ + org.label-schema.name="aria2" \ + org.label-schema.description="Aria2 downloader and AriaNg webui Docker image based on Alpine Linux" \ + org.label-schema.url="https://github.com/casjaysdev/aria2" \ + org.label-schema.vcs-url="https://github.com/casjaysdev/aria2" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.version=$BUILD_DATE \ + org.label-schema.vcs-ref=$BUILD_DATE \ + org.label-schema.license="MIT" \ + org.label-schema.vcs-type="Git" \ + org.label-schema.schema-version="1.0" \ + org.label-schema.vendor="CasjaysDev" \ + maintainer="CasjaysDev " + +WORKDIR /aria2 +VOLUME ["/aria2/data", "/aria2/config"] + +EXPOSE 6800 + +HEALTHCHECK CMD ["/usr/local/bin/entrypoint-aria2.sh", "healthcheck"] +ENTRYPOINT ["/usr/local/bin/entrypoint-aria2.sh"] diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..86d4345 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2022 Jason Hempstead + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 1. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f2e82d5 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +

+👋 Welcome to aria2 👋 +

+

+StartDocumentationHere +

+ +## Author + +👤 **Jason Hempstead** diff --git a/bin/entrypoint-aria2.sh b/bin/entrypoint-aria2.sh new file mode 100755 index 0000000..158215a --- /dev/null +++ b/bin/entrypoint-aria2.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +##@Version : 202202020147-git +# @Author : Jason Hempstead +# @Contact : jason@casjaysdev.com +# @License : WTFPL +# @ReadME : docker-entrypoint --help +# @Copyright : Copyright: (c) 2022 Jason Hempstead, Casjays Developments +# @Created : Wednesday, Feb 02, 2022 01:47 EST +# @File : docker-entrypoint +# @Description : +# @TODO : +# @Other : +# @Resource : +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +APPNAME="$(basename "$0")" +VERSION="202202020147-git" +USER="${SUDO_USER:-${USER}}" +HOME="${USER_HOME:-${HOME}}" +SRC_DIR="${BASH_SOURCE%/*}" +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Set bash options +if [[ "$1" == "--debug" ]]; then shift 1 && set -xo pipefail && export SCRIPT_OPTS="--debug" && export _DEBUG="on"; fi +trap 'exitCode=${exitCode:-$?};[ -n "$DOCKER_ENTRYPOINT_TEMP_FILE" ] && [ -f "$DOCKER_ENTRYPOINT_TEMP_FILE" ] && rm -Rf "$DOCKER_ENTRYPOINT_TEMP_FILE" &>/dev/null' EXIT + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ARIA2RPCPORT="${ARIA2RPCPORT:-6800}" +export TZ="${TZ:-America/New_York}" +export HOSTNAME="${HOSTNAME:-casjaysdev-aria2}" + +[ -n "${TZ}" ] && echo "${TZ}" >/etc/timezone +[ -n "${HOSTNAME}" ] && echo "${HOSTNAME}" >/etc/hostname +[ -n "${HOSTNAME}" ] && echo "127.0.0.1 $HOSTNAME localhost" >/etc/hosts +[ -f "/usr/share/zoneinfo/${TZ}" ] && ln -sf "/usr/share/zoneinfo/${TZ}" "/etc/localtime" + +# copy nginx config +[ -d "/aria2/config/nginx" ] && + cp -Rf "/aria2/config/nginx/." "/etc/nginx/" + +# copy aria config +[ -f "/aria2/config/aria2.conf" ] && + cp -Rf "/aria2/config/aria2.conf" "/etc/aria2.conf" + +# copy ariang js script to webdir +if [ -f "/aria2/config/ariang.js" ]; then + ln -sf "/aria2/config/ariang.js" "/usr/local/www/ariang/js/aria-ng-f1dd57abb9.min.js" +else + cp -Rf "/etc/ariang.js" "/aria2/config/ariang.js" + ln -sf "/aria2/config/ariang.js" "/usr/local/www/ariang/js/aria-ng-f1dd57abb9.min.js" +fi + +# allow Changing of port [unsupported] +if [[ -n "$ARIA2RPCPORT" ]] && [[ "$ARIA2RPCPORT" != "6800" ]]; then + echo "Changing rpc request port to $ARIA2RPCPORT" + sed -i "s|6800|${ARIA2RPCPORT}|g" "/etc/nginx/nginx.conf" + sed -i "ss|6800|${ARIA2RPCPORT}|g" "" +fi + +# set rpc secret +if [ -n "$RPC_SECRET" ]; then + echo "Changing rpc secret to $RPC_SECRET" + grep -sq "rpc-secret=*" "/etc/aria2.conf" || + echo "rpc-secret=$RPC_SECRET" >>"/etc/aria2.conf" || + sed -i "s|rpc-secret=.*|rpc-secret=$RPC_SECRET|g" "/etc/aria2.conf" + sed -i "s|secret: |secret: $RPC_SECRET|g" "/usr/local/www/ariang/js/aria-ng-f1dd57abb9.min.js" +fi + +# create directories +[[ -d "/aria2/config" ]] || mkdir -p "/aria2/config" +[[ -d "/aria2/data" ]] || mkdir -p "/aria2/data" +chmod -Rf 777 "/aria2" + +# +[ -d "/etc/nginx" ] && cp -Rf "/etc/nginx/." "/aria2/config/nginx/" +[ -f "/etc/aria2.conf" ] && cp -Rf "/etc/aria2.conf" "/aria2/config/aria2.conf" +[ -f "/aria2/config/aria2.session" ] || touch "/aria2/config/aria2.session" + +case "$1" in +healthcheck) + if curl -q -LSsf -o /dev/null -s -w "200" "http://localhost:$ARIA2RPCPORT"; then + echo "OK" + exit 0 + else + echo "FAIL" + exit 10 + fi + ;; + +bash | shell | sh) + ARGS="$*" + exec /bin/bash ${ARGS:--l} + ;; + +*) + [ -f "/etc/nginx/nginx.conf" ] && nginx -c /etc/nginx/nginx.conf & + [ -f "/etc/aria2.conf" ] && exec aria2c --conf-path="/etc/aria2.conf" || exit 10 + ;; +esac diff --git a/config/aria2.conf b/config/aria2.conf new file mode 100644 index 0000000..ba610d2 --- /dev/null +++ b/config/aria2.conf @@ -0,0 +1,24 @@ +# Default configuration for aria2 +dir=/aria2/data +log=/aria2/data/aria2.log +input-file=/aria2/config/aria2.session +save-session=/aria2/config/aria2.session +enable-rpc=true +rpc-listen-port=8080 +rpc-allow-origin-all=true +rpc-listen-all=true +disable-ipv6=true +max-concurrent-downloads=5 +continue=true +max-connection-per-server=5 +min-split-size=10M +split=10 +max-overall-download-limit=0 +max-download-limit=0 +max-overall-upload-limit=0 +max-upload-limit=0 +file-allocation=prealloc +console-log-level=notice +save-session-interval=10 +max-upload-limit=0 +bt-tracker=udp://62.138.0.158:6969/announce,udp://188.241.58.209:6969/announce,udp://151.80.120.112:2710/announce,udp://151.80.120.114:2710/announce,udp://93.158.213.92:1337/announce,udp://185.19.107.254:80/announce,udp://185.225.17.100:1337/announce,udp://208.83.20.20:6969/announce,udp://5.206.19.247:6969/announce,udp://37.235.174.46:2710/announce,udp://142.44.243.4:1337/announce,udp://195.154.52.99:80/announce,udp://54.37.235.149:6969/announce,udp://212.1.226.176:2710/announce,udp://89.234.156.205:451/announce,udp://159.100.245.181:6969/announce,udp://45.56.74.11:6969/announce,udp://51.15.226.113:6969/announce,udp://176.113.71.19:6961/announce,udp://51.15.40.114:80/announce diff --git a/config/aria2.session b/config/aria2.session new file mode 100755 index 0000000..e69de29 diff --git a/config/ariang.js b/config/ariang.js new file mode 100755 index 0000000..03a86de --- /dev/null +++ b/config/ariang.js @@ -0,0 +1,8195 @@ +/*! + * AriaNg + * https://github.com/mayswind/AriaNg + */ +!(function () { + 'use strict'; + var e, t, a; + if ( + ((e = navigator.appName), + (t = navigator.appVersion.split(';')), + (a = t && 1 < t.length ? t[1].replace(/[ ]/g, '') : ''), + 'Microsoft Internet Explorer' === e && + ('MSIE6.0' === a || + 'MSIE7.0' === a || + 'MSIE8.0' === a || + 'MSIE9.0' === a)) + ) { + var n = document.createElement('div'); + (n.className = 'alert alert-danger'), + (n.innerHTML = + 'Sorry, AriaNg cannot support this browser, please upgrade your browser!'), + document.getElementById('content-wrapper').appendChild(n); + } +})(), + (function () { + 'use strict'; + var e = function () { + var e = $(window).height(), + t = $('.main-header').outerHeight() + $('.main-footer').outerHeight(); + $('.content-body').css('height', e - t); + }; + $(window, '.wrapper').resize(function () { + e(), + setInterval(function () { + e(); + }, 1); + }), + e(); + })(), + (function () { + 'use strict'; + angular.module('ariaNg', [ + 'ngRoute', + 'ngSanitize', + 'ngTouch', + 'ngMessages', + 'ngCookies', + 'ngAnimate', + 'pascalprecht.translate', + 'angularMoment', + 'ngWebSocket', + 'utf8-base64', + 'LocalStorageModule', + 'ui-notification', + 'angularBittorrentPeerid', + 'cgBusy', + 'angularPromiseButtons', + 'oitozero.ngSweetAlert', + 'angular-clipboard', + 'inputDropdown', + angularDragula(angular), + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').config([ + '$routeProvider', + function (e) { + e.when('/downloading', { + templateUrl: 'views/list.html', + controller: 'DownloadListController', + }) + .when('/waiting', { + templateUrl: 'views/list.html', + controller: 'DownloadListController', + }) + .when('/stopped', { + templateUrl: 'views/list.html', + controller: 'DownloadListController', + }) + .when('/new', { + templateUrl: 'views/new.html', + controller: 'NewTaskController', + }) + .when('/new/:url', { template: '', controller: 'CommandController' }) + .when('/task/detail/:gid', { + templateUrl: 'views/task-detail.html', + controller: 'TaskDetailController', + }) + .when('/settings/ariang', { + templateUrl: 'views/settings-ariang.html', + controller: 'AriaNgSettingsController', + }) + .when('/settings/ariang/:extendType', { + templateUrl: 'views/settings-ariang.html', + controller: 'AriaNgSettingsController', + }) + .when('/settings/aria2/basic', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/http-ftp-sftp', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/http', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/ftp-sftp', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/bt', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/metalink', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/rpc', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/aria2/advanced', { + templateUrl: 'views/settings-aria2.html', + controller: 'Aria2SettingsController', + }) + .when('/settings/rpc/set', { + template: '', + controller: 'CommandController', + }) + .when('/settings/rpc/set/:protocol/:host/:port/:interface/:secret?', { + template: '', + controller: 'CommandController', + }) + .when('/debug', { + templateUrl: 'views/debug.html', + controller: 'AriaNgDebugController', + }) + .when('/status', { + templateUrl: 'views/status.html', + controller: 'Aria2StatusController', + }) + .otherwise({ redirectTo: '/downloading' }); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').run([ + '$window', + '$rootScope', + '$location', + '$document', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgSettingService', + 'aria2TaskService', + function (a, n, s, o, t, i, r, l, e) { + var c = !1, + d = function (e, t) { + return ( + e === t || + (0 === t.indexOf(e) && 0 === t.substring(e.length).indexOf('/')) + ); + }, + u = function () { + (n.currentTheme = 'light'), + angular.element('body').removeClass('theme-dark'); + }, + p = function () { + (n.currentTheme = 'dark'), + angular.element('body').addClass('theme-dark'); + }, + g = function () { + if (l.isBrowserSupportDarkMode()) { + var e = a.matchMedia('(prefers-color-scheme: dark)'); + r.info( + '[root.setThemeBySystemSettings] system uses ' + + (e.matches ? 'dark' : 'light') + + ' theme' + ), + e.matches ? p() : u(); + } else g(); + }, + f = function () { + angular + .element('body') + .addClass('sidebar-collapse') + .removeClass('sidebar-open'); + }; + ((n.currentTheme = 'dark'), + (n.searchContext = { text: '' }), + (n.taskContext = { + rpcStatus: 'Connecting', + list: [], + selected: {}, + enableSelectAll: !1, + getSelectedTaskIds: function () { + var e = []; + if (!this.list || !this.selected || this.list.length < 1) return e; + for (var t = 0; t < this.list.length; t++) { + var a = this.list[t]; + this.selected[a.gid] && e.push(a.gid); + } + return e; + }, + getSelectedTasks: function () { + var e = []; + if (!this.list || !this.selected || this.list.length < 1) return e; + for (var t = 0; t < this.list.length; t++) { + var a = this.list[t]; + this.selected[a.gid] && e.push(a); + } + return e; + }, + isAllSelected: function () { + for (var e = !0, t = 0; t < this.list.length; t++) { + var a = this.list[t]; + if (n.filterTask(a) && !this.selected[a.gid]) { + e = !1; + break; + } + } + return e; + }, + hasRetryableTask: function () { + for (var e = 0; e < this.list.length; e++) { + var t = this.list[e]; + if (n.filterTask(t) && n.isTaskRetryable(t)) return !0; + } + return !1; + }, + hasCompletedTask: function () { + for (var e = 0; e < this.list.length; e++) { + var t = this.list[e]; + if (n.filterTask(t) && 'complete' === t.status) return !0; + } + return !1; + }, + selectAll: function () { + if ( + this.list && + this.selected && + !(this.list.length < 1) && + this.enableSelectAll + ) + for ( + var e = this.isAllSelected(), t = 0; + t < this.list.length; + t++ + ) { + var a = this.list[t]; + n.filterTask(a) && (this.selected[a.gid] = !e); + } + }, + selectAllFailed: function () { + if ( + this.list && + this.selected && + !(this.list.length < 1) && + this.enableSelectAll + ) { + for (var e = !0, t = 0; t < this.list.length; t++) { + var a = this.list[t]; + n.filterTask(a) && + n.isTaskRetryable(a) && + (this.selected[a.gid] || (e = !1)); + } + for (t = 0; t < this.list.length; t++) { + a = this.list[t]; + n.filterTask(a) && + (n.isTaskRetryable(a) + ? (this.selected[a.gid] = !e) + : (this.selected[a.gid] = !1)); + } + } + }, + selectAllCompleted: function () { + if ( + this.list && + this.selected && + !(this.list.length < 1) && + this.enableSelectAll + ) { + for (var e = !0, t = 0; t < this.list.length; t++) { + var a = this.list[t]; + n.filterTask(a) && + 'complete' === a.status && + (this.selected[a.gid] || (e = !1)); + } + for (t = 0; t < this.list.length; t++) { + a = this.list[t]; + n.filterTask(a) && + ('complete' === a.status + ? (this.selected[a.gid] = !e) + : (this.selected[a.gid] = !1)); + } + } + }, + }), + (n.filterTask = function (e) { + return ( + !(!e || !angular.isString(e.taskName)) && + (!n.searchContext || + !n.searchContext.text || + 0 <= + e.taskName + .toLowerCase() + .indexOf(n.searchContext.text.toLowerCase())) + ); + }), + (n.isTaskRetryable = function (e) { + return ( + e && 'error' === e.status && e.errorDescription && !e.bittorrent + ); + }), + (n.swipeActions = { + leftSwipe: function () { + l.getSwipeGesture() && + (angular.element('body').hasClass('sidebar-open') + ? f() + : (!this.extendLeftSwipe || + (angular.isFunction(this.extendLeftSwipe) && + !this.extendLeftSwipe())) && + f()); + }, + rightSwipe: function () { + l.getSwipeGesture() && + (!this.extendRightSwipe || + (angular.isFunction(this.extendRightSwipe) && + !this.extendRightSwipe())) && + angular + .element('body') + .removeClass('sidebar-collapse') + .addClass('sidebar-open'); + }, + }), + (n.refreshPage = function () { + a.location.reload(); + }), + (n.setAutoRefreshAfterPageLoad = function () { + c = !0; + }), + (n.setTheme = function (e) { + 'system' === e ? g() : 'dark' === e ? p() : u(); + }), + l.onApplicationCacheUpdated(function () { + i.notifyInPage( + '', + 'Application cache has been updated, please reload the page for the changes to take effect.', + { + delay: !1, + type: 'info', + templateUrl: 'views/notification-reloadable.html', + } + ); + }), + l.onFirstAccess(function () { + i.notifyInPage('', 'Tap to configure and get started with AriaNg.', { + delay: !1, + onClose: function () { + s.path('/settings/ariang'); + }, + }); + }), + e.onFirstSuccess(function (e) { + i.notifyInPage('', 'is connected', { + type: 'success', + contentPrefix: e.rpcName + ' ', + }); + }), + e.onConnectionSuccess(function () { + 'Connected' !== n.taskContext.rpcStatus && + (n.taskContext.rpcStatus = 'Connected'); + }), + e.onConnectionFailed(function () { + 'Disconnected' !== n.taskContext.rpcStatus && + (n.taskContext.rpcStatus = 'Disconnected'); + }), + e.onTaskCompleted(function (e) { + i.notifyTaskComplete(e.task); + }), + e.onBtTaskCompleted(function (e) { + i.notifyBtTaskComplete(e.task); + }), + e.onTaskErrorOccur(function (e) { + i.notifyTaskError(e.task); + }), + n.$on('$locationChangeStart', function (e) { + t.closeAllDialogs(), + (n.loadPromise = null), + delete n.swipeActions.extendLeftSwipe, + delete n.swipeActions.extendRightSwipe, + angular.isArray(n.taskContext.list) && + 0 < n.taskContext.list.length && + (n.taskContext.list.length = 0), + angular.isObject(n.taskContext.selected) && + (n.taskContext.selected = {}), + (n.taskContext.enableSelectAll = !1); + }), + n.$on('$routeChangeStart', function (e, t, a) { + var n, + i = s.path(); + (n = i), + angular.element('section.sidebar > ul li').removeClass('active'), + angular + .element('section.sidebar > ul > li[data-href-match]') + .each(function (e, t) { + var a = angular.element(t).attr('data-href-match'); + d(a, n) && angular.element(t).addClass('active'); + }), + angular + .element( + 'section.sidebar > ul > li.treeview > ul.treeview-menu > li[data-href-match]' + ) + .each(function (e, t) { + var a = angular.element(t).attr('data-href-match'); + d(a, n) && + angular + .element(t) + .addClass('active') + .parent() + .parent() + .addClass('active'); + }), + o.unbind('keypress'); + }), + l.isBrowserSupportDarkMode()) && + a + .matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', function (e) { + r.info( + '[root] system switches to ' + + (e.matches ? 'dark' : 'light') + + ' theme' + ), + 'system' === l.getTheme() && (e.matches ? p() : u()); + }); + n.$on('$locationChangeSuccess', function (e, t) { + c && a.location.reload(); + }), + 'system' === l.getTheme() ? g() : 'dark' === l.getTheme() ? p() : u(), + (function () { + var e = l.getBrowserFeatures(); + if ( + (e.localStroage || + r.warn('[root.initCheck] LocalStorage is not supported!'), + e.cookies || r.warn('[root.initCheck] Cookies is not supported!'), + !l.isBrowserSupportStorage()) + ) + throw ( + (angular + .element('body') + .prepend('
'), + angular.element('.main-sidebar').addClass('blur'), + angular.element('.navbar').addClass('blur'), + angular.element('.content-body').addClass('blur'), + i.notifyInPage( + '', + 'You cannot use AriaNg because this browser does not meet the minimum requirements for data storage.', + { type: 'error', delay: !1 } + ), + new Error( + 'You cannot use AriaNg because this browser does not meet the minimum requirements for data storage.' + )) + ); + })(), + angular + .element('section.sidebar > ul > li[data-href-match] > a') + .click(function () { + angular.element('section.sidebar > ul li').removeClass('active'), + angular.element(this).parent().addClass('active'); + }), + angular + .element( + 'section.sidebar > ul > li.treeview > ul.treeview-menu > li[data-href-match] > a' + ) + .click(function () { + angular.element('section.sidebar > ul li').removeClass('active'), + angular + .element(this) + .parent() + .addClass('active') + .parent() + .parent() + .addClass('active'); + }); + }, + ]); + })(), + (function () { + 'use strict'; + angular + .module('ariaNg') + .constant('ariaNgConstants', { + title: 'AriaNg', + appPrefix: 'AriaNg', + optionStorageKey: 'Options', + languageStorageKeyPrefix: 'Language', + settingHistoryKeyPrefix: 'History', + languagePath: 'langs', + languageFileExtension: '.txt', + defaultLanguage: 'en', + defaultHost: 'localhost', + defaultSecureProtocol: 'https', + defaultPathSeparator: '/', + websocketAutoReconnect: !0, + globalStatStorageCapacity: 120, + taskStatStorageCapacity: 300, + lazySaveTimeout: 500, + errorTooltipDelay: 500, + notificationInPageTimeout: 2e3, + historyMaxStoreCount: 10, + cachedDebugLogsLimit: 100, + }) + .constant('ariaNgDefaultOptions', { + language: 'en', + theme: 'light', + title: '${downspeed}, ${upspeed} - ${title}', + titleRefreshInterval: 5e3, + browserNotification: !1, + rpcAlias: '', + rpcHost: 'localhost', + rpcPort: '6800', + rpcInterface: 'jsonrpc', + protocol: 'ws', + httpMethod: 'POST', + secret: '', + extendRpcServers: [], + globalStatRefreshInterval: 1e3, + downloadTaskRefreshInterval: 1e3, + swipeGesture: !0, + dragAndDropTasks: !0, + rpcListDisplayOrder: 'recentlyUsed', + afterCreatingNewTask: 'task-list', + removeOldTaskAfterRetrying: !1, + confirmTaskRemoval: !0, + includePrefixWhenCopyingFromTaskDetails: !0, + showPiecesInfoInTaskDetailPage: 'le10240', + afterRetryingTask: 'task-list-downloading', + displayOrder: 'default:asc', + fileListDisplayOrder: 'default:asc', + peerListDisplayOrder: 'default:asc', + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').constant('ariaNgBuildConfiguration', { + buildVersion: 'v1.2.3', + buildCommit: 'fb142ad', + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').config([ + '$qProvider', + '$translateProvider', + 'localStorageServiceProvider', + 'NotificationProvider', + 'ariaNgConstants', + 'ariaNgLanguages', + function (e, t, a, n, i, s) { + e.errorOnUnhandledRejections(!1), + a + .setPrefix(i.appPrefix) + .setStorageType('localStorage') + .setStorageCookie(365, '/'); + var o = [], + r = {}; + for (var l in s) + if (s.hasOwnProperty(l)) { + var c = s[l].aliases; + if ((o.push(l), angular.isArray(c) && !(c.length < 1))) + for (var d = 0; d < c.length; d++) { + r[c[d]] = l; + } + } + t + .useLoader('ariaNgLanguageLoader') + .useLoaderCache(!0) + .registerAvailableLanguageKeys(o, r) + .fallbackLanguage(i.defaultLanguage) + .useSanitizeValueStrategy('escapeParameters'), + n.setOptions({ delay: i.notificationInPageTimeout }); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').constant('ariaNgFileTypes', { + video: { + name: 'Videos', + extensions: [ + '.3g2', + '.3gp', + '.3gp2', + '.3gpp', + '.asf', + '.asx', + '.avi', + '.dat', + '.divx', + '.flv', + '.m1v', + '.m2ts', + '.m2v', + '.m4v', + '.mkv', + '.mov', + '.mp4', + '.mpe', + '.mpeg', + '.mpg', + '.mts', + '.ogv', + '.qt', + '.ram', + '.rm', + '.rmvb', + '.ts', + '.vob', + '.wmv', + ], + }, + audio: { + name: 'Audios', + extensions: [ + '.aac', + '.ac3', + '.adts', + '.amr', + '.ape', + '.eac3', + '.flac', + '.m1a', + '.m2a', + '.m4a', + '.mid', + '.mka', + '.mp2', + '.mp3', + '.mpa', + '.mpc', + '.ogg', + '.ra', + '.tak', + '.vqf', + '.wm', + '.wav', + '.wma', + '.wv', + ], + }, + picture: { + name: 'Pictures', + extensions: [ + '.abr', + '.bmp', + '.emf', + '.gif', + '.j2c', + '.j2k', + '.jfif', + '.jif', + '.jp2', + '.jpc', + '.jpe', + '.jpeg', + '.jpf', + '.jpg', + '.jpk', + '.jpx', + '.pcx', + '.pct', + '.pic', + '.pict', + '.png', + '.pns', + '.psd', + '.psdx', + '.raw', + '.svg', + '.svgz', + '.tga', + '.tif', + '.tiff', + '.wbm', + '.wbmp', + '.webp', + '.wmf', + '.xif', + ], + }, + document: { + name: 'Documents', + extensions: [ + '.csv', + '.doc', + '.docm', + '.docx', + '.dot', + '.dotm', + '.dotx', + '.key', + '.mpp', + '.numbers', + '.odp', + '.ods', + '.odt', + '.pages', + '.pdf', + '.pot', + '.potm', + '.potx', + '.pps', + '.ppsm', + '.ppsx', + '.ppt', + '.pptm', + '.pptx', + '.rtf', + '.txt', + '.vsd', + '.vsdx', + '.wk1', + '.wk2', + '.wk3', + '.wk4', + '.wks', + '.wpd', + '.wps', + '.xla', + '.xlam', + '.xll', + '.xlm', + '.xls', + '.xlsb', + '.xlsm', + '.xlsx', + '.xlt', + '.xltx', + '.xlw', + '.xps', + ], + }, + application: { + name: 'Applications', + extensions: [ + '.apk', + '.bat', + '.com', + '.deb', + '.dll', + '.dmg', + '.exe', + '.ipa', + '.jar', + '.msi', + '.rpm', + '.sh', + ], + }, + archive: { + name: 'Archives', + extensions: [ + '.001', + '.7z', + '.ace', + '.arj', + '.bz2', + '.cab', + '.cbr', + '.cbz', + '.gz', + '.img', + '.iso', + '.lzh', + '.qcow2', + '.r', + '.rar', + '.sef', + '.tar', + '.taz', + '.tbz', + '.tbz2', + '.uue', + '.vdi', + '.vhd', + '.vmdk', + '.wim', + '.xar', + '.xz', + '.z', + '.zip', + ], + }, + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').run([ + 'moment', + 'ariaNgLocalizationService', + 'ariaNgSettingService', + function (e, t, a) { + var n = a.getLanguage(); + e.updateLocale('zh-cn', { week: null }), t.applyLanguage(n); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').constant('ariaNgLanguages', { + en: { name: 'English', displayName: 'English' }, + zh_Hans: { + name: 'Simplified Chinese', + displayName: '简体中文', + aliases: ['zh_CHS', 'zh_CN', 'zh_SG'], + }, + zh_Hant: { + name: 'Traditional Chinese', + displayName: '繁體中文', + aliases: ['zh_CHT', 'zh_TW', 'zh_HK', 'zh_MO'], + }, + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').config([ + '$translateProvider', + 'ariaNgConstants', + function (e, t) { + e.translations(t.defaultLanguage, { + 'AriaNg Version': 'AriaNg Version', + 'Operation Result': 'Operation Result', + 'Operation Succeeded': 'Operation Succeeded', + 'is connected': 'is connected', + Error: 'Error', + OK: 'OK', + Confirm: 'Confirm', + Cancel: 'Cancel', + Close: 'Close', + True: 'True', + False: 'False', + Connecting: 'Connecting', + Connected: 'Connected', + Disconnected: 'Disconnected', + Global: 'Global', + New: 'New', + Start: 'Start', + Pause: 'Pause', + Retry: 'Retry', + 'Retry Selected Tasks': 'Retry Selected Tasks', + Delete: 'Delete', + 'Select All': 'Select All', + 'Select None': 'Select None', + 'Select Invert': 'Select Invert', + 'Select All Failed Tasks': 'Select All Failed Tasks', + 'Select All Completed Tasks': 'Select All Completed Tasks', + 'Display Order': 'Display Order', + 'Copy Download Url': 'Copy Download Url', + 'Copy Magnet Link': 'Copy Magnet Link', + Help: 'Help', + Search: 'Search', + Default: 'Default', + Expand: 'Expand', + Collapse: 'Collapse', + 'Expand All': 'Expand All', + 'Collapse All': 'Collapse All', + Open: 'Open', + Save: 'Save', + Import: 'Import', + 'Remove Task': 'Remove Task', + 'Clear Stopped Tasks': 'Clear Stopped Tasks', + 'Click to view task detail': 'Click to view task detail', + 'By File Name': 'By File Name', + 'By File Size': 'By File Size', + 'By Progress': 'By Progress', + 'By Selected Status': 'By Selected Status', + 'By Remaining': 'By Remaining', + 'By Download Speed': 'By Download Speed', + 'By Upload Speed': 'By Upload Speed', + 'By Peer Address': 'By Peer Address', + 'By Client Name': 'By Client Name', + Filters: 'Filters', + Download: 'Download', + Upload: 'Upload', + Downloading: 'Downloading', + 'Pending Verification': 'Pending Verification', + Verifying: 'Verifying', + Seeding: 'Seeding', + Waiting: 'Waiting', + Paused: 'Paused', + Completed: 'Completed', + 'Error Occurred': 'Error Occurred', + Removed: 'Removed', + 'Finished / Stopped': 'Finished / Stopped', + Uncompleted: 'Uncompleted', + 'Click to pin': 'Click to pin', + Settings: 'Settings', + 'AriaNg Settings': 'AriaNg Settings', + 'Aria2 Settings': 'Aria2 Settings', + 'Basic Settings': 'Basic Settings', + 'HTTP/FTP/SFTP Settings': 'HTTP/FTP/SFTP Settings', + 'HTTP Settings': 'HTTP Settings', + 'FTP/SFTP Settings': 'FTP/SFTP Settings', + 'BitTorrent Settings': 'BitTorrent Settings', + 'Metalink Settings': 'Metalink Settings', + 'RPC Settings': 'RPC Settings', + 'Advanced Settings': 'Advanced Settings', + 'AriaNg Debug Console': 'AriaNg Debug Console', + 'Aria2 Status': 'Aria2 Status', + 'File Name': 'File Name', + 'File Size': 'File Size', + Progress: 'Progress', + 'Share Ratio': 'Share Ratio', + Remaining: 'Remaining', + 'Download Speed': 'Download Speed', + 'Upload Speed': 'Upload Speed', + Links: 'Links', + 'Torrent File': 'Torrent File', + 'Metalink File': 'Metalink File', + 'File Name:': 'File Name:', + Options: 'Options', + Overview: 'Overview', + Pieces: 'Pieces', + Files: 'Files', + Peers: 'Peers', + 'Task Name': 'Task Name', + 'Task Size': 'Task Size', + 'Task Status': 'Task Status', + 'Error Description': 'Error Description', + 'Health Percentage': 'Health Percentage', + 'Info Hash': 'Info Hash', + Seeders: 'Seeders', + Connections: 'Connections', + 'Seed Creation Time': 'Seed Creation Time', + 'Download Url': 'Download Url', + 'Download Dir': 'Download Dir', + 'BT Tracker Servers': 'BT Tracker Servers', + Copy: 'Copy', + '(Choose Files)': '(Choose Files)', + Videos: 'Videos', + Audios: 'Audios', + Pictures: 'Pictures', + Documents: 'Documents', + Applications: 'Applications', + Archives: 'Archives', + Other: 'Other', + Custom: 'Custom', + 'Custom Choose File': 'Custom Choose File', + Address: 'Address', + Client: 'Client', + Status: 'Status', + Speed: 'Speed', + '(local)': '(local)', + 'No Data': 'No Data', + 'No connected peers': 'No connected peers', + 'Failed to change some tasks state.': + 'Failed to change some tasks state.', + 'Confirm Retry': 'Confirm Retry', + 'Are you sure you want to retry the selected task? AriaNg will create same task after clicking OK.': + 'Are you sure you want to retry the selected task? AriaNg will create same task after clicking OK.', + 'Failed to retry this task.': 'Failed to retry this task.', + '{successCount} tasks have been retried and {failedCount} tasks are failed.': + '{{successCount}} tasks have been retried and {{failedCount}} tasks are failed.', + 'Confirm Remove': 'Confirm Remove', + 'Are you sure you want to remove the selected task?': + 'Are you sure you want to remove the selected task?', + 'Failed to remove some task(s).': 'Failed to remove some task(s).', + 'Confirm Clear': 'Confirm Clear', + 'Are you sure you want to clear stopped tasks?': + 'Are you sure you want to clear stopped tasks?', + 'Download Links:': 'Download Links:', + 'Open Torrent File': 'Open Torrent File', + 'Open Metalink File': 'Open Metalink File', + 'Download Now': 'Download Now', + 'Download Later': 'Download Later', + 'Support multiple URLs, one URL per line.': + 'Support multiple URLs, one URL per line.', + 'Your browser does not support loading file!': + 'Your browser does not support loading file!', + 'The selected file type is invalid!': + 'The selected file type is invalid!', + 'Failed to load file!': 'Failed to load file!', + 'Download Completed': 'Download Completed', + 'BT Download Completed': 'BT Download Completed', + 'Download Error': 'Download Error', + Language: 'Language', + Theme: 'Theme', + Light: 'Light', + Dark: 'Dark', + 'Follow system settings': 'Follow system settings', + 'Debug Mode': 'Debug Mode', + 'Page Title': 'Page Title', + Preview: 'Preview', + 'Tips: You can use the "noprefix" tag to ignore the prefix, "nosuffix" tag to ignore the suffix, and "scale=n" tag to set the decimal precision.': + 'Tips: You can use the "noprefix" tag to ignore the prefix, "nosuffix" tag to ignore the suffix, and "scale=n" tag to set the decimal precision.', + 'Example: ${downspeed:noprefix:nosuffix:scale=1}': + 'Example: ${downspeed:noprefix:nosuffix:scale=1}', + 'Updating Page Title Interval': 'Updating Page Title Interval', + 'Enable Browser Notification': 'Enable Browser Notification', + 'Aria2 RPC Alias': 'Aria2 RPC Alias', + 'Aria2 RPC Address': 'Aria2 RPC Address', + 'Aria2 RPC Protocol': 'Aria2 RPC Protocol', + 'Aria2 RPC Http Request Method': 'Aria2 RPC Http Request Method', + 'POST method only supports aria2 v1.15.2 and above.': + 'POST method only supports aria2 v1.15.2 and above.', + 'Aria2 RPC Secret Token': 'Aria2 RPC Secret Token', + Activate: 'Activate', + 'Reset Settings': 'Reset Settings', + 'Confirm Reset': 'Confirm Reset', + 'Are you sure you want to reset all settings?': + 'Are you sure you want to reset all settings?', + 'Clear Settings History': 'Clear Settings History', + 'Are you sure you want to clear all settings history?': + 'Are you sure you want to clear all settings history?', + 'Delete RPC Setting': 'Delete RPC Setting', + 'Add New RPC Setting': 'Add New RPC Setting', + 'Are you sure you want to remove rpc setting "{rpcName}"?': + 'Are you sure you want to remove rpc setting "{{rpcName}}"?', + 'Updating Global Stat Interval': 'Updating Global Stat Interval', + 'Updating Task Information Interval': + 'Updating Task Information Interval', + 'Swipe Gesture': 'Swipe Gesture', + 'Change Tasks Order by Drag-and-drop': + 'Change Tasks Order by Drag-and-drop', + 'Action After Creating New Tasks': 'Action After Creating New Tasks', + 'Navigate to Task List Page': 'Navigate to Task List Page', + 'Navigate to Task Detail Page': 'Navigate to Task Detail Page', + 'Action After Retrying Task': 'Action After Retrying Task', + 'Navigate to Downloading Tasks Page': + 'Navigate to Downloading Tasks Page', + 'Stay on Current Page': 'Stay on Current Page', + 'Remove Old Tasks After Retrying': 'Remove Old Tasks After Retrying', + 'Confirm Task Removal': 'Confirm Task Removal', + 'Include Prefix When Copying From Task Details': + 'Include Prefix When Copying From Task Details', + 'Show Pieces Info In Task Detail Page': + 'Show Pieces Info In Task Detail Page', + 'Pieces Amount is Less than or Equal to {value}': + 'Pieces Amount is Less than or Equal to {{value}}', + 'RPC List Display Order': 'RPC List Display Order', + 'Recently Used': 'Recently Used', + 'RPC Alias': 'RPC Alias', + 'Import / Export AriaNg Settings': 'Import / Export AriaNg Settings', + 'Import Settings': 'Import Settings', + 'Export Settings': 'Export Settings', + 'AriaNg settings data': 'AriaNg settings data', + 'Confirm Import': 'Confirm Import', + 'Are you sure you want to import all settings?': + 'Are you sure you want to import all settings?', + 'Invalid settings data format!': 'Invalid settings data format!', + 'Data has been copied to clipboard.': + 'Data has been copied to clipboard.', + 'Supported Placeholder': 'Supported Placeholder', + 'AriaNg Title': 'AriaNg Title', + 'Current RPC Alias': 'Current RPC Alias', + 'Downloading Count': 'Downloading Count', + 'Waiting Count': 'Waiting Count', + 'Stopped Count': 'Stopped Count', + "You have disabled notification in your browser. You should change your browser's settings before you enable this function.": + "You have disabled notification in your browser. You should change your browser's settings before you enable this function.", + 'Application cache has been updated, please reload the page for the changes to take effect.': + 'Application cache has been updated, please reload the page for the changes to take effect.', + 'Language resource has been updated, please reload the page for the changes to take effect.': + 'Language resource has been updated, please reload the page for the changes to take effect.', + 'Configuration has been modified, please reload the page for the changes to take effect.': + 'Configuration has been modified, please reload the page for the changes to take effect.', + 'Reload AriaNg': 'Reload AriaNg', + 'Show Secret': 'Show Secret', + 'Hide Secret': 'Hide Secret', + 'Aria2 Version': 'Aria2 Version', + 'Enabled Features': 'Enabled Features', + Operations: 'Operations', + 'Save Session': 'Save Session', + 'Shutdown Aria2': 'Shutdown Aria2', + 'Confirm Shutdown': 'Confirm Shutdown', + 'Are you sure you want to shutdown aria2?': + 'Are you sure you want to shutdown aria2?', + 'Session has been saved successfully.': + 'Session has been saved successfully.', + 'Aria2 has been shutdown successfully.': + 'Aria2 has been shutdown successfully.', + 'Toggle Navigation': 'Toggle Navigation', + Shortcut: 'Shortcut', + 'Global Rate Limit': 'Global Rate Limit', + Loading: 'Loading...', + 'More Than One Day': 'More than 1 day', + Unknown: 'Unknown', + Bytes: 'Bytes', + Hours: 'Hours', + Minutes: 'Minutes', + Seconds: 'Seconds', + Milliseconds: 'Milliseconds', + Http: 'Http', + 'Http (Disabled)': 'Http (Disabled)', + Https: 'Https', + WebSocket: 'WebSocket', + 'WebSocket (Disabled)': 'WebSocket (Disabled)', + 'WebSocket (Security)': 'WebSocket (Security)', + 'Http and WebSocket would be disabled when accessing AriaNg via Https.': + 'Http and WebSocket would be disabled when accessing AriaNg via Https.', + POST: 'POST', + GET: 'GET', + Enabled: 'Enabled', + Disabled: 'Disabled', + Always: 'Always', + Never: 'Never', + BitTorrent: 'BitTorrent', + 'Changes to the settings take effect after refreshing page.': + 'Changes to the settings take effect after refreshing page.', + 'Latest {{count}} Logs': 'Latest {{count}} Logs', + 'Show Detail': 'Show Detail', + 'Log Detail': 'Log Detail', + 'Type is illegal!': 'Type is illegal!', + 'Parameter is invalid!': 'Parameter is invalid!', + 'Option value cannot be empty!': 'Option value cannot be empty!', + 'Input number is invalid!': 'Input number is invalid!', + 'Input number is below min value!': + 'Input number is below min value {{value}}!', + 'Input number is above max value!': + 'Input number is above max value {{value}}!', + 'Input value is invalid!': 'Input value is invalid!', + 'Protocol is invalid!': 'Protocol is invalid!', + 'RPC host cannot be empty!': 'RPC host cannot be empty!', + 'RPC secret is not base64 encoded!': + 'RPC secret is not base64 encoded!', + 'URL is not base64 encoded!': 'URL is not base64 encoded!', + 'Tap to configure and get started with AriaNg.': + 'Tap to configure and get started with AriaNg.', + 'Cannot initialize WebSocket!': 'Cannot initialize WebSocket!', + 'Access Denied!': 'Access Denied!', + 'You cannot use AriaNg because this browser does not meet the minimum requirements for data storage.': + 'You cannot use AriaNg because this browser does not meet the minimum requirements for data storage.', + error: { + unknown: 'Unknown error occurred.', + 'operation.timeout': 'Operation timed out.', + 'resource.notfound': 'Resource was not found.', + 'error.resource.notfound.max-file-not-found': + 'Resource was not found. See --max-file-not-found option.', + 'error.download.aborted.lowest-speed-limit': + 'Download is aborted because download speed was too slow. See --lowest-speed-limit option.', + 'network.problem': 'Network problem occurred.', + 'resume.notsupported': 'Remote server does not support resume.', + 'space.notenough': 'There was not enough disk space available.', + 'piece.length.different': + 'Piece length was different from one in .aria2 control file. See --allow-piece-length-change option.', + 'download.sametime': + 'aria2 was downloading same file at that moment.', + 'download.torrent.sametime': + 'aria2 was downloading same file at that moment.', + 'file.exists': + 'File already existed. See --allow-overwrite option.', + 'file.rename.failed': + 'Failed to rename file. See --auto-file-renaming option.', + 'file.open.failed': 'Failed to open existing file.', + 'file.create.failed': + 'Failed to create new file or truncate existing file.', + 'io.error': 'Filesystem error occurred.', + 'directory.create.failed': 'Failed to create directory.', + 'name.resolution.failed': 'Failed to resolve domain name.', + 'metalink.file.parse.failed': 'Failed to parse Metalink document.', + 'ftp.command.failed': 'FTP command failed.', + 'http.response.header.bad': + 'HTTP response header was bad or unexpected.', + 'redirects.toomany': 'Too many redirects occurred.', + 'http.authorization.failed': 'HTTP authorization failed.', + 'bencoded.file.parse.failed': + 'Failed to parse bencoded file (usually ".torrent" file).', + 'torrent.file.corrupted': + 'The ".torrent" file was corrupted or missing information that aria2 needed.', + 'magnet.uri.bad': 'Magnet URI was bad.', + 'option.bad': + 'Bad/unrecognized option was given or unexpected option argument was given.', + 'server.overload': + 'The remote server was unable to handle the request due to a temporary overloading or maintenance.', + 'rpc.request.parse.failed': 'Failed to parse JSON-RPC request.', + 'checksum.failed': 'Checksum validation failed.', + }, + languages: { + English: 'English', + 'Simplified Chinese': 'Simplified Chinese', + 'Traditional Chinese': 'Traditional Chinese', + }, + format: { + longdate: 'MM/DD/YYYY HH:mm:ss', + 'time.millisecond': '{{value}} Millisecond', + 'time.milliseconds': '{{value}} Milliseconds', + 'time.second': '{{value}} Second', + 'time.seconds': '{{value}} Seconds', + 'time.minute': '{{value}} Minute', + 'time.minutes': '{{value}} Minutes', + 'time.hour': '{{value}} Hour', + 'time.hours': '{{value}} Hours', + 'requires.aria2-version': 'Requires aria2 v{{version}} or higher', + 'task.new.download-links': 'Download Links ({{count}} Links):', + 'task.pieceinfo': 'Completed: {{completed}}, Total: {{total}}', + 'task.error-occurred': 'Error Occurred ({{errorcode}})', + 'task.verifying-percent': 'Verifying ({{verifiedPercent}}%)', + 'settings.file-count': '({{count}} Files)', + 'settings.total-count': '(Total Count: {{count}})', + 'debug.latest-logs': 'Latest {{count}} Logs', + }, + rpc: { error: { unauthorized: 'Authorization Failed!' } }, + option: { + true: 'True', + false: 'False', + default: 'Default', + none: 'None', + hide: 'Hide', + full: 'Full', + http: 'Http', + https: 'Https', + ftp: 'Ftp', + mem: 'Memory Only', + get: 'GET', + tunnel: 'TUNNEL', + plain: 'Plain', + arc4: 'ARC4', + binary: 'Binary', + ascii: 'ASCII', + debug: 'Debug', + info: 'Info', + notice: 'Notice', + warn: 'Warn', + error: 'Error', + adaptive: 'adaptive', + epoll: 'epoll', + falloc: 'falloc', + feedback: 'feedback', + geom: 'geom', + inorder: 'inorder', + kqueue: 'kqueue', + poll: 'poll', + port: 'port', + prealloc: 'prealloc', + random: 'random', + select: 'select', + trunc: 'trunc', + SSLv3: 'SSLv3', + TLSv1: 'TLSv1', + 'TLSv1.1': 'TLSv1.1', + 'TLSv1.2': 'TLSv1.2', + }, + options: { + 'dir.name': 'Download Path', + 'dir.description': '', + 'log.name': 'Log File', + 'log.description': + 'The file name of the log file. If - is specified, log is written to stdout. If empty string("") is specified, or this option is omitted, no log is written to disk at all.', + 'max-concurrent-downloads.name': 'Max Concurrent Downloads', + 'max-concurrent-downloads.description': '', + 'check-integrity.name': 'Check Integrity', + 'check-integrity.description': + 'Check file integrity by validating piece hashes or a hash of entire file. This option has effect only in BitTorrent, Metalink downloads with checksums or HTTP(S)/FTP downloads with --checksum option.', + 'continue.name': 'Resume Download', + 'continue.description': + 'Continue downloading a partially downloaded file. Use this option to resume a download started by a web browser or another program which downloads files sequentially from the beginning. Currently this option is only applicable to HTTP(S)/FTP downloads.', + 'all-proxy.name': 'Proxy Server', + 'all-proxy.description': + 'Use a proxy server for all protocols. To override a previously defined proxy, use "". You also can override this setting and specify a proxy server for a particular protocol using --http-proxy, --https-proxy and --ftp-proxy This affects all downloads. The format of PROXY is [http://][USER:PASSWORD@]HOST[:PORT].', + 'all-proxy-user.name': 'Proxy User Name', + 'all-proxy-user.description': '', + 'all-proxy-passwd.name': 'Proxy Password', + 'all-proxy-passwd.description': '', + 'connect-timeout.name': 'Connect Timeout', + 'connect-timeout.description': + 'Set the connect timeout in seconds to establish connection to HTTP/FTP/proxy server. After the connection is established, this option makes no effect and --timeout option is used instead.', + 'dry-run.name': 'Dry Run', + 'dry-run.description': + "If true is given, aria2 just checks whether the remote file is available and doesn't download data. This option has effect on HTTP/FTP download. BitTorrent downloads are canceled if true is specified.", + 'lowest-speed-limit.name': 'Lowest Speed Limit', + 'lowest-speed-limit.description': + 'Close connection if download speed is lower than or equal to this value(bytes per sec). 0 means aria2 does not have a lowest speed limit. You can append K or M (1K = 1024, 1M = 1024K). This option does not affect BitTorrent downloads.', + 'max-connection-per-server.name': 'Max Connection Per Server', + 'max-connection-per-server.description': '', + 'max-file-not-found.name': 'Max File Not Found Try Times', + 'max-file-not-found.description': + 'If aria2 receives "file not found" status from the remote HTTP/FTP servers NUM times without getting a single byte, then force the download to fail. Specify 0 to disable this option. This options is effective only when using HTTP/FTP servers. The number of retry attempt is counted toward --max-tries, so it should be configured too.', + 'max-tries.name': 'Max Try Times', + 'max-tries.description': 'Set number of tries. 0 means unlimited.', + 'min-split-size.name': 'Min Split Size', + 'min-split-size.description': + "aria2 does not split less than 2*SIZE byte range. For example, let's consider downloading 20MiB file. If SIZE is 10M, aria2 can split file into 2 range [0-10MiB) and [10MiB-20MiB) and download it using 2 sources(if --split >= 2, of course). If SIZE is 15M, since 2*15M > 20MiB, aria2 does not split file and download it using 1 source. You can append K or M (1K = 1024, 1M = 1024K). Possible Values: 1M-1024M.", + 'netrc-path.name': '.netrc Path', + 'netrc-path.description': '', + 'no-netrc.name': 'Disable netrc', + 'no-netrc.description': '', + 'no-proxy.name': 'No Proxy List', + 'no-proxy.description': + 'Specify a comma separated list of host names, domains and network addresses with or without a subnet mask where no proxy should be used.', + 'out.name': 'File Name', + 'out.description': + 'The file name of the downloaded file. It is always relative to the directory given in --dir option. When the --force-sequential option is used, this option is ignored.', + 'proxy-method.name': 'Proxy Method', + 'proxy-method.description': + 'Set the method to use in proxy request. METHOD is either GET or TUNNEL. HTTPS downloads always use TUNNEL regardless of this option.', + 'remote-time.name': 'Remote File Timestamp', + 'remote-time.description': + 'Retrieve timestamp of the remote file from the remote HTTP/FTP server and if it is available, apply it to the local file.', + 'reuse-uri.name': 'Reuse Uri', + 'reuse-uri.description': + 'Reuse already used URIs if no unused URIs are left.', + 'retry-wait.name': 'Retry Wait', + 'retry-wait.description': + 'Set the seconds to wait between retries. When SEC > 0, aria2 will retry downloads when the HTTP server returns a 503 response.', + 'server-stat-of.name': 'Server Stat Output', + 'server-stat-of.description': + 'Specify the file name to which performance profile of the servers is saved. You can load saved data using --server-stat-if option.', + 'server-stat-timeout.name': 'Server Stat Timeout', + 'server-stat-timeout.description': + 'Specifies timeout in seconds to invalidate performance profile of the servers since the last contact to them.', + 'split.name': 'Split Count', + 'split.description': + 'Download a file using N connections. If more than N URIs are given, first N URIs are used and remaining URIs are used for backup. If less than N URIs are given, those URIs are used more than once so that N connections total are made simultaneously. The number of connections to the same host is restricted by the --max-connection-per-server option.', + 'stream-piece-selector.name': 'Piece Selection Algorithm', + 'stream-piece-selector.description': + 'Specify piece selection algorithm used in HTTP/FTP download. Piece means fixed length segment which is downloaded in parallel in segmented download. If default is given, aria2 selects piece so that it reduces the number of establishing connection. This is reasonable default behavior because establishing connection is an expensive operation. If inorder is given, aria2 selects piece which has minimum index. Index=0 means first of the file. This will be useful to view movie while downloading it. --enable-http-pipelining option may be useful to reduce re-connection overhead. Please note that aria2 honors --min-split-size option, so it will be necessary to specify a reasonable value to --min-split-size option. If random is given, aria2 selects piece randomly. Like inorder, --min-split-size option is honored. If geom is given, at the beginning aria2 selects piece which has minimum index like inorder, but it exponentially increasingly keeps space from previously selected piece. This will reduce the number of establishing connection and at the same time it will download the beginning part of the file first. This will be useful to view movie while downloading it.', + 'timeout.name': 'Timeout', + 'timeout.description': '', + 'uri-selector.name': 'URI Selection Algorithm', + 'uri-selector.description': + "Specify URI selection algorithm. The possible values are inorder, feedback and adaptive. If inorder is given, URI is tried in the order appeared in the URI list. If feedback is given, aria2 uses download speed observed in the previous downloads and choose fastest server in the URI list. This also effectively skips dead mirrors. The observed download speed is a part of performance profile of servers mentioned in --server-stat-of and --server-stat-if If adaptive is given, selects one of the best mirrors for the first and reserved connections. For supplementary ones, it returns mirrors which has not been tested yet, and if each of them has already been tested, returns mirrors which has to be tested again. Otherwise, it doesn't select anymore mirrors. Like feedback, it uses a performance profile of servers.", + 'check-certificate.name': 'Check Certificate', + 'check-certificate.description': '', + 'http-accept-gzip.name': 'Accept GZip', + 'http-accept-gzip.description': + 'Send Accept: deflate, gzip request header and inflate response if remote server responds with Content-Encoding: gzip or Content-Encoding: deflate.', + 'http-auth-challenge.name': 'Auth Challenge', + 'http-auth-challenge.description': + 'Send HTTP authorization header only when it is requested by the server. If false is set, then authorization header is always sent to the server. There is an exception: if user name and password are embedded in URI, authorization header is always sent to the server regardless of this option.', + 'http-no-cache.name': 'No Cache', + 'http-no-cache.description': + 'Send Cache-Control: no-cache and Pragma: no-cache header to avoid cached content. If false is given, these headers are not sent and you can add Cache-Control header with a directive you like using --header option.', + 'http-user.name': 'HTTP Default User Name', + 'http-user.description': '', + 'http-passwd.name': 'HTTP Default Password', + 'http-passwd.description': '', + 'http-proxy.name': 'HTTP Proxy Server', + 'http-proxy.description': '', + 'http-proxy-user.name': 'HTTP Proxy User Name', + 'http-proxy-user.description': '', + 'http-proxy-passwd.name': 'HTTP Proxy Password', + 'http-proxy-passwd.description': '', + 'https-proxy.name': 'HTTPS Proxy Server', + 'https-proxy.description': '', + 'https-proxy-user.name': 'HTTPS Proxy User Name', + 'https-proxy-user.description': '', + 'https-proxy-passwd.name': 'HTTPS Proxy Password', + 'https-proxy-passwd.description': '', + 'referer.name': 'Referer', + 'referer.description': + 'Set an http referrer (Referer). This affects all http/https downloads. If * is given, the download URI is also used as the referrer. This may be useful when used together with the --parameterized-uri option.', + 'enable-http-keep-alive.name': 'Enable Persistent Connection', + 'enable-http-keep-alive.description': + 'Enable HTTP/1.1 persistent connection.', + 'enable-http-pipelining.name': 'Enable HTTP Pipelining', + 'enable-http-pipelining.description': 'Enable HTTP/1.1 pipelining.', + 'header.name': 'Custom Header', + 'header.description': + 'Append HEADER to HTTP request header. Put one item per line, each item containing "header name: header value".', + 'save-cookies.name': 'Cookies Path', + 'save-cookies.description': + 'Save Cookies to FILE in Mozilla/Firefox(1.x/2.x)/ Netscape format. If FILE already exists, it is overwritten. Session Cookies are also saved and their expiry values are treated as 0.', + 'use-head.name': 'Use HEAD Method', + 'use-head.description': + 'Use HEAD method for the first request to the HTTP server.', + 'user-agent.name': 'Custom User Agent', + 'user-agent.description': '', + 'ftp-user.name': 'FTP Default User Name', + 'ftp-user.description': '', + 'ftp-passwd.name': 'FTP Default Password', + 'ftp-passwd.description': + 'If user name is embedded but password is missing in URI, aria2 tries to resolve password using .netrc. If password is found in .netrc, then use it as password. If not, use the password specified in this option.', + 'ftp-pasv.name': 'Passive Mode', + 'ftp-pasv.description': + 'Use the passive mode in FTP. If false is given, the active mode will be used. This option is ignored for SFTP transfer.', + 'ftp-proxy.name': 'FTP Proxy Server', + 'ftp-proxy.description': '', + 'ftp-proxy-user.name': 'FTP Proxy User Name', + 'ftp-proxy-user.description': '', + 'ftp-proxy-passwd.name': 'FTP Proxy Password', + 'ftp-proxy-passwd.description': '', + 'ftp-type.name': 'Transfer Type', + 'ftp-type.description': '', + 'ftp-reuse-connection.name': 'Reuse Connection', + 'ftp-reuse-connection.description': '', + 'ssh-host-key-md.name': 'SSH Public Key Checksum', + 'ssh-host-key-md.description': + "Set checksum for SSH host public key. TYPE is hash type. The supported hash type is sha-1 or md5. DIGEST is hex digest. For example: sha-1=b030503d4de4539dc7885e6f0f5e256704edf4c3. This option can be used to validate server's public key when SFTP is used. If this option is not set, which is default, no validation takes place.", + 'bt-detach-seed-only.name': 'Detach Seed Only', + 'bt-detach-seed-only.description': + 'Exclude seed only downloads when counting concurrent active downloads (See -j option). This means that if -j3 is given and this option is turned on and 3 downloads are active and one of those enters seed mode, then it is excluded from active download count (thus it becomes 2), and the next download waiting in queue gets started. But be aware that seeding item is still recognized as active download in RPC method.', + 'bt-enable-hook-after-hash-check.name': + 'Enable Hook After Hash Check', + 'bt-enable-hook-after-hash-check.description': + 'Allow hook command invocation after hash check (see -V option) in BitTorrent download. By default, when hash check succeeds, the command given by --on-bt-download-complete is executed. To disable this action, give false to this option.', + 'bt-enable-lpd.name': 'Enable Local Peer Discovery (LPD)', + 'bt-enable-lpd.description': + "Enable Local Peer Discovery. If a private flag is set in a torrent, aria2 doesn't use this feature for that download even if true is given.", + 'bt-exclude-tracker.name': 'BitTorrent Exclude Trackers', + 'bt-exclude-tracker.description': + "Comma separated list of BitTorrent tracker's announce URI to remove. You can use special value * which matches all URIs, thus removes all announce URIs. When specifying * in shell command-line, don't forget to escape or quote it.", + 'bt-external-ip.name': 'External IP', + 'bt-external-ip.description': + 'Specify the external IP address to use in BitTorrent download and DHT. It may be sent to BitTorrent tracker. For DHT, this option should be set to report that local node is downloading a particular torrent. This is critical to use DHT in a private network. Although this function is named external, it can accept any kind of IP addresses.', + 'bt-force-encryption.name': 'Force Encryption', + 'bt-force-encryption.description': + 'Requires BitTorrent message payload encryption with arc4. This is a shorthand of --bt-require-crypto --bt-min-crypto-level=arc4. This option does not change the option value of those options. If true is given, deny legacy BitTorrent handshake and only use Obfuscation handshake and always encrypt message payload.', + 'bt-hash-check-seed.name': 'Hash Check Before Seeding', + 'bt-hash-check-seed.description': + 'If true is given, after hash check using --check-integrity option and file is complete, continue to seed file. If you want to check file and download it only when it is damaged or incomplete, set this option to false. This option has effect only on BitTorrent download.', + 'bt-load-saved-metadata.name': 'Load Saved Metadata File', + 'bt-load-saved-metadata.description': + 'Before getting torrent metadata from DHT when downloading with magnet link, first try to read file saved by --bt-save-metadata option. If it is successful, then skip downloading metadata from DHT.', + 'bt-max-open-files.name': 'Max Open Files', + 'bt-max-open-files.description': + 'Specify maximum number of files to open in multi-file BitTorrent/Metalink download globally.', + 'bt-max-peers.name': 'Max Peers', + 'bt-max-peers.description': + 'Specify the maximum number of peers per torrent. 0 means unlimited.', + 'bt-metadata-only.name': 'Download Metadata Only', + 'bt-metadata-only.description': + 'Download meta data only. The file(s) described in meta data will not be downloaded. This option has effect only when BitTorrent Magnet URI is used.', + 'bt-min-crypto-level.name': 'Min Crypto Level', + 'bt-min-crypto-level.description': + 'Set minimum level of encryption method. If several encryption methods are provided by a peer, aria2 chooses the lowest one which satisfies the given level.', + 'bt-prioritize-piece.name': 'Prioritize Piece', + 'bt-prioritize-piece.description': + 'Try to download first and last pieces of each file first. This is useful for previewing files. The argument can contain 2 keywords: head and tail. To include both keywords, they must be separated by comma. These keywords can take one parameter, SIZE. For example, if head=SIZE is specified, pieces in the range of first SIZE bytes of each file get higher priority. tail=SIZE means the range of last SIZE bytes of each file. SIZE can include K or M (1K = 1024, 1M = 1024K).', + 'bt-remove-unselected-file.name': 'Remove Unselected File', + 'bt-remove-unselected-file.description': + 'Removes the unselected files when download is completed in BitTorrent. To select files, use --select-file option. If it is not used, all files are assumed to be selected. Please use this option with care because it will actually remove files from your disk.', + 'bt-require-crypto.name': 'Require Crypto', + 'bt-require-crypto.description': + "If true is given, aria2 doesn't accept and establish connection with legacy BitTorrent handshake(\\19BitTorrent protocol). Thus aria2 always uses Obfuscation handshake.", + 'bt-request-peer-speed-limit.name': 'Preferred Download Speed', + 'bt-request-peer-speed-limit.description': + 'If the whole download speed of every torrent is lower than SPEED, aria2 temporarily increases the number of peers to try for more download speed. Configuring this option with your preferred download speed can increase your download speed in some cases. You can append K or M (1K = 1024, 1M = 1024K).', + 'bt-save-metadata.name': 'Save Metadata', + 'bt-save-metadata.description': + 'Save meta data as ".torrent" file. This option has effect only when BitTorrent Magnet URI is used. The file name is hex encoded info hash with suffix ".torrent". The directory to be saved is the same directory where download file is saved. If the same file already exists, meta data is not saved.', + 'bt-seed-unverified.name': 'Not Verify Downloaded Fileds', + 'bt-seed-unverified.description': + 'Seed previously downloaded files without verifying piece hashes.', + 'bt-stop-timeout.name': 'Stop Timeout', + 'bt-stop-timeout.description': + 'Stop BitTorrent download if download speed is 0 in consecutive SEC seconds. If 0 is given, this feature is disabled.', + 'bt-tracker.name': 'BitTorrent Trackers', + 'bt-tracker.description': + "Comma separated list of additional BitTorrent tracker's announce URI. These URIs are not affected by --bt-exclude-tracker option because they are added after URIs in --bt-exclude-tracker option are removed.", + 'bt-tracker-connect-timeout.name': + 'BitTorrent Tracker Connect Timeout', + 'bt-tracker-connect-timeout.description': + 'Set the connect timeout in seconds to establish connection to tracker. After the connection is established, this option makes no effect and --bt-tracker-timeout option is used instead.', + 'bt-tracker-interval.name': 'BitTorrent Tracker Connect Interval', + 'bt-tracker-interval.description': + 'Set the interval in seconds between tracker requests. This completely overrides interval value and aria2 just uses this value and ignores the min interval and interval value in the response of tracker. If 0 is set, aria2 determines interval based on the response of tracker and the download progress.', + 'bt-tracker-timeout.name': 'BitTorrent Tracker Timeout', + 'bt-tracker-timeout.description': '', + 'dht-file-path.name': 'DHT (IPv4) File', + 'dht-file-path.description': + 'Change the IPv4 DHT routing table file to PATH.', + 'dht-file-path6.name': 'DHT (IPv6) File', + 'dht-file-path6.description': + 'Change the IPv6 DHT routing table file to PATH.', + 'dht-listen-port.name': 'DHT Listen Port', + 'dht-listen-port.description': + 'Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker. Multiple ports can be specified by using ,, for example: 6881,6885. You can also use - to specify a range: 6881-6999. , and - can be used together.', + 'dht-message-timeout.name': 'DHT Message Timeout', + 'dht-message-timeout.description': '', + 'enable-dht.name': 'Enable DHT (IPv4)', + 'enable-dht.description': + "Enable IPv4 DHT functionality. It also enables UDP tracker support. If a private flag is set in a torrent, aria2 doesn't use DHT for that download even if true is given.", + 'enable-dht6.name': 'Enable DHT (IPv6)', + 'enable-dht6.description': + "Enable IPv6 DHT functionality. If a private flag is set in a torrent, aria2 doesn't use DHT for that download even if true is given. Use --dht-listen-port option to specify port number to listen on.", + 'enable-peer-exchange.name': 'Enable Peer Exchange', + 'enable-peer-exchange.description': + 'Enable Peer Exchange extension. If a private flag is set in a torrent, this feature is disabled for that download even if true is given.', + 'follow-torrent.name': 'Follow Torrent', + 'follow-torrent.description': + 'If true or mem is specified, when a file whose suffix is .torrent or content type is application/x-bittorrent is downloaded, aria2 parses it as a torrent file and downloads files mentioned in it. If mem is specified, a torrent file is not written to the disk, but is just kept in memory. If false is specified, the .torrent file is downloaded to the disk, but is not parsed as a torrent and its contents are not downloaded.', + 'listen-port.name': 'Listen Port', + 'listen-port.description': + 'Set TCP port number for BitTorrent downloads. Multiple ports can be specified by using ,, for example: 6881,6885. You can also use - to specify a range: 6881-6999. , and - can be used together: 6881-6889,6999.', + 'max-overall-upload-limit.name': 'Global Max Upload Limit', + 'max-overall-upload-limit.description': + 'Set max overall upload speed in bytes/sec. 0 means unrestricted. You can append K or M (1K = 1024, 1M = 1024K).', + 'max-upload-limit.name': 'Max Upload Limit', + 'max-upload-limit.description': + 'Set max upload speed per each torrent in bytes/sec. 0 means unrestricted. You can append K or M (1K = 1024, 1M = 1024K).', + 'peer-id-prefix.name': 'Peer ID Prefix', + 'peer-id-prefix.description': + 'Specify the prefix of peer ID. The peer ID in BitTorrent is 20 byte length. If more than 20 bytes are specified, only first 20 bytes are used. If less than 20 bytes are specified, random byte data are added to make its length 20 bytes.', + 'peer-agent.name': 'Peer Agent', + 'peer-agent.description': + 'Specify the string used during the bitorrent extended handshake for the peer’s client version.', + 'seed-ratio.name': 'Min Share Ratio', + 'seed-ratio.description': + 'Specify share ratio. Seed completed torrents until share ratio reaches RATIO. You are strongly encouraged to specify equals or more than 1.0 here. Specify 0.0 if you intend to do seeding regardless of share ratio. If --seed-time option is specified along with this option, seeding ends when at least one of the conditions is satisfied.', + 'seed-time.name': 'Min Seed Time', + 'seed-time.description': + 'Specify seeding time in (fractional) minutes. Specifying --seed-time=0 disables seeding after download completed.', + 'follow-metalink.name': 'Follow Metalink', + 'follow-metalink.description': + 'If true or mem is specified, when a file whose suffix is .meta4 or .metalink or content type of application/metalink4+xml or application/metalink+xml is downloaded, aria2 parses it as a metalink file and downloads files mentioned in it. If mem is specified, a metalink file is not written to the disk, but is just kept in memory. If false is specified, the .metalink file is downloaded to the disk, but is not parsed as a metalink file and its contents are not downloaded.', + 'metalink-base-uri.name': 'Base URI', + 'metalink-base-uri.description': + 'Specify base URI to resolve relative URI in metalink:url and metalink:metaurl element in a metalink file stored in local disk. If URI points to a directory, URI must end with /.', + 'metalink-language.name': 'Language', + 'metalink-language.description': '', + 'metalink-location.name': 'Preferred Server Location', + 'metalink-location.description': + 'The location of the preferred server. A comma-delimited list of locations is acceptable, for example, jp,us.', + 'metalink-os.name': 'Operation System', + 'metalink-os.description': + 'The operating system of the file to download.', + 'metalink-version.name': 'Version', + 'metalink-version.description': + 'The version of the file to download.', + 'metalink-preferred-protocol.name': 'Preferred Protocol', + 'metalink-preferred-protocol.description': + 'Specify preferred protocol. The possible values are http, https, ftp and none. Specify none to disable this feature.', + 'metalink-enable-unique-protocol.name': 'Enable Unique Protocol', + 'metalink-enable-unique-protocol.description': + 'If true is given and several protocols are available for a mirror in a metalink file, aria2 uses one of them. Use --metalink-preferred-protocol option to specify the preference of protocol.', + 'enable-rpc.name': 'Enable JSON-RPC/XML-RPC Server', + 'enable-rpc.description': '', + 'pause-metadata.name': 'Pause After Metadata Downloaded', + 'pause-metadata.description': + 'Pause downloads created as a result of metadata download. There are 3 types of metadata downloads in aria2: (1) downloading .torrent file. (2) downloading torrent metadata using magnet link. (3) downloading metalink file. These metadata downloads will generate downloads using their metadata. This option pauses these subsequent downloads. This option is effective only when --enable-rpc=true is given.', + 'rpc-allow-origin-all.name': 'Allow All Origin Request', + 'rpc-allow-origin-all.description': + 'Add Access-Control-Allow-Origin header field with value * to the RPC response.', + 'rpc-listen-all.name': 'Listen on All Network Interfaces', + 'rpc-listen-all.description': + 'Listen incoming JSON-RPC/XML-RPC requests on all network interfaces. If false is given, listen only on local loopback interface.', + 'rpc-listen-port.name': 'Listen Port', + 'rpc-listen-port.description': '', + 'rpc-max-request-size.name': 'Max Request Size', + 'rpc-max-request-size.description': + 'Set max size of JSON-RPC/XML-RPC request. If aria2 detects the request is more than SIZE bytes, it drops connection.', + 'rpc-save-upload-metadata.name': 'Save Upload Metadata', + 'rpc-save-upload-metadata.description': + "Save the uploaded torrent or metalink meta data in the directory specified by --dir option. The file name consists of SHA-1 hash hex string of meta data plus extension. For torrent, the extension is '.torrent'. For metalink, it is '.meta4'. If false is given to this option, the downloads added by aria2.addTorrent() or aria2.addMetalink() will not be saved by --save-session option.", + 'rpc-secure.name': 'Enable SSL/TLS', + 'rpc-secure.description': + 'RPC transport will be encrypted by SSL/TLS. The RPC clients must use https scheme to access the server. For WebSocket client, use wss scheme. Use --rpc-certificate and --rpc-private-key options to specify the server certificate and private key.', + 'allow-overwrite.name': 'Allow Overwrite', + 'allow-overwrite.description': + "Restart download from scratch if the corresponding control file doesn't exist. See also --auto-file-renaming option.", + 'allow-piece-length-change.name': 'Allow Piece Length Change', + 'allow-piece-length-change.description': + 'If false is given, aria2 aborts download when a piece length is different from one in a control file. If true is given, you can proceed but some download progress will be lost.', + 'always-resume.name': 'Always Resume Download', + 'always-resume.description': + 'Always resume download. If true is given, aria2 always tries to resume download and if resume is not possible, aborts download. If false is given, when all given URIs do not support resume or aria2 encounters N URIs which does not support resume (N is the value specified using --max-resume-failure-tries option), aria2 downloads file from scratch. See --max-resume-failure-tries option.', + 'async-dns.name': 'Asynchronous DNS', + 'async-dns.description': '', + 'auto-file-renaming.name': 'Auto File Renaming', + 'auto-file-renaming.description': + 'Rename file name if the same file already exists. This option works only in HTTP(S)/FTP download. The new file name has a dot and a number(1..9999) appended after the name, but before the file extension, if any.', + 'auto-save-interval.name': 'Auto Save Interval', + 'auto-save-interval.description': + 'Save a control file(*.aria2) every SEC seconds. If 0 is given, a control file is not saved during download. aria2 saves a control file when it stops regardless of the value. The possible values are between 0 to 600.', + 'conditional-get.name': 'Conditional Download', + 'conditional-get.description': + 'Download file only when the local file is older than remote file. This function only works with HTTP(S) downloads only. It does not work if file size is specified in Metalink. It also ignores Content-Disposition header. If a control file exists, this option will be ignored. This function uses If-Modified-Since header to get only newer file conditionally. When getting modification time of local file, it uses user supplied file name (see --out option) or file name part in URI if --out is not specified. To overwrite existing file, --allow-overwrite is required.', + 'conf-path.name': 'Configuration File', + 'conf-path.description': '', + 'console-log-level.name': 'Console Log Level', + 'console-log-level.description': '', + 'content-disposition-default-utf8.name': + 'Use UTF-8 to Handle Content-Disposition', + 'content-disposition-default-utf8.description': + 'Handle quoted string in Content-Disposition header as UTF-8 instead of ISO-8859-1, for example, the filename parameter, but not the extended version filename.', + 'daemon.name': 'Enable Daemon', + 'daemon.description': '', + 'deferred-input.name': 'Deferred Load', + 'deferred-input.description': + 'If true is given, aria2 does not read all URIs and options from file specified by --input-file option at startup, but it reads one by one when it needs later. This may reduce memory usage if input file contains a lot of URIs to download. If false is given, aria2 reads all URIs and options at startup. --deferred-input option will be disabled when --save-session is used together.', + 'disable-ipv6.name': 'Disable IPv6', + 'disable-ipv6.description': '', + 'disk-cache.name': 'Disk Cache', + 'disk-cache.description': + "Enable disk cache. If SIZE is 0, the disk cache is disabled. This feature caches the downloaded data in memory, which grows to at most SIZE bytes. The cache storage is created for aria2 instance and shared by all downloads. The one advantage of the disk cache is reduce the disk I/O because the data are written in larger unit and it is reordered by the offset of the file. If hash checking is involved and the data are cached in memory, we don't need to read them from the disk. SIZE can include K or M (1K = 1024, 1M = 1024K).", + 'download-result.name': 'Download Result', + 'download-result.description': + 'This option changes the way Download Results is formatted. If OPT is default, print GID, status, average download speed and path/URI. If multiple files are involved, path/URI of first requested file is printed and remaining ones are omitted. If OPT is full, print GID, status, average download speed, percentage of progress and path/URI. The percentage of progress and path/URI are printed for each requested file in each row. If OPT is hide, Download Results is hidden.', + 'dscp.name': 'DSCP', + 'dscp.description': + "Set DSCP value in outgoing IP packets of BitTorrent traffic for QoS. This parameter sets only DSCP bits in TOS field of IP packets, not the whole field. If you take values from /usr/include/netinet/ip.h divide them by 4 (otherwise values would be incorrect, e.g. your CS1 class would turn into CS4). If you take commonly used values from RFC, network vendors' documentation, Wikipedia or any other source, use them as they are.", + 'rlimit-nofile.name': 'Soft Limit of Open File Descriptors', + 'rlimit-nofile.description': + 'Set the soft limit of open file descriptors. This open will only have effect when: a. The system supports it (posix). b. The limit does not exceed the hard limit. c. The specified limit is larger than the current soft limit. This is equivalent to setting nofile via ulimit, except that it will never decrease the limit. This option is only available on systems supporting the rlimit API.', + 'enable-color.name': 'Enable Color in Terminal', + 'enable-color.description': '', + 'enable-mmap.name': 'Enable MMap', + 'enable-mmap.description': + 'Map files into memory. This option may not work if the file space is not pre-allocated. See --file-allocation.', + 'event-poll.name': 'Event Polling Method', + 'event-poll.description': + 'Specify the method for polling events. The possible values are epoll, kqueue, port, poll and select. For each epoll, kqueue, port and poll, it is available if system supports it. epoll is available on recent Linux. kqueue is available on various *BSD systems including Mac OS X. port is available on Open Solaris. The default value may vary depending on the system you use.', + 'file-allocation.name': 'File Allocation Method', + 'file-allocation.description': + "Specify file allocation method. none doesn't pre-allocate file space. prealloc pre-allocates file space before download begins. This may take some time depending on the size of the file. If you are using newer file systems such as ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), falloc is your best choice. It allocates large(few GiB) files almost instantly. Don't use falloc with legacy file systems such as ext3 and FAT32 because it takes almost same time as prealloc and it blocks aria2 entirely until allocation finishes. falloc may not be available if your system doesn't have posix_fallocate(3) function. trunc uses ftruncate(2) system call or platform-specific counterpart to truncate a file to a specified length. In multi file torrent downloads, the files adjacent forward to the specified files are also allocated if they share the same piece.", + 'force-save.name': 'Force Save', + 'force-save.description': + 'Save download with --save-session option even if the download is completed or removed. This option also saves control file in that situations. This may be useful to save BitTorrent seeding which is recognized as completed state.', + 'save-not-found.name': 'Save Not Found File', + 'save-not-found.description': + 'Save download with --save-session option even if the file was not found on the server. This option also saves control file in that situations.', + 'hash-check-only.name': 'Hash Check Only', + 'hash-check-only.description': + 'If true is given, after hash check using --check-integrity option, abort download whether or not download is complete.', + 'human-readable.name': 'Console Human Readable Output', + 'human-readable.description': + 'Print sizes and speed in human readable format (e.g., 1.2Ki, 3.4Mi) in the console readout.', + 'keep-unfinished-download-result.name': + 'Keep Unfinished Download Result', + 'keep-unfinished-download-result.description': + 'Keep unfinished download results even if doing so exceeds --max-download-result. This is useful if all unfinished downloads must be saved in session file (see --save-session option). Please keep in mind that there is no upper bound to the number of unfinished download result to keep. If that is undesirable, turn this option off.', + 'max-download-result.name': 'Max Download Result', + 'max-download-result.description': + 'Set maximum number of download result kept in memory. The download results are completed/error/removed downloads. The download results are stored in FIFO queue and it can store at most NUM download results. When queue is full and new download result is created, oldest download result is removed from the front of the queue and new one is pushed to the back. Setting big number in this option may result high memory consumption after thousands of downloads. Specifying 0 means no download result is kept. Note that unfinished downloads are kept in memory regardless of this option value. See --keep-unfinished-download-result option.', + 'max-mmap-limit.name': 'Max MMap Limit', + 'max-mmap-limit.description': + 'Set the maximum file size to enable mmap (see --enable-mmap option). The file size is determined by the sum of all files contained in one download. For example, if a download contains 5 files, then file size is the total size of those files. If file size is strictly greater than the size specified in this option, mmap will be disabled.', + 'max-resume-failure-tries.name': 'Max Resume Failture Try Times', + 'max-resume-failure-tries.description': + 'When used with --always-resume=false, aria2 downloads file from scratch when aria2 detects N number of URIs that does not support resume. If N is 0, aria2 downloads file from scratch when all given URIs do not support resume. See --always-resume option.', + 'min-tls-version.name': 'Min TLS Version', + 'min-tls-version.description': + 'Specify minimum SSL/TLS version to enable.', + 'log-level.name': 'Log Level', + 'log-level.description': '', + 'optimize-concurrent-downloads.name': + 'Optimize Concurrent Downloads', + 'optimize-concurrent-downloads.description': + 'Optimizes the number of concurrent downloads according to the bandwidth available. aria2 uses the download speed observed in the previous downloads to adapt the number of downloads launched in parallel according to the rule N = A + B Log10(speed in Mbps). The coefficients A and B can be customized in the option arguments with A and B separated by a colon. The default values (A=5, B=25) lead to using typically 5 parallel downloads on 1Mbps networks and above 50 on 100Mbps networks. The number of parallel downloads remains constrained under the maximum defined by the --max-concurrent-downloads parameter.', + 'piece-length.name': 'Piece Length', + 'piece-length.description': + 'Set a piece length for HTTP/FTP downloads. This is the boundary when aria2 splits a file. All splits occur at multiple of this length. This option will be ignored in BitTorrent downloads. It will be also ignored if Metalink file contains piece hashes.', + 'show-console-readout.name': 'Show Console Output', + 'show-console-readout.description': '', + 'summary-interval.name': 'Download Summary Output Interval', + 'summary-interval.description': + 'Set interval in seconds to output download progress summary. Setting 0 suppresses the output.', + 'max-overall-download-limit.name': 'Global Max Download Limit', + 'max-overall-download-limit.description': + 'Set max overall download speed in bytes/sec. 0 means unrestricted. You can append K or M (1K = 1024, 1M = 1024K).', + 'max-download-limit.name': 'Max Download Limit', + 'max-download-limit.description': + 'Set max download speed per each download in bytes/sec. 0 means unrestricted. You can append K or M (1K = 1024, 1M = 1024K).', + 'no-conf.name': 'Disable Configuration File', + 'no-conf.description': '', + 'no-file-allocation-limit.name': 'No File Allocation Limit', + 'no-file-allocation-limit.description': + 'No file allocation is made for files whose size is smaller than SIZE. You can append K or M (1K = 1024, 1M = 1024K).', + 'parameterized-uri.name': 'Enable Parameterized URI', + 'parameterized-uri.description': + 'Enable parameterized URI support. You can specify set of parts: http://{sv1,sv2,sv3}/foo.iso. Also you can specify numeric sequences with step counter: http://host/image[000-100:2].img. A step counter can be omitted. If all URIs do not point to the same file, such as the second example above, -Z option is required.', + 'quiet.name': 'Disable Console Output', + 'quiet.description': '', + 'realtime-chunk-checksum.name': 'Realtime Data Chunk Validation', + 'realtime-chunk-checksum.description': + 'Validate chunk of data by calculating checksum while downloading a file if chunk checksums are provided.', + 'remove-control-file.name': 'Remove Control File', + 'remove-control-file.description': + 'Remove control file before download. Using with --allow-overwrite=true, download always starts from scratch. This will be useful for users behind proxy server which disables resume.', + 'save-session.name': 'Session Save File', + 'save-session.description': + 'Save error/unfinished downloads to FILE on exit. You can pass this output file to aria2c with --input-file option on restart. If you like the output to be gzipped append a .gz extension to the file name. Please note that downloads added by aria2.addTorrent() and aria2.addMetalink() RPC method and whose meta data could not be saved as a file are not saved. Downloads removed using aria2.remove() and aria2.forceRemove() will not be saved.', + 'save-session-interval.name': 'Save Session Interval', + 'save-session-interval.description': + 'Save error/unfinished downloads to a file specified by --save-session option every SEC seconds. If 0 is given, file will be saved only when aria2 exits.', + 'socket-recv-buffer-size.name': 'Socket Receive Buffer Size', + 'socket-recv-buffer-size.description': + 'Set the maximum socket receive buffer in bytes. Specifing 0 will disable this option. This value will be set to socket file descriptor using SO_RCVBUF socket option with setsockopt() call.', + 'stop.name': 'Auto Shutdown Time', + 'stop.description': + 'Stop application after SEC seconds has passed. If 0 is given, this feature is disabled.', + 'truncate-console-readout.name': 'Truncate Console Output', + 'truncate-console-readout.description': + 'Truncate console readout to fit in a single line.', + }, + }); + }, + ]); + })(), + (function () { + 'use strict'; + angular + .module('ariaNg') + .constant('aria2AllOptions', { + gid: { type: 'string', readonly: !0, required: !0 }, + dir: { type: 'string', required: !0 }, + log: { type: 'string', required: !0 }, + 'max-concurrent-downloads': { + type: 'integer', + defaultValue: '5', + required: !0, + min: 1, + }, + 'check-integrity': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + continue: { type: 'boolean', required: !0 }, + 'all-proxy': { type: 'string' }, + 'all-proxy-user': { type: 'string' }, + 'all-proxy-passwd': { type: 'string' }, + 'connect-timeout': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '60', + required: !0, + min: 1, + max: 600, + }, + 'dry-run': { type: 'boolean', defaultValue: 'false', required: !0 }, + 'lowest-speed-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '0', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'max-connection-per-server': { + type: 'integer', + defaultValue: '1', + required: !0, + min: 1, + max: 16, + }, + 'max-file-not-found': { + type: 'integer', + defaultValue: '0', + required: !0, + min: 0, + }, + 'max-tries': { + type: 'integer', + defaultValue: '5', + required: !0, + min: 0, + }, + 'min-split-size': { + type: 'string', + suffix: 'Bytes', + defaultValue: '20M', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'netrc-path': { + type: 'string', + readonly: !0, + defaultValue: '$(HOME)/.netrc', + }, + 'no-netrc': { type: 'boolean', required: !0 }, + 'no-proxy': { type: 'text', split: ',', showCount: !0 }, + out: { type: 'string' }, + 'proxy-method': { + type: 'option', + options: ['get', 'tunnel'], + defaultValue: 'get', + required: !0, + }, + 'remote-time': { type: 'boolean', defaultValue: 'false', required: !0 }, + 'reuse-uri': { type: 'boolean', defaultValue: 'true', required: !0 }, + 'retry-wait': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '0', + required: !0, + min: 0, + max: 600, + }, + 'server-stat-of': { type: 'string' }, + 'server-stat-timeout': { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '86400', + }, + split: { type: 'integer', defaultValue: '5', required: !0, min: 1 }, + 'stream-piece-selector': { + type: 'option', + options: ['default', 'inorder', 'random', 'geom'], + defaultValue: 'default', + required: !0, + }, + timeout: { + type: 'integer', + suffix: 'Seconds', + defaultValue: '60', + required: !0, + min: 1, + max: 600, + }, + 'uri-selector': { + type: 'option', + options: ['inorder', 'feedback', 'adaptive'], + defaultValue: 'feedback', + required: !0, + }, + 'check-certificate': { + type: 'boolean', + readonly: !0, + defaultValue: 'true', + }, + 'http-accept-gzip': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'http-auth-challenge': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'http-no-cache': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'http-user': { type: 'string' }, + 'http-passwd': { type: 'string' }, + 'http-proxy': { type: 'string' }, + 'http-proxy-user': { type: 'string' }, + 'http-proxy-passwd': { type: 'string' }, + 'https-proxy': { type: 'string' }, + 'https-proxy-user': { type: 'string' }, + 'https-proxy-passwd': { type: 'string' }, + referer: { type: 'string' }, + 'enable-http-keep-alive': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'enable-http-pipelining': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + header: { + type: 'text', + split: '\n', + submitFormat: 'array', + showCount: !0, + }, + 'save-cookies': { type: 'string' }, + 'use-head': { type: 'boolean', defaultValue: 'false', required: !0 }, + 'user-agent': { type: 'string', defaultValue: 'aria2/$VERSION' }, + 'ftp-user': { type: 'string', defaultValue: 'anonymous' }, + 'ftp-passwd': { type: 'string', defaultValue: 'ARIA2USER@' }, + 'ftp-pasv': { type: 'boolean', defaultValue: 'true', required: !0 }, + 'ftp-proxy': { type: 'string' }, + 'ftp-proxy-user': { type: 'string' }, + 'ftp-proxy-passwd': { type: 'string' }, + 'ftp-type': { + type: 'option', + options: ['binary', 'ascii'], + defaultValue: 'binary', + required: !0, + }, + 'ftp-reuse-connection': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'ssh-host-key-md': { type: 'string' }, + 'show-files': { type: 'boolean', readonly: !0 }, + 'bt-detach-seed-only': { + type: 'boolean', + readonly: !0, + defaultValue: 'false', + }, + 'bt-enable-hook-after-hash-check': { + since: '1.19.3', + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'bt-enable-lpd': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-exclude-tracker': { type: 'text', split: ',', showCount: !0 }, + 'bt-external-ip': { type: 'string' }, + 'bt-force-encryption': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-hash-check-seed': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'bt-load-saved-metadata': { + since: '1.33.0', + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-max-open-files': { + type: 'integer', + defaultValue: '100', + required: !0, + min: 1, + }, + 'bt-max-peers': { + type: 'integer', + defaultValue: '55', + required: !0, + min: 0, + }, + 'bt-metadata-only': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-min-crypto-level': { + type: 'option', + options: ['plain', 'arc4'], + defaultValue: 'plain', + required: !0, + }, + 'bt-prioritize-piece': { type: 'string' }, + 'bt-remove-unselected-file': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-require-crypto': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-request-peer-speed-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '50K', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'bt-save-metadata': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-seed-unverified': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'bt-stop-timeout': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '0', + required: !0, + min: 0, + }, + 'bt-tracker': { type: 'text', split: ',', showCount: !0 }, + 'bt-tracker-connect-timeout': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '60', + required: !0, + min: 1, + max: 600, + }, + 'bt-tracker-interval': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '0', + required: !0, + min: 0, + }, + 'bt-tracker-timeout': { + type: 'integer', + suffix: 'Seconds', + defaultValue: '60', + required: !0, + min: 1, + max: 600, + }, + 'dht-file-path': { + type: 'string', + readonly: !0, + defaultValue: '$HOME/.aria2/dht.dat', + }, + 'dht-file-path6': { + type: 'string', + readonly: !0, + defaultValue: '$HOME/.aria2/dht6.dat', + }, + 'dht-listen-port': { + type: 'string', + readonly: !0, + defaultValue: '6881-6999', + }, + 'dht-message-timeout': { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '10', + }, + 'enable-dht': { type: 'boolean', readonly: !0, defaultValue: 'true' }, + 'enable-dht6': { type: 'boolean', readonly: !0 }, + 'enable-peer-exchange': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'follow-torrent': { + type: 'option', + options: ['true', 'false', 'mem'], + defaultValue: 'true', + required: !0, + }, + 'listen-port': { + type: 'integer', + readonly: !0, + defaultValue: '6881-6999', + }, + 'max-overall-upload-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '0', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'max-upload-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '0', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'peer-id-prefix': { + type: 'string', + readonly: !0, + defaultValue: 'A2-$MAJOR-$MINOR-$PATCH-', + }, + 'peer-agent': { + since: '1.33.0', + type: 'string', + defaultValue: 'aria2/$MAJOR.$MINOR.$PATCH', + readonly: !0, + }, + 'seed-ratio': { + type: 'float', + defaultValue: '1.0', + required: !0, + min: 0, + }, + 'seed-time': { type: 'float', suffix: 'Minutes', required: !0, min: 0 }, + 'follow-metalink': { + type: 'option', + options: ['true', 'false', 'mem'], + defaultValue: 'true', + required: !0, + }, + 'metalink-base-uri': { type: 'string' }, + 'metalink-language': { type: 'string' }, + 'metalink-location': { type: 'string' }, + 'metalink-os': { type: 'string' }, + 'metalink-version': { type: 'string' }, + 'metalink-preferred-protocol': { + type: 'option', + options: ['http', 'https', 'ftp', 'none'], + defaultValue: 'none', + required: !0, + }, + 'metalink-enable-unique-protocol': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'enable-rpc': { type: 'boolean', readonly: !0, defaultValue: 'false' }, + 'pause-metadata': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'rpc-allow-origin-all': { + type: 'boolean', + readonly: !0, + defaultValue: 'false', + }, + 'rpc-listen-all': { + type: 'boolean', + readonly: !0, + defaultValue: 'false', + }, + 'rpc-listen-port': { + type: 'integer', + readonly: !0, + defaultValue: '6800', + }, + 'rpc-max-request-size': { + type: 'string', + suffix: 'Bytes', + readonly: !0, + defaultValue: '2M', + }, + 'rpc-save-upload-metadata': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'rpc-secure': { type: 'boolean', readonly: !0 }, + 'allow-overwrite': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'allow-piece-length-change': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'always-resume': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'async-dns': { type: 'boolean', defaultValue: 'true', required: !0 }, + 'auto-file-renaming': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'auto-save-interval': { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '60', + }, + 'conditional-get': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'conf-path': { + type: 'string', + readonly: !0, + defaultValue: '/etc/aria2.conf', + }, + 'console-log-level': { + type: 'option', + options: ['debug', 'info', 'notice', 'warn', 'error'], + readonly: !0, + defaultValue: 'notice', + }, + 'content-disposition-default-utf8': { + since: '1.31.0', + type: 'boolean', + defaultValue: 'false', + }, + daemon: { type: 'boolean', readonly: !0, defaultValue: 'false' }, + 'deferred-input': { + type: 'boolean', + readonly: !0, + defaultValue: 'false', + }, + 'disable-ipv6': { + type: 'boolean', + readonly: !0, + defaultValue: 'false', + }, + 'disk-cache': { + type: 'string', + suffix: 'Bytes', + readonly: !0, + defaultValue: '16M', + }, + 'download-result': { + type: 'option', + options: ['default', 'full', 'hide'], + defaultValue: 'default', + required: !0, + }, + dscp: { type: 'string', readonly: !0 }, + 'rlimit-nofile': { type: 'string', readonly: !0 }, + 'enable-color': { type: 'boolean', readonly: !0, defaultValue: 'true' }, + 'enable-mmap': { type: 'boolean', defaultValue: 'false', required: !0 }, + 'event-poll': { + type: 'option', + options: ['epoll', 'kqueue', 'port', 'poll', 'select'], + readonly: !0, + }, + 'file-allocation': { + type: 'option', + options: ['none', 'prealloc', 'trunc', 'falloc'], + defaultValue: 'prealloc', + required: !0, + }, + 'force-save': { type: 'boolean', defaultValue: 'false', required: !0 }, + 'save-not-found': { + since: '1.27.0', + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'hash-check-only': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + 'human-readable': { + type: 'boolean', + readonly: !0, + defaultValue: 'true', + }, + 'keep-unfinished-download-result': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'max-download-result': { + type: 'integer', + defaultValue: '1000', + required: !0, + min: 0, + }, + 'max-mmap-limit': { + since: '1.20.0', + type: 'string', + suffix: 'Bytes', + defaultValue: '9223372036854775807', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'max-resume-failure-tries': { + type: 'integer', + defaultValue: '0', + required: !0, + min: 0, + }, + 'min-tls-version': { + type: 'option', + options: ['SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2'], + readonly: !0, + defaultValue: 'TLSv1', + }, + 'log-level': { + type: 'option', + options: ['debug', 'info', 'notice', 'warn', 'error'], + defaultValue: 'debug', + required: !0, + }, + 'optimize-concurrent-downloads': { + since: '1.22.0', + type: 'string', + defaultValue: 'false', + }, + 'piece-length': { + type: 'string', + suffix: 'Bytes', + defaultValue: '1M', + required: !0, + pattern: '^(0|[1-9]\\d*(M|m)?)$', + }, + 'show-console-readout': { + type: 'boolean', + readonly: !0, + defaultValue: 'true', + }, + 'summary-interval': { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '60', + }, + 'max-overall-download-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '0', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'max-download-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '0', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'no-conf': { type: 'boolean', readonly: !0 }, + 'no-file-allocation-limit': { + type: 'string', + suffix: 'Bytes', + defaultValue: '5M', + required: !0, + pattern: '^(0|[1-9]\\d*(K|k|M|m)?)$', + }, + 'parameterized-uri': { + type: 'boolean', + defaultValue: 'false', + required: !0, + }, + quiet: { type: 'boolean', readonly: !0, defaultValue: 'false' }, + 'realtime-chunk-checksum': { + type: 'boolean', + defaultValue: 'true', + required: !0, + }, + 'remove-control-file': { type: 'boolean', required: !0 }, + 'save-session': { type: 'string' }, + 'save-session-interval': { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '0', + }, + 'socket-recv-buffer-size': { + since: '1.19.3', + type: 'string', + suffix: 'Bytes', + readonly: !0, + defaultValue: '0', + }, + stop: { + type: 'integer', + suffix: 'Seconds', + readonly: !0, + defaultValue: '0', + }, + 'truncate-console-readout': { + type: 'boolean', + readonly: !0, + defaultValue: 'true', + }, + }) + .constant('aria2GlobalAvailableOptions', { + basicOptions: [ + 'dir', + 'log', + 'max-concurrent-downloads', + 'check-integrity', + 'continue', + ], + httpFtpSFtpOptions: [ + 'all-proxy', + 'all-proxy-user', + 'all-proxy-passwd', + 'connect-timeout', + 'dry-run', + 'lowest-speed-limit', + 'max-connection-per-server', + 'max-file-not-found', + 'max-tries', + 'min-split-size', + 'netrc-path', + 'no-netrc', + 'no-proxy', + 'proxy-method', + 'remote-time', + 'reuse-uri', + 'retry-wait', + 'server-stat-of', + 'server-stat-timeout', + 'split', + 'stream-piece-selector', + 'timeout', + 'uri-selector', + ], + httpOptions: [ + 'check-certificate', + 'http-accept-gzip', + 'http-auth-challenge', + 'http-no-cache', + 'http-user', + 'http-passwd', + 'http-proxy', + 'http-proxy-user', + 'http-proxy-passwd', + 'https-proxy', + 'https-proxy-user', + 'https-proxy-passwd', + 'referer', + 'enable-http-keep-alive', + 'enable-http-pipelining', + 'header', + 'save-cookies', + 'use-head', + 'user-agent', + ], + ftpSFtpOptions: [ + 'ftp-user', + 'ftp-passwd', + 'ftp-pasv', + 'ftp-proxy', + 'ftp-proxy-user', + 'ftp-proxy-passwd', + 'ftp-type', + 'ftp-reuse-connection', + 'ssh-host-key-md', + ], + btOptions: [ + 'bt-detach-seed-only', + 'bt-enable-hook-after-hash-check', + 'bt-enable-lpd', + 'bt-exclude-tracker', + 'bt-external-ip', + 'bt-force-encryption', + 'bt-hash-check-seed', + 'bt-load-saved-metadata', + 'bt-max-open-files', + 'bt-max-peers', + 'bt-metadata-only', + 'bt-min-crypto-level', + 'bt-prioritize-piece', + 'bt-remove-unselected-file', + 'bt-require-crypto', + 'bt-request-peer-speed-limit', + 'bt-save-metadata', + 'bt-seed-unverified', + 'bt-stop-timeout', + 'bt-tracker', + 'bt-tracker-connect-timeout', + 'bt-tracker-interval', + 'bt-tracker-timeout', + 'dht-file-path', + 'dht-file-path6', + 'dht-listen-port', + 'dht-message-timeout', + 'enable-dht', + 'enable-dht6', + 'enable-peer-exchange', + 'follow-torrent', + 'listen-port', + 'max-overall-upload-limit', + 'max-upload-limit', + 'peer-id-prefix', + 'peer-agent', + 'seed-ratio', + 'seed-time', + ], + metalinkOptions: [ + 'follow-metalink', + 'metalink-base-uri', + 'metalink-language', + 'metalink-location', + 'metalink-os', + 'metalink-version', + 'metalink-preferred-protocol', + 'metalink-enable-unique-protocol', + ], + rpcOptions: [ + 'enable-rpc', + 'pause-metadata', + 'rpc-allow-origin-all', + 'rpc-listen-all', + 'rpc-listen-port', + 'rpc-max-request-size', + 'rpc-save-upload-metadata', + 'rpc-secure', + ], + advancedOptions: [ + 'allow-overwrite', + 'allow-piece-length-change', + 'always-resume', + 'async-dns', + 'auto-file-renaming', + 'auto-save-interval', + 'conditional-get', + 'conf-path', + 'console-log-level', + 'content-disposition-default-utf8', + 'daemon', + 'deferred-input', + 'disable-ipv6', + 'disk-cache', + 'download-result', + 'dscp', + 'rlimit-nofile', + 'enable-color', + 'enable-mmap', + 'event-poll', + 'file-allocation', + 'force-save', + 'save-not-found', + 'hash-check-only', + 'human-readable', + 'keep-unfinished-download-result', + 'max-download-result', + 'max-mmap-limit', + 'max-resume-failure-tries', + 'min-tls-version', + 'log-level', + 'optimize-concurrent-downloads', + 'piece-length', + 'show-console-readout', + 'summary-interval', + 'max-overall-download-limit', + 'max-download-limit', + 'no-conf', + 'no-file-allocation-limit', + 'parameterized-uri', + 'quiet', + 'realtime-chunk-checksum', + 'remove-control-file', + 'save-session', + 'save-session-interval', + 'socket-recv-buffer-size', + 'stop', + 'truncate-console-readout', + ], + }) + .constant('aria2QuickSettingsAvailableOptions', { + globalSpeedLimitOptions: [ + 'max-overall-download-limit', + 'max-overall-upload-limit', + ], + }) + .constant('aria2TaskAvailableOptions', { + taskOptions: [ + { key: 'dir', category: 'global', canUpdate: 'new', showHistory: !0 }, + { key: 'out', category: 'http', canUpdate: 'new' }, + { key: 'allow-overwrite', category: 'global', canShow: 'new' }, + { key: 'max-download-limit', category: 'global' }, + { key: 'max-upload-limit', category: 'bittorrent' }, + { key: 'split', category: 'http', canUpdate: 'new|waiting|paused' }, + { + key: 'min-split-size', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'max-connection-per-server', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'lowest-speed-limit', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'stream-piece-selector', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'http-user', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'http-passwd', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'all-proxy', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'all-proxy-user', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { + key: 'all-proxy-passwd', + category: 'http', + canUpdate: 'new|waiting|paused', + }, + { key: 'referer', category: 'http', canUpdate: 'new' }, + { key: 'header', category: 'http', canUpdate: 'new' }, + { key: 'bt-max-peers', category: 'bittorrent' }, + { key: 'bt-request-peer-speed-limit', category: 'bittorrent' }, + { key: 'bt-remove-unselected-file', category: 'bittorrent' }, + { + key: 'bt-stop-timeout', + category: 'bittorrent', + canUpdate: 'new|waiting|paused', + }, + { + key: 'bt-tracker', + category: 'bittorrent', + canUpdate: 'new|waiting|paused', + }, + { + key: 'seed-ratio', + category: 'bittorrent', + canUpdate: 'new|waiting|paused', + }, + { + key: 'seed-time', + category: 'bittorrent', + canUpdate: 'new|waiting|paused', + }, + { key: 'conditional-get', category: 'global', canShow: 'new' }, + { key: 'file-allocation', category: 'global', canShow: 'new' }, + { key: 'parameterized-uri', category: 'global', canShow: 'new' }, + { key: 'force-save', category: 'global' }, + ], + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').constant('aria2Errors', { + 1: { descriptionKey: 'error.unknown' }, + 2: { descriptionKey: 'error.operation.timeout' }, + 3: { descriptionKey: 'error.resource.notfound' }, + 4: { descriptionKey: 'error.resource.notfound.max-file-not-found' }, + 5: { descriptionKey: 'error.download.aborted.lowest-speed-limit' }, + 6: { descriptionKey: 'error.network.problem' }, + 8: { descriptionKey: 'error.resume.notsupported' }, + 9: { descriptionKey: 'error.space.notenough' }, + 10: { descriptionKey: 'error.piece.length.different' }, + 11: { descriptionKey: 'error.download.sametime' }, + 12: { descriptionKey: 'error.download.torrent.sametime' }, + 13: { descriptionKey: 'error.file.exists' }, + 14: { descriptionKey: 'error.file.rename.failed' }, + 15: { descriptionKey: 'error.file.open.failed' }, + 16: { descriptionKey: 'error.file.create.failed' }, + 17: { descriptionKey: 'error.io.error' }, + 18: { descriptionKey: 'error.directory.create.failed' }, + 19: { descriptionKey: 'error.name.resolution.failed' }, + 20: { descriptionKey: 'error.metalink.file.parse.failed' }, + 21: { descriptionKey: 'error.ftp.command.failed' }, + 22: { descriptionKey: 'error.http.response.header.bad' }, + 23: { descriptionKey: 'error.redirects.toomany' }, + 24: { descriptionKey: 'error.http.authorization.failed' }, + 25: { descriptionKey: 'error.bencoded.file.parse.failed' }, + 26: { descriptionKey: 'error.torrent.file.corrupted' }, + 27: { descriptionKey: 'error.magnet.uri.bad' }, + 28: { descriptionKey: 'error.option.bad' }, + 29: { descriptionKey: 'error.server.overload' }, + 30: { descriptionKey: 'error.rpc.request.parse.failed' }, + 32: { descriptionKey: 'error.checksum.failed' }, + }); + })(), + (function () { + 'use strict'; + angular + .module('ariaNg') + .constant('aria2RpcConstants', { + rpcServiceVersion: '2.0', + rpcServiceName: 'aria2', + rpcSystemServiceName: 'system', + rpcTokenPrefix: 'token:', + }) + .constant('aria2RpcErrors', { + Unauthorized: { + message: 'Unauthorized', + tipTextKey: 'rpc.error.unauthorized', + }, + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('CommandController', [ + '$rootScope', + '$window', + '$location', + '$routeParams', + 'ariaNgDefaultOptions', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgSettingService', + 'aria2TaskService', + 'aria2SettingService', + function (s, o, r, e, l, c, d, u, p, g, f) { + var t, + a, + n = r.path(), + i = angular.extend({}, e, r.search()); + (a = i), + (0 === (t = n).indexOf('/new') + ? (function (e, t) { + try { + e = c.base64UrlDecode(e); + } catch (e) { + return d.showError('URL is not base64 encoded!'), !1; + } + var a = {}, + n = !1; + if (t) { + for (var i in t) + t.hasOwnProperty(i) && + f.isOptionKeyValid(i) && + (a[i] = t[i]); + 'true' === t.pause && (n = !0); + } + return ( + (s.loadPromise = g.newUriTask( + { urls: [e], options: a }, + n, + function (e) { + if (!e.success) return !1; + n ? r.path('/waiting') : r.path('/downloading'); + } + )), + u.info('[CommandController] new download: ' + e), + !0 + ); + })(a.url, a) + : 0 === t.indexOf('/settings/rpc/set') + ? (function (e, t, a, n, i) { + if ( + ((a = a || l.rpcPort), + (n = n || l.rpcInterface), + (i = i || l.secret), + u.info( + '[CommandController] set rpc: ' + + e + + '://' + + t + + ':' + + a + + '/' + + n + + ', secret: ' + + i + ), + !e || + ('http' !== e && + 'https' !== e && + 'ws' !== e && + 'wss' !== e)) + ) + return d.showError('Protocol is invalid!'), !1; + if (!t) return d.showError('RPC host cannot be empty!'), !1; + if (i) + try { + i = c.base64UrlDecode(i); + } catch (e) { + return d.showError('RPC secret is not base64 encoded!'), !1; + } + var s = { + rpcAlias: '', + rpcHost: t, + rpcPort: a, + rpcInterface: n, + protocol: e, + httpMethod: l.httpMethod, + secret: i, + }; + return ( + p.isRpcSettingEqualsDefault(s) + ? r.path('/downloading') + : (p.setDefaultRpcSetting(s, { + keepCurrent: !1, + forceSet: !0, + }), + r.path('/downloading'), + o.location.reload()), + !0 + ); + })(a.protocol, a.host, a.port, a.interface, a.secret) + : (d.showError('Parameter is invalid!'), 0)) || + r.path('/downloading'); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('AriaNgDebugController', [ + '$rootScope', + '$scope', + '$location', + '$timeout', + 'ariaNgConstants', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgSettingService', + function (e, t, a, n, i, s, o, r) { + (t.logMaxCount = i.cachedDebugLogsLimit), + (t.currentLog = null), + (t.enableDebugMode = function () { + return r.isEnableDebugMode(); + }), + (t.reloadLogs = function () { + t.logs = o.getDebugLogs().slice(); + }), + (t.showLogDetail = function (e) { + (t.currentLog = e), angular.element('#log-detail-modal').modal(); + }), + $('#log-detail-modal').on('hide.bs.modal', function (e) { + t.currentLog = null; + }), + (e.loadPromise = n(function () { + r.isEnableDebugMode() + ? t.reloadLogs() + : s.showError('Access Denied!', function () { + r.isEnableDebugMode() || a.path('/settings/ariang'); + }); + }, 100)); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('MainController', [ + '$rootScope', + '$scope', + '$route', + '$window', + '$location', + '$document', + '$interval', + 'clipboard', + 'ariaNgBuildConfiguration', + 'aria2RpcErrors', + 'ariaNgCommonService', + 'ariaNgNotificationService', + 'ariaNgLocalizationService', + 'ariaNgSettingService', + 'ariaNgMonitorService', + 'ariaNgTitleService', + 'aria2TaskService', + 'aria2SettingService', + function (i, s, o, t, r, e, a, n, l, c, d, u, p, g, f, m, h, v) { + var b = null, + y = null, + k = function () { + e[0].title = m.getFinalTitleByGlobalStat({ + globalStat: s.globalStat, + currentRpcProfile: S(), + }); + }, + w = function (e, t) { + return v.getGlobalStat(function (e) { + e.success || e.data.message !== c.Unauthorized.message + ? (e.success && + ((s.globalStat = e.data), f.recordGlobalStat(e.data)), + t && t(e)) + : a.cancel(y); + }, e); + }, + S = function () { + if (!s.rpcSettings || s.rpcSettings.length < 1) return null; + for (var e = 0; e < s.rpcSettings.length; e++) { + var t = s.rpcSettings[e]; + if (t.isDefault) return t; + } + return null; + }; + g.getBrowserNotification() && u.requestBrowserPermission(), + (s.ariaNgVersion = l.buildVersion), + (s.globalStatusContext = { + isEnabled: 0 < g.getGlobalStatRefreshInterval(), + data: f.getGlobalStatsData(), + }), + (s.enableDebugMode = function () { + return g.isEnableDebugMode(); + }), + (s.quickSettingContext = null), + (s.rpcSettings = g.getAllRpcSettings()), + (s.isCurrentRpcUseWebSocket = g.isCurrentRpcUseWebSocket()), + (s.isTaskSelected = function () { + return 0 < i.taskContext.getSelectedTaskIds().length; + }), + (s.isSelectedTasksAllHaveUrl = function () { + var e = i.taskContext.getSelectedTasks(); + if (e.length < 1) return !1; + for (var t = 0; t < e.length; t++) if (!e[t].singleUrl) return !1; + return !0; + }), + (s.isSelectedTasksAllHaveInfoHash = function () { + var e = i.taskContext.getSelectedTasks(); + if (e.length < 1) return !1; + for (var t = 0; t < e.length; t++) + if (!e[t].bittorrent || !e[t].infoHash) return !1; + return !0; + }), + (s.isSpecifiedTaskSelected = function () { + var e = i.taskContext.getSelectedTasks(); + if (e.length < 1) return !1; + for (var t = 0; t < e.length; t++) + for (var a = 0; a < arguments.length; a++) + if (e[t].status === arguments[a]) return !0; + return !1; + }), + (s.isSpecifiedTaskShowing = function () { + var e = i.taskContext.list; + if (e.length < 1) return !1; + for (var t = 0; t < e.length; t++) + for (var a = 0; a < arguments.length; a++) + if (e[t].status === arguments[a]) return !0; + return !1; + }), + (s.changeTasksState = function (t) { + var a = i.taskContext.getSelectedTaskIds(); + if (a && !(a.length < 1)) { + var e = null; + if ('start' === t) e = h.startTasks; + else { + if ('pause' !== t) return; + e = h.pauseTasks; + } + i.loadPromise = e( + a, + function (e) { + e.hasError && + 1 < a.length && + p.showError('Failed to change some tasks state.'), + e.hasSuccess && + (w(!0), + e.hasError || 'start' !== t + ? e.hasError || + 'pause' !== t || + ('/downloading' === r.path() + ? r.path('/waiting') + : o.reload()) + : '/waiting' === r.path() + ? r.path('/downloading') + : o.reload()); + }, + 1 < a.length + ); + } + }), + (s.retryTask = function (e) { + p.confirm( + 'Confirm Retry', + 'Are you sure you want to retry the selected task? AriaNg will create same task after clicking OK.', + 'info', + function () { + i.loadPromise = h.retryTask( + e.gid, + function (e) { + if (e.success) { + w(!0); + var t = g.getAfterRetryingTask(); + e.success && + e.data && + ('task-list-downloading' === t + ? '/downloading' !== r.path() + ? r.path('/downloading') + : o.reload() + : 'task-detail' === t + ? r.path('/task/detail/' + e.data) + : o.reload()); + } else p.showError('Failed to retry this task.'); + }, + !1 + ); + } + ); + }), + (s.hasRetryableTask = function () { + return i.taskContext.hasRetryableTask(); + }), + (s.hasCompletedTask = function () { + return i.taskContext.hasCompletedTask(); + }), + (s.isSelectedTaskRetryable = function () { + var e = i.taskContext.getSelectedTasks(); + if (e.length < 1) return !1; + for (var t = 0; t < e.length; t++) + if (!i.isTaskRetryable(e[t])) return !1; + return !0; + }), + (s.retryTasks = function () { + var e = i.taskContext.getSelectedTasks(); + if (e && !(e.length < 1)) { + if (1 === e.length) return s.retryTask(e[0]); + for (var t = [], a = 0, n = 0; n < e.length; n++) + i.isTaskRetryable(e[n]) ? t.push(e[n]) : a++; + p.confirm( + 'Confirm Retry', + 'Are you sure you want to retry the selected task? AriaNg will create same task after clicking OK.', + 'info', + function () { + i.loadPromise = h.retryTasks( + t, + function (t) { + w(!0), + p.showInfo( + 'Operation Result', + '{successCount} tasks have been retried and {failedCount} tasks are failed.', + function () { + var e = g.getAfterRetryingTask(); + t.hasSuccess && + ('task-list-downloading' === e && + '/downloading' !== r.path() + ? r.path('/downloading') + : o.reload()); + }, + { + textParams: { + successCount: t.successCount, + failedCount: t.failedCount, + skipCount: a, + }, + } + ); + }, + !1 + ); + }, + !0 + ); + } + }), + (s.removeTasks = function () { + var t = i.taskContext.getSelectedTasks(); + if (t && !(t.length < 1)) { + var e = function () { + i.loadPromise = h.removeTasks( + t, + function (e) { + e.hasError && + 1 < t.length && + p.showError('Failed to remove some task(s).'), + e.hasSuccess && + (w(!0), + e.hasError || + ('/stopped' !== r.path() + ? r.path('/stopped') + : o.reload())); + }, + 1 < t.length + ); + }; + g.getConfirmTaskRemoval() + ? p.confirm( + 'Confirm Remove', + 'Are you sure you want to remove the selected task?', + 'warning', + e + ) + : e(); + } + }), + (s.clearStoppedTasks = function () { + p.confirm( + 'Confirm Clear', + 'Are you sure you want to clear stopped tasks?', + 'warning', + function () { + i.loadPromise = h.clearStoppedTasks(function (e) { + e.success && + (w(!0), + '/stopped' !== r.path() ? r.path('/stopped') : o.reload()); + }); + } + ); + }), + (s.isAllTasksSelected = function () { + return i.taskContext.isAllSelected(); + }), + (s.selectAllTasks = function () { + i.taskContext.selectAll(); + }), + (s.selectAllFailedTasks = function () { + i.taskContext.selectAllFailed(); + }), + (s.selectAllCompletedTasks = function () { + i.taskContext.selectAllCompleted(); + }), + (s.copySelectedTasksDownloadLink = function () { + for ( + var e = i.taskContext.getSelectedTasks(), t = '', a = 0; + a < e.length; + a++ + ) + 0 < a && (t += '\n'), (t += e[a].singleUrl); + 0 < t.length && n.copyText(t); + }), + (s.copySelectedTasksMagnetLink = function () { + for ( + var e = i.taskContext.getSelectedTasks(), t = '', a = 0; + a < e.length; + a++ + ) + 0 < a && (t += '\n'), + (t += 'magnet:?xt=urn:btih:' + e[a].infoHash); + 0 < t.length && n.copyText(t); + }), + (s.changeDisplayOrder = function (e, t) { + var a = d.parseOrderType(g.getDisplayOrder()), + n = d.parseOrderType(e); + t && n.type === a.type && (n.reverse = !a.reverse), + g.setDisplayOrder(n.getValue()); + }), + (s.isSetDisplayOrder = function (e) { + var t = d.parseOrderType(g.getDisplayOrder()), + a = d.parseOrderType(e); + return t.equals(a); + }), + (s.showQuickSettingDialog = function (e, t) { + s.quickSettingContext = { type: e, title: t }; + }), + (s.switchRpcSetting = function (e) { + e.isDefault || + (g.setDefaultRpcSetting(e), + 0 === r.path().indexOf('/task/detail/') + ? (i.setAutoRefreshAfterPageLoad(), r.path('/downloading')) + : t.location.reload()); + }), + 0 < g.getTitleRefreshInterval() && + (b = a(function () { + k(); + }, g.getTitleRefreshInterval())), + 0 < g.getGlobalStatRefreshInterval() && + (y = a(function () { + w(!0); + }, g.getGlobalStatRefreshInterval())), + s.$on('$destroy', function () { + b && a.cancel(b), y && a.cancel(y); + }), + w(!0, function () { + k(); + }); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('NewTaskController', [ + '$rootScope', + '$scope', + '$location', + '$timeout', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgFileService', + 'ariaNgSettingService', + 'aria2TaskService', + 'aria2SettingService', + function (l, c, d, e, u, t, a, n, p, g, i) { + var s, + o = ['links', 'options'], + r = d.search(), + f = function (e) { + e && e.dir && i.addSettingHistory('dir', e.dir); + }; + if ( + ((c.context = { + currentTab: 'links', + taskType: 'urls', + urls: '', + uploadFile: null, + availableOptions: + ((s = i.getNewTaskOptionKeys()), + i.getSpecifiedOptions(s, { disableRequired: !0 })), + globalOptions: null, + options: {}, + optionFilter: { global: !0, http: !1, bittorrent: !1 }, + }), + r.url) + ) + try { + c.context.urls = u.base64UrlDecode(r.url); + } catch (e) { + a.error('[NewTaskController] base64 decode error, url=' + r.url, e); + } + (c.changeTab = function (e) { + 'options' === e && c.loadDefaultOption(), (c.context.currentTab = e); + }), + (l.swipeActions.extendLeftSwipe = function () { + var e = o.indexOf(c.context.currentTab); + return e < o.length - 1 && (c.changeTab(o[e + 1]), !0); + }), + (l.swipeActions.extendRightSwipe = function () { + var e = o.indexOf(c.context.currentTab); + return 0 < e && (c.changeTab(o[e - 1]), !0); + }), + (c.loadDefaultOption = function () { + c.context.globalOptions || + (l.loadPromise = i.getGlobalOption(function (e) { + e.success && (c.context.globalOptions = e.data); + })); + }), + (c.openTorrent = function () { + n.openFileContent( + { scope: c, fileFilter: '.torrent', fileType: 'binary' }, + function (e) { + (c.context.uploadFile = e), + (c.context.taskType = 'torrent'), + c.changeTab('options'); + }, + function (e) { + t.showError(e); + }, + angular.element('#file-holder') + ); + }), + (c.openMetalink = function () { + n.openFileContent( + { scope: c, fileFilter: '.meta4,.metalink', fileType: 'binary' }, + function (e) { + (c.context.uploadFile = e), + (c.context.taskType = 'metalink'), + c.changeTab('options'); + }, + function (e) { + t.showError(e); + }, + angular.element('#file-holder') + ); + }), + (c.startDownload = function (a) { + var e, + t, + n, + i, + s, + o, + r = function (e) { + if (e.hasSuccess || e.success) { + var t = null; + e.results && 0 < e.results.length + ? (t = e.results[0]) + : e && (t = e), + 'task-detail' === p.getAfterCreatingNewTask() && t && t.data + ? d.path('/task/detail/' + t.data) + : a + ? d.path('/waiting') + : d.path('/downloading'); + } + }; + 'urls' === c.context.taskType + ? (l.loadPromise = (function (e, t) { + for ( + var a = u.parseUrlsFromOriginInput(c.context.urls), + n = angular.copy(c.context.options), + i = [], + s = 0; + s < a.length; + s++ + ) + '' !== a[s] && + '' !== a[s].trim() && + i.push({ urls: [a[s].trim()], options: n }); + return f(n), g.newUriTasks(i, e, t); + })(a, r)) + : 'torrent' === c.context.taskType + ? (l.loadPromise = + ((i = a), + (s = r), + (o = { + content: c.context.uploadFile.base64Content, + options: angular.copy(c.context.options), + }), + f(o.options), + g.newTorrentTask(o, i, s))) + : 'metalink' === c.context.taskType && + (l.loadPromise = + ((e = a), + (t = r), + (n = { + content: c.context.uploadFile.base64Content, + options: angular.copy(c.context.options), + }), + f(n.options), + g.newMetalinkTask(n, e, t))); + }), + (c.setOption = function (e, t, a) { + '' !== t ? (c.context.options[e] = t) : delete c.context.options[e], + a.setReady(); + }), + (c.urlTextboxKeyDown = function (e) { + 13 === e.keyCode && + e.ctrlKey && + c.newTaskForm.$valid && + c.startDownload(); + }), + (c.getValidUrlsCount = function () { + var e = u.parseUrlsFromOriginInput(c.context.urls); + return e ? e.length : 0; + }), + (l.loadPromise = e(function () {}, 100)); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('DownloadListController', [ + '$rootScope', + '$scope', + '$window', + '$location', + '$route', + '$interval', + 'dragulaService', + 'aria2RpcErrors', + 'ariaNgCommonService', + 'ariaNgSettingService', + 'aria2TaskService', + function (o, e, t, a, n, r, i, l, c, s, d) { + var u = a.path().substring(1), + p = null, + g = !1, + f = !0, + m = function (e) { + if (!g) + return d.getTaskList( + u, + f, + function (e) { + if (!g) + if (e.success) { + var t = e.context.requestWholeInfo, + a = e.data; + if (t) (o.taskContext.list = a), (f = !1); + else { + if (o.taskContext.list && 0 < o.taskContext.list.length) + for (var n = 0; n < o.taskContext.list.length; n++) { + delete (s = o.taskContext.list[n]).verifiedLength, + delete s.verifyIntegrityPending; + } + f = !c.extendArray(a, o.taskContext.list, 'gid'); + } + if ( + o.taskContext.list && + 0 < o.taskContext.list.length && + (d.processDownloadTasks(o.taskContext.list), !t) + ) { + var i = !1; + for (n = 0; n < o.taskContext.list.length; n++) { + var s; + if ( + (s = o.taskContext.list[n]).hasTaskName || + s.files || + s.bittorrent + ) { + i = !0; + break; + } + } + if (!i) + return (f = !0), void (o.taskContext.list.length = 0); + } + o.taskContext.enableSelectAll = + o.taskContext.list && 0 < o.taskContext.list.length; + } else + e.data.message === l.Unauthorized.message && r.cancel(p); + }, + e + ); + }; + (e.getOrderType = function () { + return s.getDisplayOrder(); + }), + (e.isSupportDragTask = function () { + if (!s.getDragAndDropTasks()) return !1; + var e = c.parseOrderType(s.getDisplayOrder()); + return 'waiting' === u && 'default' === e.type; + }), + 0 < s.getDownloadTaskRefreshInterval() && + (p = r(function () { + m(!0); + }, s.getDownloadTaskRefreshInterval())), + i.options(e, 'task-list', { + revertOnSpill: !0, + moves: function () { + return e.isSupportDragTask(); + }, + }), + e.$on('task-list.drop-model', function (e, t, a) { + var n = angular.element(t), + i = n.attr('data-gid'), + s = n.index(); + (g = !0), + d.changeTaskPosition( + i, + s, + function () { + g = !1; + }, + !0 + ); + }), + e.$on('$destroy', function () { + (g = !0), p && r.cancel(p); + }), + (o.loadPromise = m(!1)); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('TaskDetailController', [ + '$rootScope', + '$scope', + '$routeParams', + '$interval', + 'clipboard', + 'aria2RpcErrors', + 'ariaNgFileTypes', + 'ariaNgCommonService', + 'ariaNgSettingService', + 'ariaNgMonitorService', + 'aria2TaskService', + 'aria2SettingService', + function (o, g, e, t, n, a, f, m, r, l, s, c) { + var i = [ + { name: 'overview', show: !0 }, + { name: 'pieces', show: !0 }, + { name: 'filelist', show: !0 }, + { name: 'btpeers', show: !0 }, + ], + d = null, + u = !1, + p = null, + h = function () { + for (var e = [], t = 0; t < i.length; t++) + i[t].show && e.push(i[t].name); + return e; + }, + v = function (e, t) { + for (var a = 0; a < i.length; a++) + if (i[a].name === e) { + i[a].show = t; + break; + } + }, + b = function (e) { + var t, a, n, i, s; + e && + ((g.context.showPiecesInfo = + ((t = e), + (a = r.getShowPiecesInfoInTaskDetailPage()), + !(!t || 'never' === a) && + ('le102400' === a + ? t.numPieces <= 102400 + : 'le10240' === a + ? t.numPieces <= 10240 + : 'le1024' !== a || t.numPieces <= 1024))), + v('pieces', g.context.showPiecesInfo), + v('btpeers', 'active' === e.status && e.bittorrent), + (g.task && g.task.status === e.status) || + (g.context.availableOptions = + ((n = e.status), + (i = !!e.bittorrent), + (s = c.getAvailableTaskOptionKeys(n, i)), + c.getSpecifiedOptions(s, { disableRequired: !0 }))), + g.task && + (delete g.task.verifiedLength, + delete g.task.verifyIntegrityPending), + (g.task = m.copyObjectTo(e, g.task)), + (o.taskContext.list = [g.task]), + (o.taskContext.selected = {}), + (o.taskContext.selected[g.task.gid] = !0), + l.recordStat(e.gid, e)); + }, + y = function (e) { + e && + (m.extendArray(e, g.context.btPeers, 'peerId') || + (g.context.btPeers = e), + (g.context.healthPercent = s.estimateHealthPercentFromPeers( + g.task, + g.context.btPeers + ))); + }, + k = function (e) { + return e && e.bittorrent && 'active' === e.status; + }, + w = function (a) { + if (!u) { + var n = function (e) { + t.cancel(d); + }; + return g.task + ? s.getTaskStatusAndBtPeers( + e.gid, + function (e) { + if (!e.success) return n(e.data.message); + b(e.task), y(e.peers); + }, + a, + k(g.task), + !0, + !0 + ) + : s.getTaskStatus( + e.gid, + function (e) { + if (!e.success) return n(e.data.message); + var t = e.data; + b(t), + k(t) && + s.getBtTaskPeers( + t, + function (e) { + e.success && y(e.data); + }, + a, + !0 + ); + }, + a, + !0 + ); + } + }, + S = function (e) { + if (g.task && g.task.files) { + for ( + var t = g.task.gid, a = [], n = 0; + n < g.task.files.length; + n++ + ) { + var i = g.task.files[n]; + i && i.selected && !i.isDir && a.push(i.index); + } + return ( + (u = !0), + s.selectTaskFile( + t, + a, + function (e) { + (u = !1), e.success && w(!1); + }, + e + ) + ); + } + }, + x = function (e, t) { + if (e) { + if (e.files && e.files.length) + for (var a = 0; a < e.files.length; a++) { + e.files[a].selected = t; + } + if (e.subDirs && e.subDirs.length) + for (a = 0; a < e.subDirs.length; a++) { + var n = e.subDirs[a]; + x(n, t); + } + (e.selected = t), (e.partialSelected = !1); + } + }, + T = function (e) { + if (e) { + var t = 0, + a = 0; + if (e.files && e.files.length) + for (var n = 0; n < e.files.length; n++) { + t += e.files[n].selected ? 1 : 0; + } + if (e.subDirs && e.subDirs.length) + for (n = 0; n < e.subDirs.length; n++) { + var i = e.subDirs[n]; + T(i), + (t += i.selected ? 1 : 0), + (a += i.partialSelected ? 1 : 0); + } + (e.selected = 0 < t && t === e.subDirs.length + e.files.length), + (e.partialSelected = + (0 < t && t < e.subDirs.length + e.files.length) || 0 < a); + } + }, + C = function () { + if (g.task && g.task.multiDir) + for (var e = 0; e < g.task.files.length; e++) { + var t = g.task.files[e]; + t.isDir && T(t); + } + }; + (g.context = { + currentTab: 'overview', + isEnableSpeedChart: 0 < r.getDownloadTaskRefreshInterval(), + showPiecesInfo: 'never' !== r.getShowPiecesInfoInTaskDetailPage(), + showChooseFilesToolbar: !1, + fileExtensions: [], + collapsedDirs: {}, + btPeers: [], + healthPercent: 0, + collapseTrackers: !0, + statusData: l.getEmptyStatsData(e.gid), + availableOptions: [], + options: [], + }), + (g.changeTab = function (e) { + 'settings' === e && g.loadTaskOption(g.task), + (g.context.currentTab = e); + }), + (o.swipeActions.extendLeftSwipe = function () { + var e = h(), + t = e.indexOf(g.context.currentTab); + return t < e.length - 1 && (g.changeTab(e[t + 1]), !0); + }), + (o.swipeActions.extendRightSwipe = function () { + var e = h(), + t = e.indexOf(g.context.currentTab); + return 0 < t && (g.changeTab(e[t - 1]), !0); + }), + (g.changeFileListDisplayOrder = function (e, t) { + if (!g.task || !g.task.multiDir) { + var a = m.parseOrderType(r.getFileListDisplayOrder()), + n = m.parseOrderType(e); + t && n.type === a.type && (n.reverse = !a.reverse), + r.setFileListDisplayOrder(n.getValue()); + } + }), + (g.isSetFileListDisplayOrder = function (e) { + var t = m.parseOrderType(r.getFileListDisplayOrder()), + a = m.parseOrderType(e); + return t.equals(a); + }), + (g.getFileListOrderType = function () { + return g.task && g.task.multiDir + ? null + : r.getFileListDisplayOrder(); + }), + (g.showChooseFilesToolbar = function () { + g.context.showChooseFilesToolbar + ? g.cancelChooseFiles() + : ((u = !0), (g.context.showChooseFilesToolbar = !0)); + }), + (g.isAnyFileSelected = function () { + if (!g.task || !g.task.files) return !1; + for (var e = 0; e < g.task.files.length; e++) { + var t = g.task.files[e]; + if (!t.isDir && t.selected) return !0; + } + return !1; + }), + (g.isAllFileSelected = function () { + if (!g.task || !g.task.files) return !1; + for (var e = 0; e < g.task.files.length; e++) { + var t = g.task.files[e]; + if (!t.isDir && !t.selected) return !1; + } + return !0; + }), + (g.selectFiles = function (e) { + if (g.task && g.task.files) { + 'auto' === e && (e = g.isAllFileSelected() ? 'none' : 'all'); + for (var t = 0; t < g.task.files.length; t++) { + var a = g.task.files[t]; + a.isDir || + ('all' === e + ? (a.selected = !0) + : 'none' === e + ? (a.selected = !1) + : 'reverse' === e && (a.selected = !a.selected)); + } + C(); + } + }), + (g.chooseSpecifiedFiles = function (e) { + if (g.task && g.task.files && f[e]) { + for ( + var t = g.task.files, + a = f[e].extensions, + n = [], + i = !0, + s = 0; + s < t.length; + s++ + ) { + if (!(r = t[s]).isDir) { + var o = m.getFileExtension(r.fileName); + o && (o = o.toLowerCase()), + 0 <= a.indexOf(o) && (n.push(s), r.selected || (i = !1)); + } + } + for (s = 0; s < n.length; s++) { + var r; + (r = t[n[s]]) && !r.isDir && (r.selected = !i); + } + C(); + } + }), + (g.saveChoosedFiles = function () { + g.context.showChooseFilesToolbar && + ((o.loadPromise = S(!1)), + (g.context.showChooseFilesToolbar = !1)); + }), + (g.cancelChooseFiles = function () { + g.context.showChooseFilesToolbar && + (w(!(u = !1)), (g.context.showChooseFilesToolbar = !1)); + }), + (g.showCustomChooseFileModal = function () { + if (g.task && g.task.files) { + for (var e = g.task.files, t = {}, a = 0; a < e.length; a++) { + var n = e[a]; + if (!n.isDir) { + if ( + ((u = m.getFileExtension(n.fileName)) && + (u = u.toLowerCase()), + !(p = t[u])) + ) { + var i = u; + 0 < i.length && '.' === i.charAt(0) && (i = i.substring(1)), + (p = { + extension: i, + classified: !1, + selected: !1, + selectedCount: 0, + unSelectedCount: 0, + }), + (t[u] = p); + } + n.selected + ? ((p.selected = !0), p.selectedCount++) + : p.unSelectedCount++; + } + } + var s = {}; + for (var o in f) + if (f.hasOwnProperty(o)) { + var r = f[o].name, + l = f[o].extensions, + c = []; + for (a = 0; a < l.length; a++) { + (p = t[(u = l[a])]) && ((p.classified = !0), c.push(p)); + } + 0 < c.length && (s[o] = { name: r, extensions: c }); + } + var d = []; + for (var u in t) { + var p; + if (t.hasOwnProperty(u)) (p = t[u]).classified || d.push(p); + } + 0 < d.length && (s.other = { name: 'Other', extensions: d }), + (g.context.fileExtensions = s), + angular.element('#custom-choose-file-modal').modal(); + } + }), + (g.setSelectedExtension = function (e, t) { + if (g.task && g.task.files) { + for (var a = g.task.files, n = 0; n < a.length; n++) { + var i = a[n]; + if (!i.isDir) { + var s = m.getFileExtension(i.fileName); + s && (s = s.toLowerCase()), s === '.' + e && (i.selected = t); + } + } + C(); + } + }), + $('#custom-choose-file-modal').on('hide.bs.modal', function (e) { + g.context.fileExtensions = null; + }), + (g.setSelectedFile = function (e) { + e && C(), g.context.showChooseFilesToolbar || S(!0); + }), + (g.collapseDir = function (e, t, a) { + var n = e.nodePath; + if ( + (angular.isUndefined(t) && (t = !g.context.collapsedDirs[n]), + t || a) + ) + for (var i = 0; i < e.subDirs.length; i++) + g.collapseDir(e.subDirs[i], t); + n && (g.context.collapsedDirs[n] = t); + }), + (g.collapseAllDirs = function (e) { + if (g.task && g.task.files) + for (var t = 0; t < g.task.files.length; t++) { + var a = g.task.files[t]; + a.isDir && g.collapseDir(a, e, !0); + } + }), + (g.setSelectedNode = function (e) { + x(e, e.selected), + C(), + g.context.showChooseFilesToolbar || g.setSelectedFile(!1); + }), + (g.changePeerListDisplayOrder = function (e, t) { + var a = m.parseOrderType(r.getPeerListDisplayOrder()), + n = m.parseOrderType(e); + t && n.type === a.type && (n.reverse = !a.reverse), + r.setPeerListDisplayOrder(n.getValue()); + }), + (g.isSetPeerListDisplayOrder = function (e) { + var t = m.parseOrderType(r.getPeerListDisplayOrder()), + a = m.parseOrderType(e); + return t.equals(a); + }), + (g.getPeerListOrderType = function () { + return r.getPeerListDisplayOrder(); + }), + (g.loadTaskOption = function (e) { + o.loadPromise = s.getTaskOptions(e.gid, function (e) { + e.success && (g.context.options = e.data); + }); + }), + (g.setOption = function (e, t, a) { + return s.setTaskOption( + g.task.gid, + e, + t, + function (e) { + e.success && 'OK' === e.data + ? a.setSuccess() + : a.setFailed(e.data.message); + }, + !0 + ); + }), + (g.copySelectedRowText = function () { + if (p) { + var e = p.find('.setting-key > span').text().trim(), + a = ''; + if ( + (p.find('.setting-value > span').each(function (e, t) { + 0 < e && (a += '\n'), (a += angular.element(t).text().trim()); + }), + r.getIncludePrefixWhenCopyingFromTaskDetails()) + ) { + var t = e + ': ' + a; + n.copyText(t); + } else n.copyText(a); + } + }), + 0 < r.getDownloadTaskRefreshInterval() && + (d = t(function () { + !g.task || + ('complete' !== g.task.status && + 'error' !== g.task.status && + 'removed' !== g.task.status) + ? w(!0) + : t.cancel(d); + }, r.getDownloadTaskRefreshInterval())), + g.$on('$destroy', function () { + d && t.cancel(d); + }), + (g.onOverviewMouseDown = function () { + angular + .element('#overview-items .row[contextmenu-bind!="true"]') + .contextmenu({ + target: '#task-overview-contextmenu', + before: function (e, t) { + p = t; + }, + }) + .attr('contextmenu-bind', 'true'); + }), + angular + .element('#task-overview-contextmenu') + .on('hide.bs.context', function () { + p = null; + }), + (o.loadPromise = w(!1)); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('AriaNgSettingsController', [ + '$rootScope', + '$scope', + '$routeParams', + '$window', + '$interval', + '$timeout', + '$filter', + 'clipboard', + 'ariaNgBuildConfiguration', + 'ariaNgLanguages', + 'ariaNgCommonService', + 'ariaNgNotificationService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgFileService', + 'ariaNgSettingService', + 'ariaNgMonitorService', + 'ariaNgTitleService', + 'aria2SettingService', + function (t, n, e, a, i, s, o, r, l, c, d, u, p, g, f, m, h, v, b) { + var y = e.extendType, + k = null, + w = function () { + return v.getFinalTitleByGlobalStat({ + globalStat: h.getCurrentGlobalStat(), + currentRpcProfile: S(), + }); + }, + S = function () { + if ( + !n.context || + !n.context.rpcSettings || + n.context.rpcSettings.length < 1 + ) + return null; + for (var e = 0; e < n.context.rpcSettings.length; e++) { + var t = n.context.rpcSettings[e]; + if (t.isDefault) return t; + } + return null; + }, + x = function () { + k || + (k = p.notifyInPage( + '', + 'Configuration has been modified, please reload the page for the changes to take effect.', + { + delay: !1, + type: 'info', + templateUrl: 'views/notification-reloadable.html', + onClose: function () { + k = null; + }, + } + )); + }; + (n.context = { + currentTab: 'global', + ariaNgVersion: l.buildVersion, + buildCommit: l.buildCommit, + languages: c, + titlePreview: w(), + availableTime: d.getTimeOptions( + [1e3, 2e3, 3e3, 5e3, 1e4, 3e4, 6e4], + !0 + ), + trueFalseOptions: [ + { name: 'Enabled', value: !0 }, + { name: 'Disabled', value: !1 }, + ], + showRpcSecret: !1, + isInsecureProtocolDisabled: m.isInsecureProtocolDisabled(), + settings: m.getAllOptions(), + sessionSettings: m.getAllSessionOptions(), + rpcSettings: m.getAllRpcSettings(), + isSupportBlob: f.isSupportBlob(), + isSupportDarkMode: m.isBrowserSupportDarkMode(), + importSettings: null, + exportSettings: null, + exportSettingsCopied: !1, + }), + (n.context.titlePreview = w()), + (n.context.showDebugMode = + n.context.sessionSettings.debugMode || 'debug' === y), + (n.changeGlobalTab = function () { + n.context.currentTab = 'global'; + }), + (n.isCurrentGlobalTab = function () { + return 'global' === n.context.currentTab; + }), + (n.changeRpcTab = function (e) { + n.context.currentTab = 'rpc' + e; + }), + (n.isCurrentRpcTab = function (e) { + return n.context.currentTab === 'rpc' + e; + }), + (n.getCurrentRpcTabIndex = function () { + return n.isCurrentGlobalTab() + ? -1 + : parseInt(n.context.currentTab.substring(3)); + }), + (n.updateTitlePreview = function () { + n.context.titlePreview = w(); + }), + (t.swipeActions.extendLeftSwipe = function () { + var e = -1; + return ( + n.isCurrentGlobalTab() || + (e = parseInt(n.getCurrentRpcTabIndex())), + e < n.context.rpcSettings.length - 1 && + (n.changeRpcTab(e + 1), !0) + ); + }), + (t.swipeActions.extendRightSwipe = function () { + var e = -1; + return ( + n.isCurrentGlobalTab() || + (e = parseInt(n.getCurrentRpcTabIndex())), + 0 < e + ? (n.changeRpcTab(e - 1), !0) + : 0 === e && (n.changeGlobalTab(), !0) + ); + }), + (n.isSupportNotification = function () { + return ( + u.isSupportBrowserNotification() && + m.isCurrentRpcUseWebSocket(n.context.settings.protocol) + ); + }), + (n.setLanguage = function (e) { + m.setLanguage(e) && p.applyLanguage(e), n.updateTitlePreview(); + }), + (n.setTheme = function (e) { + m.setTheme(e), t.setTheme(e); + }), + (n.setDebugMode = function (e) { + m.setDebugMode(e); + }), + (n.setTitle = function (e) { + m.setTitle(e); + }), + (n.setEnableBrowserNotification = function (e) { + m.setBrowserNotification(e), + e && + !u.hasBrowserPermission() && + u.requestBrowserPermission(function (e) { + e.granted || + ((n.context.settings.browserNotification = !1), + p.showError( + "You have disabled notification in your browser. You should change your browser's settings before you enable this function." + )); + }); + }), + (n.setTitleRefreshInterval = function (e) { + x(), m.setTitleRefreshInterval(e); + }), + (n.setGlobalStatRefreshInterval = function (e) { + x(), m.setGlobalStatRefreshInterval(e); + }), + (n.setDownloadTaskRefreshInterval = function (e) { + x(), m.setDownloadTaskRefreshInterval(e); + }), + (n.setRPCListDisplayOrder = function (e) { + x(), m.setRPCListDisplayOrder(e); + }), + (n.setSwipeGesture = function (e) { + m.setSwipeGesture(e); + }), + (n.setDragAndDropTasks = function (e) { + m.setDragAndDropTasks(e); + }), + (n.setAfterCreatingNewTask = function (e) { + m.setAfterCreatingNewTask(e); + }), + (n.setRemoveOldTaskAfterRetrying = function (e) { + m.setRemoveOldTaskAfterRetrying(e); + }), + (n.setConfirmTaskRemoval = function (e) { + m.setConfirmTaskRemoval(e); + }), + (n.setIncludePrefixWhenCopyingFromTaskDetails = function (e) { + m.setIncludePrefixWhenCopyingFromTaskDetails(e); + }), + (n.setShowPiecesInfoInTaskDetailPage = function (e) { + m.setShowPiecesInfoInTaskDetailPage(e); + }), + (n.setAfterRetryingTask = function (e) { + m.setAfterRetryingTask(e); + }), + (n.showImportSettingsModal = function () { + (n.context.importSettings = null), + angular.element('#import-settings-modal').modal(); + }), + $('#import-settings-modal').on('hide.bs.modal', function (e) { + n.context.importSettings = null; + }), + (n.openAriaNgConfigFile = function () { + f.openFileContent( + { scope: n, fileFilter: '.json', fileType: 'text' }, + function (e) { + n.context.importSettings = e.content; + }, + function (e) { + p.showError(e); + }, + angular.element('#import-file-holder') + ); + }), + (n.importSettings = function (e) { + var t = null; + try { + t = JSON.parse(e); + } catch (e) { + return ( + g.error( + '[AriaNgSettingsController.importSettings] parse settings json error', + e + ), + void p.showError('Invalid settings data format!') + ); + } + if (!angular.isObject(t) || angular.isArray(t)) + return ( + g.error( + '[AriaNgSettingsController.importSettings] settings json is not object' + ), + void p.showError('Invalid settings data format!') + ); + t && + p.confirm( + 'Confirm Import', + 'Are you sure you want to import all settings?', + 'warning', + function () { + m.importAllOptions(t), a.location.reload(); + } + ); + }), + (n.showExportSettingsModal = function () { + (n.context.exportSettings = o('json')(m.exportAllOptions())), + (n.context.exportSettingsCopied = !1), + angular.element('#export-settings-modal').modal(); + }), + $('#export-settings-modal').on('hide.bs.modal', function (e) { + (n.context.exportSettings = null), + (n.context.exportSettingsCopied = !1); + }), + (n.copyExportSettings = function () { + r.copyText(n.context.exportSettings, { + container: angular.element('#export-settings-modal')[0], + }), + (n.context.exportSettingsCopied = !0); + }), + (n.addNewRpcSetting = function () { + x(); + var e = m.addNewRpcSetting(); + n.context.rpcSettings.push(e), + n.changeRpcTab(n.context.rpcSettings.length - 1); + }), + (n.updateRpcSetting = function (e, t) { + x(), m.updateRpcSetting(e, t); + }), + (n.removeRpcSetting = function (a) { + var e = a.rpcAlias ? a.rpcAlias : a.rpcHost + ':' + a.rpcPort; + p.confirm( + 'Confirm Remove', + 'Are you sure you want to remove rpc setting "{rpcName}"?', + 'warning', + function () { + x(); + var e = n.getCurrentRpcTabIndex(), + t = n.context.rpcSettings.indexOf(a); + m.removeRpcSetting(a), + n.context.rpcSettings.splice(t, 1), + e >= n.context.rpcSettings.length + ? n.changeRpcTab(n.context.rpcSettings.length - 1) + : e <= 0 || e <= t || n.changeRpcTab(e - 1); + }, + !1, + { textParams: { rpcName: e } } + ); + }), + (n.setDefaultRpcSetting = function (e) { + e.isDefault || (m.setDefaultRpcSetting(e), a.location.reload()); + }), + (n.resetSettings = function () { + p.confirm( + 'Confirm Reset', + 'Are you sure you want to reset all settings?', + 'warning', + function () { + m.resetSettings(), a.location.reload(); + } + ); + }), + (n.clearHistory = function () { + p.confirm( + 'Confirm Clear', + 'Are you sure you want to clear all settings history?', + 'warning', + function () { + b.clearSettingsHistorys(), a.location.reload(); + } + ); + }), + angular.element('[data-toggle="popover"]').popover(), + (t.loadPromise = s(function () {}, 100)); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('Aria2SettingsController', [ + '$rootScope', + '$scope', + '$location', + 'ariaNgConstants', + 'ariaNgLocalizationService', + 'aria2SettingService', + function (e, t, a, n, i, s) { + var o = a.path().substring(a.path().lastIndexOf('/') + 1); + (t.context = { + availableOptions: (function (e) { + var t = s.getAvailableGlobalOptionsKeys(e); + if (t) return s.getSpecifiedOptions(t); + i.showError('Type is illegal!'); + })(o), + globalOptions: [], + }), + (t.setGlobalOption = function (e, t, a) { + return s.setGlobalOption( + e, + t, + function (e) { + e.success && 'OK' === e.data + ? a.setSuccess() + : a.setFailed(e.data.message); + }, + !0 + ); + }), + (e.loadPromise = s.getGlobalOption(function (e) { + e.success && (t.context.globalOptions = e.data); + })); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').controller('Aria2StatusController', [ + '$rootScope', + '$scope', + 'ariaNgLocalizationService', + 'ariaNgSettingService', + 'aria2SettingService', + function (e, t, a, n, i) { + (t.context = { + host: n.getCurrentRpcUrl(), + status: 'Connecting', + serverStatus: null, + }), + (t.saveSession = function () { + return i.saveSession(function (e) { + e.success && + 'OK' === e.data && + a.showOperationSucceeded( + 'Session has been saved successfully.' + ); + }); + }), + (t.shutdown = function () { + a.confirm( + 'Confirm Shutdown', + 'Are you sure you want to shutdown aria2?', + 'warning', + function (e) { + return i.shutdown(function (e) { + e.success && + 'OK' === e.data && + a.showOperationSucceeded( + 'Aria2 has been shutdown successfully.' + ); + }); + }, + !0 + ); + }), + (e.loadPromise = i.getAria2Status(function (e) { + e.success + ? ((t.context.status = 'Connected'), + (t.context.serverStatus = e.data)) + : (t.context.status = 'Disconnected'); + })); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngAutoFocus', [ + '$timeout', + function (a) { + return { + restrict: 'A', + link: function (e, t) { + a(function () { + t[0].focus(); + }); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngPieceBar', [ + 'aria2TaskService', + function (u) { + return { + restrict: 'E', + template: '', + replace: !0, + scope: { bitField: '=', pieceCount: '=', color: '@' }, + link: function (c, d) { + var e = function () { + var e = d[0], + t = u.getCombinedPieces(c.bitField, c.pieceCount), + a = e.getContext('2d'); + (a.fillStyle = c.color || '#000'), + a.clearRect(0, 0, e.width, e.height); + for ( + var n = 0, i = e.width, s = e.height, o = 0; + o < t.length; + o++ + ) { + var r = t[o], + l = (r.count / c.pieceCount) * i; + r.isCompleted && a.fillRect(n, 0, l, s), (n += l); + } + }; + c.$watch('bitField', function () { + e(); + }), + c.$watch('pieceNumber', function () { + e(); + }); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngPieceMap', [ + 'aria2TaskService', + function (r) { + return { + restrict: 'E', + template: '
', + replace: !0, + scope: { bitField: '=', pieceCount: '=' }, + link: function (n, i) { + var s = [], + o = [], + a = function () { + (o = r.getPieceStatus(n.bitField, n.pieceCount)), + (s.length = 0), + i.empty(); + for (var e = Math.max(1, o.length), t = 0; t < e; t++) { + var a = angular.element( + '
' + ); + s.push(a), i.append(a); + } + }; + n.$watch('bitField', function () { + !(function () { + var e = r.getPieceStatus(n.bitField, n.pieceCount); + if (o && e && o.length === e.length && e.length === s.length) { + for (var t = 0; t < s.length; t++) + o[t] !== e[t] && + (e[t] + ? s[t].addClass('piece-completed') + : s[t].removeClass('piece-completed')); + o = e; + } else a(); + })(); + }), + n.$watch('pieceCount', function () { + a(); + }); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular + .module('ariaNg') + .directive('ngChart', [ + '$window', + 'chartTheme', + function (r, l) { + return { + restrict: 'E', + template: '
', + scope: { options: '=ngData', theme: '=ngTheme' }, + link: function (e, t, a) { + angular.extend({}, a); + var n = t.find('div'), + i = t.parent().height(), + s = parseInt(a.height) || i || 200; + n.css('height', s + 'px'); + var o = echarts.init(n[0], l.get(e.theme)); + angular.element(r).on('resize', function () { + o.resize(), e.$apply(); + }), + e.$watch( + 'options', + function (e) { + var t; + e && ((t = e), o.setOption(t)); + }, + !0 + ), + e.$on('$destroy', function () { + o && !o.isDisposed() && o.dispose(); + }); + }, + }; + }, + ]) + .directive('ngPopChart', [ + '$window', + 'chartTheme', + function (e, o) { + return { + restrict: 'A', + scope: { options: '=ngData', theme: '=ngTheme' }, + link: function (n, e, i) { + var t = { + ngPopoverClass: '', + ngContainer: 'body', + ngTrigger: 'click', + ngPlacement: 'top', + }; + angular.extend(t, i); + var s = null, + a = + '
'; + e.popover({ + container: t.ngContainer, + content: + '
' + + a + + '
', + html: !0, + placement: t.ngPlacement, + template: + '', + trigger: t.ngTrigger, + }) + .on('shown.bs.popover', function () { + var e = angular.element('.chart-pop'), + t = e.parent().height(); + e.empty(); + var a = parseInt(i.height) || t || 200; + e.css('height', a + 'px'), + (s = echarts.init(e[0], o.get(n.theme))); + }) + .on('hide.bs.popover', function () { + s && !s.isDisposed() && s.dispose(); + }) + .on('hidden.bs.popover', function () { + angular.element('.chart-pop').empty().append(a); + }); + n.$watch( + 'options', + function (e) { + var t; + e && ((t = e), s && !s.isDisposed() && s.setOption(t)); + }, + !0 + ); + }, + }; + }, + ]) + .factory('chartTheme', [ + 'chartDefaultTheme', + 'chartDarkTheme', + function (e, t) { + var a = { defaultTheme: e, darkTheme: t }; + return { + get: function (e) { + return 'default' !== e && a[e + 'Theme'] + ? angular.extend({}, a.defaultTheme, a[e + 'Theme']) + : a.defaultTheme; + }, + }; + }, + ]) + .factory('chartDefaultTheme', function () { + return { + color: ['#74a329', '#3a89e9'], + legend: { top: 'bottom' }, + toolbox: { show: !1 }, + tooltip: { + show: !0, + trigger: 'axis', + backgroundColor: 'rgba(0, 0, 0, 0.7)', + axisPointer: { + type: 'line', + lineStyle: { color: '#233333', type: 'dashed', width: 1 }, + crossStyle: { color: '#008acd', width: 1 }, + shadowStyle: { color: 'rgba(200,200,200,0.2)' }, + }, + }, + grid: { x: 40, y: 20, x2: 30, y2: 50 }, + categoryAxis: { + axisLine: { show: !1 }, + axisTick: { show: !1 }, + splitLine: { lineStyle: { color: '#f3f3f3' } }, + }, + valueAxis: { + axisLine: { show: !1 }, + axisTick: { show: !1 }, + splitLine: { lineStyle: { color: '#f3f3f3' } }, + splitArea: { show: !1 }, + }, + line: { + itemStyle: { normal: { lineStyle: { width: 2, type: 'solid' } } }, + smooth: !0, + symbolSize: 6, + }, + textStyle: { + fontFamily: + 'Hiragino Sans GB, Microsoft YaHei, STHeiti, Helvetica Neue, Helvetica, Arial, sans-serif', + }, + animationDuration: 500, + }; + }) + .factory('chartDarkTheme', function () { + return { + tooltip: { + show: !0, + trigger: 'axis', + backgroundColor: 'rgba(0, 0, 0, 0.7)', + axisPointer: { + type: 'line', + lineStyle: { color: '#ddd', type: 'dashed', width: 1 }, + crossStyle: { color: '#ddd', width: 1 }, + shadowStyle: { color: 'rgba(200,200,200,0.2)' }, + }, + }, + categoryAxis: { + axisLine: { show: !1 }, + axisTick: { show: !1 }, + splitLine: { lineStyle: { color: '#333' } }, + }, + valueAxis: { + axisLine: { show: !1 }, + axisTick: { show: !1 }, + axisLabel: { show: !0, textStyle: { color: '#eee' } }, + splitLine: { lineStyle: { color: '#333' } }, + splitArea: { show: !1 }, + }, + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngIndeterminate', function () { + return { + restrict: 'A', + scope: { indeterminate: '=ngIndeterminate' }, + link: function (e, t) { + e.$watch('indeterminate', function () { + t[0].indeterminate = + 'true' === e.indeterminate || !0 === e.indeterminate; + }); + }, + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngPlaceholder', function () { + return { + restrict: 'A', + scope: { placeholder: '=ngPlaceholder' }, + link: function (e, t) { + e.$watch('placeholder', function () { + t[0].placeholder = e.placeholder; + }); + }, + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngSetting', [ + '$timeout', + '$q', + 'ariaNgConstants', + 'ariaNgLocalizationService', + 'aria2SettingService', + function (u, p, g, f, m) { + return { + restrict: 'E', + templateUrl: 'views/setting.html', + require: '?ngModel', + replace: !0, + scope: { + option: '=', + ngModel: '=', + defaultValue: '=?', + onChangeValue: '&', + }, + link: function (s, i, e, t) { + var o = null, + r = { + lazySaveTimeout: g.lazySaveTimeout, + errorTooltipDelay: g.errorTooltipDelay, + }; + angular.extend(r, e); + var a, + n = function () { + s.option && + s.option.showHistory && + (s.history = m.getSettingHistory(s.option.key)); + }, + l = function () { + angular.element(i).tooltip('destroy'); + }, + c = function (t, a, n) { + t && + u(function () { + var e = s.optionStatus.getValue(); + ('failed' !== e && 'error' !== e) || + angular + .element(i) + .tooltip({ + title: f.getLocalizedText(t, n), + trigger: 'focus', + placement: 'auto top', + container: i, + template: + '', + }) + .tooltip('show'); + }, r.errorTooltipDelay); + }, + d = function (e) { + return 'Bytes' === s.option.suffix + ? (function (e) { + if (!e || parseInt(e).toString() != e) return e; + for ( + var t = ['', 'K', 'M', 'G'], a = 0, n = 0; + n < t.length && !(e < 1024 || e % 1024 != 0); + n++ + ) + (e /= 1024), a++; + return e + t[a]; + })(e) + : e; + }; + (s.optionStatus = + ((a = 'ready'), + { + getValue: function () { + return a; + }, + setReady: function () { + l(), (a = 'ready'); + }, + setPending: function () { + l(), (a = 'pending'); + }, + setSaving: function () { + l(), (a = 'pending'); + }, + setSuccess: function () { + l(), (a = 'success'); + }, + setFailed: function (e) { + l(), (a = 'failed'), c(e, 'warning'); + }, + setError: function (e, t) { + l(), c(e, (a = 'error'), t); + }, + getStatusFeedbackStyle: function () { + return 'success' === a + ? 'has-success' + : 'failed' === a + ? 'has-warning' + : 'error' === a + ? 'has-error' + : ''; + }, + getStatusIcon: function () { + return 'pending' === a + ? 'fa-hourglass-start' + : 'saving' === a + ? 'fa-spin fa-pulse fa-spinner' + : 'success' === a + ? 'fa-check' + : 'failed' === a + ? 'fa-exclamation' + : 'error' === a + ? 'fa-times' + : ''; + }, + isShowStatusIcon: function () { + return '' !== this.getStatusIcon(); + }, + })), + (s.getTotalCount = function () { + return s.optionValue || angular.isString(s.optionValue) + ? s.optionValue.split(s.option.split).length + : 0; + }), + (s.changeValue = function (e, t) { + if ( + (o && u.cancel(o), + (s.optionValue = e), + s.optionStatus.setReady(), + s.option && s.option.key && !s.option.readonly) + ) + if (s.option.required && '' === e) + s.optionStatus.setError('Option value cannot be empty!'); + else if ( + '' === e || + 'integer' !== s.option.type || + /^-?\d+$/.test(e) + ) + if ( + '' === e || + 'float' !== s.option.type || + /^-?(\d*\.)?\d+$/.test(e) + ) { + if ( + '' !== e && + ('integer' === s.option.type || + 'float' === s.option.type) && + (angular.isDefined(s.option.min) || + angular.isDefined(s.option.max)) + ) { + var a = e; + if ( + ('integer' === s.option.type + ? (a = parseInt(e)) + : 'float' === s.option.type && (a = parseFloat(e)), + angular.isDefined(s.option.min) && a < s.option.min) + ) + return void s.optionStatus.setError( + 'Input number is below min value!', + { value: s.option.min } + ); + if (angular.isDefined(s.option.max) && a > s.option.max) + return void s.optionStatus.setError( + 'Input number is above max value!', + { value: s.option.max } + ); + } + if ( + '' === e || + !angular.isDefined(s.option.pattern) || + new RegExp(s.option.pattern).test(e) + ) { + var n = { + key: s.option.key, + value: e, + optionStatus: s.optionStatus, + }, + i = function () { + s.optionStatus.setSaving(), s.onChangeValue(n); + }; + s.onChangeValue && + (t + ? (s.optionStatus.setPending(), + (o = u(function () { + i(); + }, r.lazySaveTimeout))) + : i()); + } else s.optionStatus.setError('Input value is invalid!'); + } else s.optionStatus.setError('Input number is invalid!'); + else s.optionStatus.setError('Input number is invalid!'); + }), + (s.filterHistory = function (e) { + var t = []; + if (s.history && e) + for (var a = 0; a < s.history.length; a++) + 0 === s.history[a].indexOf(e) && t.push(s.history[a]); + return p.resolve(t); + }), + t && + s.$watch( + function () { + return t.$viewValue; + }, + function (e) { + s.optionValue = d(e); + } + ), + s.$watch('option', function () { + n(), i.find('[data-toggle="popover"]').popover(); + }), + s.$watch('defaultValue', function (e) { + var t = e; + if (s.option && s.option.options) + for (var a = 0; a < s.option.options.length; a++) { + var n = s.option.options[a]; + if (n.value === e) { + t = n.name; + break; + } + } + s.placeholder = d(t); + }), + n(); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngSettingDialog', [ + 'ariaNgLocalizationService', + 'aria2SettingService', + function (i, s) { + return { + restrict: 'E', + templateUrl: 'views/setting-dialog.html', + replace: !0, + scope: { setting: '=' }, + link: function (n, e, t) { + (n.context = { + isLoading: !1, + availableOptions: [], + globalOptions: [], + }), + (n.setGlobalOption = function (e, t, a) { + return s.setGlobalOption( + e, + t, + function (e) { + e.success && 'OK' === e.data + ? a.setSuccess() + : a.setFailed(e.data.message); + }, + !0 + ); + }); + angular + .element('#quickSettingModal') + .on('hidden.bs.modal', function () { + (n.setting = null), + (n.context.availableOptions = []), + (n.context.globalOptions = []); + }), + n.$watch( + 'setting', + function (e) { + var t, a; + e && + ((t = e.type), + (a = s.getAria2QuickSettingsAvailableOptions(t)) + ? (n.context.availableOptions = s.getSpecifiedOptions(a)) + : i.showError('Type is illegal!'), + (n.context.isLoading = !0), + s.getGlobalOption(function (e) { + (n.context.isLoading = !1), + e.success && (n.context.globalOptions = e.data); + }), + angular.element('#quickSettingModal').modal('show')); + }, + !0 + ); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngTooltip', function () { + return { + restrict: 'A', + scope: { title: '@ngTooltip' }, + link: function (e, t, a) { + var n = { + ngTooltipIf: !0, + ngTooltipPlacement: 'top', + ngTooltipContainer: null, + ngTooltipTrigger: 'hover', + }; + angular.extend(n, a); + var i = !0 === n.ngTooltipIf || 'true' === n.ngTooltipIf, + s = function () { + angular.element(t).tooltip({ + title: e.title, + placement: n.ngTooltipPlacement, + container: n.ngTooltipContainer, + trigger: n.ngTooltipTrigger, + delay: { show: 100, hide: 0 }, + }); + }; + i && s(), + e.$watch('title', function () { + i && + angular.element(t).attr('title', e.title).tooltip('fixTitle'); + }), + e.$watch('ngTooltipIf', function (e) { + angular.isUndefined(e) || + (i !== (e = !0 === e || 'true' === e) && + (e ? s() : angular.element(t).tooltip('destroy'), (i = e))); + }); + }, + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngValidUrls', [ + 'ariaNgCommonService', + function (i) { + return { + restrict: 'A', + require: '?ngModel', + link: function (e, t, a, n) { + e.$watch( + function () { + return n.$viewValue; + }, + function (e) { + if (!angular.isUndefined(e) && '' !== e) { + var t = i.parseUrlsFromOriginInput(e), + a = t && 0 < t.length; + n.$setValidity('invalidUrls', a); + } + } + ); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').directive('ngBlobDownload', [ + 'ariaNgFileService', + function (n) { + return { + restrict: 'A', + scope: { + ngBlobDownload: '=ngBlobDownload', + ngFileName: '@', + ngContentType: '@', + }, + link: function (t, a) { + t.$watch('ngBlobDownload', function (e) { + e && + n.saveFileContent(e, a, { + fileName: t.ngFileName, + contentType: t.ngContentType, + }); + }); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('dateDuration', [ + 'moment', + function (i) { + return function (e, t, a) { + var n = i.duration(e, t); + return i.utc(n.asMilliseconds()).format(a); + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('fileOrderBy', [ + '$filter', + 'ariaNgCommonService', + function (n, i) { + return function (e, t) { + if (!angular.isArray(e) || !t) return e; + var a = i.parseOrderType(t); + return null === a + ? e + : 'index' === a.type + ? n('orderBy')(e, ['index'], a.reverse) + : 'name' === a.type + ? n('orderBy')(e, ['fileName'], a.reverse) + : 'size' === a.type + ? n('orderBy')(e, ['length'], a.reverse) + : 'percent' === a.type + ? n('orderBy')(e, ['completePercent'], a.reverse) + : 'selected' === a.type + ? n('orderBy')(e, ['selected'], a.reverse) + : e; + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('longDate', [ + 'ariaNgCommonService', + 'ariaNgLocalizationService', + function (a, n) { + return function (e) { + var t = n.getLongDateFormat(); + return a.formatDateTime(e, t); + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('peerOrderBy', [ + '$filter', + 'ariaNgCommonService', + function (n, i) { + return function (e, t) { + if (!angular.isArray(e)) return e; + var a = i.parseOrderType(t); + return null === a + ? e + : 'address' === a.type + ? n('orderBy')(e, ['ip', 'port'], a.reverse) + : 'client' === a.type + ? n('orderBy')(e, ['client.name', 'client.version'], a.reverse) + : 'percent' === a.type + ? n('orderBy')(e, ['completePercent'], a.reverse) + : 'dspeed' === a.type + ? n('orderBy')(e, ['downloadSpeed'], a.reverse) + : 'uspeed' === a.type + ? n('orderBy')(e, ['uploadSpeed'], a.reverse) + : e; + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('percent', [ + '$filter', + function (i) { + return function (e, t) { + var a = Math.pow(10, t), + n = parseInt(e * a) / a; + return i('number')(n, t); + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('reverse', function () { + return function (e) { + return e ? e.slice().reverse() : e; + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('taskOrderBy', [ + '$filter', + 'ariaNgCommonService', + function (n, i) { + return function (e, t) { + if (!angular.isArray(e)) return e; + var a = i.parseOrderType(t); + return null === a + ? e + : 'name' === a.type + ? n('orderBy')(e, ['taskName'], a.reverse) + : 'size' === a.type + ? n('orderBy')(e, ['totalLength'], a.reverse) + : 'percent' === a.type + ? n('orderBy')(e, ['completePercent'], a.reverse) + : 'remain' === a.type + ? n('orderBy')(e, ['idle', 'remainTime', 'remainLength'], a.reverse) + : 'dspeed' === a.type + ? n('orderBy')(e, ['downloadSpeed'], a.reverse) + : 'uspeed' === a.type + ? n('orderBy')(e, ['uploadSpeed'], a.reverse) + : e; + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('taskStatus', function () { + return function (e, t) { + return e + ? 'active' === e.status + ? e.verifyIntegrityPending + ? 'Pending Verification' + : e.verifiedLength + ? e.verifiedPercent + ? 'format.task.verifying-percent' + : 'Verifying' + : !0 === e.seeder || 'true' === e.seeder + ? 'Seeding' + : 'Downloading' + : 'waiting' === e.status + ? 'Waiting' + : 'paused' === e.status + ? 'Paused' + : t || 'complete' !== e.status + ? t || 'error' !== e.status + ? t || 'removed' !== e.status + ? '' + : 'Removed' + : e.errorCode + ? 'format.task.error-occurred' + : 'Error Occurred' + : 'Completed' + : ''; + }; + }); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').filter('readableVolume', [ + '$filter', + function (r) { + var l = ['B', 'KB', 'MB', 'GB']; + return function (e, t) { + var a, + n = l[0], + i = 2, + s = !1; + angular.isNumber(t) ? (i = t) : 'auto' === t && (s = !0), + e || (e = 0), + angular.isNumber(e) || (e = parseInt(e)); + for (var o = 1; o < l.length && 1024 <= e; o++) + (e /= 1024), (n = l[o]); + return ( + s && (i = (a = e) < 1 ? 2 : a < 10 ? 1 : 0), + (e = r('number')(e, i)) + ' ' + n + ); + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').provider('ariaNgAssetsCacheService', [ + function () { + var s = {}, + a = 'languages.'; + (this.getLanguageAsset = function (e) { + return (function (e) { + for (var t = e.split('.'), a = s, n = 0; n < t.length; n++) { + if (angular.isUndefined(a[t[n]])) return null; + a = a[t[n]]; + } + return a; + })(a + e); + }), + (this.setLanguageAsset = function (e, t) { + !(function (e, t) { + for (var a = e.split('.'), n = s, i = 0; i < a.length - 1; i++) + angular.isUndefined(n[a[i]]) && (n[a[i]] = {}), (n = n[a[i]]); + n[a[a.length - 1]] = t; + })(a + e, t); + }), + (this.$get = function () { + var t = this; + return { + getLanguageAsset: function (e) { + return t.getLanguageAsset(e); + }, + }; + }); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgLanguageLoader', [ + '$http', + '$q', + 'ariaNgConstants', + 'ariaNgLanguages', + 'ariaNgAssetsCacheService', + 'ariaNgNotificationService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgStorageService', + function (o, r, l, c, d, u, p, g, f) { + var m = function (e) { + for (var t = 0; t < e.length; t++) + if (0 < t && '\\' !== e.charAt(t - 1) && '=' === e.charAt(t)) + return { + key: e.substring(0, t).replace('\\=', '='), + value: e.substring(t + 1, e.length).replace('\\=', '='), + }; + return { value: e }; + }, + h = function (e, t) { + var a = e; + if (!t) return a; + if ( + ('[' === t[0] && + ']' === t[t.length - 1] && + (t = t.substring(1, t.length - 1)), + 'global' === t) + ) + return a; + for (var n = t.split('.'), i = 0; i < n.length; i++) { + var s = n[i]; + a[s] || (a[s] = {}), (a = a[s]); + } + return a; + }, + v = function (e) { + var t = {}; + if (!e) return t; + for (var a = e.split('\n'), n = t, i = 0; i < a.length; i++) { + var s = a[i]; + if (s) + if (((s = s.replace('\r', '')), /^\[.+\]$/.test(s))) + n = h(t, s); + else { + var o = m(s); + o && o.key && (n[o.key] = o.value); + } + } + return t; + }, + b = function (e, t) { + if (!angular.isObject(e) || !angular.isObject(t)) return !1; + for (var a in t) + if (t.hasOwnProperty(a)) { + var n = t[a]; + if (angular.isObject(n)) { + if (!b(e[a], n)) return !1; + } else if (n !== e[a]) return !1; + } + return !0; + }; + return function (t) { + var n = r.defer(); + if (!c[t.key]) return n.reject(t.key), n.promise; + var i = l.languageStorageKeyPrefix + '.' + t.key, + s = f.get(i); + if ((s && n.resolve(s), d.getLanguageAsset(t.key))) { + var e = v(d.getLanguageAsset(t.key)); + return f.set(i, e), n.resolve(e), n.promise; + } + var a = l.languagePath + '/' + t.key + l.languageFileExtension; + return ( + o({ url: a, method: 'GET' }) + .then(function (e) { + var t = v(e.data), + a = !1; + return ( + s && (a = !b(s, t)), + f.set(i, t), + a + ? (g.info( + '[ariaNgLanguageLoader] load language resource successfully, and resource is updated' + ), + p.notifyInPage( + '', + 'Language resource has been updated, please reload the page for the changes to take effect.', + { + delay: !1, + type: 'info', + templateUrl: 'views/notification-reloadable.html', + } + )) + : g.info( + '[ariaNgLanguageLoader] load language resource successfully, but resource is not updated' + ), + n.resolve(t) + ); + }) + .catch(function (e) { + return ( + g.warn('[ariaNgLanguageLoader] cannot get language resource'), + s || + u.notifyInPage( + '', + 'AriaNg cannot get language resources, and will display in default language.', + { type: 'error', delay: !1 } + ), + n.reject(t.key) + ); + }), + n.promise + ); + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgCommonService', [ + '$location', + '$timeout', + 'base64', + 'moment', + 'SweetAlert', + 'ariaNgConstants', + function (e, s, t, a, r, n) { + return { + base64Encode: function (e) { + return t.encode(e); + }, + base64Decode: function (e) { + return t.decode(e); + }, + base64UrlDecode: function (e) { + return t.urldecode(e); + }, + generateUniqueId: function () { + var e = + n.appPrefix + + '_' + + Math.round(new Date().getTime() / 1e3) + + '_' + + Math.random(); + return this.base64Encode(e); + }, + showDialog: function (e, t, a, n, i) { + s(function () { + r.swal( + { + title: e, + text: t, + type: a, + confirmButtonText: (i && i.confirmButtonText) || null, + }, + function () { + n && n(); + } + ); + }, 100); + }, + confirm: function (e, t, a, n, i, s) { + var o = { + title: e, + text: t, + type: a, + showCancelButton: !0, + showLoaderOnConfirm: !!i, + closeOnConfirm: !i, + confirmButtonText: (s && s.confirmButtonText) || null, + cancelButtonText: (s && s.cancelButtonText) || null, + }; + 'warning' === a && (o.confirmButtonColor = '#F39C12'), + r.swal(o, function (e) { + e && n && n(); + }); + }, + closeAllDialogs: function () { + r.close(); + }, + getFileExtension: function (e) { + return !e || e.lastIndexOf('.') < 0 + ? e + : e.substring(e.lastIndexOf('.')); + }, + parseUrlsFromOriginInput: function (e) { + if (!e) return []; + for (var t = e.split('\n'), a = [], n = 0; n < t.length; n++) { + var i = t[n]; + i.match(/^(http|https|ftp|sftp):\/\/.+$/) + ? a.push(i) + : i.match(/^magnet:\?.+$/) && a.push(i); + } + return a; + }, + decodePercentEncodedString: function (e) { + if (!e) return e; + for (var t = '', a = 0; a < e.length; a++) { + var n = e.charAt(a); + if ('%' === n && a < e.length - 2) { + var i = e.substring(a + 1, a + 3); + (t += String.fromCharCode(parseInt(i, 16))), (a += 2); + } else t += n; + } + return t; + }, + extendArray: function (e, t, a) { + if (!t || !e || e.length !== t.length) return !1; + for (var n = 0; n < t.length; n++) { + if (t[n][a] !== e[n][a]) return !1; + angular.extend(t[n], e[n]); + } + return !0; + }, + copyObjectTo: function (e, t) { + if (!t) return e; + for (var a in e) + if (e.hasOwnProperty(a)) { + var n = e[a], + i = t[a]; + angular.isObject(n) || angular.isArray(n) + ? (t[a] = this.copyObjectTo(e[a], t[a])) + : n !== i && (t[a] = n); + } + return t; + }, + pushArrayTo: function (e, t) { + if ( + (angular.isArray(e) || (e = []), + !angular.isArray(t) || t.length < 1) + ) + return e; + for (var a = 0; a < t.length; a++) e.push(t[a]); + return e; + }, + combineArray: function () { + for (var e = [], t = 0; t < arguments.length; t++) + angular.isArray(arguments[t]) + ? this.pushArrayTo(e, arguments[t]) + : e.push(arguments[t]); + return e; + }, + countArray: function (e, t) { + if (!angular.isArray(e) || e.length < 1) return 0; + for (var a = 0, n = 0; n < e.length; n++) a += e[n] === t ? 1 : 0; + return a; + }, + parseOrderType: function (e) { + var t = e.split(':'), + a = { + type: t[0], + order: t[1], + equals: function (e) { + return angular.isUndefined(e.order) + ? this.type === e.type + : this.type === e.type && this.order === e.order; + }, + getValue: function () { + return this.type + ':' + this.order; + }, + }; + return ( + Object.defineProperty(a, 'reverse', { + get: function () { + return 'desc' === this.order; + }, + set: function (e) { + this.order = e ? 'desc' : 'asc'; + }, + }), + a + ); + }, + getCurrentUnixTime: function () { + return a().format('X'); + }, + getLongTimeFromUnixTime: function (e) { + return a(e, 'X').format('HH:mm:ss'); + }, + formatDateTime: function (e, t) { + return a(e).format(t); + }, + getTimeOptions: function (e, t) { + var a = []; + if ( + (t && a.push({ name: 'Disabled', value: 0, optionValue: 0 }), + !angular.isArray(e) || e.length < 1) + ) + return a; + for (var n = 0; n < e.length; n++) { + var i = e[n], + s = '', + o = i; + (s = + i < 1e3 + ? 1 === (o = i) + ? 'format.time.millisecond' + : 'format.time.milliseconds' + : i < 6e4 + ? 1 === (o = i / 1e3) + ? 'format.time.second' + : 'format.time.seconds' + : i < 144e4 + ? 1 === (o = i / 1e3 / 60) + ? 'format.time.minute' + : 'format.time.minutes' + : 1 === (o = i / 1e3 / 60 / 24) + ? 'format.time.hour' + : 'format.time.hours'), + a.push({ name: s, value: o, optionValue: i }); + } + return a; + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgNotificationService', [ + '$window', + 'Notification', + 'ariaNgSettingService', + function (s, n, o) { + var r = !!s.Notification, + l = function (e) { + return 'granted' === e; + }, + c = function () { + return s.Notification ? s.Notification.permission : null; + }; + return { + isSupportBrowserNotification: function () { + return r; + }, + hasBrowserPermission: function () { + return !!r && l(c()); + }, + requestBrowserPermission: function (t) { + var a; + r && + ((a = function (e) { + e.granted || o.setBrowserNotification(!1), t && t(e); + }), + s.Notification && + s.Notification.requestPermission(function (e) { + a && a({ granted: l(e), permission: e }); + })); + }, + notifyViaBrowser: function (e, t, a) { + var n, i; + a || (a = {}), + (a.body = t), + r && + o.getBrowserNotification() && + ((n = e), + (i = a), + s.Notification && + l(c()) && + ((i = angular.extend({ icon: 'tileicon.png' }, i)), + new s.Notification(n, i))); + }, + notifyInPage: function (e, t, a) { + return ( + a || (a = {}), + t ? ((a.title = e), (a.message = t)) : (a.message = e), + (a.type && n[a.type]) || (a.type = 'primary'), + n[a.type](a) + ); + }, + clearNotificationInPage: function () { + n.clearAll(); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgLocalizationService', [ + '$translate', + 'amMoment', + 'ariaNgCommonService', + 'ariaNgNotificationService', + function (a, t, o, n) { + return { + applyLanguage: function (e) { + return a.use(e), t.changeLocale(e), !0; + }, + getLocalizedText: function (e, t) { + return a.instant(e, t); + }, + getLongDateFormat: function () { + return this.getLocalizedText('format.longdate'); + }, + showDialog: function (e, t, a, n, i) { + i || (i = {}), + e && (e = this.getLocalizedText(e)), + t && (t = this.getLocalizedText(t, i.textParams)), + (i.confirmButtonText = this.getLocalizedText('OK')), + o.showDialog(e, t, a, n, i); + }, + showInfo: function (e, t, a, n) { + this.showDialog(e, t, 'info', a, n); + }, + showError: function (e, t) { + this.showDialog('Error', e, 'error', t); + }, + showOperationSucceeded: function (e, t) { + this.showDialog('Operation Succeeded', e, 'success', t); + }, + confirm: function (e, t, a, n, i, s) { + s || (s = {}), + e && (e = this.getLocalizedText(e)), + t && (t = this.getLocalizedText(t, s.textParams)), + (s.confirmButtonText = this.getLocalizedText('OK')), + (s.cancelButtonText = this.getLocalizedText('Cancel')), + o.confirm(e, t, a, n, i, s); + }, + notifyViaBrowser: function (e, t, a) { + return ( + e && (e = this.getLocalizedText(e)), + t && (t = this.getLocalizedText(t)), + n.notifyViaBrowser(e, t, a) + ); + }, + notifyInPage: function (e, t, a) { + return ( + a || (a = {}), + e && (e = this.getLocalizedText(e, a.titleParams)), + t && + ((t = this.getLocalizedText(t, a.contentParams)), + a.contentPrefix && (t = a.contentPrefix + t)), + n.notifyInPage(e, t, a) + ); + }, + notifyTaskComplete: function (e) { + this.notifyViaBrowser( + 'Download Completed', + e && e.taskName ? e.taskName : '' + ); + }, + notifyBtTaskComplete: function (e) { + this.notifyViaBrowser( + 'BT Download Completed', + e && e.taskName ? e.taskName : '' + ); + }, + notifyTaskError: function (e) { + this.notifyViaBrowser( + 'Download Error', + e && e.taskName ? e.taskName : '' + ); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgLogService', [ + '$log', + 'ariaNgConstants', + function (a, o) { + var r = !1, + l = [], + n = function (e, t, a) { + var n, i, s; + r && + (l.length >= o.cachedDebugLogsLimit && l.shift(), + l.push( + ((n = e), + (i = t), + (s = a), + { time: new Date(), level: i, content: n, attachment: s }) + )); + }; + return { + setEnableDebugLog: function (e) { + r = e; + }, + debug: function (e, t) { + r && + (t + ? a.debug('[AriaNg Debug]' + e, t) + : a.debug('[AriaNg Debug]' + e), + n(e, 'DEBUG', t)); + }, + info: function (e, t) { + t ? a.info('[AriaNg Info]' + e, t) : a.info('[AriaNg Info]' + e), + n(e, 'INFO', t); + }, + warn: function (e, t) { + t ? a.warn('[AriaNg Warn]' + e, t) : a.warn('[AriaNg Warn]' + e), + n(e, 'WARN', t); + }, + error: function (e, t) { + t + ? a.error('[AriaNg Error]' + e, t) + : a.error('[AriaNg Error]' + e), + n(e, 'ERROR', t); + }, + getDebugLogs: function () { + return r ? l : []; + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgStorageService', [ + '$window', + 'localStorageService', + function (e, i) { + return { + isLocalStorageSupported: function () { + return i.isSupported; + }, + isCookiesSupported: function () { + return i.cookie.isSupported; + }, + get: function (e) { + return i.get(e); + }, + set: function (e, t) { + return i.set(e, t); + }, + remove: function (e) { + return i.remove(e); + }, + clearAll: function () { + return i.clearAll(); + }, + keys: function (e) { + var t = i.keys(); + if (!t || !t.length || !e) return t; + for (var a = [], n = 0; n < t.length; n++) + 0 <= t[n].indexOf(e) && a.push(t[n]); + return a; + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgFileService', [ + '$window', + function (e) { + var n = !!e.FileReader, + s = !!e.Blob; + return { + isSupportFileReader: function () { + return n; + }, + isSupportBlob: function () { + return s; + }, + openFileContent: function (e, t, a, s) { + n + ? ((e = angular.extend( + { + scope: null, + fileFilter: null, + fileType: 'binary', + successCallback: t, + errorCallback: a, + }, + e + )), + (s && s.change) || + (s = angular.element( + '' + )), + s.data('options', e), + e.fileFilter && s.attr('accept', e.fileFilter), + s.val(''), + 'true' !== s.attr('data-ariang-file-initialized') && + s + .change(function () { + if (this.files && !(this.files.length < 1)) { + var t = s.data('options'), + e = (function (e) { + var t = []; + if (!e || e.length < 1) return t.push(/.+$/), t; + for ( + var a = e.split(','), n = 0; + n < a.length; + n++ + ) { + var i = a[n]; + '*.*' !== i + ? ((i = i.replace('.', '\\.')), + (i += '$'), + t.push(new RegExp(i))) + : t.push(/.+$/); + } + return t; + })(t.fileFilter), + a = this.files[0], + n = a.name; + if ( + (function (e, t) { + if (!t || t.length < 1) return !0; + for (var a = 0; a < t.length; a++) + if (t[a].test(e)) return !0; + return !1; + })(n, e) + ) { + var i = new FileReader(); + switch ( + ((i.onload = function () { + var e = { fileName: n }; + switch (t.fileType) { + case 'text': + e.content = this.result; + break; + case 'binary': + default: + e.base64Content = this.result.replace( + /.*?base64,/, + '' + ); + } + t.successCallback && + (t.scope + ? t.scope.$apply(function () { + t.successCallback(e); + }) + : t.successCallback(e)); + }), + (i.onerror = function () { + t.errorCallback && + (t.scope + ? t.scope.$apply(function () { + t.errorCallback('Failed to load file!'); + }) + : t.errorCallback('Failed to load file!')); + }), + t.fileType) + ) { + case 'text': + i.readAsText(a); + break; + case 'binary': + default: + i.readAsDataURL(a); + } + } else + t.errorCallback && + (t.scope + ? t.scope.$apply(function () { + t.errorCallback( + 'The selected file type is invalid!' + ); + }) + : t.errorCallback( + 'The selected file type is invalid!' + )); + } + }) + .attr('data-ariang-file-initialized', 'true'), + s.trigger('click')) + : a && a('Your browser does not support loading file!'); + }, + saveFileContent: function (e, t, a) { + if (s) { + a = angular.extend( + { + fileName: null, + contentType: 'application/octet-stream', + autoTrigger: !1, + autoRevoke: !1, + }, + a + ); + var n = new Blob([e], { type: a.contentType }), + i = URL.createObjectURL(n); + t || (t = angular.element('')), + t.attr('href', i), + a.fileName && t.attr('download', a.fileName), + a.autoTrigger && t.trigger('click'), + a.autoRevoke && URL.revokeObjectURL(i); + } + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgSettingService', [ + '$window', + '$location', + '$filter', + 'ariaNgConstants', + 'ariaNgDefaultOptions', + 'ariaNgLanguages', + 'ariaNgCommonService', + 'ariaNgLogService', + 'ariaNgStorageService', + function (n, t, e, i, o, s, r, l, c) { + var a = { + localStroage: c.isLocalStorageSupported(), + cookies: c.isCookiesSupported(), + }, + d = a.localStroage || a.cookies, + u = !!n.applicationCache, + p = + !!n.matchMedia && + n.matchMedia('(prefers-color-scheme: dark)') && + 'not all' !== n.matchMedia('(prefers-color-scheme: dark)').media && + angular.isFunction( + n.matchMedia('(prefers-color-scheme: dark)').addEventListener + ), + g = [], + f = [], + m = !1, + h = { debugMode: !1 }; + u && + n.applicationCache.addEventListener( + 'updateready', + function (e) { + for (var t = 0; t < g.length; t++) { + (0, g[t])(); + } + }, + !1 + ); + var v = function () { + return 'https' === t.protocol(); + }, + b = function (e) { + for (var t in s) + if (s.hasOwnProperty(t)) { + if (t.toLowerCase() === e.toLowerCase()) return t; + var a = s[t].aliases; + if (angular.isArray(a) && !(a.length < 1)) + for (var n = 0; n < a.length; n++) + if (a[n].toLowerCase() === e.toLowerCase()) return t; + } + return null; + }, + y = function () { + var e = n.navigator.browserLanguage + ? n.navigator.browserLanguage + : n.navigator.language; + if (!e) + return ( + l.info( + '[ariaNgSettingService] cannot get browser language, use default language' + ), + o.language + ); + ((e = e.replace(/\-/g, '_')), s[e]) || ((t = b(e)) && (e = t)); + if (!s[e] && 1 < e.split('-').length) { + var t, + a = e.split('-'); + if (((e = a[0] + '-' + a[1]), !s[e])) (t = b(e)) && (e = t); + } + return s[e] + ? (l.info( + '[ariaNgSettingService] use browser language "' + + e + + '" as current language' + ), + e) + : (l.info( + '[ariaNgSettingService] browser language "' + + e + + '" not support, use default language' + ), + o.language); + }, + k = function (e) { + return c.set(i.optionStorageKey, e); + }, + w = function () { + var e, + t = c.get(i.optionStorageKey); + if ( + (t && + !s[t.language] && + (t.language = ((e = t.language), b(e) || y())), + !t) + ) { + if ( + (((t = angular.extend({}, o)).language = y()), + t.rpcHost || T(t), + angular.isArray(t.extendRpcServers)) + ) + for (var a = 0; a < t.extendRpcServers.length; a++) { + var n = t.extendRpcServers[a]; + n.rpcHost || T(n); + } + k(t), + (function () { + if (d && !(m || !angular.isArray(f) || f.length < 1)) { + for (var e = 0; e < f.length; e++) (0, f[e])(); + m = !0; + } + })(); + } + return t; + }, + S = function (e) { + var t = w(); + return ( + angular.isUndefined(t[e]) && + angular.isDefined(o[e]) && + ((t[e] = o[e]), k(t)), + t[e] + ); + }, + x = function (e, t) { + var a = w(); + (a[e] = t), k(a); + }, + T = function (e) { + (e.rpcHost = t.host() || i.defaultHost), + v() && (e.protocol = i.defaultSecureProtocol); + }, + C = function (e) { + return { + rpcAlias: e.rpcAlias, + rpcHost: e.rpcHost, + rpcPort: e.rpcPort, + rpcInterface: e.rpcInterface, + protocol: e.protocol, + httpMethod: e.httpMethod, + secret: e.secret, + }; + }, + P = function () { + var e = C(o); + return (e.rpcId = r.generateUniqueId()), T(e), e; + }; + return { + isBrowserSupportStorage: function () { + return d; + }, + isBrowserSupportApplicationCache: function () { + return u; + }, + isBrowserSupportDarkMode: function () { + return p; + }, + getBrowserFeatures: function () { + return a; + }, + getAllOptions: function () { + var e = angular.extend({}, o, w()); + if ( + (e.secret && (e.secret = r.base64Decode(e.secret)), + angular.isArray(e.extendRpcServers)) + ) + for (var t = 0; t < e.extendRpcServers.length; t++) { + var a = e.extendRpcServers[t]; + a.secret && (a.secret = r.base64Decode(a.secret)); + } + return e; + }, + getAllRpcSettings: function () { + var e = [], + t = this.getAllOptions(), + a = C(t); + if ( + ((a.isDefault = !0), + e.push(a), + angular.isArray(t.extendRpcServers)) + ) + for (var n = 0; n < t.extendRpcServers.length; n++) { + var i = C(t.extendRpcServers[n]); + (i.rpcId = t.extendRpcServers[n].rpcId), + (i.isDefault = !1), + e.push(i); + } + var s = this.getRPCListDisplayOrder(); + return ( + 'recentlyUsed' === s || + ('rpcAlias' === s && + e.sort(function (e, t) { + return String.naturalCompare(e.rpcAlias, t.rpcAlias); + })), + e + ); + }, + importAllOptions: function (e) { + var t = angular.copy(o); + for (var a in e) + e.hasOwnProperty(a) && + t.hasOwnProperty(a) && + (angular.isObject(e[a]) || + angular.isArray(e[a]) || + (t[a] = e[a])); + if (angular.isArray(e.extendRpcServers)) + for (var n = 0; n < e.extendRpcServers.length; n++) { + var i = e.extendRpcServers[n], + s = P(); + for (var a in i) + i.hasOwnProperty(a) && + s.hasOwnProperty(a) && + (angular.isObject(i[a]) || + angular.isArray(i[a]) || + (s[a] = i[a])); + t.extendRpcServers.push(s); + } + k(t); + }, + exportAllOptions: function () { + return angular.extend({}, o, w()); + }, + getAllSessionOptions: function () { + return angular.copy(h); + }, + isInsecureProtocolDisabled: function () { + return v(); + }, + getLanguage: function () { + return S('language'); + }, + setLanguage: function (e) { + return !!s[e] && (x('language', e), !0); + }, + getTheme: function () { + return S('theme'); + }, + setTheme: function (e) { + return x('theme', e), !0; + }, + isEnableDebugMode: function () { + return h.debugMode; + }, + setDebugMode: function (e) { + (h.debugMode = e), l.setEnableDebugLog(e); + }, + getTitle: function () { + return S('title'); + }, + setTitle: function (e) { + x('title', e); + }, + getBrowserNotification: function () { + return S('browserNotification'); + }, + setBrowserNotification: function (e) { + x('browserNotification', e); + }, + getTitleRefreshInterval: function () { + return S('titleRefreshInterval'); + }, + setTitleRefreshInterval: function (e) { + x('titleRefreshInterval', Math.max(parseInt(e), 0)); + }, + getGlobalStatRefreshInterval: function () { + return S('globalStatRefreshInterval'); + }, + setGlobalStatRefreshInterval: function (e) { + x('globalStatRefreshInterval', Math.max(parseInt(e), 0)); + }, + getDownloadTaskRefreshInterval: function () { + return S('downloadTaskRefreshInterval'); + }, + setDownloadTaskRefreshInterval: function (e) { + x('downloadTaskRefreshInterval', Math.max(parseInt(e), 0)); + }, + getSwipeGesture: function () { + return S('swipeGesture'); + }, + setSwipeGesture: function (e) { + x('swipeGesture', e); + }, + getDragAndDropTasks: function () { + return S('dragAndDropTasks'); + }, + setDragAndDropTasks: function (e) { + x('dragAndDropTasks', e); + }, + getRPCListDisplayOrder: function () { + return S('rpcListDisplayOrder'); + }, + setRPCListDisplayOrder: function (e) { + x('rpcListDisplayOrder', e); + }, + getAfterCreatingNewTask: function () { + return S('afterCreatingNewTask'); + }, + setAfterCreatingNewTask: function (e) { + x('afterCreatingNewTask', e); + }, + getRemoveOldTaskAfterRetrying: function () { + return S('removeOldTaskAfterRetrying'); + }, + setRemoveOldTaskAfterRetrying: function (e) { + x('removeOldTaskAfterRetrying', e); + }, + getConfirmTaskRemoval: function () { + return S('confirmTaskRemoval'); + }, + setConfirmTaskRemoval: function (e) { + x('confirmTaskRemoval', e); + }, + getIncludePrefixWhenCopyingFromTaskDetails: function () { + return S('includePrefixWhenCopyingFromTaskDetails'); + }, + setIncludePrefixWhenCopyingFromTaskDetails: function (e) { + x('includePrefixWhenCopyingFromTaskDetails', e); + }, + getShowPiecesInfoInTaskDetailPage: function () { + return S('showPiecesInfoInTaskDetailPage'); + }, + setShowPiecesInfoInTaskDetailPage: function (e) { + x('showPiecesInfoInTaskDetailPage', e); + }, + getAfterRetryingTask: function () { + return S('afterRetryingTask'); + }, + setAfterRetryingTask: function (e) { + x('afterRetryingTask', e); + }, + getCurrentRpcDisplayName: function () { + var e = w(); + return e.rpcAlias ? e.rpcAlias : e.rpcHost + ':' + e.rpcPort; + }, + getCurrentRpcUrl: function () { + var e = w(); + return ( + e.protocol + + '://' + + e.rpcHost + + ':' + + e.rpcPort + + '/' + + e.rpcInterface + ); + }, + getCurrentRpcHttpMethod: function () { + return S('httpMethod'); + }, + isCurrentRpcUseWebSocket: function (e) { + e || (e = w().protocol); + return 'ws' === e || 'wss' === e; + }, + getCurrentRpcSecret: function () { + var e = S('secret'); + return e ? r.base64Decode(e) : e; + }, + addNewRpcSetting: function () { + var e = w(); + angular.isArray(e.extendRpcServers) || (e.extendRpcServers = []); + var t = P(); + return e.extendRpcServers.push(t), k(e), t; + }, + updateRpcSetting: function (e, t) { + if (!e) return e; + var a = C(e); + if (angular.isUndefined(a[t])) return e; + var n = a[t]; + if ( + ('rpcPort' === t + ? (n = Math.max(parseInt(n), 0)) + : 'secret' === t && n && (n = r.base64Encode(n)), + e.isDefault) + ) + return x(t, n), e; + var i = w(); + if (!angular.isArray(i.extendRpcServers)) return e; + for (var s = 0; s < i.extendRpcServers.length; s++) + if (i.extendRpcServers[s].rpcId === e.rpcId) { + i.extendRpcServers[s][t] = n; + break; + } + return k(i), e; + }, + removeRpcSetting: function (e) { + var t = w(); + if (!angular.isArray(t.extendRpcServers)) return e; + for (var a = 0; a < t.extendRpcServers.length; a++) + if (t.extendRpcServers[a].rpcId === e.rpcId) { + t.extendRpcServers.splice(a, 1); + break; + } + return k(t), e; + }, + setDefaultRpcSetting: function (e, t) { + t = angular.extend({ keepCurrent: !0, forceSet: !1 }, t); + var a = w(), + n = C(a); + (n.rpcId = r.generateUniqueId()), + angular.isArray(a.extendRpcServers) || (a.extendRpcServers = []); + for (var i = null, s = 0; s < a.extendRpcServers.length; s++) + if (a.extendRpcServers[s].rpcId === e.rpcId) { + (i = C(a.extendRpcServers[s])), a.extendRpcServers.splice(s, 1); + break; + } + return ( + t.forceSet && + (i = C(e)).secret && + (i.secret = r.base64Encode(i.secret)), + i && + (t.keepCurrent && a.extendRpcServers.splice(0, 0, n), + (a = angular.extend(a, i))), + k(a), + e + ); + }, + isRpcSettingEqualsDefault: function (e) { + if (!e) return !1; + var t = this.getAllOptions(); + return ( + t.rpcHost === e.rpcHost && + t.rpcPort === e.rpcPort && + t.rpcInterface === e.rpcInterface && + t.protocol === e.protocol && + t.httpMethod === e.httpMethod && + t.secret === e.secret + ); + }, + getDisplayOrder: function () { + var e = S('displayOrder'); + return e || (e = 'default:asc'), e; + }, + setDisplayOrder: function (e) { + x('displayOrder', e); + }, + getFileListDisplayOrder: function () { + var e = S('fileListDisplayOrder'); + return e || (e = 'default:asc'), e; + }, + setFileListDisplayOrder: function (e) { + x('fileListDisplayOrder', e); + }, + getPeerListDisplayOrder: function () { + var e = S('peerListDisplayOrder'); + return e || (e = 'default:asc'), e; + }, + setPeerListDisplayOrder: function (e) { + x('peerListDisplayOrder', e); + }, + resetSettings: function () { + c.clearAll(); + }, + onApplicationCacheUpdated: function (e) { + e && g.push(e); + }, + onFirstAccess: function (e) { + e && f.push(e); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgMonitorService', [ + '$filter', + 'ariaNgConstants', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + function (o, t, l, r) { + var a = {}, + c = {}, + n = 'global', + d = function (e) { + return e === n + ? t.globalStatStorageCapacity + : t.taskStatStorageCapacity; + }, + u = function (e) { + for ( + var t = { + legend: { show: !1 }, + grid: { x: 50, y: 10, x2: 10, y2: 10 }, + tooltip: { + show: !0, + formatter: function (e) { + if ('' === e[0].name) + return ( + '
' + r.getLocalizedText('No Data') + '
' + ); + var t = l.getLongTimeFromUnixTime(e[0].name), + a = o('readableVolume')(e[0].value) + '/s'; + return ( + '
' + + t + + '
' + + (o('readableVolume')(e[1].value) + '/s') + + '
' + + a + + '
' + ); + }, + }, + xAxis: { + data: [], + type: 'category', + boundaryGap: !1, + axisLabel: { show: !1 }, + }, + yAxis: { + type: 'value', + axisLabel: { + formatter: function (e) { + return o('readableVolume')(e, 'auto'); + }, + }, + }, + series: [ + { + type: 'line', + areaStyle: { normal: { opacity: 0.1 } }, + smooth: !0, + symbolSize: 6, + showAllSymbol: !1, + data: [], + }, + { + type: 'line', + areaStyle: { normal: { opacity: 0.1 } }, + smooth: !0, + symbolSize: 6, + showAllSymbol: !1, + data: [], + }, + ], + }, + a = t.xAxis.data, + n = t.series[0].data, + i = t.series[1].data, + s = 0; + s < d(e); + s++ + ) + a.push(''), n.push(''), i.push(''); + return (c[e] = t); + }, + p = function (e) { + return angular.isDefined(c[e]); + }; + return { + recordStat: function (e, t) { + var a, n, i, s, o, r; + p(e) || u(e), + (t.time = l.getCurrentUnixTime()), + (n = t), + (i = c[(a = e)]), + (s = i.xAxis.data), + (o = i.series[0].data), + (r = i.series[1].data), + s.length >= d(a) && (s.shift(), o.shift(), r.shift()), + s.push(n.time), + o.push(n.uploadSpeed), + r.push(n.downloadSpeed); + }, + getStatsData: function (e) { + return p(e) || u(e), c[e]; + }, + getEmptyStatsData: function (e) { + return p(e) && delete c[e], this.getStatsData(e); + }, + recordGlobalStat: function (e) { + this.recordStat(n, e), (a = e); + }, + getGlobalStatsData: function () { + return this.getStatsData(n); + }, + getCurrentGlobalStat: function () { + return a; + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('ariaNgTitleService', [ + '$filter', + 'ariaNgConstants', + 'ariaNgLocalizationService', + 'ariaNgSettingService', + function (d, f, m, h) { + var u = function (e) { + if (!e) return {}; + for ( + var t = e.substring(2, e.length - 1).split(':'), + a = { oldValue: e }, + n = 1; + n < t.length; + n++ + ) { + var i = t[n].split('='); + 1 === i.length + ? (a[i[0]] = !0) + : 2 === i.length && (a[i[0]] = i[1]); + } + return a; + }, + v = function (e, t, a) { + var n, + i, + s, + o = new RegExp( + '\\$\\{' + t + '(:[a-zA-Z0-9]+(=[a-zA-Z0-9]+)?)*\\}', + 'g' + ), + r = e.match(o); + if (r && 0 < r.length) + for (var l = 0; l < r.length; l++) { + var c = u(r[l]); + angular.extend(c, a), + (n = e), + (s = void 0), + (s = (i = c).value), + 'volume' === i.type && (s = d('readableVolume')(s, i.scale)), + i.prefix && !i.noprefix && (s = i.prefix + s), + i.suffix && !i.nosuffix && (s += i.suffix), + (e = n.replace(i.oldValue, s)); + } + return e; + }; + return { + getFinalTitle: function (e) { + var t, + a, + n, + i, + s, + o, + r, + l, + c, + d, + u, + p, + g = h.getTitle(); + return ( + (e = angular.extend( + { + downloadingCount: 0, + waitingCount: 0, + stoppedCount: 0, + downloadSpeed: 0, + uploadSpeed: 0, + }, + e + )), + (t = g), + (a = e.currentRPCAlias), + (g = v(t, 'rpcprofile', { value: a })), + (n = g), + (i = e.downloadingCount), + (g = v(n, 'downloading', { + prefix: m.getLocalizedText('Downloading') + ': ', + value: i, + })), + (s = g), + (o = e.waitingCount), + (g = v(s, 'waiting', { + prefix: m.getLocalizedText('Waiting') + ': ', + value: o, + })), + (r = g), + (l = e.stoppedCount), + (g = v(r, 'stopped', { + prefix: m.getLocalizedText('Finished / Stopped') + ': ', + value: l, + })), + (c = g), + (d = e.downloadSpeed), + (g = v(c, 'downspeed', { + prefix: m.getLocalizedText('Download') + ': ', + value: d, + type: 'volume', + suffix: '/s', + })), + (u = g), + (p = e.uploadSpeed), + (g = v(u, 'upspeed', { + prefix: m.getLocalizedText('Upload') + ': ', + value: p, + type: 'volume', + suffix: '/s', + })), + (g = v(g, 'title', { value: f.title })) + ); + }, + getFinalTitleByGlobalStat: function (e) { + var t = { + currentRPCAlias: + e && e.currentRpcProfile + ? e.currentRpcProfile.rpcAlias || + e.currentRpcProfile.rpcHost + + ':' + + e.currentRpcProfile.rpcPort + : '', + downloadingCount: e && e.globalStat ? e.globalStat.numActive : 0, + waitingCount: e && e.globalStat ? e.globalStat.numWaiting : 0, + stoppedCount: e && e.globalStat ? e.globalStat.numStopped : 0, + downloadSpeed: e && e.globalStat ? e.globalStat.downloadSpeed : 0, + uploadSpeed: e && e.globalStat ? e.globalStat.uploadSpeed : 0, + }; + return this.getFinalTitle(t); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('aria2HttpRpcService', [ + '$http', + 'ariaNgCommonService', + 'ariaNgSettingService', + 'ariaNgLogService', + function (t, s, e, n) { + var i = e.getCurrentRpcUrl(), + o = e.getCurrentRpcHttpMethod(); + return { + request: function (a) { + if (a) { + var e = { url: i, method: o }; + return ( + 'POST' === e.method + ? (e.data = a.requestBody) + : 'GET' === e.method && + (e.url = (function (e, t) { + if (!e || e.length < 1) return e; + var a = ''; + for (var n in t) + if (t.hasOwnProperty(n)) { + var i = t[n]; + null === i || + angular.isUndefined(i) || + (0 < a.length && (a += '&'), + (angular.isObject(i) || angular.isArray(i)) && + ((i = angular.toJson(i)), + (i = s.base64Encode(i)), + (i = encodeURIComponent(i))), + (a += n + '=' + i)); + } + return a.length < 1 + ? e + : ((a = e.indexOf('?') < 0 ? '?' + a : '&' + a), e + a); + })(e.url, a.requestBody)), + n.debug( + '[aria2HttpRpcService.request] ' + + (a && a.requestBody && a.requestBody.method + ? a.requestBody.method + ' ' + : '') + + 'request start', + e + ), + t(e) + .then(function (e) { + var t = e.data; + n.debug( + '[aria2HttpRpcService.request] ' + + (a && a.requestBody && a.requestBody.method + ? a.requestBody.method + ' ' + : '') + + 'response success', + e + ), + t && + (a.connectionSuccessCallback && + a.connectionSuccessCallback({ rpcUrl: i, method: o }), + a.successCallback && a.successCallback(t.id, t.result)); + }) + .catch(function (e) { + var t = e.data; + n.debug( + '[aria2HttpRpcService.request] ' + + (a && a.requestBody && a.requestBody.method + ? a.requestBody.method + ' ' + : '') + + 'response error', + e + ), + t || + ((t = { id: '-1', error: { innerError: !0 } }), + a.connectionFailedCallback && + a.connectionFailedCallback({ rpcUrl: i, method: o })), + a.errorCallback && a.errorCallback(t.id, t.error); + }) + ); + } + }, + on: function (e, t) {}, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('aria2WebSocketRpcService', [ + '$q', + '$websocket', + 'ariaNgConstants', + 'ariaNgSettingService', + 'ariaNgLogService', + function (s, e, a, t, o) { + var i = t.getCurrentRpcUrl(), + n = null, + r = {}, + l = {}, + c = function (t) { + if (null === n) + try { + (n = e(i, { + reconnectIfNotNormalClose: a.websocketAutoReconnect, + })).onMessage(function (e) { + if (e && e.data) { + var t = angular.fromJson(e.data); + t && + (t.id + ? (function (e) { + var t = e.id; + if (t) { + var a = r[t]; + if (a) { + var n = a.context; + a.deferred.resolve({ success: !0, context: n }), + e.result && + n.connectionSuccessCallback && + n.connectionSuccessCallback({ rpcUrl: i }), + e.result && + n.successCallback && + (o.debug( + '[aria2WebSocketRpcService.request] ' + + (n && + n.requestBody && + n.requestBody.method + ? n.requestBody.method + ' ' + : '') + + 'response success', + e + ), + n.successCallback(n.id, e.result)), + e.error && + n.errorCallback && + (o.debug( + '[aria2WebSocketRpcService.request] ' + + (n && + n.requestBody && + n.requestBody.method + ? n.requestBody.method + ' ' + : '') + + 'response error', + e + ), + n.errorCallback(n.id, e.error)), + delete r[t]; + } + } + })(t) + : t.method && + (function (e) { + var t = e.method; + if (t) { + var a = l[t]; + if (angular.isArray(a) && !(a.length < 1)) + for (var n = 0; n < a.length; n++) + (0, a[n])( + angular.isArray(e.params) && + 0 < e.params.length + ? e.params[0] + : null + ); + } + })(t)); + } + }), + n.onOpen(function (e) { + o.debug( + '[aria2WebSocketRpcService.onOpen] websocket is opened', + e + ), + t && + t.connectionSuccessCallback && + t.connectionSuccessCallback({ rpcUrl: i }); + }), + n.onClose(function (e) { + o.warn( + '[aria2WebSocketRpcService.onClose] websocket is closed', + e + ), + t && + t.connectionFailedCallback && + t.connectionFailedCallback({ rpcUrl: i }); + }); + } catch (e) { + return { + success: !1, + error: 'Cannot initialize WebSocket!', + exception: e, + }; + } + return { success: !0, instance: n }; + }; + return { + request: function (e) { + if (e) { + var t = c({ + connectionFailedCallback: e.connectionFailedCallback, + }), + a = e.uniqueId, + n = angular.toJson(e.requestBody); + o.debug( + '[aria2WebSocketRpcService.request] ' + + (e && e.requestBody && e.requestBody.method + ? e.requestBody.method + ' ' + : '') + + 'request start', + e + ); + var i = s.defer(); + return ( + (r[a] = { context: e, deferred: i }), + t.instance + ? t.instance.send(n) + : (i.reject({ success: !1, context: e }), + o.debug( + '[aria2WebSocketRpcService.request] client error', + t + ), + e.errorCallback(e.id, { message: t.error })), + i.promise + ); + } + }, + on: function (e, t) { + var a = l[e]; + angular.isArray(a) || (a = l[e] = []), a.push(t); + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('aria2RpcService', [ + '$q', + 'aria2RpcConstants', + 'aria2RpcErrors', + 'aria2AllOptions', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgSettingService', + 'aria2HttpRpcService', + 'aria2WebSocketRpcService', + function (l, o, r, i, s, c, d, u, e, t) { + var p = u.isCurrentRpcUseWebSocket() ? t : e, + g = !1, + f = u.getCurrentRpcSecret(), + m = [], + h = [], + v = [], + b = [], + y = [], + a = [], + n = [], + k = [], + w = [], + S = [], + x = [], + T = function (e) { + return o.rpcServiceName + '.' + e; + }, + C = function (e, t) { + if (t) return e; + var a = s.generateUniqueId(), + n = { + uniqueId: a, + requestBody: { + jsonrpc: o.rpcServiceVersion, + method: e.methodName, + id: a, + params: e.params, + }, + connectionSuccessCallback: e.connectionSuccessCallback, + connectionFailedCallback: e.connectionFailedCallback, + successCallback: e.successCallback, + errorCallback: e.errorCallback, + }; + return p.request(n); + }, + P = function (e, a) { + var t = T(e); + p.on(t, function (e) { + if (angular.isArray(a) && !(a.length < 1)) + for (var t = 0; t < a.length; t++) { + (0, a[t])(e); + } + }); + }, + D = function (e, t) { + if (angular.isArray(e) && !(e.length < 1)) + for (var a = 0; a < e.length; a++) { + (0, e[a])(t); + } + }, + A = function (e, t, a) { + for (var n = [], i = !1, s = !1, o = [], r = 0; r < t.length; r++) + (t[r].callback = function (e) { + o.push(e), (i = i || e.success), (s = s || !e.success); + }), + n.push(e(t[r])); + return l.all(n).finally(function () { + a && a({ hasSuccess: !!i, hasError: !!s, results: o }); + }); + }, + O = function () { + var e = arguments[0], + t = 0 === e.indexOf(o.rpcSystemServiceName + '.'), + a = [], + n = { + methodName: t ? e : T(e), + connectionSuccessCallback: function () { + D(b); + }, + connectionFailedCallback: function () { + D(y); + }, + }; + if ( + (f && !t && a.push(o.rpcTokenPrefix + f), 1 < arguments.length) + ) { + var i = arguments[1]; + (n.successCallback = function (e, t) { + if ( + (i.callback && + i.callback({ id: e, success: !0, data: t, context: i }), + D(h), + !g) + ) { + g = !0; + var a = { rpcName: u.getCurrentRpcDisplayName() }; + D(m, a); + } + }), + (n.errorCallback = function (e, t) { + var a, + n = !1; + i.silent || + (n = !( + !(a = t) || + !a.message || + (d.error( + '[aria2RpcService.processError] ' + a.message, + a + ), + r[a.message] && r[a.message].tipTextKey + ? c.showError(r[a.message].tipTextKey) + : c.showError(a.message), + 0) + )), + i.callback && + i.callback({ + id: e, + success: !1, + data: t, + errorProcessed: n, + context: i, + }), + D(v); + }); + } + if (2 < arguments.length) + for (var s = 2; s < arguments.length; s++) + null !== arguments[s] && + angular.isDefined(arguments[s]) && + a.push(arguments[s]); + return 0 < a.length && (n.params = a), n; + }, + R = function (e, t) { + var a = angular.copy(e); + for (var n in a) + a.hasOwnProperty(n) && N(a, n) && (a[n] = I(a[n], i[n])); + return t && t.pauseOnAdded && (a.pause = 'true'), a; + }, + N = function (e, t) { + return ( + !(!e[t] || !angular.isString(e[t])) && + !(!i[t] || 'array' !== i[t].submitFormat) + ); + }, + I = function (e, t) { + for (var a = e.split(t.split), n = [], i = 0; i < a.length; i++) { + var s = a[i]; + s && ((s = s.replace('\r', '')), n.push(s)); + } + return n; + }; + return ( + P('onDownloadStart', a), + P('onDownloadPause', n), + P('onDownloadStop', k), + P('onDownloadComplete', w), + P('onDownloadError', S), + P('onBtDownloadComplete', x), + { + getBasicTaskParams: function () { + return [ + 'gid', + 'totalLength', + 'completedLength', + 'uploadSpeed', + 'downloadSpeed', + 'connections', + 'numSeeders', + 'seeder', + 'status', + 'errorCode', + 'verifiedLength', + 'verifyIntegrityPending', + ]; + }, + getFullTaskParams: function () { + var e = this.getBasicTaskParams(); + return ( + e.push('files'), e.push('bittorrent'), e.push('infoHash'), e + ); + }, + addUri: function (e, t) { + var a = e.task.urls, + n = R(e.task.options, e); + return C(O('addUri', e, a, n), !!t); + }, + addUriMulti: function (e) { + for (var t = [], a = 0; a < e.tasks.length; a++) { + var n = e.tasks[a]; + t.push({ + silent: !!e.silent, + task: n, + pauseOnAdded: e.pauseOnAdded, + }); + } + return A(this.addUri, t, e.callback); + }, + addTorrent: function (e, t) { + var a = e.task.content, + n = R(e.task.options, e); + return C(O('addTorrent', e, a, [], n), !!t); + }, + addMetalink: function (e, t) { + var a = e.task.content, + n = R(e.task.options, e); + return C(O('addMetalink', e, a, n), !!t); + }, + remove: function (e, t) { + return C(O('remove', e, e.gid), !!t); + }, + forceRemove: function (e, t) { + return C(O('forceRemove', e, e.gid), !!t); + }, + forceRemoveMulti: function (e) { + for (var t = [], a = 0; a < e.gids.length; a++) + t.push({ silent: !!e.silent, gid: e.gids[a] }); + return A(this.forceRemove, t, e.callback); + }, + pause: function (e, t) { + return C(O('pause', e, e.gid), !!t); + }, + pauseAll: function (e, t) { + return C(O('pauseAll', e), !!t); + }, + forcePause: function (e, t) { + return C(O('forcePause', e, e.gid), !!t); + }, + forcePauseMulti: function (e) { + for (var t = [], a = 0; a < e.gids.length; a++) + t.push({ silent: !!e.silent, gid: e.gids[a] }); + return A(this.forcePause, t, e.callback); + }, + forcePauseAll: function (e, t) { + return C(O('forcePauseAll', e), !!t); + }, + unpause: function (e, t) { + return C(O('unpause', e, e.gid), !!t); + }, + unpauseMulti: function (e) { + for (var t = [], a = 0; a < e.gids.length; a++) + t.push({ silent: !!e.silent, gid: e.gids[a] }); + return A(this.unpause, t, e.callback); + }, + unpauseAll: function (e, t) { + return C(O('unpauseAll', e), !!t); + }, + tellStatus: function (e, t) { + return C(O('tellStatus', e, e.gid), !!t); + }, + getUris: function (e, t) { + return C(O('getUris', e, e.gid), !!t); + }, + getFiles: function (e, t) { + return C(O('getFiles', e, e.gid), !!t); + }, + getPeers: function (e, t) { + return C(O('getPeers', e, e.gid), !!t); + }, + getServers: function (e, t) { + return C(O('getServers', e, e.gid), !!t); + }, + tellActive: function (e, t) { + return C( + O( + 'tellActive', + e, + angular.isDefined(e.requestParams) ? e.requestParams : null + ), + !!t + ); + }, + tellWaiting: function (e, t) { + return C( + O( + 'tellWaiting', + e, + angular.isDefined(e.offset) ? e.offset : 0, + angular.isDefined(e.num) ? e.num : 1e3, + angular.isDefined(e.requestParams) ? e.requestParams : null + ), + !!t + ); + }, + tellStopped: function (e, t) { + return C( + O( + 'tellStopped', + e, + angular.isDefined(e.offset) ? e.offset : -1, + angular.isDefined(e.num) ? e.num : 1e3, + angular.isDefined(e.requestParams) ? e.requestParams : null + ), + !!t + ); + }, + changePosition: function (e, t) { + return C(O('changePosition', e, e.gid, e.pos, e.how), !!t); + }, + changeUri: function (e, t) { + return C( + O('changeUri', e, e.gid, e.fileIndex, e.delUris, e.addUris), + !!t + ); + }, + getOption: function (e, t) { + return C(O('getOption', e, e.gid), !!t); + }, + changeOption: function (e, t) { + var a = R(e.options, e); + return C(O('changeOption', e, e.gid, a), !!t); + }, + getGlobalOption: function (e, t) { + return C(O('getGlobalOption', e), !!t); + }, + changeGlobalOption: function (e, t) { + var a = R(e.options, e); + return C(O('changeGlobalOption', e, a), !!t); + }, + getGlobalStat: function (e, t) { + return C(O('getGlobalStat', e), !!t); + }, + purgeDownloadResult: function (e, t) { + return C(O('purgeDownloadResult', e), !!t); + }, + removeDownloadResult: function (e, t) { + return C(O('removeDownloadResult', e, e.gid), !!t); + }, + removeDownloadResultMulti: function (e) { + for (var t = [], a = 0; a < e.gids.length; a++) + t.push({ silent: !!e.silent, gid: e.gids[a] }); + return A(this.removeDownloadResult, t, e.callback); + }, + getVersion: function (e, t) { + return C(O('getVersion', e), !!t); + }, + getSessionInfo: function (e, t) { + return C(O('getSessionInfo', e), !!t); + }, + shutdown: function (e, t) { + return C(O('shutdown', e), !!t); + }, + forceShutdown: function (e, t) { + return C(O('forceShutdown', e), !!t); + }, + saveSession: function (e, t) { + return C(O('saveSession', e), !!t); + }, + multicall: function (e) { + return C(O('system.multicall', e, e.methods)); + }, + listMethods: function (e) { + return C(O('system.listMethods', e)); + }, + onFirstSuccess: function (e) { + m.push(e.callback); + }, + onOperationSuccess: function (e) { + h.push(e.callback); + }, + onOperationError: function (e) { + v.push(e.callback); + }, + onConnectionSuccess: function (e) { + b.push(e.callback); + }, + onConnectionFailed: function (e) { + y.push(e.callback); + }, + onDownloadStart: function (e) { + a.push(e.callback); + }, + onDownloadPause: function (e) { + n.push(e.callback); + }, + onDownloadStop: function (e) { + k.push(e.callback); + }, + onDownloadComplete: function (e) { + w.push(e.callback); + }, + onDownloadError: function (e) { + S.push(e.callback); + }, + onBtDownloadComplete: function (e) { + x.push(e.callback); + }, + } + ); + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('aria2TaskService', [ + '$q', + 'bittorrentPeeridService', + 'ariaNgConstants', + 'aria2Errors', + 'aria2RpcService', + 'ariaNgCommonService', + 'ariaNgLocalizationService', + 'ariaNgLogService', + 'ariaNgSettingService', + function (u, m, l, y, p, k, w, S, g) { + var x = function (e) { + if (!e) + return S.warn('[aria2TaskService.getFileName] file is null'), ''; + var t = e.path, + a = !1; + !t && + e.uris && + 0 < e.uris.length && + ((t = e.uris[0].uri), (a = !0)); + var n = t.lastIndexOf('/'); + if (n <= 0 || n === t.length) return t; + var i = t.substring(n + 1), + s = i.indexOf('?'), + o = i; + if ((0 < s && (o = i.substring(0, s)), a)) + try { + o = decodeURI(o); + } catch (e) { + S.warn( + '[aria2TaskService.getFileName] failed to url decode file name, original file name: ' + + o, + e + ); + } + return o; + }, + T = function (e, t) { + var a = e.dir, + n = t.path; + a && (a = a.replace(/\\/g, l.defaultPathSeparator)), + n && (n = n.replace(/\\/g, l.defaultPathSeparator)); + var i = function () { + 1 < n.length && + n.charAt(0) === l.defaultPathSeparator && + (n = n.substr(1)); + }; + if ( + (a && 0 === n.indexOf(a) && (n = n.substr(a.length)), + i(), + e.bittorrent && + 'multi' === e.bittorrent.mode && + e.bittorrent.info && + e.bittorrent.info.name) + ) { + var s = e.bittorrent.info.name; + 0 === n.indexOf(s) && (n = n.substr(s.length)); + } + return ( + i(), + t.fileName && + n.lastIndexOf(t.fileName) + t.fileName.length === n.length && + (n = n.substr(0, n.length - t.fileName.length)), + 1 < n.length && + n.charAt(n.length - 1) === l.defaultPathSeparator && + (n = n.substr(0, n.length - 1)), + n + ); + }, + c = function (e, t, a) { + var n = a[e]; + if (n) return n; + var i = null, + s = e; + if (e.length) { + var o = '', + r = e.lastIndexOf(l.defaultPathSeparator); + 0 < r && ((o = e.substring(0, r)), (s = e.substring(r + 1))), + (i = c(o, t, a)); + } + return ( + (n = { + isDir: !0, + nodePath: e, + nodeName: s, + relativePath: (i && i.nodePath) || '', + level: (i && i.level + 1) || 0, + length: 0, + selected: !0, + partialSelected: !1, + files: [], + subDirs: [], + }), + t.push(n), + (a[e] = n), + i && i.subDirs.push(n), + n + ); + }, + C = function (e, t, a) { + if (e && t && a) { + var n = e.relativePath || '', + i = c(n, t, a); + return i.files.push(e), i; + } + }, + P = function (e, t, a) { + if (e) { + var n = 0, + i = 0, + s = 0; + if (e.subDirs && e.subDirs.length) + for (var o = 0; o < e.subDirs.length; o++) { + var r = e.subDirs[o]; + a.push(r), + P(r, t, a), + (n += r.length), + (i += r.selected ? 1 : 0), + (s += r.partialSelected ? 1 : 0); + } + if (e.files && e.files.length) + for (o = 0; o < e.files.length; o++) { + var l = e.files[o]; + a.push(l), (n += l.length), (i += l.selected ? 1 : 0); + } + (e.length = n), + (e.selected = 0 < i && i === e.subDirs.length + e.files.length), + (e.partialSelected = + (0 < i && i < e.subDirs.length + e.files.length) || 0 < s); + } + }, + D = function (e, t) { + for (var a = [], n = 0; n < t; n++) a.push(!1); + if (!e) return a; + var i = 0; + for (n = 0; n < e.length; n++) + for (var s = parseInt(e[n], 16), o = 1; o <= 4; o++) { + var r = 1 << (4 - o), + l = (s & r) === r; + if (((a[i++] = l), t <= i)) return a; + } + return a; + }, + r = function (e, t) { + if (!e) + return ( + S.warn('[aria2TaskService.processDownloadTask] task is null'), e + ); + t = t && e.bittorrent && 'multi' === e.bittorrent.mode; + var a, + n, + i = D(e.bitfield, e.numPieces); + (e.totalLength = parseInt(e.totalLength)), + (e.completedLength = parseInt(e.completedLength)), + (e.completePercent = + 0 < e.totalLength + ? (e.completedLength / e.totalLength) * 100 + : 0), + (e.remainLength = e.totalLength - e.completedLength), + (e.remainPercent = 100 - e.completePercent), + (e.uploadLength = e.uploadLength ? parseInt(e.uploadLength) : 0), + (e.shareRatio = + 0 < e.completedLength ? e.uploadLength / e.completedLength : 0), + (e.uploadSpeed = parseInt(e.uploadSpeed)), + (e.downloadSpeed = parseInt(e.downloadSpeed)), + (e.numPieces = parseInt(e.numPieces)), + (e.completedPieces = k.countArray(i, !0)), + (e.pieceLength = parseInt(e.pieceLength)), + (e.idle = 0 === e.downloadSpeed), + (e.remainTime = + ((a = e.remainLength), + 0 === (n = e.downloadSpeed) ? 0 : a / n)), + (e.seeder = !0 === e.seeder || 'true' === e.seeder), + e.verifiedLength && e.totalLength + ? (e.verifiedPercent = parseInt( + (e.verifiedLength / e.totalLength) * 100 + )) + : (e.verifiedPercent = void 0); + var s, + o, + r, + l, + c = + ((r = !(o = '')), + (s = e).bittorrent && + s.bittorrent.info && + (o = s.bittorrent.info.name), + !o && s.files && 0 < s.files.length && (o = x(s.files[0])), + o || ((o = w.getLocalizedText('Unknown')), (r = !1)), + { name: o, success: r }); + if ( + ((e.taskName = c.name), + (e.hasTaskName = c.success), + (e.errorDescription = + (l = e).errorCode && + y[l.errorCode] && + y[l.errorCode].descriptionKey + ? y[l.errorCode].hide + ? '' + : y[l.errorCode].descriptionKey + : ''), + e.files) + ) { + for (var d = 0, u = [], p = {}, g = 0; g < e.files.length; g++) { + var f = e.files[g]; + if ( + ((f.index = parseInt(f.index)), + (f.fileName = x(f)), + (f.length = parseInt(f.length)), + (f.selected = !0 === f.selected || 'true' === f.selected), + (f.completedLength = parseInt(f.completedLength)), + (f.completePercent = + 0 < f.length ? (f.completedLength / f.length) * 100 : 0), + t) + ) { + f.relativePath = T(e, f); + var m = C(f, u, p); + f.level = m.level + 1; + } + d += f.selected ? 1 : 0; + } + if (t && 1 < u.length) { + var h = []; + P(p[''], p, h), (e.files = h), (e.multiDir = !0); + } + e.selectedFileCount = d; + } + if ( + e.files && + 1 === e.files.length && + e.files[0].uris && + e.files[0].uris[0] + ) { + var v = !0, + b = e.files[0].uris[0].uri; + for (g = 0; g < e.files[0].uris.length; g++) { + if (e.files[0].uris[g].uri !== b) { + v = !1; + break; + } + } + v && (e.singleUrl = b); + } + return ( + S.debug( + '[aria2TaskService.processDownloadTask] process success', + e + ), + e + ); + }, + d = function (e, t, a) { + if (!e) + return ( + S.warn('[aria2TaskService.processBtPeers] peers is null'), e + ); + for ( + var n = D(t.bitfield, t.numPieces), + i = k.countArray(n, !0), + s = t.completePercent, + o = 0; + o < e.length; + o++ + ) { + var r = e[o], + l = parseInt(r.uploadSpeed), + c = parseInt(r.downloadSpeed), + d = D(r.bitfield, t.numPieces), + u = k.countArray(d, !0); + if ( + ((r.name = r.ip + ':' + r.port), + (r.completePercent = (u / t.numPieces) * 100), + (r.downloadSpeed = l), + (r.uploadSpeed = c), + (r.seeder = !0 === r.seeder || 'true' === r.seeder), + u === i && r.completePercent !== s && (r.completePercent = s), + r.peerId) + ) { + var p = k.decodePercentEncodedString(r.peerId), + g = p ? m.parseClient(p) : null; + if (g && 'unknown' !== g.client) { + var f = { + name: g.client ? g.client.trim() : '', + version: g.version ? g.version.trim() : '', + }; + (f.info = f.name + (f.version ? ' ' + f.version : '')), + (r.client = f); + } + } + } + return a && e.push(h(t)), e; + }, + t = function (a, n, i) { + return function (e) { + var t = { type: i, task: null }; + e && e.gid + ? a( + e.gid, + function (e) { + (t.task = e.success ? e.data : null), n(t); + }, + !0 + ) + : n(t); + }; + }, + h = function (e) { + return { + local: !0, + bitfield: e.bitfield, + completePercent: e.completePercent, + downloadSpeed: e.downloadSpeed, + name: '(local)', + seeder: e.seeder, + uploadSpeed: e.uploadSpeed, + }; + }; + return { + getTaskList: function (e, t, a, n) { + var i = null; + if ('downloading' === e) i = p.tellActive; + else if ('waiting' === e) i = p.tellWaiting; + else { + if ('stopped' !== e) return; + i = p.tellStopped; + } + return i({ + requestWholeInfo: t, + requestParams: t ? p.getFullTaskParams() : p.getBasicTaskParams(), + silent: !!n, + callback: function (e) { + a + ? a(e) + : S.warn('[aria2TaskService.getTaskList] callback is null'); + }, + }); + }, + getTaskStatus: function (e, t, a, n) { + return p.tellStatus({ + gid: e, + silent: !!a, + callback: function (e) { + t + ? (e.success && r(e.data, n), t(e)) + : S.warn('[aria2TaskService.getTaskStatus] callback is null'); + }, + }); + }, + getTaskOptions: function (e, t, a) { + return p.getOption({ gid: e, silent: !!a, callback: t }); + }, + setTaskOption: function (e, t, a, n, i) { + var s = {}; + return ( + (s[t] = a), + p.changeOption({ gid: e, options: s, silent: !!i, callback: n }) + ); + }, + selectTaskFile: function (e, t, a, n) { + for (var i = '', s = 0; s < t.length; s++) + 0 < i.length && (i += ','), (i += t[s]); + return this.setTaskOption(e, 'select-file', i, a, n); + }, + getBtTaskPeers: function (t, a, e, n) { + return p.getPeers({ + gid: t.gid, + silent: !!e, + callback: function (e) { + a + ? (e.success && d(e.data, t, n), a(e)) + : S.warn( + '[aria2TaskService.getBtTaskPeers] callback is null' + ); + }, + }); + }, + getTaskStatusAndBtPeers: function (e, t, a, n, i, s) { + var o = [p.tellStatus({ gid: e }, !0)]; + return ( + n && o.push(p.getPeers({ gid: e }, !0)), + p.multicall({ + methods: o, + silent: !!a, + callback: function (e) { + t + ? ((e.task = {}), + e.success && + 0 < e.data.length && + ((e.task = e.data[0][0]), r(e.task, s)), + e.success && + e.task.bittorrent && + 1 < e.data.length && + ((e.peers = e.data[1][0]), d(e.peers, e.task, i)), + t(e)) + : S.warn( + '[aria2TaskService.getTaskStatusAndBtPeers] callback is null' + ); + }, + }) + ); + }, + newUriTask: function (e, t, a, n) { + return p.addUri({ + task: e, + pauseOnAdded: !!t, + silent: !!n, + callback: a, + }); + }, + newUriTasks: function (e, t, a, n) { + return p.addUriMulti({ + tasks: e, + pauseOnAdded: !!t, + silent: !!n, + callback: a, + }); + }, + newTorrentTask: function (e, t, a, n) { + return p.addTorrent({ + task: e, + pauseOnAdded: !!t, + silent: !!n, + callback: a, + }); + }, + newMetalinkTask: function (e, t, a, n) { + return p.addMetalink({ + task: e, + pauseOnAdded: !!t, + silent: !!n, + callback: a, + }); + }, + startTasks: function (e, t, a) { + return p.unpauseMulti({ gids: e, silent: !!a, callback: t }); + }, + pauseTasks: function (e, t, a) { + return p.forcePauseMulti({ gids: e, silent: !!a, callback: t }); + }, + retryTask: function (s, o, r) { + var l = u.defer(), + e = [p.tellStatus({ gid: s }, !0), p.getOption({ gid: s }, !0)], + c = null, + d = null; + return ( + p.multicall({ + methods: e, + silent: !!r, + callback: function (e) { + if (o) { + if (!e.success) + return ( + S.warn( + '[aria2TaskService.retryTask] response is not success', + e + ), + l.reject(e), + void o(e) + ); + if ( + (0 < e.data.length && (c = e.data[0][0]), + 1 < e.data.length && (d = e.data[1][0]), + !c || + !d || + !c.files || + 1 !== c.files.length || + c.bittorrent) + ) + return ( + c || + S.warn('[aria2TaskService.retryTask] task is null'), + d || + S.warn( + '[aria2TaskService.retryTask] options is null' + ), + c.files || + S.warn( + '[aria2TaskService.retryTask] task file is null' + ), + 1 !== c.files.length && + S.warn( + '[aria2TaskService.retryTask] task file length is not equal 1' + ), + c.bittorrent && + S.warn( + '[aria2TaskService.retryTask] task is bittorrent' + ), + l.reject(s), + void o({ success: !1 }) + ); + for ( + var t = c.files[0], a = [], n = 0; + n < t.uris.length; + n++ + ) { + var i = t.uris[n]; + a.push(i.uri); + } + p.addUri({ + task: { urls: a, options: d }, + pauseOnAdded: !1, + silent: !!r, + callback: function (e) { + if (!e.success) + return ( + S.warn( + '[aria2TaskService.retryTask] addUri response is not success', + e + ), + l.reject(e), + void o(e) + ); + g.getRemoveOldTaskAfterRetrying() && + p.removeDownloadResult({ + gid: s, + silent: !0, + callback: function (e) { + e.success || + S.warn( + '[aria2TaskService.retryTask] removeDownloadResult response is not success', + e + ); + }, + }), + l.resolve(e), + o(e); + }, + }); + } else + S.warn('[aria2TaskService.retryTask] callback is null'); + }, + }), + l.promise + ); + }, + retryTasks: function (i, s, e) { + if (s) { + for ( + var t = this.retryTask, + o = u.defer(), + a = null, + r = 0, + l = 0, + n = function (a, n) { + return ( + S.debug( + '[aria2TaskService.retryTasks] task#' + + n + + ', gid=' + + a.gid + + ' start retrying', + a + ), + t( + a.gid, + function (e) { + if ( + (S.debug( + '[aria2TaskService.retryTasks] task#' + + n + + ', gid=' + + a.gid + + ', result=' + + e.success, + a + ), + e.success ? r++ : l++, + r + l === i.length) + ) { + var t = { + successCount: r, + failedCount: l, + hasSuccess: 0 < r, + hasError: 0 < l, + }; + o.resolve(t), s(t); + } + }, + e + ) + ); + }, + c = 0; + c < i.length; + c++ + ) { + var d = i[c]; + a = a + ? (function (e, t) { + return a + .then(function () { + return n(e, t); + }) + .catch(function () { + return n(e, t); + }); + })(d, c) + : n(d, c); + } + return o.promise; + } + S.warn('[aria2TaskService.retryTasks] callback is null'); + }, + removeTasks: function (e, t, a) { + for (var n = [], i = [], s = 0; s < e.length; s++) + 'complete' === e[s].status || + 'error' === e[s].status || + 'removed' === e[s].status + ? i.push(e[s].gid) + : n.push(e[s].gid); + var o = [], + r = !1, + l = !1, + c = []; + return ( + 0 < n.length && + o.push( + p.forceRemoveMulti({ + gids: n, + silent: !!a, + callback: function (e) { + k.pushArrayTo(c, e.results), + (r = r || e.hasSuccess), + (l = l || e.hasError); + }, + }) + ), + 0 < i.length && + o.push( + p.removeDownloadResultMulti({ + gids: i, + silent: !!a, + callback: function (e) { + k.pushArrayTo(c, e.results), + (r = r || e.hasSuccess), + (l = l || e.hasError); + }, + }) + ), + u.all(o).then(function () { + t && t({ hasSuccess: !!r, hasError: !!l, results: c }); + }) + ); + }, + changeTaskPosition: function (e, t, a, n) { + return p.changePosition({ + gid: e, + pos: t, + how: 'POS_SET', + silent: !!n, + callback: a, + }); + }, + clearStoppedTasks: function (e, t) { + return p.purgeDownloadResult({ silent: !!t, callback: e }); + }, + onConnectionSuccess: function (e) { + e + ? p.onConnectionSuccess({ callback: e }) + : S.warn( + '[aria2TaskService.onConnectionSuccess] callback is null' + ); + }, + onConnectionFailed: function (e) { + e + ? p.onConnectionFailed({ callback: e }) + : S.warn( + '[aria2TaskService.onConnectionFailed] callback is null' + ); + }, + onFirstSuccess: function (e) { + e + ? p.onFirstSuccess({ callback: e }) + : S.warn('[aria2TaskService.onFirstSuccess] callback is null'); + }, + onOperationSuccess: function (e) { + e + ? p.onOperationSuccess({ callback: e }) + : S.warn( + '[aria2TaskService.onOperationSuccess] callback is null' + ); + }, + onOperationError: function (e) { + e + ? p.onOperationError({ callback: e }) + : S.warn('[aria2TaskService.onOperationError] callback is null'); + }, + onTaskCompleted: function (e) { + e + ? p.onDownloadComplete({ + callback: t(this.getTaskStatus, e, 'completed'), + }) + : S.warn('[aria2TaskService.onTaskCompleted] callback is null'); + }, + onBtTaskCompleted: function (e) { + e + ? p.onBtDownloadComplete({ + callback: t(this.getTaskStatus, e, 'btcompleted'), + }) + : S.warn('[aria2TaskService.onBtTaskCompleted] callback is null'); + }, + onTaskErrorOccur: function (e) { + e + ? p.onDownloadError({ + callback: t(this.getTaskStatus, e, 'error'), + }) + : S.warn('[aria2TaskService.onTaskErrorOccur] callback is null'); + }, + processDownloadTasks: function (e, t) { + if (angular.isArray(e)) + for (var a = 0; a < e.length; a++) r(e[a], t); + else + S.warn( + '[aria2TaskService.processDownloadTasks] tasks is not array', + e + ); + }, + getPieceStatus: function (e, t) { + return D(e, t); + }, + getCombinedPieces: function (e, t) { + return (function (e, t) { + for (var a = D(e, t), n = [], i = 0; i < a.length; i++) { + var s = a[i]; + 0 < n.length && n[n.length - 1].isCompleted === s + ? n[n.length - 1].count++ + : n.push({ isCompleted: s, count: 1 }); + } + return n; + })(e, t); + }, + estimateHealthPercentFromPeers: function (e, t) { + if (!e || e.numPieces < 1 || t.length < 1) + return ( + S.warn( + '[aria2TaskService.estimateHealthPercentFromPeers] tasks is null or numPieces < 1 or peers < 1', + e + ), + e.completePercent + ); + for ( + var a = [], n = 0, i = e.completePercent, s = 0; + s < e.numPieces; + s++ + ) + a.push(0); + for (s = 0; s < t.length; s++) { + for ( + var o = t[s], r = D(o.bitfield, e.numPieces), l = 0, c = 0; + c < r.length; + c++ + ) { + var d = r[c] ? 1 : 0; + (a[c] += d), (l += d); + } + n < l + ? ((n = l), (i = o.completePercent)) + : l === n && o.completePercent > i && (i = o.completePercent); + } + var u = 0; + if (0 < a.length) + for (;;) { + var p = !0; + for (s = 0; s < a.length; s++) + 0 < a[s] ? (u++, a[s]--) : (p = !1); + if (!p) break; + } + if (u <= n) return i; + var g = (u / e.numPieces) * 100; + return g <= i ? i : g; + }, + }; + }, + ]); + })(), + (function () { + 'use strict'; + angular.module('ariaNg').factory('aria2SettingService', [ + 'ariaNgConstants', + 'aria2AllOptions', + 'aria2GlobalAvailableOptions', + 'aria2QuickSettingsAvailableOptions', + 'aria2TaskAvailableOptions', + 'aria2RpcService', + 'ariaNgLogService', + 'ariaNgStorageService', + function (o, p, t, a, r, s, n, l) { + var c = function (e) { + return o.settingHistoryKeyPrefix + '.' + e; + }; + return { + isOptionKeyValid: function (e) { + return !!p[e]; + }, + getAvailableGlobalOptionsKeys: function (e) { + return 'basic' === e + ? t.basicOptions + : 'http-ftp-sftp' === e + ? t.httpFtpSFtpOptions + : 'http' === e + ? t.httpOptions + : 'ftp-sftp' === e + ? t.ftpSFtpOptions + : 'bt' === e + ? t.btOptions + : 'metalink' === e + ? t.metalinkOptions + : 'rpc' === e + ? t.rpcOptions + : 'advanced' === e && t.advancedOptions; + }, + getAria2QuickSettingsAvailableOptions: function (e) { + return 'globalSpeedLimit' === e && a.globalSpeedLimitOptions; + }, + getAvailableTaskOptionKeys: function (e, t) { + for (var a = r.taskOptions, n = [], i = 0; i < a.length; i++) { + var s = a[i], + o = { key: s.key, category: s.category }; + (s.canShow && s.canShow.indexOf(e) < 0) || + ('http' === s.category && t) || + (('bittorrent' !== s.category || t) && + (s.canUpdate && + s.canUpdate.indexOf(e) < 0 && + (o.readonly = !0), + n.push(o))); + } + return n; + }, + getNewTaskOptionKeys: function () { + for (var e = r.taskOptions, t = [], a = 0; a < e.length; a++) { + var n = e[a], + i = { + key: n.key, + category: n.category, + showHistory: n.showHistory, + }; + (n.canShow && n.canShow.indexOf('new') < 0) || + (n.canUpdate && + n.canUpdate.indexOf('new') < 0 && + (i.readonly = !0), + t.push(i)); + } + return t; + }, + getSpecifiedOptions: function (e, t) { + var a = []; + if (!e) return a; + for (var n = 0; n < e.length; n++) { + var i = e[n], + s = !1, + o = null, + r = !1; + if (angular.isObject(i)) { + var l = i; + (i = l.key), + (s = !!l.readonly), + (o = l.category), + (r = !!l.showHistory); + } + var c = p[i]; + if (c) { + if ( + ((c = angular.extend( + { + key: i, + nameKey: 'options.' + i + '.name', + descriptionKey: 'options.' + i + '.description', + }, + c + )), + o && (c.category = o), + 'boolean' === c.type && (c.options = ['true', 'false']), + s && (c.readonly = !0), + r && (c.showHistory = !0), + t && t.disableRequired && (c.required = !1), + c.options) + ) { + for (var d = [], u = 0; u < c.options.length; u++) + d.push({ + name: 'option.' + c.options[u], + value: c.options[u], + }); + c.options = d; + } + a.push(c); + } + } + return a; + }, + getSettingHistory: function (e) { + if (!this.isOptionKeyValid(e)) return []; + for ( + var t = c(e), a = l.get(t) || [], n = [], i = 0; + i < Math.min(a.length, o.historyMaxStoreCount); + i++ + ) + n.push(a[i]); + return n; + }, + addSettingHistory: function (e, t) { + if (!this.isOptionKeyValid(e)) return []; + var a = c(e), + n = l.get(a) || [], + i = []; + i.push(t); + for ( + var s = 0; + s < Math.min(n.length, o.historyMaxStoreCount - 1); + s++ + ) + n[s] !== t && i.push(n[s]); + return l.set(a, i), i; + }, + clearSettingsHistorys: function () { + for ( + var e = l.keys(o.settingHistoryKeyPrefix + '.'), t = 0; + t < e.length; + t++ + ) + l.remove(e[t]); + }, + getGlobalOption: function (e, t) { + return s.getGlobalOption({ silent: !!t, callback: e }); + }, + setGlobalOption: function (e, t, a, n) { + var i = {}; + return ( + (i[e] = t), + s.changeGlobalOption({ options: i, silent: !!n, callback: a }) + ); + }, + getAria2Status: function (e, t) { + return s.getVersion({ silent: !!t, callback: e }); + }, + getGlobalStat: function (a, e) { + return s.getGlobalStat({ + silent: !!e, + callback: function (e) { + if (a) { + var t = (function (e) { + if (!e) return e; + var t = parseInt(e.numActive) + parseInt(e.numWaiting); + return (e.totalRunningCount = t), e; + })(e); + a(t); + } else + n.warn( + '[aria2SettingService.getGlobalStat] callback is null' + ); + }, + }); + }, + saveSession: function (e, t) { + return s.saveSession({ silent: !!t, callback: e }); + }, + shutdown: function (e, t) { + return s.shutdown({ silent: !!t, callback: e }); + }, + }; + }, + ]); + })(), + angular.module('ariaNg').run([ + '$templateCache', + function (e) { + e.put( + 'views/debug.html', + '
' + ), + e.put( + 'views/list.html', + '
' + ), + e.put( + 'views/new.html', + '
' + ), + e.put( + 'views/notification-reloadable.html', + '' + ), + e.put( + 'views/setting-dialog.html', + '\x3c!-- /.modal --\x3e' + ), + e.put( + 'views/setting.html', + '
' + ), + e.put( + 'views/settings-aria2.html', + '
' + ), + e.put( + 'views/settings-ariang.html', + '
' + ), + e.put( + 'views/status.html', + '
Aria2 RPC Address
Aria2 Status
Aria2 Version
Enabled Features
Operations
' + ), + e.put( + 'views/task-detail.html', + '
\x3c!-- /.nav-tabs-custom --\x3e
' + ); + }, + ]); diff --git a/config/nginx/mime.types b/config/nginx/mime.types new file mode 100644 index 0000000..1c00d70 --- /dev/null +++ b/config/nginx/mime.types @@ -0,0 +1,99 @@ + +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/javascript js; + application/atom+xml atom; + application/rss+xml rss; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/avif avif; + image/png png; + image/svg+xml svg svgz; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/webp webp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + + font/woff woff; + font/woff2 woff2; + + application/java-archive jar war ear; + application/json json; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.apple.mpegurl m3u8; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/vnd.ms-excel xls; + application/vnd.ms-fontobject eot; + application/vnd.ms-powerpoint ppt; + application/vnd.oasis.opendocument.graphics odg; + application/vnd.oasis.opendocument.presentation odp; + application/vnd.oasis.opendocument.spreadsheet ods; + application/vnd.oasis.opendocument.text odt; + application/vnd.openxmlformats-officedocument.presentationml.presentation + pptx; + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + xlsx; + application/vnd.openxmlformats-officedocument.wordprocessingml.document + docx; + application/vnd.wap.wmlc wmlc; + application/wasm wasm; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/xspf+xml xspf; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp2t ts; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/config/nginx/nginx.conf b/config/nginx/nginx.conf new file mode 100644 index 0000000..ea8a1d3 --- /dev/null +++ b/config/nginx/nginx.conf @@ -0,0 +1,81 @@ +# Default nginx configuration +user root; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + gzip on; + map $http_upgrade $connection_upgrade { default upgrade; '' close; } + + server { + listen 6800; + root /usr/local/www/ariang; + index index.html; + proxy_intercept_errors off; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "no-referrer-when-downgrade" always; + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' *; frame-src 'self' *; object-src 'self'" always; + + location /jsonrpc { + proxy_pass http://127.0.0.1:8080/jsonrpc; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } + + location /rpc { + proxy_pass http://127.0.0.1:8080/jsonrpc; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } + + location = /favicon.ico { + log_not_found off; + access_log off; + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + location /nginx_status { + stub_status; + } + + location /health { + default_type text/html; + allow all; + access_log off; + return 200 'OK'; + } + + location /health.json { + default_type application/json; + allow all; + access_log off; + return 200 '{"status":"OK"}'; + } + } +} diff --git a/src/web/LICENSE b/src/web/LICENSE new file mode 100755 index 0000000..2996eb9 --- /dev/null +++ b/src/web/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016-2021 MaysWind (i@mayswind.net) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/web/css/aria-ng-1bfa53e627.min.css b/src/web/css/aria-ng-1bfa53e627.min.css new file mode 100755 index 0000000..06ba964 --- /dev/null +++ b/src/web/css/aria-ng-1bfa53e627.min.css @@ -0,0 +1,1576 @@ +/*! + * AriaNg + * https://github.com/mayswind/AriaNg + */ +body, +html { + margin: 0; + padding: 0; +} +body { + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E') !important; + background-repeat: no-repeat, repeat !important; + background-position: right 0.7em top 50%, 0 0 !important; + background-size: 0.65em auto, 100% !important; + border: none; + border-radius: 0; + padding: 0 0 0 0.35em; +} +select::-ms-expand { + display: none; +} +td { + vertical-align: middle !important; +} +.blur { + -moz-filter: blur(5px); + -ms-filter: blur(5px); + filter: blur(5px); + filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=5,MakeShadow=false); +} +.disable-overlay { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 9999; + cursor: not-allowed; +} +.main-header .logo { + overflow: visible; +} +.main-header .logo .dropdown-menu { + z-index: 2000; +} +.main-header .navbar .nav > li { + display: inline-block; +} +.main-header .navbar .nav > li > a { + padding-left: 10px; + padding-right: 10px; +} +.main-header .navbar .nav > li.disabled > a { + pointer-events: none !important; +} +.main-header .navbar .navbar-nav { + margin-left: 5px; +} +.main-header .navbar .navbar-searchbar { + padding-top: 8px; + padding-right: 20px; + float: right; +} +.main-header .logo .logo-mini { + font-size: 14px !important; +} +.main-header .logo .logo-lg { + cursor: pointer; +} +.main-header .rpcselect-dropdown { + max-height: 200px; + overflow-x: hidden; +} +.main-sidebar { + z-index: 1010; +} +.main-sidebar .sidebar-menu > li.treeview > ul.treeview-menu > li > a { + padding: 6px 5px 6px 41px; +} +@supports (padding-left: max(15px, 0px)) { + @media screen and (orientation: landscape) { + .main-sidebar ul.sidebar-menu > li.header, + .main-sidebar ul.sidebar-menu > li > a { + padding-left: max(15px, env(safe-area-inset-left)); + } + .main-sidebar ul.sidebar-menu > li.treeview > ul.treeview-menu > li > a { + padding-left: max(41px, calc(26px + env(safe-area-inset-left))); + } + } +} +.content-wrapper { + min-height: calc(100vh - 48px); +} +.content-wrapper, +.right-side { + background-color: #fff; +} +.content-wrapper > .content-body { + overflow-y: scroll; +} +@media screen and (orientation: portrait) { + .main-footer { + padding-bottom: calc(15px + env(safe-area-inset-bottom)); + } +} +.main-footer > .navbar { + margin-bottom: 0; + min-height: inherit; +} +.main-footer > .navbar > .navbar-toolbar > .nav { + float: left; + margin: 0; +} +.main-footer > .navbar > .navbar-toolbar > .nav > li { + display: inline-block; + float: left; +} +.main-footer > .navbar > .navbar-toolbar > .nav > li > a { + padding: 0 10px; +} +.main-footer > .navbar > .navbar-toolbar > .nav > li:first-child > a { + padding-left: 0; +} +.dropdown-menu.right-align { + left: inherit; + right: 0; +} +.default-cursor { + cursor: default !important; +} +.pointer-cursor { + cursor: pointer !important; +} +.text-cursor { + cursor: text !important; +} +.allow-word-break { + word-wrap: break-word; + word-break: break-all; +} +.auto-ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: absolute; + border: 1px solid #eee; + background-color: #fff; + } + .main-footer > .navbar > .navbar-toolbar > .nav > li > a { + padding-left: 8px; + padding-right: 8px; + } +} +.toolbar { + cursor: pointer; +} +.toolbar:active { + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.125); +} +.dropdown-menu small { + color: #999; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 0 6px 6px 6px; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropdown-submenu > a:after { + display: block; + content: ' '; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + margin-top: 5px; + margin-right: -10px; +} +.dropdown-menu > li.dropdown-submenu:hover { + background-color: #e1e3e9; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.dropdown-submenu.pull-left { + float: none; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + border-radius: 6px 0 6px 6px; +} +::-webkit-scrollbar { + width: 10px; +} +::-webkit-scrollbar-thumb { + background-clip: padding-box; + background-color: #c4d2db; + min-height: 28px; +} +::-webkit-scrollbar-thumb:active, +::-webkit-scrollbar-thumb:hover { + background-color: #d4dfe7; +} +@media (max-width: 767px) { + ::-webkit-scrollbar { + width: 6px; + } +} +.fade-in.ng-enter { + transition: all 0.3s linear; + opacity: 0; +} +.fade-in.ng-enter.ng-enter-active { + opacity: 1; +} +.btn-group + .btn { + margin-left: 4px; +} +.btn-sm.promise-btn-style { + padding-top: 6px; + padding-bottom: 6px; +} +.progress-bar { + transition: initial !important; +} +.input-group-addon-compact { + padding: 0 4px; +} +.nav-tabs-custom .nav-tabs > li > a { + display: inline-block; +} +.nav-tabs-custom .nav-tabs > li > a.nav-tab-close { + padding-left: 0; + margin-left: -12px; +} +.nav-tabs-custom .nav-tabs > li.nav-tab-title-rpcname > a { + max-width: 180px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: bottom; +} +@media (max-width: 991px) { + .nav-tabs-custom .nav-tabs > li.nav-tab-title-rpcname > a { + max-width: 150px; + } +} +@media (max-width: 767px) { + .nav-tabs-custom .nav-tabs > li.nav-tab-title-rpcname > a { + max-width: 120px; + } +} +.input-group.input-group-multiple > .input-group-addon { + border-left: 0; + border-right: 0; +} +.input-group.input-group-multiple > .input-group-addon-container:first-child, +.input-group.input-group-multiple > .input-group-addon:first-child { + border-left: 1px solid #d2d6de; +} +.input-group .input-group-addon-container { + width: 1%; + display: table-cell; +} +.fa-half { + font-size: 0.5em; +} +.fa-1_1x { + font-size: 1.1em; +} +.fa-rotate-45 { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; + transform: rotate(45deg); + filter: none; +} +.fa-right-bottom { + right: 0; + bottom: -6px; +} +.fa-order-asc, +.fa-order-desc, +.fa-right-bottom { + position: relative; +} +.fa-order-asc { + bottom: -2px; +} +.fa-order-desc { + bottom: 2px; +} +.checkbox.checkbox-hide { + padding-left: 0; +} +.checkbox.checkbox-hide > input, +.checkbox.checkbox-hide > input + label:after, +.checkbox.checkbox-hide > input + label:before { + display: none !important; +} +.checkbox.checkbox-hide > label { + padding-left: 0; +} +.checkbox-compact { + margin-top: 2px; + margin-bottom: 2px; +} +.checkbox-inline { + display: inline-block; +} +.icon-dir-expand + .checkbox { + margin-left: 6px; +} +input-dropdown[input-class-name='form-control'] > .input-dropdown { + width: 100%; +} +.input-dropdown ul { + border: 1px solid #888; +} +.input-dropdown ul > li.active { + background-color: #e1e3e9; +} +.input-dropdown ul > li { + padding: 2px 14px; +} +.gu-mirror { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.global-status { + cursor: pointer; +} +.global-status > .realtime-speed { + padding: 0 15px; +} +.global-status > .realtime-speed:first-child { + padding-left: 5px; +} +.global-status > .realtime-speed:last-child { + padding-right: 5px; +} +.global-status span.realtime-speed > i { + padding-right: 2px; +} +.task-table { + margin-left: 15px; + margin-right: 15px; +} +@media screen and (orientation: landscape) { + .content > .task-table, + .tab-pane > .task-table { + margin-right: calc(15px + env(safe-area-inset-right)); + } +} +.task-table .task-table-title { + font-size: 12px; + padding-top: 4px; + padding-bottom: 4px; +} +.task-table .task-table-title a { + color: #000; + cursor: pointer; +} +.task-table > .task-table-body.draggable { + cursor: move; + cursor: grab; + cursor: -webkit-grab; +} +@media screen and (orientation: landscape) { + .content > .task-table div.row, + .tab-pane > .task-table div.row { + margin-right: calc(-1 * (15px + env(safe-area-inset-right))); + padding-right: env(safe-area-inset-right); + } +} +.task-table > .task-table-body > div.row { + padding-top: 8px; + padding-bottom: 8px; + border-top: 1px solid #ddd; +} +.task-table > div.row:first-child { + border-top: inherit; +} +@media (max-width: 767px) { + .task-table > .task-table-title { + display: none !important; + } + .task-table > .task-table-body > div.row:first-child { + border-top: inherit; + } +} +.task-table .task-name { + font-size: 14px; + display: block; +} +.task-table .peer-name-wrapper { + display: inline-block; + width: 100%; +} +.task-table .task-files, +.task-table .task-size { + font-size: 12px; + display: block; +} +.task-table .progress { + margin-bottom: 0; +} +.task-table .task-last-time, +.task-table .task-last-time + .task-download-speed, +.task-table .task-seeders { + color: #888; + font-size: 12px; +} +.task-table .task-last-time + .task-download-speed, +.task-table .task-seeders { + margin-top: 1px; +} +.task-table .task-last-time + .task-download-speed { + padding-left: 20px; +} +.task-table .task-download-speed, +.task-table .task-peer-download-speed { + font-size: 12px; +} +.task-table .checkbox, +.task-table .radio { + margin-top: 0; + margin-bottom: 0; +} +.task-table .progress { + position: relative; +} +.task-table .progress span { + position: absolute; + display: block; + width: 100%; +} +.task-table .progress span.progress-lower { + color: #000; +} +@media (max-width: 767px) { + .task-table .task-peer-download-speed { + float: right; + } +} +.task-table .task-right-arrow { + visibility: hidden; + position: absolute; + right: 14px; + margin-top: -12px; +} +.task-table .row:hover .task-right-arrow, +.task-table .row[data-selected='true'] .task-right-arrow { + visibility: visible; +} +.task-table .task-right-arrow i { + color: #c8c8c8; + font-size: 60px; +} +.task-table .task-right-arrow i:hover { + color: #d8d8d8; +} +.settings-table { + margin-left: 15px; + margin-right: 15px; +} +@media screen and (orientation: landscape) { + .content > .settings-table, + .tab-pane > .settings-table { + margin-right: calc(15px + env(safe-area-inset-right)); + } +} +.settings-table .settings-table-title { + font-size: 12px; + padding-top: 4px; + padding-bottom: 4px; +} +.settings-table .settings-table-title a { + color: #000; +} +.settings-table > div.row { + padding-top: 8px; + padding-bottom: 8px; + border-top: 1px solid #ddd; +} +@media screen and (orientation: landscape) { + .content > .settings-table > div.row, + .tab-pane > .settings-table > div.row { + margin-right: calc(-1 * (15px + env(safe-area-inset-right))); + padding-right: env(safe-area-inset-right); + } +} +.settings-table > div.row:first-child { + border-top: inherit; +} +.settings-table + .settings-table > div.row:first-child { + border-top: 1px solid #ddd; +} +.settings-table .input-group-addon { + background-color: #eee; +} +.settings-table .asterisk { + color: red; +} +.settings-table .description, +.settings-table .description-inline { + color: #888; + font-size: 12px; + font-weight: 400; + font-style: normal; +} +.settings-table .description { + display: block; +} +.settings-table .description-inline { + display: inline-block; +} +.settings-table em { + color: #888; + font-size: 12px; + font-weight: 400; +} +.settings-table .setting-value .form-group { + margin-bottom: 0; +} +.settings-table .setting-value .form-group .form-control-icon { + color: #3c8dbc; +} +.settings-table + .setting-value + .form-group + select.form-control + + .form-control-icon + > .form-control-feedback { + right: 10px; +} +.settings-table .setting-value .input-group .form-group .form-control:focus { + z-index: inherit; +} +.settings-table .setting-value .input-group .form-control-rpcport { + min-width: 70px; +} +.settings-table .setting-value .input-group .form-control-rpcinterface { + min-width: 100px; +} +@media (max-width: 991px) { + .settings-table .setting-value .input-group .form-control-rpcinterface, + .settings-table .setting-value .input-group .form-control-rpcport { + min-width: 60px; + } +} +.settings-table .tip { + font-size: 12px; + padding: 4px 8px; +} +.settings-table .multi-line { + display: block; +} +@media (max-width: 767px) { + .settings-table .setting-key { + font-weight: 700; + } + .settings-table .description { + display: inline-block; + } +} +@media (min-width: 768px) { + .settings-table .setting-key-without-desc { + padding-top: 6px; + } +} +.new-task-table { + margin-left: 15px; + margin-right: 15px; +} +@media screen and (orientation: landscape) { + .content > .new-task-table, + .tab-pane > .new-task-table { + margin-right: calc(15px + env(safe-area-inset-right)); + } +} +.new-task-table > div.row { + padding-top: 8px; + padding-bottom: 8px; +} +@media screen and (orientation: landscape) { + .content > .new-task-table > div.row, + .tab-pane > .new-task-table > div.row { + margin-right: calc(-1 * (15px + env(safe-area-inset-right))); + padding-right: env(safe-area-inset-right); + } +} +.new-task-table > div.row:first-child { + border-top: inherit; +} +.new-task-table .new-task-toollink > a { + margin-right: 20px; +} +@media (max-width: 767px) { + .new-task-table .new-task-toollink > a { + display: block; + } +} +.settings-table .new-task-filter-title { + padding-top: 6px; +} +.piece-bar-wrapper { + height: 20px; +} +.piece-bar { + width: 100%; +} +.piece-map { + padding-left: 6px; + padding-right: 2px; + line-height: 11px; +} +@media screen and (orientation: landscape) { + .tab-pane > .piece-map { + padding-right: calc(2px + env(safe-area-inset-right)); + } +} +.piece-legends { + text-align: center; + margin-top: 4px; + margin-bottom: 4px; +} +@media screen and (orientation: landscape) { + .tab-pane > .piece-legends { + padding-right: env(safe-area-inset-right); + } +} +.piece-legend { + display: inline-block; + margin-right: 4px; +} +.piece-legend > .piece, +.piece-map .piece { + width: 10px; + height: 10px; + background-color: #eef2f4; + border: 1px solid #dee2e5; + display: inline-block; + margin-right: 1px; +} +.piece-legend > .piece.piece-completed, +.piece-map .piece.piece-completed { + background-color: #b8dd69; + border-color: #b8dd69; +} +.piece-legend > .piece { + margin-right: 4px; +} +.chart-popover { + max-width: 320px; +} +.chart-popover .popover-content { + padding: 0; +} +.chart-pop-wrapper { + padding-left: 4px; + padding-right: 4px; + overflow-x: hidden; +} +.chart-pop { + display: table; +} +.chart-pop .loading { + width: 100%; + height: 100%; + display: table-cell; + text-align: center; + vertical-align: middle; +} +.global-status-chart { + width: 312px; + height: 200px; +} +.task-status-chart-wrapper { + overflow-x: hidden; +} +@-webkit-keyframes three-quarters { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(1turn); + } +} +@keyframes three-quarters { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(1turn); + } +} +.btn-spinner { + font-family: sans-serif; + font-weight: 100; +} +.btn-spinner:not(:required) { + -webkit-animation: three-quarters 1.25s infinite linear; + animation: three-quarters 1.25s infinite linear; + border: 3px solid #8c8c8c; + border-right-color: transparent; + border-radius: 100%; + box-sizing: border-box; + display: inline-block; + position: relative; + vertical-align: middle; + overflow: hidden; + text-indent: -9999px; + width: 18px; + height: 18px; +} +.btn-danger .btn-spinner:not(:required), +.btn-primary .btn-spinner:not(:required) { + border: 3px solid #efefef; + border-right-color: transparent; +} +.btn-spinner:not(:required) { + margin-left: -17px; + opacity: 0; + transition: margin 0.4s ease-out, opacity 0.2s ease-out; +} +.is-loading .btn-spinner { + transition: margin 0.2s ease-in, opacity 0.4s ease-in; + margin-left: 5px; + opacity: 1; +} +.skin-aria-ng { + overflow-y: hidden; +} +.skin-aria-ng, +.skin-aria-ng .h1, +.skin-aria-ng .h2, +.skin-aria-ng .h3, +.skin-aria-ng .h4, +.skin-aria-ng .h5, +.skin-aria-ng .h6, +.skin-aria-ng .main-header .logo, +.skin-aria-ng .popover, +.skin-aria-ng .sweet-alert, +.skin-aria-ng .tooltip, +.skin-aria-ng h1, +.skin-aria-ng h2, +.skin-aria-ng h3, +.skin-aria-ng h4, +.skin-aria-ng h5, +.skin-aria-ng h6 { + font-family: Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif; +} +.skin-aria-ng .main-header .navbar { + background-color: #f6f6f6; + border-bottom: 1px solid #ddd; +} +.skin-aria-ng .main-header .navbar .nav > li > a { + color: #707070; + font-size: 16px; +} +.skin-aria-ng .main-header .navbar .nav .open > a, +.skin-aria-ng .main-header .navbar .nav .open > a:focus, +.skin-aria-ng .main-header .navbar .nav .open > a:hover, +.skin-aria-ng .main-header .navbar .nav > .active > a, +.skin-aria-ng .main-header .navbar .nav > li > a:active, +.skin-aria-ng .main-header .navbar .nav > li > a:focus, +.skin-aria-ng .main-header .navbar .nav > li > a:hover { + color: #0080ff; +} +.skin-aria-ng .main-header .navbar .nav > li.disabled > a { + color: #ccc !important; +} +.skin-aria-ng .main-header .navbar .nav > li.divider { + padding: 10px 0; + margin-left: 4px; + margin-right: 4px; + border-right: 1px solid #ccc; + position: relative; + top: 15px; +} +.skin-aria-ng .main-header .navbar .navbar-searchbar .form-control-icon { + color: #999; +} +@media (max-width: 767px) { + .skin-aria-ng .main-header .navbar { + padding-left: 20px; + } + .skin-aria-ng .main-header .navbar .navbar-nav { + margin-left: -10px; + } + .skin-aria-ng .main-header .navbar .nav > li.divider { + margin-left: 0; + margin-right: 0; + top: 5px; + } +} +.skin-aria-ng .main-header .logo { + background-color: #3c4852; + color: #fff; + border-bottom: 1px solid #59636b; +} +.skin-aria-ng .main-header .logo .logo-lg:hover { + color: #ccc; +} +.skin-aria-ng .main-header .logo .logo-lg .logo-lg-title { + margin-right: 6px; +} +.skin-aria-ng .main-header .logo .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.skin-aria-ng .main-header .logo .dropdown-menu > li.active > a { + color: #777; + background-color: #fff; +} +.skin-aria-ng .main-header .logo .dropdown-menu > li.active:hover > a { + color: #333; + background-color: #e1e3e9; +} +.skin-aria-ng .content-header { + background: transparent; +} +.skin-aria-ng .left-side, +.skin-aria-ng .main-sidebar, +.skin-aria-ng .wrapper { + background-color: #3c4852; +} +.skin-aria-ng .sidebar-menu > li.header { + color: #707070; + background-color: #2e343c; + padding-top: 3px; + padding-bottom: 3px; +} +.skin-aria-ng .sidebar-menu > li > a { + border-left: 3px solid transparent; + padding-top: 9px; + padding-bottom: 9px; +} +.skin-aria-ng .sidebar-menu > li:hover > a { + color: #dfdfdf; + background-color: #313a42; +} +.skin-aria-ng .sidebar-menu > li.active > a { + color: #5399e8; + background-color: #252c30; +} +.skin-aria-ng .sidebar-menu > li.treeview:hover > a { + color: #a2b5b9; + background-color: #3c4852; +} +.skin-aria-ng .sidebar-menu > li.treeview.active:hover > a, +.skin-aria-ng .sidebar-menu > li.treeview.active > a { + color: #5399e8; + background-color: #3c4852; +} +.skin-aria-ng .sidebar-menu > li.treeview > a:hover { + color: #dfdfdf; + background-color: #313a42; +} +.skin-aria-ng .sidebar-menu > li.treeview > ul.treeview-menu { + margin: 0; + padding: 0; + background-color: #3c4852; +} +.skin-aria-ng .sidebar-menu > li.treeview > ul.treeview-menu > li > a { + color: #8aa4af; +} +.skin-aria-ng .sidebar-menu > li.treeview > ul.treeview-menu > li > a:hover { + color: #dfdfdf; + background-color: #313a42; +} +.skin-aria-ng .sidebar-menu > li.treeview > ul.treeview-menu > li.active > a { + color: #5399e8; + background-color: #252c30; +} +.skin-aria-ng .sidebar-menu i.fa { + font-size: 18px; + margin-right: 2px; +} +.skin-aria-ng .sidebar a { + color: #a2b5b9; +} +.skin-aria-ng .sidebar a:hover { + text-decoration: none; +} +@media (max-width: 767px) { + .skin-aria-ng .main-sidebar { + margin-top: 5px; + } +} +.right-side, +.skin-aria-ng .content-wrapper { + background-color: #fff; +} +.skin-aria-ng .content-wrapper .form-control[type='text'] { + padding-left: 14px; +} +@media screen and (max-width: 767px) { + .skin-aria-ng .content-wrapper .content { + margin-top: 5px; + } +} +.skin-aria-ng .main-footer { + font-size: 12px; +} +.skin-aria-ng .main-footer > .navbar { + border: 0; +} +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li.divider { + padding-top: 16px; + margin-left: 4px; + margin-right: 4px; + border-right: 1px solid #ccc; + position: relative; + top: 0; +} +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li > a { + color: #707070; + line-height: 17px; +} +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li.open > a, +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li > a:active, +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li > a:focus, +.skin-aria-ng .main-footer > .navbar > .navbar-toolbar > .nav > li > a:hover { + color: #0080ff; + background: none; +} +.skin-aria-ng .global-status { + margin-right: 10px; + color: inherit; +} +.skin-aria-ng .global-status:hover { + border: 1px solid #ccc; + margin-right: 9px; + margin-top: -1px; +} +.skin-aria-ng .progress-bar-primary { + background-color: #208fe5; +} +.skin-aria-ng .progress-bar-warning { + background-color: #f39c12; +} +.skin-aria-ng .icon-primary { + color: #3c8dbc; +} +.skin-aria-ng .icon-download { + color: #3a89e9; +} +.skin-aria-ng .icon-upload { + color: #74a329; +} +.skin-aria-ng .icon-seeder { + margin-left: 4px; + color: #74a329; +} +.skin-aria-ng .icon-error { + margin-left: 4px; + color: #dd4b39; +} +.skin-aria-ng .icon-expand { + color: #5399e8; +} +.skin-aria-ng .icon-dir-expand { + color: #999; +} +.skin-aria-ng .nav-tabs-custom { + box-shadow: none; + margin-bottom: 0; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs { + border-bottom: 1px dotted #ddd; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li { + border-top: 0; + margin-top: 1px; + margin-right: 2px; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.active { + border-bottom: 2px solid #208fe5; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.slim > a { + padding-left: 5px; + padding-right: 5px; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.slim.active { + margin-bottom: -1px; + border-bottom: inherit; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.divider { + padding: 10px 0; + margin-left: 4px; + margin-right: 4px; + margin-top: 11px; + border-right: 1px solid #ccc; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.nav-toolbar { + margin-left: 15px; + margin-right: 5px; +} +@media (max-width: 767px) { + .skin-aria-ng .nav-tabs-custom > .nav-tabs > li.nav-toolbar { + float: right; + } +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.nav-toolbar > .btn-group { + margin-right: 4px; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a { + color: #aaa; + border: 0; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.active > a, +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a:active, +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a:hover { + color: #208fe5; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a.nav-tab-close:hover { + color: #dd4b39 !important; + margin-left: -14px; +} +.skin-aria-ng + .nav-tabs-custom + > .nav-tabs + > li + > a.nav-tab-close:hover + > .fa-times:before { + content: '\f057'; + font-size: 1.1em; +} +.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > div.btn-group { + padding-top: 5px; + padding-bottom: 5px; +} +.skin-aria-ng .tooltip.tooltip-error.in, +.skin-aria-ng .tooltip.tooltip-success.in, +.skin-aria-ng .tooltip.tooltip-warning.in { + filter: alpha(opacity=95); + opacity: 0.95; +} +.skin-aria-ng .tooltip.tooltip-success.top-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-success.top-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-success.top .tooltip-arrow { + border-top-color: #00a65a; +} +.skin-aria-ng .tooltip.tooltip-warning.top-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-warning.top-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-warning.top .tooltip-arrow { + border-top-color: #f39c12; +} +.skin-aria-ng .tooltip.tooltip-error.top-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-error.top-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-error.top .tooltip-arrow { + border-top-color: #dd4b39; +} +.skin-aria-ng .tooltip.tooltip-success.left .tooltip-arrow { + border-left-color: #00a65a; +} +.skin-aria-ng .tooltip.tooltip-warning.left .tooltip-arrow { + border-left-color: #f39c12; +} +.skin-aria-ng .tooltip.tooltip-error.left .tooltip-arrow { + border-left-color: #dd4b39; +} +.skin-aria-ng .tooltip.tooltip-success.right .tooltip-arrow { + border-right-color: #00a65a; +} +.skin-aria-ng .tooltip.tooltip-warning.right .tooltip-arrow { + border-right-color: #f39c12; +} +.skin-aria-ng .tooltip.tooltip-error.right .tooltip-arrow { + border-right-color: #dd4b39; +} +.skin-aria-ng .tooltip.tooltip-success.bottom-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-success.bottom-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-success.bottom .tooltip-arrow { + border-bottom-color: #00a65a; +} +.skin-aria-ng .tooltip.tooltip-warning.bottom-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-warning.bottom-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-warning.bottom .tooltip-arrow { + border-bottom-color: #f39c12; +} +.skin-aria-ng .tooltip.tooltip-error.bottom-left .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-error.bottom-right .tooltip-arrow, +.skin-aria-ng .tooltip.tooltip-error.bottom .tooltip-arrow { + border-bottom-color: #dd4b39; +} +.skin-aria-ng .tooltip.tooltip-success .tooltip-inner { + background-color: #00a65a; +} +.skin-aria-ng .tooltip.tooltip-warning .tooltip-inner { + background-color: #f39c12; +} +.skin-aria-ng .tooltip.tooltip-error .tooltip-inner { + background-color: #dd4b39; +} +.skin-aria-ng .input-group .form-group.has-success + .input-group-addon { + border-color: #00a65a; + background-color: #00a65a; + color: #fff; +} +.skin-aria-ng .input-group .form-group.has-warning + .input-group-addon { + border-color: #f39c12; + background-color: #f39c12; + color: #fff; +} +.skin-aria-ng .input-group .form-group.has-error + .input-group-addon { + border-color: #dd4b39; + background-color: #dd4b39; + color: #fff; +} +.skin-aria-ng input:-moz-placeholder, +.skin-aria-ng input:-ms-input-placeholder, +.skin-aria-ng input::-moz-placeholder, +.skin-aria-ng input::-webkit-input-placeholder { + color: #999; +} +.skin-aria-ng select.placeholder { + color: #999; +} +.skin-aria-ng .checkbox-primary input[type='checkbox']:checked + label:before, +.skin-aria-ng + .checkbox-primary + input[type='checkbox']:indeterminate + + label:before, +.skin-aria-ng .checkbox-primary input[type='radio']:checked + label:before, +.skin-aria-ng + .checkbox-primary + input[type='radio']:indeterminate + + label:before { + background-color: #208fe5; + border-color: #208fe5; +} +.skin-aria-ng .task-table { + background-color: #fff; +} +.skin-aria-ng .task-table > .task-table-body > div.row:nth-of-type(odd) { + background-color: #f9f9f9; +} +.skin-aria-ng .task-table > .task-table-body > div.row:hover { + background-color: #f5f5f5; +} +.skin-aria-ng .task-table .peer-client { + color: #888; + font-size: 12px; +} +.skin-aria-ng .settings-table { + background-color: #fff; +} +.skin-aria-ng .settings-table.striped > div.row:nth-of-type(odd) { + background-color: #f9f9f9; +} +.skin-aria-ng .settings-table.striped > div.row.no-background { + background-color: inherit; +} +.skin-aria-ng .settings-table.hoverable > div.row:hover { + background-color: #f5f5f5; +} +.skin-aria-ng .settings-table.hoverable > div.row.no-hover:hover { + background-color: inherit; +} +.skin-aria-ng + .settings-table.hoverable + > div.row:nth-of-type(odd).no-hover:hover { + background-color: #f9f9f9; +} +.skin-aria-ng .new-task-table { + background-color: #fff; +} +.theme-dark.skin-aria-ng { + color: #eee; + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng select { + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23cccccc%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E') !important; +} +.theme-dark.skin-aria-ng .cg-busy-backdrop { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .btn-default { + color: #eee; + border-color: #3f3f3f; + background-color: #333; +} +.theme-dark.skin-aria-ng .btn-default.hover, +.theme-dark.skin-aria-ng .btn-default:active, +.theme-dark.skin-aria-ng .btn-default:hover { + color: #fff; + background-color: #444; +} +.theme-dark.skin-aria-ng .close { + color: #eee; +} +.theme-dark.skin-aria-ng .form-control, +.theme-dark.skin-aria-ng pre { + background-color: #121212; + border-color: #666; + color: #eee; +} +.theme-dark.skin-aria-ng .form-control:focus { + border-color: #5399e8; +} +.theme-dark.skin-aria-ng .form-control[disabled], +.theme-dark.skin-aria-ng .form-control[readonly], +.theme-dark.skin-aria-ng fieldset[disabled] .form-control { + background-color: #333; +} +.theme-dark.skin-aria-ng .input-group-addon { + color: #eee; + border-color: #666; + background-color: #333; +} +.theme-dark.skin-aria-ng + .input-group.input-group-multiple + > .input-group-addon-container:first-child, +.theme-dark.skin-aria-ng + .input-group.input-group-multiple + > .input-group-addon:first-child { + border-color: #666; +} +.theme-dark.skin-aria-ng .progress { + background-color: #444; +} +.theme-dark.skin-aria-ng .nav-tabs-custom { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs { + border-color: #333; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a { + color: #ddd; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.active:hover > a, +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.active > a { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.active > a, +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a:active, +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li > a:hover { + color: #208fe5; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .nav-tabs > li.divider { + border-color: #666; +} +.theme-dark.skin-aria-ng .nav-tabs-custom > .tab-content { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .popover { + background-color: #1a1a1a; + border-color: rgba(0, 0, 0, 0.6); +} +.theme-dark.skin-aria-ng .popover.top .arrow:after { + border-top-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .popover.right .arrow:after { + border-right-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .popover.bottom .arrow:after { + border-bottom-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .popover.left .arrow:after { + border-left-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .modal-header { + border-color: #333; +} +.theme-dark.skin-aria-ng .modal-content { + background-color: #1a1a1a; + border-color: rgba(0, 0, 0, 0.6); +} +.theme-dark.skin-aria-ng .modal-footer { + border-color: #333; +} +.theme-dark.skin-aria-ng .dropdown-menu { + background-color: #1a1a1a; + border-color: #333; +} +.theme-dark.skin-aria-ng .dropdown-menu > li > a { + color: #eee; +} +.theme-dark.skin-aria-ng .dropdown-menu > li > a:hover { + color: #fff; + background-color: #333; +} +.theme-dark.skin-aria-ng .dropdown-menu > li.dropdown-submenu:hover { + background-color: #333; +} +.theme-dark.skin-aria-ng .dropdown-menu > .divider { + background-color: #666; +} +.theme-dark.skin-aria-ng .sweet-overlay { + background-color: rgba(0, 0, 0, 0.6); +} +.theme-dark.skin-aria-ng .sweet-alert { + background-color: #222; +} +.theme-dark.skin-aria-ng .sweet-alert h2, +.theme-dark.skin-aria-ng .sweet-alert p { + color: #ddd; +} +.theme-dark.skin-aria-ng .sweet-alert .sa-icon.sa-success .sa-fix, +.theme-dark.skin-aria-ng .sweet-alert .sa-icon.sa-success:after, +.theme-dark.skin-aria-ng .sweet-alert .sa-icon.sa-success:before { + background-color: #222; +} +.theme-dark.skin-aria-ng .main-header .navbar { + background-color: #121212; + border-color: #333; +} +.theme-dark.skin-aria-ng .main-header .navbar .nav > li > a { + color: #eee; +} +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a, +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a:focus, +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a:hover, +.theme-dark.skin-aria-ng .main-header .navbar .nav > .active > a, +.theme-dark.skin-aria-ng .main-header .navbar .nav > li > a:active, +.theme-dark.skin-aria-ng .main-header .navbar .nav > li > a:focus, +.theme-dark.skin-aria-ng .main-header .navbar .nav > li > a:hover { + color: #0080ff; + background-color: transparent; +} +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a, +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a:focus, +.theme-dark.skin-aria-ng .main-header .navbar .nav .open > a:hover, +.theme-dark.skin-aria-ng .main-header .navbar .nav > li > a:active { + background-color: #444; +} +.theme-dark.skin-aria-ng .main-header .navbar .nav > li.disabled > a { + color: #8f8f8f !important; +} +.theme-dark.skin-aria-ng .main-header .navbar .nav > li.divider { + border-color: #666; +} +.theme-dark.skin-aria-ng .main-header .logo { + background-color: #282828; + border-color: #222; +} +.theme-dark.skin-aria-ng .main-header .logo .dropdown-menu > li.active > a { + color: #eee; + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng + .main-header + .logo + .dropdown-menu + > li.active:hover + > a { + color: #fff; + background-color: #333; +} +.theme-dark.skin-aria-ng .left-side, +.theme-dark.skin-aria-ng .main-sidebar, +.theme-dark.skin-aria-ng .wrapper { + background-color: #282828; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.header { + color: #ccc; + background-color: #3c3c3c; +} +.theme-dark.skin-aria-ng .sidebar-menu > li:hover > a { + color: #fff; + background-color: #444; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.active > a { + color: #5399e8; + background-color: #333; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.treeview:hover > a { + color: #fff; + background-color: #282828; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.treeview.active:hover > a, +.theme-dark.skin-aria-ng .sidebar-menu > li.treeview.active > a { + color: #5399e8; + background-color: #282828; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.treeview > a:hover { + color: #fff; + background-color: #444; +} +.theme-dark.skin-aria-ng .sidebar-menu > li.treeview > ul.treeview-menu { + background-color: #282828; +} +.theme-dark.skin-aria-ng + .sidebar-menu + > li.treeview + > ul.treeview-menu + > li + > a { + color: #eee; +} +.theme-dark.skin-aria-ng + .sidebar-menu + > li.treeview + > ul.treeview-menu + > li + > a:hover { + color: #fff; + background-color: #444; +} +.theme-dark.skin-aria-ng + .sidebar-menu + > li.treeview + > ul.treeview-menu + > li.active + > a { + color: #5399e8; + background-color: #333; +} +.theme-dark.skin-aria-ng .sidebar a { + color: #eee; +} +.theme-dark.right-side, +.theme-dark.skin-aria-ng .content-wrapper { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .main-footer { + background-color: #1a1a1a; + border-color: #383838; +} +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li + > a { + color: #eee; +} +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li.open + > a, +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li + > a:active, +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li + > a:focus, +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li + > a:hover { + color: #0080ff; + background: none; +} +.theme-dark.skin-aria-ng + .main-footer + > .navbar + > .navbar-toolbar + > .nav + > li.divider { + border-color: #666; +} +.theme-dark.skin-aria-ng .global-status { + color: #eee; +} +.theme-dark.skin-aria-ng input:-moz-placeholder, +.theme-dark.skin-aria-ng input:-ms-input-placeholder, +.theme-dark.skin-aria-ng input::-moz-placeholder, +.theme-dark.skin-aria-ng input::-webkit-input-placeholder { + color: #aaa; +} +.theme-dark.skin-aria-ng select.placeholder { + color: #aaa; +} +.theme-dark.skin-aria-ng .input-dropdown ul > li { + background-color: #121212; +} +.theme-dark.skin-aria-ng .input-dropdown ul > li.active { + background-color: #333; +} +.theme-dark.skin-aria-ng .cg-busy-default-sign { + color: #eee; + border-color: #666; + background-color: #444; + text-shadow: 0 1px 1px #000; +} +.theme-dark.skin-aria-ng .cg-busy-default-text { + color: #eee; +} +.theme-dark.skin-aria-ng .cg-busy-default-spinner div { + background-color: #eee; +} +.theme-dark.skin-aria-ng ::-webkit-scrollbar-thumb { + background-color: #3c4144; +} +.theme-dark.skin-aria-ng .piece-legend > .piece, +.theme-dark.skin-aria-ng .piece-map .piece { + background-color: #242424; + border-color: #3c3d3e; +} +.theme-dark.skin-aria-ng .piece-legend > .piece.piece-completed, +.theme-dark.skin-aria-ng .piece-map .piece.piece-completed { + background-color: #b8dd69; + border-color: #b8dd69; +} +.theme-dark.skin-aria-ng .task-table { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .task-table .task-table-title a { + color: #eee; +} +.theme-dark.skin-aria-ng .task-table > .task-table-body > div.row { + border-color: #333; +} +.theme-dark.skin-aria-ng + .task-table + > .task-table-body + > div.row:nth-of-type(odd) { + background-color: #262626; +} +.theme-dark.skin-aria-ng .task-table > .task-table-body > div.row:hover { + background-color: #2a2a2a; +} +.theme-dark.skin-aria-ng .task-table .progress span.progress-lower { + color: #eee; +} +.theme-dark.skin-aria-ng .settings-table { + background-color: #1a1a1a; +} +.theme-dark.skin-aria-ng .settings-table > div.row { + border-color: #333; +} +.theme-dark.skin-aria-ng .settings-table.striped > div.row:nth-of-type(odd) { + background-color: #202020; +} +.theme-dark.skin-aria-ng .settings-table.hoverable > div.row:hover { + background-color: #242424; +} +.theme-dark.skin-aria-ng + .settings-table.hoverable + > div.row:nth-of-type(odd).no-hover:hover { + background-color: #202020; +} +.theme-dark.skin-aria-ng .new-task-table { + background-color: #1a1a1a; +} diff --git a/src/web/css/bootstrap-3.4.1.min.css b/src/web/css/bootstrap-3.4.1.min.css new file mode 100755 index 0000000..c7695f9 --- /dev/null +++ b/src/web/css/bootstrap-3.4.1.min.css @@ -0,0 +1,7129 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + -moz-text-decoration: underline dotted; + text-decoration: underline dotted; +} +b, +strong { + font-weight: 700; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type='button'], +input[type='reset'], +input[type='submit'] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type='checkbox'], +input[type='radio'] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type='number']::-webkit-inner-spin-button, +input[type='number']::-webkit-outer-spin-button { + height: auto; +} +input[type='search'] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: 700; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + :after, + :before { + color: #000 !important; + text-shadow: none !important; + background: 0 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: ' (' attr(href) ')'; + } + abbr[title]:after { + content: ' (' attr(title) ')'; + } + a[href^='#']:after, + a[href^='javascript:']:after { + content: ''; + } + blockquote, + pre { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + img, + tr { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + h2, + h3, + p { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered td, + .table-bordered th { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url(../fonts/glyphicons-halflings-regular.eot); + src: url(../fonts/glyphicons-halflings-regular.eot?#iefix) + format('embedded-opentype'), + url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'), + url(../fonts/glyphicons-halflings-regular.woff) format('woff'), + url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'), + url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) + format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: '\002a'; +} +.glyphicon-plus:before { + content: '\002b'; +} +.glyphicon-eur:before, +.glyphicon-euro:before { + content: '\20ac'; +} +.glyphicon-minus:before { + content: '\2212'; +} +.glyphicon-cloud:before { + content: '\2601'; +} +.glyphicon-envelope:before { + content: '\2709'; +} +.glyphicon-pencil:before { + content: '\270f'; +} +.glyphicon-glass:before { + content: '\e001'; +} +.glyphicon-music:before { + content: '\e002'; +} +.glyphicon-search:before { + content: '\e003'; +} +.glyphicon-heart:before { + content: '\e005'; +} +.glyphicon-star:before { + content: '\e006'; +} +.glyphicon-star-empty:before { + content: '\e007'; +} +.glyphicon-user:before { + content: '\e008'; +} +.glyphicon-film:before { + content: '\e009'; +} +.glyphicon-th-large:before { + content: '\e010'; +} +.glyphicon-th:before { + content: '\e011'; +} +.glyphicon-th-list:before { + content: '\e012'; +} +.glyphicon-ok:before { + content: '\e013'; +} +.glyphicon-remove:before { + content: '\e014'; +} +.glyphicon-zoom-in:before { + content: '\e015'; +} +.glyphicon-zoom-out:before { + content: '\e016'; +} +.glyphicon-off:before { + content: '\e017'; +} +.glyphicon-signal:before { + content: '\e018'; +} +.glyphicon-cog:before { + content: '\e019'; +} +.glyphicon-trash:before { + content: '\e020'; +} +.glyphicon-home:before { + content: '\e021'; +} +.glyphicon-file:before { + content: '\e022'; +} +.glyphicon-time:before { + content: '\e023'; +} +.glyphicon-road:before { + content: '\e024'; +} +.glyphicon-download-alt:before { + content: '\e025'; +} +.glyphicon-download:before { + content: '\e026'; +} +.glyphicon-upload:before { + content: '\e027'; +} +.glyphicon-inbox:before { + content: '\e028'; +} +.glyphicon-play-circle:before { + content: '\e029'; +} +.glyphicon-repeat:before { + content: '\e030'; +} +.glyphicon-refresh:before { + content: '\e031'; +} +.glyphicon-list-alt:before { + content: '\e032'; +} +.glyphicon-lock:before { + content: '\e033'; +} +.glyphicon-flag:before { + content: '\e034'; +} +.glyphicon-headphones:before { + content: '\e035'; +} +.glyphicon-volume-off:before { + content: '\e036'; +} +.glyphicon-volume-down:before { + content: '\e037'; +} +.glyphicon-volume-up:before { + content: '\e038'; +} +.glyphicon-qrcode:before { + content: '\e039'; +} +.glyphicon-barcode:before { + content: '\e040'; +} +.glyphicon-tag:before { + content: '\e041'; +} +.glyphicon-tags:before { + content: '\e042'; +} +.glyphicon-book:before { + content: '\e043'; +} +.glyphicon-bookmark:before { + content: '\e044'; +} +.glyphicon-print:before { + content: '\e045'; +} +.glyphicon-camera:before { + content: '\e046'; +} +.glyphicon-font:before { + content: '\e047'; +} +.glyphicon-bold:before { + content: '\e048'; +} +.glyphicon-italic:before { + content: '\e049'; +} +.glyphicon-text-height:before { + content: '\e050'; +} +.glyphicon-text-width:before { + content: '\e051'; +} +.glyphicon-align-left:before { + content: '\e052'; +} +.glyphicon-align-center:before { + content: '\e053'; +} +.glyphicon-align-right:before { + content: '\e054'; +} +.glyphicon-align-justify:before { + content: '\e055'; +} +.glyphicon-list:before { + content: '\e056'; +} +.glyphicon-indent-left:before { + content: '\e057'; +} +.glyphicon-indent-right:before { + content: '\e058'; +} +.glyphicon-facetime-video:before { + content: '\e059'; +} +.glyphicon-picture:before { + content: '\e060'; +} +.glyphicon-map-marker:before { + content: '\e062'; +} +.glyphicon-adjust:before { + content: '\e063'; +} +.glyphicon-tint:before { + content: '\e064'; +} +.glyphicon-edit:before { + content: '\e065'; +} +.glyphicon-share:before { + content: '\e066'; +} +.glyphicon-check:before { + content: '\e067'; +} +.glyphicon-move:before { + content: '\e068'; +} +.glyphicon-step-backward:before { + content: '\e069'; +} +.glyphicon-fast-backward:before { + content: '\e070'; +} +.glyphicon-backward:before { + content: '\e071'; +} +.glyphicon-play:before { + content: '\e072'; +} +.glyphicon-pause:before { + content: '\e073'; +} +.glyphicon-stop:before { + content: '\e074'; +} +.glyphicon-forward:before { + content: '\e075'; +} +.glyphicon-fast-forward:before { + content: '\e076'; +} +.glyphicon-step-forward:before { + content: '\e077'; +} +.glyphicon-eject:before { + content: '\e078'; +} +.glyphicon-chevron-left:before { + content: '\e079'; +} +.glyphicon-chevron-right:before { + content: '\e080'; +} +.glyphicon-plus-sign:before { + content: '\e081'; +} +.glyphicon-minus-sign:before { + content: '\e082'; +} +.glyphicon-remove-sign:before { + content: '\e083'; +} +.glyphicon-ok-sign:before { + content: '\e084'; +} +.glyphicon-question-sign:before { + content: '\e085'; +} +.glyphicon-info-sign:before { + content: '\e086'; +} +.glyphicon-screenshot:before { + content: '\e087'; +} +.glyphicon-remove-circle:before { + content: '\e088'; +} +.glyphicon-ok-circle:before { + content: '\e089'; +} +.glyphicon-ban-circle:before { + content: '\e090'; +} +.glyphicon-arrow-left:before { + content: '\e091'; +} +.glyphicon-arrow-right:before { + content: '\e092'; +} +.glyphicon-arrow-up:before { + content: '\e093'; +} +.glyphicon-arrow-down:before { + content: '\e094'; +} +.glyphicon-share-alt:before { + content: '\e095'; +} +.glyphicon-resize-full:before { + content: '\e096'; +} +.glyphicon-resize-small:before { + content: '\e097'; +} +.glyphicon-exclamation-sign:before { + content: '\e101'; +} +.glyphicon-gift:before { + content: '\e102'; +} +.glyphicon-leaf:before { + content: '\e103'; +} +.glyphicon-fire:before { + content: '\e104'; +} +.glyphicon-eye-open:before { + content: '\e105'; +} +.glyphicon-eye-close:before { + content: '\e106'; +} +.glyphicon-warning-sign:before { + content: '\e107'; +} +.glyphicon-plane:before { + content: '\e108'; +} +.glyphicon-calendar:before { + content: '\e109'; +} +.glyphicon-random:before { + content: '\e110'; +} +.glyphicon-comment:before { + content: '\e111'; +} +.glyphicon-magnet:before { + content: '\e112'; +} +.glyphicon-chevron-up:before { + content: '\e113'; +} +.glyphicon-chevron-down:before { + content: '\e114'; +} +.glyphicon-retweet:before { + content: '\e115'; +} +.glyphicon-shopping-cart:before { + content: '\e116'; +} +.glyphicon-folder-close:before { + content: '\e117'; +} +.glyphicon-folder-open:before { + content: '\e118'; +} +.glyphicon-resize-vertical:before { + content: '\e119'; +} +.glyphicon-resize-horizontal:before { + content: '\e120'; +} +.glyphicon-hdd:before { + content: '\e121'; +} +.glyphicon-bullhorn:before { + content: '\e122'; +} +.glyphicon-bell:before { + content: '\e123'; +} +.glyphicon-certificate:before { + content: '\e124'; +} +.glyphicon-thumbs-up:before { + content: '\e125'; +} +.glyphicon-thumbs-down:before { + content: '\e126'; +} +.glyphicon-hand-right:before { + content: '\e127'; +} +.glyphicon-hand-left:before { + content: '\e128'; +} +.glyphicon-hand-up:before { + content: '\e129'; +} +.glyphicon-hand-down:before { + content: '\e130'; +} +.glyphicon-circle-arrow-right:before { + content: '\e131'; +} +.glyphicon-circle-arrow-left:before { + content: '\e132'; +} +.glyphicon-circle-arrow-up:before { + content: '\e133'; +} +.glyphicon-circle-arrow-down:before { + content: '\e134'; +} +.glyphicon-globe:before { + content: '\e135'; +} +.glyphicon-wrench:before { + content: '\e136'; +} +.glyphicon-tasks:before { + content: '\e137'; +} +.glyphicon-filter:before { + content: '\e138'; +} +.glyphicon-briefcase:before { + content: '\e139'; +} +.glyphicon-fullscreen:before { + content: '\e140'; +} +.glyphicon-dashboard:before { + content: '\e141'; +} +.glyphicon-paperclip:before { + content: '\e142'; +} +.glyphicon-heart-empty:before { + content: '\e143'; +} +.glyphicon-link:before { + content: '\e144'; +} +.glyphicon-phone:before { + content: '\e145'; +} +.glyphicon-pushpin:before { + content: '\e146'; +} +.glyphicon-usd:before { + content: '\e148'; +} +.glyphicon-gbp:before { + content: '\e149'; +} +.glyphicon-sort:before { + content: '\e150'; +} +.glyphicon-sort-by-alphabet:before { + content: '\e151'; +} +.glyphicon-sort-by-alphabet-alt:before { + content: '\e152'; +} +.glyphicon-sort-by-order:before { + content: '\e153'; +} +.glyphicon-sort-by-order-alt:before { + content: '\e154'; +} +.glyphicon-sort-by-attributes:before { + content: '\e155'; +} +.glyphicon-sort-by-attributes-alt:before { + content: '\e156'; +} +.glyphicon-unchecked:before { + content: '\e157'; +} +.glyphicon-expand:before { + content: '\e158'; +} +.glyphicon-collapse-down:before { + content: '\e159'; +} +.glyphicon-collapse-up:before { + content: '\e160'; +} +.glyphicon-log-in:before { + content: '\e161'; +} +.glyphicon-flash:before { + content: '\e162'; +} +.glyphicon-log-out:before { + content: '\e163'; +} +.glyphicon-new-window:before { + content: '\e164'; +} +.glyphicon-record:before { + content: '\e165'; +} +.glyphicon-save:before { + content: '\e166'; +} +.glyphicon-open:before { + content: '\e167'; +} +.glyphicon-saved:before { + content: '\e168'; +} +.glyphicon-import:before { + content: '\e169'; +} +.glyphicon-export:before { + content: '\e170'; +} +.glyphicon-send:before { + content: '\e171'; +} +.glyphicon-floppy-disk:before { + content: '\e172'; +} +.glyphicon-floppy-saved:before { + content: '\e173'; +} +.glyphicon-floppy-remove:before { + content: '\e174'; +} +.glyphicon-floppy-save:before { + content: '\e175'; +} +.glyphicon-floppy-open:before { + content: '\e176'; +} +.glyphicon-credit-card:before { + content: '\e177'; +} +.glyphicon-transfer:before { + content: '\e178'; +} +.glyphicon-cutlery:before { + content: '\e179'; +} +.glyphicon-header:before { + content: '\e180'; +} +.glyphicon-compressed:before { + content: '\e181'; +} +.glyphicon-earphone:before { + content: '\e182'; +} +.glyphicon-phone-alt:before { + content: '\e183'; +} +.glyphicon-tower:before { + content: '\e184'; +} +.glyphicon-stats:before { + content: '\e185'; +} +.glyphicon-sd-video:before { + content: '\e186'; +} +.glyphicon-hd-video:before { + content: '\e187'; +} +.glyphicon-subtitles:before { + content: '\e188'; +} +.glyphicon-sound-stereo:before { + content: '\e189'; +} +.glyphicon-sound-dolby:before { + content: '\e190'; +} +.glyphicon-sound-5-1:before { + content: '\e191'; +} +.glyphicon-sound-6-1:before { + content: '\e192'; +} +.glyphicon-sound-7-1:before { + content: '\e193'; +} +.glyphicon-copyright-mark:before { + content: '\e194'; +} +.glyphicon-registration-mark:before { + content: '\e195'; +} +.glyphicon-cloud-download:before { + content: '\e197'; +} +.glyphicon-cloud-upload:before { + content: '\e198'; +} +.glyphicon-tree-conifer:before { + content: '\e199'; +} +.glyphicon-tree-deciduous:before { + content: '\e200'; +} +.glyphicon-cd:before { + content: '\e201'; +} +.glyphicon-save-file:before { + content: '\e202'; +} +.glyphicon-open-file:before { + content: '\e203'; +} +.glyphicon-level-up:before { + content: '\e204'; +} +.glyphicon-copy:before { + content: '\e205'; +} +.glyphicon-paste:before { + content: '\e206'; +} +.glyphicon-alert:before { + content: '\e209'; +} +.glyphicon-equalizer:before { + content: '\e210'; +} +.glyphicon-king:before { + content: '\e211'; +} +.glyphicon-queen:before { + content: '\e212'; +} +.glyphicon-pawn:before { + content: '\e213'; +} +.glyphicon-bishop:before { + content: '\e214'; +} +.glyphicon-knight:before { + content: '\e215'; +} +.glyphicon-baby-formula:before { + content: '\e216'; +} +.glyphicon-tent:before { + content: '\26fa'; +} +.glyphicon-blackboard:before { + content: '\e218'; +} +.glyphicon-bed:before { + content: '\e219'; +} +.glyphicon-apple:before { + content: '\f8ff'; +} +.glyphicon-erase:before { + content: '\e221'; +} +.glyphicon-hourglass:before { + content: '\231b'; +} +.glyphicon-lamp:before { + content: '\e223'; +} +.glyphicon-duplicate:before { + content: '\e224'; +} +.glyphicon-piggy-bank:before { + content: '\e225'; +} +.glyphicon-scissors:before { + content: '\e226'; +} +.glyphicon-bitcoin:before { + content: '\e227'; +} +.glyphicon-btc:before { + content: '\e227'; +} +.glyphicon-xbt:before { + content: '\e227'; +} +.glyphicon-yen:before { + content: '\00a5'; +} +.glyphicon-jpy:before { + content: '\00a5'; +} +.glyphicon-ruble:before { + content: '\20bd'; +} +.glyphicon-rub:before { + content: '\20bd'; +} +.glyphicon-scale:before { + content: '\e230'; +} +.glyphicon-ice-lolly:before { + content: '\e231'; +} +.glyphicon-ice-lolly-tasted:before { + content: '\e232'; +} +.glyphicon-education:before { + content: '\e233'; +} +.glyphicon-option-horizontal:before { + content: '\e234'; +} +.glyphicon-option-vertical:before { + content: '\e235'; +} +.glyphicon-menu-hamburger:before { + content: '\e236'; +} +.glyphicon-modal-window:before { + content: '\e237'; +} +.glyphicon-oil:before { + content: '\e238'; +} +.glyphicon-grain:before { + content: '\e239'; +} +.glyphicon-sunglasses:before { + content: '\e240'; +} +.glyphicon-text-size:before { + content: '\e241'; +} +.glyphicon-text-color:before { + content: '\e242'; +} +.glyphicon-text-background:before { + content: '\e243'; +} +.glyphicon-object-align-top:before { + content: '\e244'; +} +.glyphicon-object-align-bottom:before { + content: '\e245'; +} +.glyphicon-object-align-horizontal:before { + content: '\e246'; +} +.glyphicon-object-align-left:before { + content: '\e247'; +} +.glyphicon-object-align-vertical:before { + content: '\e248'; +} +.glyphicon-object-align-right:before { + content: '\e249'; +} +.glyphicon-triangle-right:before { + content: '\e250'; +} +.glyphicon-triangle-left:before { + content: '\e251'; +} +.glyphicon-triangle-bottom:before { + content: '\e252'; +} +.glyphicon-triangle-top:before { + content: '\e253'; +} +.glyphicon-console:before { + content: '\e254'; +} +.glyphicon-superscript:before { + content: '\e255'; +} +.glyphicon-subscript:before { + content: '\e256'; +} +.glyphicon-menu-left:before { + content: '\e257'; +} +.glyphicon-menu-right:before { + content: '\e258'; +} +.glyphicon-menu-down:before { + content: '\e259'; +} +.glyphicon-menu-up:before { + content: '\e260'; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +:after, +:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +button, +input, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:focus, +a:hover { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.carousel-inner > .item > a > img, +.carousel-inner > .item > img, +.img-responsive, +.thumbnail a > img, +.thumbnail > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role='button'] { + cursor: pointer; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-weight: 400; + line-height: 1; + color: #777; +} +.h1, +.h2, +.h3, +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small { + font-size: 65%; +} +.h4, +.h5, +.h6, +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-size: 75%; +} +.h1, +h1 { + font-size: 36px; +} +.h2, +h2 { + font-size: 30px; +} +.h3, +h3 { + font-size: 24px; +} +.h4, +h4 { + font-size: 18px; +} +.h5, +h5 { + font-size: 14px; +} +.h6, +h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +.small, +small { + font-size: 85%; +} +.mark, +mark { + padding: 0.2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:focus, +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:focus, +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:focus, +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:focus, +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:focus, +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:focus, +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:focus, +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:focus, +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:focus, +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:focus, +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ol, +ul { + margin-top: 0; + margin-bottom: 10px; +} +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dd, +dt { + line-height: 1.42857143; +} +dt { + font-weight: 700; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[data-original-title], +abbr[title] { + cursor: help; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote ol:last-child, +blockquote p:last-child, +blockquote ul:last-child { + margin-bottom: 0; +} +blockquote .small, +blockquote footer, +blockquote small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote .small:before, +blockquote footer:before, +blockquote small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse .small:before, +.blockquote-reverse footer:before, +.blockquote-reverse small:before, +blockquote.pull-right .small:before, +blockquote.pull-right footer:before, +blockquote.pull-right small:before { + content: ''; +} +.blockquote-reverse .small:after, +.blockquote-reverse footer:after, +.blockquote-reverse small:after, +blockquote.pull-right .small:after, +blockquote.pull-right footer:after, +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.row-no-gutters { + margin-right: 0; + margin-left: 0; +} +.row-no-gutters [class*='col-'] { + padding-right: 0; + padding-left: 0; +} +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, + .col-sm-10, + .col-sm-11, + .col-sm-12, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, + .col-md-10, + .col-md-11, + .col-md-12, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, + .col-lg-10, + .col-lg-11, + .col-lg-12, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +table col[class*='col-'] { + position: static; + display: table-column; + float: none; +} +table td[class*='col-'], +table th[class*='col-'] { + position: static; + display: table-cell; + float: none; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > tbody > tr > td, +.table > tbody > tr > th, +.table > tfoot > tr > td, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > thead > tr > th { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > td, +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > td, +.table > thead:first-child > tr:first-child > th { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > tbody > tr > td, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > td, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > thead > tr > th { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > tbody > tr > td, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > td, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > thead > tr > th { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > td, +.table-bordered > thead > tr > th { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +.table > tbody > tr.active > td, +.table > tbody > tr.active > th, +.table > tbody > tr > td.active, +.table > tbody > tr > th.active, +.table > tfoot > tr.active > td, +.table > tfoot > tr.active > th, +.table > tfoot > tr > td.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > thead > tr.active > th, +.table > thead > tr > td.active, +.table > thead > tr > th.active { + background-color: #f5f5f5; +} +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr.active:hover > th, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover { + background-color: #e8e8e8; +} +.table > tbody > tr.success > td, +.table > tbody > tr.success > th, +.table > tbody > tr > td.success, +.table > tbody > tr > th.success, +.table > tfoot > tr.success > td, +.table > tfoot > tr.success > th, +.table > tfoot > tr > td.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > thead > tr.success > th, +.table > thead > tr > td.success, +.table > thead > tr > th.success { + background-color: #dff0d8; +} +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover { + background-color: #d0e9c6; +} +.table > tbody > tr.info > td, +.table > tbody > tr.info > th, +.table > tbody > tr > td.info, +.table > tbody > tr > th.info, +.table > tfoot > tr.info > td, +.table > tfoot > tr.info > th, +.table > tfoot > tr > td.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > thead > tr.info > th, +.table > thead > tr > td.info, +.table > thead > tr > th.info { + background-color: #d9edf7; +} +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr.info:hover > th, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover { + background-color: #c4e3f3; +} +.table > tbody > tr.warning > td, +.table > tbody > tr.warning > th, +.table > tbody > tr > td.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr.warning > td, +.table > tfoot > tr.warning > th, +.table > tfoot > tr > td.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > thead > tr.warning > th, +.table > thead > tr > td.warning, +.table > thead > tr > th.warning { + background-color: #fcf8e3; +} +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover { + background-color: #faf2cc; +} +.table > tbody > tr.danger > td, +.table > tbody > tr.danger > th, +.table > tbody > tr > td.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr.danger > td, +.table > tfoot > tr.danger > th, +.table > tfoot > tr > td.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > thead > tr.danger > th, +.table > thead > tr > td.danger, +.table > thead > tr > th.danger { + background-color: #f2dede; +} +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover { + background-color: #ebcccc; +} +.table-responsive { + min-height: 0.01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > td, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > thead > tr > th { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > thead > tr > th:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > thead > tr > th:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700; +} +input[type='search'] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +input[type='checkbox'], +input[type='radio'] { + margin: 4px 0 0; + margin-top: 1px\9; + line-height: normal; +} +fieldset[disabled] input[type='checkbox'], +fieldset[disabled] input[type='radio'], +input[type='checkbox'].disabled, +input[type='checkbox'][disabled], +input[type='radio'].disabled, +input[type='radio'][disabled] { + cursor: not-allowed; +} +input[type='file'] { + display: block; +} +input[type='range'] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type='checkbox']:focus, +input[type='file']:focus, +input[type='radio']:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, + box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -webkit-transition: border-color ease-in-out 0.15s, + -webkit-box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, + -webkit-box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s, + -webkit-box-shadow ease-in-out 0.15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type='date'].form-control, + input[type='datetime-local'].form-control, + input[type='month'].form-control, + input[type='time'].form-control { + line-height: 34px; + } + .input-group-sm input[type='date'], + .input-group-sm input[type='datetime-local'], + .input-group-sm input[type='month'], + .input-group-sm input[type='time'], + input[type='date'].input-sm, + input[type='datetime-local'].input-sm, + input[type='month'].input-sm, + input[type='time'].input-sm { + line-height: 30px; + } + .input-group-lg input[type='date'], + .input-group-lg input[type='datetime-local'], + .input-group-lg input[type='month'], + .input-group-lg input[type='time'], + input[type='date'].input-lg, + input[type='datetime-local'].input-lg, + input[type='month'].input-lg, + input[type='time'].input-lg { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.checkbox, +.radio { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.checkbox.disabled label, +.radio.disabled label, +fieldset[disabled] .checkbox label, +fieldset[disabled] .radio label { + cursor: not-allowed; +} +.checkbox label, +.radio label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer; +} +.checkbox input[type='checkbox'], +.checkbox-inline input[type='checkbox'], +.radio input[type='radio'], +.radio-inline input[type='radio'] { + position: absolute; + margin-top: 4px\9; + margin-left: -20px; +} +.checkbox + .checkbox, +.radio + .radio { + margin-top: -5px; +} +.checkbox-inline, +.radio-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer; +} +.checkbox-inline.disabled, +.radio-inline.disabled, +fieldset[disabled] .checkbox-inline, +fieldset[disabled] .radio-inline { + cursor: not-allowed; +} +.checkbox-inline + .checkbox-inline, +.radio-inline + .radio-inline { + margin-top: 0; + margin-left: 10px; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +select[multiple].input-sm, +textarea.input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm select[multiple].form-control, +.form-group-sm textarea.form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +select[multiple].input-lg, +textarea.input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg select[multiple].form-control, +.form-group-lg textarea.form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.form-group-lg .form-control + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.form-group-sm .form-control + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .checkbox, +.has-success .checkbox-inline, +.has-success .control-label, +.has-success .help-block, +.has-success .radio, +.has-success .radio-inline, +.has-success.checkbox label, +.has-success.checkbox-inline label, +.has-success.radio label, +.has-success.radio-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .checkbox, +.has-warning .checkbox-inline, +.has-warning .control-label, +.has-warning .help-block, +.has-warning .radio, +.has-warning .radio-inline, +.has-warning.checkbox label, +.has-warning.checkbox-inline label, +.has-warning.radio label, +.has-warning.radio-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .checkbox, +.has-error .checkbox-inline, +.has-error .control-label, +.has-error .help-block, +.has-error .radio, +.has-error .radio-inline, +.has-error.checkbox label, +.has-error.checkbox-inline label, +.has-error.radio label, +.has-error.radio-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .form-control, + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .checkbox, + .form-inline .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .checkbox label, + .form-inline .radio label { + padding-left: 0; + } + .form-inline .checkbox input[type='checkbox'], + .form-inline .radio input[type='radio'] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .checkbox, +.form-horizontal .checkbox-inline, +.form-horizontal .radio, +.form-horizontal .radio-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .checkbox, +.form-horizontal .radio { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn.active.focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn:active:focus, +.btn:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.focus, +.btn:focus, +.btn:hover { + color: #333; + text-decoration: none; +} +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + opacity: 0.65; + -webkit-box-shadow: none; + box-shadow: none; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default.focus, +.btn-default:focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default.active, +.btn-default:active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + background-image: none; + border-color: #adadad; +} +.btn-default.active.focus, +.btn-default.active:focus, +.btn-default.active:hover, +.btn-default:active.focus, +.btn-default:active:focus, +.btn-default:active:hover, +.open > .dropdown-toggle.btn-default.focus, +.open > .dropdown-toggle.btn-default:focus, +.open > .dropdown-toggle.btn-default:hover { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default.disabled.focus, +.btn-default.disabled:focus, +.btn-default.disabled:hover, +.btn-default[disabled].focus, +.btn-default[disabled]:focus, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default.focus, +fieldset[disabled] .btn-default:focus, +fieldset[disabled] .btn-default:hover { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary.focus, +.btn-primary:focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary.active, +.btn-primary:active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + background-image: none; + border-color: #204d74; +} +.btn-primary.active.focus, +.btn-primary.active:focus, +.btn-primary.active:hover, +.btn-primary:active.focus, +.btn-primary:active:focus, +.btn-primary:active:hover, +.open > .dropdown-toggle.btn-primary.focus, +.open > .dropdown-toggle.btn-primary:focus, +.open > .dropdown-toggle.btn-primary:hover { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary.disabled.focus, +.btn-primary.disabled:focus, +.btn-primary.disabled:hover, +.btn-primary[disabled].focus, +.btn-primary[disabled]:focus, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary.focus, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary:hover { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success.focus, +.btn-success:focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success.active, +.btn-success:active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + background-image: none; + border-color: #398439; +} +.btn-success.active.focus, +.btn-success.active:focus, +.btn-success.active:hover, +.btn-success:active.focus, +.btn-success:active:focus, +.btn-success:active:hover, +.open > .dropdown-toggle.btn-success.focus, +.open > .dropdown-toggle.btn-success:focus, +.open > .dropdown-toggle.btn-success:hover { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success.disabled.focus, +.btn-success.disabled:focus, +.btn-success.disabled:hover, +.btn-success[disabled].focus, +.btn-success[disabled]:focus, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success.focus, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success:hover { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info.focus, +.btn-info:focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info.active, +.btn-info:active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + background-image: none; + border-color: #269abc; +} +.btn-info.active.focus, +.btn-info.active:focus, +.btn-info.active:hover, +.btn-info:active.focus, +.btn-info:active:focus, +.btn-info:active:hover, +.open > .dropdown-toggle.btn-info.focus, +.open > .dropdown-toggle.btn-info:focus, +.open > .dropdown-toggle.btn-info:hover { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info.disabled.focus, +.btn-info.disabled:focus, +.btn-info.disabled:hover, +.btn-info[disabled].focus, +.btn-info[disabled]:focus, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info.focus, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info:hover { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning.focus, +.btn-warning:focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning.active, +.btn-warning:active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + background-image: none; + border-color: #d58512; +} +.btn-warning.active.focus, +.btn-warning.active:focus, +.btn-warning.active:hover, +.btn-warning:active.focus, +.btn-warning:active:focus, +.btn-warning:active:hover, +.open > .dropdown-toggle.btn-warning.focus, +.open > .dropdown-toggle.btn-warning:focus, +.open > .dropdown-toggle.btn-warning:hover { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning.disabled.focus, +.btn-warning.disabled:focus, +.btn-warning.disabled:hover, +.btn-warning[disabled].focus, +.btn-warning[disabled]:focus, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning.focus, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning:hover { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger.focus, +.btn-danger:focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger.active, +.btn-danger:active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + background-image: none; + border-color: #ac2925; +} +.btn-danger.active.focus, +.btn-danger.active:focus, +.btn-danger.active:hover, +.btn-danger:active.focus, +.btn-danger:active:focus, +.btn-danger:active:hover, +.open > .dropdown-toggle.btn-danger.focus, +.open > .dropdown-toggle.btn-danger:focus, +.open > .dropdown-toggle.btn-danger:hover { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger.disabled.focus, +.btn-danger.disabled:focus, +.btn-danger.disabled:hover, +.btn-danger[disabled].focus, +.btn-danger[disabled]:focus, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger.focus, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger:hover { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: 400; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link.active, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:active, +.btn-link:focus, +.btn-link:hover { + border-color: transparent; +} +.btn-link:focus, +.btn-link:hover { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:focus, +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link:hover { + color: #777; + text-decoration: none; +} +.btn-group-lg > .btn, +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-group-sm > .btn, +.btn-sm { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-group-xs > .btn, +.btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type='button'].btn-block, +input[type='reset'].btn-block, +input[type='submit'].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid\9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown, +.dropup { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:hover { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:focus, +.dropdown-menu > .active > a:hover { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { + color: #777; +} +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ''; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid\9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group-vertical > .btn, +.btn-group > .btn { + position: relative; + float: left; +} +.btn-group-vertical > .btn.active, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:hover, +.btn-group > .btn.active, +.btn-group > .btn:active, +.btn-group > .btn:focus, +.btn-group > .btn:hover { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical + > .btn-group:first-child:not(:last-child) + > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical + > .btn-group:last-child:not(:first-child) + > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle='buttons'] > .btn input[type='checkbox'], +[data-toggle='buttons'] > .btn input[type='radio'], +[data-toggle='buttons'] > .btn-group > .btn input[type='checkbox'], +[data-toggle='buttons'] > .btn-group > .btn input[type='radio'] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*='col-'] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn, +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn, +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group .form-control, +.input-group-addon, +.input-group-btn { + display: table-cell; +} +.input-group .form-control:not(:first-child):not(:last-child), +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type='checkbox'], +.input-group-addon input[type='radio'] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:active, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:hover { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:focus, +.nav > li > a:hover { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:focus, +.nav > li.disabled > a:hover { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:focus, +.nav .open > a:hover { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:focus, +.nav-tabs > li.active > a:hover { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:focus, +.nav-tabs.nav-justified > .active > a:hover { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:focus, + .nav-tabs.nav-justified > .active > a:hover { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:focus, +.nav-pills > li.active > a:hover { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:focus, +.nav-tabs-justified > .active > a:hover { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:focus, + .nav-tabs-justified > .active > a:hover { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-bottom, +.navbar-fixed-top { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-bottom .navbar-collapse, +.navbar-fixed-top .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse { + max-height: 200px; + } +} +@media (min-width: 768px) { + .navbar-fixed-bottom, + .navbar-fixed-top { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.container-fluid > .navbar-collapse, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container > .navbar-header { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container-fluid > .navbar-collapse, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container > .navbar-header { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-right: 15px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu .dropdown-header, + .navbar-nav .open .dropdown-menu > li > a { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:focus, + .navbar-nav .open .dropdown-menu > li > a:hover { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-right: -15px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .form-control, + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .checkbox, + .navbar-form .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .checkbox label, + .navbar-form .radio label { + padding-left: 0; + } + .navbar-form .checkbox input[type='checkbox'], + .navbar-form .radio input[type='radio'] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:focus, +.navbar-default .navbar-brand:hover { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:focus, +.navbar-default .navbar-nav > li > a:hover { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:focus, +.navbar-default .navbar-nav > .active > a:hover { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:focus, +.navbar-default .navbar-nav > .disabled > a:hover { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:focus, +.navbar-default .navbar-nav > .open > a:hover { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:focus, +.navbar-default .navbar-toggle:hover { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:focus, +.navbar-default .btn-link:hover { + color: #333; +} +.navbar-default .btn-link[disabled]:focus, +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:focus, +fieldset[disabled] .navbar-default .btn-link:hover { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:focus, +.navbar-inverse .navbar-brand:hover { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:focus, +.navbar-inverse .navbar-nav > li > a:hover { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:focus, +.navbar-inverse .navbar-nav > .active > a:hover { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:focus, +.navbar-inverse .navbar-nav > .disabled > a:hover { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:focus, +.navbar-inverse .navbar-nav > .open > a:hover { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:focus, +.navbar-inverse .navbar-toggle:hover { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:focus, +.navbar-inverse .btn-link:hover { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:focus, +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:focus, +fieldset[disabled] .navbar-inverse .btn-link:hover { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: '/\00a0'; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li > a:focus, +.pagination > li > a:hover, +.pagination > li > span:focus, +.pagination > li > span:hover { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > .active > a, +.pagination > .active > a:focus, +.pagination > .active > a:hover, +.pagination > .active > span, +.pagination > .active > span:focus, +.pagination > .active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > a, +.pagination > .disabled > a:focus, +.pagination > .disabled > a:hover, +.pagination > .disabled > span, +.pagination > .disabled > span:focus, +.pagination > .disabled > span:hover { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:focus, +.pager li > a:hover { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:focus, +.pager .disabled > a:hover, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: 0.2em 0.6em 0.3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25em; +} +a.label:focus, +a.label:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:focus, +.label-default[href]:hover { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:focus, +.label-primary[href]:hover { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:focus, +.label-success[href]:hover { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:focus, +.label-info[href]:hover { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:focus, +.label-warning[href]:hover { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:focus, +.label-danger[href]:hover { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-group-xs > .btn .badge, +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:focus, +a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron .h1, +.jumbotron h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron .h1, + .jumbotron h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail a > img, +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail.active, +a.thumbnail:focus, +a.thumbnail:hover { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: 700; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-bar-striped, +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress-bar.active, +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-body, +.media-left, +.media-right { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item.disabled, +.list-group-item.disabled:focus, +.list-group-item.disabled:hover { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:focus .list-group-item-text, +.list-group-item.active:hover .list-group-item-text { + color: #c7ddef; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:focus, +a.list-group-item:hover, +button.list-group-item:focus, +button.list-group-item:hover { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:focus, +a.list-group-item-success:hover, +button.list-group-item-success:focus, +button.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:focus, +a.list-group-item-success.active:hover, +button.list-group-item-success.active, +button.list-group-item-success.active:focus, +button.list-group-item-success.active:hover { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:focus, +a.list-group-item-info:hover, +button.list-group-item-info:focus, +button.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:focus, +a.list-group-item-info.active:hover, +button.list-group-item-info.active, +button.list-group-item-info.active:focus, +button.list-group-item-info.active:hover { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:focus, +a.list-group-item-warning:hover, +button.list-group-item-warning:focus, +button.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:focus, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active, +button.list-group-item-warning.active:focus, +button.list-group-item-warning.active:hover { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:focus, +a.list-group-item-danger:hover, +button.list-group-item-danger:focus, +button.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:focus, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active, +button.list-group-item-danger.active:focus, +button.list-group-item-danger.active:hover { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > .small, +.panel-title > .small > a, +.panel-title > a, +.panel-title > small, +.panel-title > small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel + > .panel-collapse + > .list-group:first-child + .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel + > .panel-heading + + .panel-collapse + > .list-group + .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .panel-collapse > .table, +.panel > .table, +.panel > .table-responsive > .table { + margin-bottom: 0; +} +.panel > .panel-collapse > .table caption, +.panel > .table caption, +.panel > .table-responsive > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table-responsive:first-child > .table:first-child, +.panel > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + td:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + th:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + td:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel + > .table:first-child + > thead:first-child + > tr:first-child + th:first-child { + border-top-left-radius: 3px; +} +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + td:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + th:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + td:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table-responsive:last-child > .table:last-child, +.panel > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + td:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + th:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + td:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + th:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + td:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + th:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + td:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + th:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child td, +.panel > .table > tbody:first-child > tr:first-child th { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child { + border-left: 0; +} +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child { + border-right: 0; +} +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .list-group, +.panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: 0.2; +} +.close:focus, +.close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: 0.5; +} +button.close { + padding: 0; + cursor: pointer; + background: 0 0; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, + -o-transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: 0.5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 12px; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: 0.9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 14px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow:after { + content: ''; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: ' '; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: ' '; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: ' '; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: ' '; + border-right-width: 0; + border-left-color: #fff; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > a > img, +.carousel-inner > .item > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, + -o-transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.active.right, + .carousel-inner > .item.next { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.active.left, + .carousel-inner > .item.prev { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.active, + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: 0.5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient( + left, + rgba(0, 0, 0, 0.5) 0, + rgba(0, 0, 0, 0.0001) 100% + ); + background-image: -o-linear-gradient( + left, + rgba(0, 0, 0, 0.5) 0, + rgba(0, 0, 0, 0.0001) 100% + ); + background-image: -webkit-gradient( + linear, + left top, + right top, + from(rgba(0, 0, 0, 0.5)), + to(rgba(0, 0, 0, 0.0001)) + ); + background-image: linear-gradient( + to right, + rgba(0, 0, 0, 0.5) 0, + rgba(0, 0, 0, 0.0001) 100% + ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient( + left, + rgba(0, 0, 0, 0.0001) 0, + rgba(0, 0, 0, 0.5) 100% + ); + background-image: -o-linear-gradient( + left, + rgba(0, 0, 0, 0.0001) 0, + rgba(0, 0, 0, 0.5) 100% + ); + background-image: -webkit-gradient( + linear, + left top, + right top, + from(rgba(0, 0, 0, 0.0001)), + to(rgba(0, 0, 0, 0.5)) + ); + background-image: linear-gradient( + to right, + rgba(0, 0, 0, 0.0001) 0, + rgba(0, 0, 0, 0.5) 100% + ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:focus, +.carousel-control:hover { + color: #fff; + text-decoration: none; + outline: 0; + filter: alpha(opacity=90); + opacity: 0.9; +} +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right, +.carousel-control .icon-next, +.carousel-control .icon-prev { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .glyphicon-chevron-left, +.carousel-control .icon-prev { + left: 50%; + margin-left: -10px; +} +.carousel-control .glyphicon-chevron-right, +.carousel-control .icon-next { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-next, +.carousel-control .icon-prev { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next, + .carousel-control .icon-prev { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.btn-group-vertical > .btn-group:after, +.btn-group-vertical > .btn-group:before, +.btn-toolbar:after, +.btn-toolbar:before, +.clearfix:after, +.clearfix:before, +.container-fluid:after, +.container-fluid:before, +.container:after, +.container:before, +.dl-horizontal dd:after, +.dl-horizontal dd:before, +.form-horizontal .form-group:after, +.form-horizontal .form-group:before, +.modal-footer:after, +.modal-footer:before, +.modal-header:after, +.modal-header:before, +.nav:after, +.nav:before, +.navbar-collapse:after, +.navbar-collapse:before, +.navbar-header:after, +.navbar-header:before, +.navbar:after, +.navbar:before, +.pager:after, +.pager:before, +.panel-body:after, +.panel-body:before, +.row:after, +.row:before { + display: table; + content: ' '; +} +.btn-group-vertical > .btn-group:after, +.btn-toolbar:after, +.clearfix:after, +.container-fluid:after, +.container:after, +.dl-horizontal dd:after, +.form-horizontal .form-group:after, +.modal-footer:after, +.modal-header:after, +.nav:after, +.navbar-collapse:after, +.navbar-header:after, +.navbar:after, +.pager:after, +.panel-body:after, +.row:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-lg, +.visible-md, +.visible-sm, +.visible-xs { + display: none !important; +} +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + td.visible-xs, + th.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + td.visible-sm, + th.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + td.visible-md, + th.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + td.visible-lg, + th.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + td.visible-print, + th.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} diff --git a/src/web/css/plugins-ccac6fc3fc.min.css b/src/web/css/plugins-ccac6fc3fc.min.css new file mode 100755 index 0000000..8a9f61f --- /dev/null +++ b/src/web/css/plugins-ccac6fc3fc.min.css @@ -0,0 +1,9620 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +@font-face { + font-family: FontAwesome; + src: url(../fonts/fontawesome-webfont.eot?v=4.7.0); + src: url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) + format('embedded-opentype'), + url(../fonts/fontawesome-webfont.woff2) format('woff2'), + url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'), + url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'), + url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) + format('svg'); + font-weight: 400; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: 0.2em 0.25em 0.15em; + border: 0.08em solid #eee; + border-radius: 0.1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: 0.3em; +} +.fa.fa-pull-right { + margin-left: 0.3em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: 0.3em; +} +.fa.pull-right { + margin-left: 0.3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; + -webkit-transform: scaleX(-1); + -ms-transform: scaleX(-1); + transform: scaleX(-1); +} +.fa-flip-vertical { + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; + -webkit-transform: scaleY(-1); + -ms-transform: scaleY(-1); + transform: scaleY(-1); +} +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270 { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #fff; +} +.fa-glass:before { + content: '\f000'; +} +.fa-music:before { + content: '\f001'; +} +.fa-search:before { + content: '\f002'; +} +.fa-envelope-o:before { + content: '\f003'; +} +.fa-heart:before { + content: '\f004'; +} +.fa-star:before { + content: '\f005'; +} +.fa-star-o:before { + content: '\f006'; +} +.fa-user:before { + content: '\f007'; +} +.fa-film:before { + content: '\f008'; +} +.fa-th-large:before { + content: '\f009'; +} +.fa-th:before { + content: '\f00a'; +} +.fa-th-list:before { + content: '\f00b'; +} +.fa-check:before { + content: '\f00c'; +} +.fa-close:before, +.fa-remove:before, +.fa-times:before { + content: '\f00d'; +} +.fa-search-plus:before { + content: '\f00e'; +} +.fa-search-minus:before { + content: '\f010'; +} +.fa-power-off:before { + content: '\f011'; +} +.fa-signal:before { + content: '\f012'; +} +.fa-cog:before, +.fa-gear:before { + content: '\f013'; +} +.fa-trash-o:before { + content: '\f014'; +} +.fa-home:before { + content: '\f015'; +} +.fa-file-o:before { + content: '\f016'; +} +.fa-clock-o:before { + content: '\f017'; +} +.fa-road:before { + content: '\f018'; +} +.fa-download:before { + content: '\f019'; +} +.fa-arrow-circle-o-down:before { + content: '\f01a'; +} +.fa-arrow-circle-o-up:before { + content: '\f01b'; +} +.fa-inbox:before { + content: '\f01c'; +} +.fa-play-circle-o:before { + content: '\f01d'; +} +.fa-repeat:before, +.fa-rotate-right:before { + content: '\f01e'; +} +.fa-refresh:before { + content: '\f021'; +} +.fa-list-alt:before { + content: '\f022'; +} +.fa-lock:before { + content: '\f023'; +} +.fa-flag:before { + content: '\f024'; +} +.fa-headphones:before { + content: '\f025'; +} +.fa-volume-off:before { + content: '\f026'; +} +.fa-volume-down:before { + content: '\f027'; +} +.fa-volume-up:before { + content: '\f028'; +} +.fa-qrcode:before { + content: '\f029'; +} +.fa-barcode:before { + content: '\f02a'; +} +.fa-tag:before { + content: '\f02b'; +} +.fa-tags:before { + content: '\f02c'; +} +.fa-book:before { + content: '\f02d'; +} +.fa-bookmark:before { + content: '\f02e'; +} +.fa-print:before { + content: '\f02f'; +} +.fa-camera:before { + content: '\f030'; +} +.fa-font:before { + content: '\f031'; +} +.fa-bold:before { + content: '\f032'; +} +.fa-italic:before { + content: '\f033'; +} +.fa-text-height:before { + content: '\f034'; +} +.fa-text-width:before { + content: '\f035'; +} +.fa-align-left:before { + content: '\f036'; +} +.fa-align-center:before { + content: '\f037'; +} +.fa-align-right:before { + content: '\f038'; +} +.fa-align-justify:before { + content: '\f039'; +} +.fa-list:before { + content: '\f03a'; +} +.fa-dedent:before, +.fa-outdent:before { + content: '\f03b'; +} +.fa-indent:before { + content: '\f03c'; +} +.fa-video-camera:before { + content: '\f03d'; +} +.fa-image:before, +.fa-photo:before, +.fa-picture-o:before { + content: '\f03e'; +} +.fa-pencil:before { + content: '\f040'; +} +.fa-map-marker:before { + content: '\f041'; +} +.fa-adjust:before { + content: '\f042'; +} +.fa-tint:before { + content: '\f043'; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: '\f044'; +} +.fa-share-square-o:before { + content: '\f045'; +} +.fa-check-square-o:before { + content: '\f046'; +} +.fa-arrows:before { + content: '\f047'; +} +.fa-step-backward:before { + content: '\f048'; +} +.fa-fast-backward:before { + content: '\f049'; +} +.fa-backward:before { + content: '\f04a'; +} +.fa-play:before { + content: '\f04b'; +} +.fa-pause:before { + content: '\f04c'; +} +.fa-stop:before { + content: '\f04d'; +} +.fa-forward:before { + content: '\f04e'; +} +.fa-fast-forward:before { + content: '\f050'; +} +.fa-step-forward:before { + content: '\f051'; +} +.fa-eject:before { + content: '\f052'; +} +.fa-chevron-left:before { + content: '\f053'; +} +.fa-chevron-right:before { + content: '\f054'; +} +.fa-plus-circle:before { + content: '\f055'; +} +.fa-minus-circle:before { + content: '\f056'; +} +.fa-times-circle:before { + content: '\f057'; +} +.fa-check-circle:before { + content: '\f058'; +} +.fa-question-circle:before { + content: '\f059'; +} +.fa-info-circle:before { + content: '\f05a'; +} +.fa-crosshairs:before { + content: '\f05b'; +} +.fa-times-circle-o:before { + content: '\f05c'; +} +.fa-check-circle-o:before { + content: '\f05d'; +} +.fa-ban:before { + content: '\f05e'; +} +.fa-arrow-left:before { + content: '\f060'; +} +.fa-arrow-right:before { + content: '\f061'; +} +.fa-arrow-up:before { + content: '\f062'; +} +.fa-arrow-down:before { + content: '\f063'; +} +.fa-mail-forward:before, +.fa-share:before { + content: '\f064'; +} +.fa-expand:before { + content: '\f065'; +} +.fa-compress:before { + content: '\f066'; +} +.fa-plus:before { + content: '\f067'; +} +.fa-minus:before { + content: '\f068'; +} +.fa-asterisk:before { + content: '\f069'; +} +.fa-exclamation-circle:before { + content: '\f06a'; +} +.fa-gift:before { + content: '\f06b'; +} +.fa-leaf:before { + content: '\f06c'; +} +.fa-fire:before { + content: '\f06d'; +} +.fa-eye:before { + content: '\f06e'; +} +.fa-eye-slash:before { + content: '\f070'; +} +.fa-exclamation-triangle:before, +.fa-warning:before { + content: '\f071'; +} +.fa-plane:before { + content: '\f072'; +} +.fa-calendar:before { + content: '\f073'; +} +.fa-random:before { + content: '\f074'; +} +.fa-comment:before { + content: '\f075'; +} +.fa-magnet:before { + content: '\f076'; +} +.fa-chevron-up:before { + content: '\f077'; +} +.fa-chevron-down:before { + content: '\f078'; +} +.fa-retweet:before { + content: '\f079'; +} +.fa-shopping-cart:before { + content: '\f07a'; +} +.fa-folder:before { + content: '\f07b'; +} +.fa-folder-open:before { + content: '\f07c'; +} +.fa-arrows-v:before { + content: '\f07d'; +} +.fa-arrows-h:before { + content: '\f07e'; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: '\f080'; +} +.fa-twitter-square:before { + content: '\f081'; +} +.fa-facebook-square:before { + content: '\f082'; +} +.fa-camera-retro:before { + content: '\f083'; +} +.fa-key:before { + content: '\f084'; +} +.fa-cogs:before, +.fa-gears:before { + content: '\f085'; +} +.fa-comments:before { + content: '\f086'; +} +.fa-thumbs-o-up:before { + content: '\f087'; +} +.fa-thumbs-o-down:before { + content: '\f088'; +} +.fa-star-half:before { + content: '\f089'; +} +.fa-heart-o:before { + content: '\f08a'; +} +.fa-sign-out:before { + content: '\f08b'; +} +.fa-linkedin-square:before { + content: '\f08c'; +} +.fa-thumb-tack:before { + content: '\f08d'; +} +.fa-external-link:before { + content: '\f08e'; +} +.fa-sign-in:before { + content: '\f090'; +} +.fa-trophy:before { + content: '\f091'; +} +.fa-github-square:before { + content: '\f092'; +} +.fa-upload:before { + content: '\f093'; +} +.fa-lemon-o:before { + content: '\f094'; +} +.fa-phone:before { + content: '\f095'; +} +.fa-square-o:before { + content: '\f096'; +} +.fa-bookmark-o:before { + content: '\f097'; +} +.fa-phone-square:before { + content: '\f098'; +} +.fa-twitter:before { + content: '\f099'; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: '\f09a'; +} +.fa-github:before { + content: '\f09b'; +} +.fa-unlock:before { + content: '\f09c'; +} +.fa-credit-card:before { + content: '\f09d'; +} +.fa-feed:before, +.fa-rss:before { + content: '\f09e'; +} +.fa-hdd-o:before { + content: '\f0a0'; +} +.fa-bullhorn:before { + content: '\f0a1'; +} +.fa-bell:before { + content: '\f0f3'; +} +.fa-certificate:before { + content: '\f0a3'; +} +.fa-hand-o-right:before { + content: '\f0a4'; +} +.fa-hand-o-left:before { + content: '\f0a5'; +} +.fa-hand-o-up:before { + content: '\f0a6'; +} +.fa-hand-o-down:before { + content: '\f0a7'; +} +.fa-arrow-circle-left:before { + content: '\f0a8'; +} +.fa-arrow-circle-right:before { + content: '\f0a9'; +} +.fa-arrow-circle-up:before { + content: '\f0aa'; +} +.fa-arrow-circle-down:before { + content: '\f0ab'; +} +.fa-globe:before { + content: '\f0ac'; +} +.fa-wrench:before { + content: '\f0ad'; +} +.fa-tasks:before { + content: '\f0ae'; +} +.fa-filter:before { + content: '\f0b0'; +} +.fa-briefcase:before { + content: '\f0b1'; +} +.fa-arrows-alt:before { + content: '\f0b2'; +} +.fa-group:before, +.fa-users:before { + content: '\f0c0'; +} +.fa-chain:before, +.fa-link:before { + content: '\f0c1'; +} +.fa-cloud:before { + content: '\f0c2'; +} +.fa-flask:before { + content: '\f0c3'; +} +.fa-cut:before, +.fa-scissors:before { + content: '\f0c4'; +} +.fa-copy:before, +.fa-files-o:before { + content: '\f0c5'; +} +.fa-paperclip:before { + content: '\f0c6'; +} +.fa-floppy-o:before, +.fa-save:before { + content: '\f0c7'; +} +.fa-square:before { + content: '\f0c8'; +} +.fa-bars:before, +.fa-navicon:before, +.fa-reorder:before { + content: '\f0c9'; +} +.fa-list-ul:before { + content: '\f0ca'; +} +.fa-list-ol:before { + content: '\f0cb'; +} +.fa-strikethrough:before { + content: '\f0cc'; +} +.fa-underline:before { + content: '\f0cd'; +} +.fa-table:before { + content: '\f0ce'; +} +.fa-magic:before { + content: '\f0d0'; +} +.fa-truck:before { + content: '\f0d1'; +} +.fa-pinterest:before { + content: '\f0d2'; +} +.fa-pinterest-square:before { + content: '\f0d3'; +} +.fa-google-plus-square:before { + content: '\f0d4'; +} +.fa-google-plus:before { + content: '\f0d5'; +} +.fa-money:before { + content: '\f0d6'; +} +.fa-caret-down:before { + content: '\f0d7'; +} +.fa-caret-up:before { + content: '\f0d8'; +} +.fa-caret-left:before { + content: '\f0d9'; +} +.fa-caret-right:before { + content: '\f0da'; +} +.fa-columns:before { + content: '\f0db'; +} +.fa-sort:before, +.fa-unsorted:before { + content: '\f0dc'; +} +.fa-sort-desc:before, +.fa-sort-down:before { + content: '\f0dd'; +} +.fa-sort-asc:before, +.fa-sort-up:before { + content: '\f0de'; +} +.fa-envelope:before { + content: '\f0e0'; +} +.fa-linkedin:before { + content: '\f0e1'; +} +.fa-rotate-left:before, +.fa-undo:before { + content: '\f0e2'; +} +.fa-gavel:before, +.fa-legal:before { + content: '\f0e3'; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: '\f0e4'; +} +.fa-comment-o:before { + content: '\f0e5'; +} +.fa-comments-o:before { + content: '\f0e6'; +} +.fa-bolt:before, +.fa-flash:before { + content: '\f0e7'; +} +.fa-sitemap:before { + content: '\f0e8'; +} +.fa-umbrella:before { + content: '\f0e9'; +} +.fa-clipboard:before, +.fa-paste:before { + content: '\f0ea'; +} +.fa-lightbulb-o:before { + content: '\f0eb'; +} +.fa-exchange:before { + content: '\f0ec'; +} +.fa-cloud-download:before { + content: '\f0ed'; +} +.fa-cloud-upload:before { + content: '\f0ee'; +} +.fa-user-md:before { + content: '\f0f0'; +} +.fa-stethoscope:before { + content: '\f0f1'; +} +.fa-suitcase:before { + content: '\f0f2'; +} +.fa-bell-o:before { + content: '\f0a2'; +} +.fa-coffee:before { + content: '\f0f4'; +} +.fa-cutlery:before { + content: '\f0f5'; +} +.fa-file-text-o:before { + content: '\f0f6'; +} +.fa-building-o:before { + content: '\f0f7'; +} +.fa-hospital-o:before { + content: '\f0f8'; +} +.fa-ambulance:before { + content: '\f0f9'; +} +.fa-medkit:before { + content: '\f0fa'; +} +.fa-fighter-jet:before { + content: '\f0fb'; +} +.fa-beer:before { + content: '\f0fc'; +} +.fa-h-square:before { + content: '\f0fd'; +} +.fa-plus-square:before { + content: '\f0fe'; +} +.fa-angle-double-left:before { + content: '\f100'; +} +.fa-angle-double-right:before { + content: '\f101'; +} +.fa-angle-double-up:before { + content: '\f102'; +} +.fa-angle-double-down:before { + content: '\f103'; +} +.fa-angle-left:before { + content: '\f104'; +} +.fa-angle-right:before { + content: '\f105'; +} +.fa-angle-up:before { + content: '\f106'; +} +.fa-angle-down:before { + content: '\f107'; +} +.fa-desktop:before { + content: '\f108'; +} +.fa-laptop:before { + content: '\f109'; +} +.fa-tablet:before { + content: '\f10a'; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: '\f10b'; +} +.fa-circle-o:before { + content: '\f10c'; +} +.fa-quote-left:before { + content: '\f10d'; +} +.fa-quote-right:before { + content: '\f10e'; +} +.fa-spinner:before { + content: '\f110'; +} +.fa-circle:before { + content: '\f111'; +} +.fa-mail-reply:before, +.fa-reply:before { + content: '\f112'; +} +.fa-github-alt:before { + content: '\f113'; +} +.fa-folder-o:before { + content: '\f114'; +} +.fa-folder-open-o:before { + content: '\f115'; +} +.fa-smile-o:before { + content: '\f118'; +} +.fa-frown-o:before { + content: '\f119'; +} +.fa-meh-o:before { + content: '\f11a'; +} +.fa-gamepad:before { + content: '\f11b'; +} +.fa-keyboard-o:before { + content: '\f11c'; +} +.fa-flag-o:before { + content: '\f11d'; +} +.fa-flag-checkered:before { + content: '\f11e'; +} +.fa-terminal:before { + content: '\f120'; +} +.fa-code:before { + content: '\f121'; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: '\f122'; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: '\f123'; +} +.fa-location-arrow:before { + content: '\f124'; +} +.fa-crop:before { + content: '\f125'; +} +.fa-code-fork:before { + content: '\f126'; +} +.fa-chain-broken:before, +.fa-unlink:before { + content: '\f127'; +} +.fa-question:before { + content: '\f128'; +} +.fa-info:before { + content: '\f129'; +} +.fa-exclamation:before { + content: '\f12a'; +} +.fa-superscript:before { + content: '\f12b'; +} +.fa-subscript:before { + content: '\f12c'; +} +.fa-eraser:before { + content: '\f12d'; +} +.fa-puzzle-piece:before { + content: '\f12e'; +} +.fa-microphone:before { + content: '\f130'; +} +.fa-microphone-slash:before { + content: '\f131'; +} +.fa-shield:before { + content: '\f132'; +} +.fa-calendar-o:before { + content: '\f133'; +} +.fa-fire-extinguisher:before { + content: '\f134'; +} +.fa-rocket:before { + content: '\f135'; +} +.fa-maxcdn:before { + content: '\f136'; +} +.fa-chevron-circle-left:before { + content: '\f137'; +} +.fa-chevron-circle-right:before { + content: '\f138'; +} +.fa-chevron-circle-up:before { + content: '\f139'; +} +.fa-chevron-circle-down:before { + content: '\f13a'; +} +.fa-html5:before { + content: '\f13b'; +} +.fa-css3:before { + content: '\f13c'; +} +.fa-anchor:before { + content: '\f13d'; +} +.fa-unlock-alt:before { + content: '\f13e'; +} +.fa-bullseye:before { + content: '\f140'; +} +.fa-ellipsis-h:before { + content: '\f141'; +} +.fa-ellipsis-v:before { + content: '\f142'; +} +.fa-rss-square:before { + content: '\f143'; +} +.fa-play-circle:before { + content: '\f144'; +} +.fa-ticket:before { + content: '\f145'; +} +.fa-minus-square:before { + content: '\f146'; +} +.fa-minus-square-o:before { + content: '\f147'; +} +.fa-level-up:before { + content: '\f148'; +} +.fa-level-down:before { + content: '\f149'; +} +.fa-check-square:before { + content: '\f14a'; +} +.fa-pencil-square:before { + content: '\f14b'; +} +.fa-external-link-square:before { + content: '\f14c'; +} +.fa-share-square:before { + content: '\f14d'; +} +.fa-compass:before { + content: '\f14e'; +} +.fa-caret-square-o-down:before, +.fa-toggle-down:before { + content: '\f150'; +} +.fa-caret-square-o-up:before, +.fa-toggle-up:before { + content: '\f151'; +} +.fa-caret-square-o-right:before, +.fa-toggle-right:before { + content: '\f152'; +} +.fa-eur:before, +.fa-euro:before { + content: '\f153'; +} +.fa-gbp:before { + content: '\f154'; +} +.fa-dollar:before, +.fa-usd:before { + content: '\f155'; +} +.fa-inr:before, +.fa-rupee:before { + content: '\f156'; +} +.fa-cny:before, +.fa-jpy:before, +.fa-rmb:before, +.fa-yen:before { + content: '\f157'; +} +.fa-rouble:before, +.fa-rub:before, +.fa-ruble:before { + content: '\f158'; +} +.fa-krw:before, +.fa-won:before { + content: '\f159'; +} +.fa-bitcoin:before, +.fa-btc:before { + content: '\f15a'; +} +.fa-file:before { + content: '\f15b'; +} +.fa-file-text:before { + content: '\f15c'; +} +.fa-sort-alpha-asc:before { + content: '\f15d'; +} +.fa-sort-alpha-desc:before { + content: '\f15e'; +} +.fa-sort-amount-asc:before { + content: '\f160'; +} +.fa-sort-amount-desc:before { + content: '\f161'; +} +.fa-sort-numeric-asc:before { + content: '\f162'; +} +.fa-sort-numeric-desc:before { + content: '\f163'; +} +.fa-thumbs-up:before { + content: '\f164'; +} +.fa-thumbs-down:before { + content: '\f165'; +} +.fa-youtube-square:before { + content: '\f166'; +} +.fa-youtube:before { + content: '\f167'; +} +.fa-xing:before { + content: '\f168'; +} +.fa-xing-square:before { + content: '\f169'; +} +.fa-youtube-play:before { + content: '\f16a'; +} +.fa-dropbox:before { + content: '\f16b'; +} +.fa-stack-overflow:before { + content: '\f16c'; +} +.fa-instagram:before { + content: '\f16d'; +} +.fa-flickr:before { + content: '\f16e'; +} +.fa-adn:before { + content: '\f170'; +} +.fa-bitbucket:before { + content: '\f171'; +} +.fa-bitbucket-square:before { + content: '\f172'; +} +.fa-tumblr:before { + content: '\f173'; +} +.fa-tumblr-square:before { + content: '\f174'; +} +.fa-long-arrow-down:before { + content: '\f175'; +} +.fa-long-arrow-up:before { + content: '\f176'; +} +.fa-long-arrow-left:before { + content: '\f177'; +} +.fa-long-arrow-right:before { + content: '\f178'; +} +.fa-apple:before { + content: '\f179'; +} +.fa-windows:before { + content: '\f17a'; +} +.fa-android:before { + content: '\f17b'; +} +.fa-linux:before { + content: '\f17c'; +} +.fa-dribbble:before { + content: '\f17d'; +} +.fa-skype:before { + content: '\f17e'; +} +.fa-foursquare:before { + content: '\f180'; +} +.fa-trello:before { + content: '\f181'; +} +.fa-female:before { + content: '\f182'; +} +.fa-male:before { + content: '\f183'; +} +.fa-gittip:before, +.fa-gratipay:before { + content: '\f184'; +} +.fa-sun-o:before { + content: '\f185'; +} +.fa-moon-o:before { + content: '\f186'; +} +.fa-archive:before { + content: '\f187'; +} +.fa-bug:before { + content: '\f188'; +} +.fa-vk:before { + content: '\f189'; +} +.fa-weibo:before { + content: '\f18a'; +} +.fa-renren:before { + content: '\f18b'; +} +.fa-pagelines:before { + content: '\f18c'; +} +.fa-stack-exchange:before { + content: '\f18d'; +} +.fa-arrow-circle-o-right:before { + content: '\f18e'; +} +.fa-arrow-circle-o-left:before { + content: '\f190'; +} +.fa-caret-square-o-left:before, +.fa-toggle-left:before { + content: '\f191'; +} +.fa-dot-circle-o:before { + content: '\f192'; +} +.fa-wheelchair:before { + content: '\f193'; +} +.fa-vimeo-square:before { + content: '\f194'; +} +.fa-try:before, +.fa-turkish-lira:before { + content: '\f195'; +} +.fa-plus-square-o:before { + content: '\f196'; +} +.fa-space-shuttle:before { + content: '\f197'; +} +.fa-slack:before { + content: '\f198'; +} +.fa-envelope-square:before { + content: '\f199'; +} +.fa-wordpress:before { + content: '\f19a'; +} +.fa-openid:before { + content: '\f19b'; +} +.fa-bank:before, +.fa-institution:before, +.fa-university:before { + content: '\f19c'; +} +.fa-graduation-cap:before, +.fa-mortar-board:before { + content: '\f19d'; +} +.fa-yahoo:before { + content: '\f19e'; +} +.fa-google:before { + content: '\f1a0'; +} +.fa-reddit:before { + content: '\f1a1'; +} +.fa-reddit-square:before { + content: '\f1a2'; +} +.fa-stumbleupon-circle:before { + content: '\f1a3'; +} +.fa-stumbleupon:before { + content: '\f1a4'; +} +.fa-delicious:before { + content: '\f1a5'; +} +.fa-digg:before { + content: '\f1a6'; +} +.fa-pied-piper-pp:before { + content: '\f1a7'; +} +.fa-pied-piper-alt:before { + content: '\f1a8'; +} +.fa-drupal:before { + content: '\f1a9'; +} +.fa-joomla:before { + content: '\f1aa'; +} +.fa-language:before { + content: '\f1ab'; +} +.fa-fax:before { + content: '\f1ac'; +} +.fa-building:before { + content: '\f1ad'; +} +.fa-child:before { + content: '\f1ae'; +} +.fa-paw:before { + content: '\f1b0'; +} +.fa-spoon:before { + content: '\f1b1'; +} +.fa-cube:before { + content: '\f1b2'; +} +.fa-cubes:before { + content: '\f1b3'; +} +.fa-behance:before { + content: '\f1b4'; +} +.fa-behance-square:before { + content: '\f1b5'; +} +.fa-steam:before { + content: '\f1b6'; +} +.fa-steam-square:before { + content: '\f1b7'; +} +.fa-recycle:before { + content: '\f1b8'; +} +.fa-automobile:before, +.fa-car:before { + content: '\f1b9'; +} +.fa-cab:before, +.fa-taxi:before { + content: '\f1ba'; +} +.fa-tree:before { + content: '\f1bb'; +} +.fa-spotify:before { + content: '\f1bc'; +} +.fa-deviantart:before { + content: '\f1bd'; +} +.fa-soundcloud:before { + content: '\f1be'; +} +.fa-database:before { + content: '\f1c0'; +} +.fa-file-pdf-o:before { + content: '\f1c1'; +} +.fa-file-word-o:before { + content: '\f1c2'; +} +.fa-file-excel-o:before { + content: '\f1c3'; +} +.fa-file-powerpoint-o:before { + content: '\f1c4'; +} +.fa-file-image-o:before, +.fa-file-photo-o:before, +.fa-file-picture-o:before { + content: '\f1c5'; +} +.fa-file-archive-o:before, +.fa-file-zip-o:before { + content: '\f1c6'; +} +.fa-file-audio-o:before, +.fa-file-sound-o:before { + content: '\f1c7'; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: '\f1c8'; +} +.fa-file-code-o:before { + content: '\f1c9'; +} +.fa-vine:before { + content: '\f1ca'; +} +.fa-codepen:before { + content: '\f1cb'; +} +.fa-jsfiddle:before { + content: '\f1cc'; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-ring:before, +.fa-life-saver:before, +.fa-support:before { + content: '\f1cd'; +} +.fa-circle-o-notch:before { + content: '\f1ce'; +} +.fa-ra:before, +.fa-rebel:before, +.fa-resistance:before { + content: '\f1d0'; +} +.fa-empire:before, +.fa-ge:before { + content: '\f1d1'; +} +.fa-git-square:before { + content: '\f1d2'; +} +.fa-git:before { + content: '\f1d3'; +} +.fa-hacker-news:before, +.fa-y-combinator-square:before, +.fa-yc-square:before { + content: '\f1d4'; +} +.fa-tencent-weibo:before { + content: '\f1d5'; +} +.fa-qq:before { + content: '\f1d6'; +} +.fa-wechat:before, +.fa-weixin:before { + content: '\f1d7'; +} +.fa-paper-plane:before, +.fa-send:before { + content: '\f1d8'; +} +.fa-paper-plane-o:before, +.fa-send-o:before { + content: '\f1d9'; +} +.fa-history:before { + content: '\f1da'; +} +.fa-circle-thin:before { + content: '\f1db'; +} +.fa-header:before { + content: '\f1dc'; +} +.fa-paragraph:before { + content: '\f1dd'; +} +.fa-sliders:before { + content: '\f1de'; +} +.fa-share-alt:before { + content: '\f1e0'; +} +.fa-share-alt-square:before { + content: '\f1e1'; +} +.fa-bomb:before { + content: '\f1e2'; +} +.fa-futbol-o:before, +.fa-soccer-ball-o:before { + content: '\f1e3'; +} +.fa-tty:before { + content: '\f1e4'; +} +.fa-binoculars:before { + content: '\f1e5'; +} +.fa-plug:before { + content: '\f1e6'; +} +.fa-slideshare:before { + content: '\f1e7'; +} +.fa-twitch:before { + content: '\f1e8'; +} +.fa-yelp:before { + content: '\f1e9'; +} +.fa-newspaper-o:before { + content: '\f1ea'; +} +.fa-wifi:before { + content: '\f1eb'; +} +.fa-calculator:before { + content: '\f1ec'; +} +.fa-paypal:before { + content: '\f1ed'; +} +.fa-google-wallet:before { + content: '\f1ee'; +} +.fa-cc-visa:before { + content: '\f1f0'; +} +.fa-cc-mastercard:before { + content: '\f1f1'; +} +.fa-cc-discover:before { + content: '\f1f2'; +} +.fa-cc-amex:before { + content: '\f1f3'; +} +.fa-cc-paypal:before { + content: '\f1f4'; +} +.fa-cc-stripe:before { + content: '\f1f5'; +} +.fa-bell-slash:before { + content: '\f1f6'; +} +.fa-bell-slash-o:before { + content: '\f1f7'; +} +.fa-trash:before { + content: '\f1f8'; +} +.fa-copyright:before { + content: '\f1f9'; +} +.fa-at:before { + content: '\f1fa'; +} +.fa-eyedropper:before { + content: '\f1fb'; +} +.fa-paint-brush:before { + content: '\f1fc'; +} +.fa-birthday-cake:before { + content: '\f1fd'; +} +.fa-area-chart:before { + content: '\f1fe'; +} +.fa-pie-chart:before { + content: '\f200'; +} +.fa-line-chart:before { + content: '\f201'; +} +.fa-lastfm:before { + content: '\f202'; +} +.fa-lastfm-square:before { + content: '\f203'; +} +.fa-toggle-off:before { + content: '\f204'; +} +.fa-toggle-on:before { + content: '\f205'; +} +.fa-bicycle:before { + content: '\f206'; +} +.fa-bus:before { + content: '\f207'; +} +.fa-ioxhost:before { + content: '\f208'; +} +.fa-angellist:before { + content: '\f209'; +} +.fa-cc:before { + content: '\f20a'; +} +.fa-ils:before, +.fa-shekel:before, +.fa-sheqel:before { + content: '\f20b'; +} +.fa-meanpath:before { + content: '\f20c'; +} +.fa-buysellads:before { + content: '\f20d'; +} +.fa-connectdevelop:before { + content: '\f20e'; +} +.fa-dashcube:before { + content: '\f210'; +} +.fa-forumbee:before { + content: '\f211'; +} +.fa-leanpub:before { + content: '\f212'; +} +.fa-sellsy:before { + content: '\f213'; +} +.fa-shirtsinbulk:before { + content: '\f214'; +} +.fa-simplybuilt:before { + content: '\f215'; +} +.fa-skyatlas:before { + content: '\f216'; +} +.fa-cart-plus:before { + content: '\f217'; +} +.fa-cart-arrow-down:before { + content: '\f218'; +} +.fa-diamond:before { + content: '\f219'; +} +.fa-ship:before { + content: '\f21a'; +} +.fa-user-secret:before { + content: '\f21b'; +} +.fa-motorcycle:before { + content: '\f21c'; +} +.fa-street-view:before { + content: '\f21d'; +} +.fa-heartbeat:before { + content: '\f21e'; +} +.fa-venus:before { + content: '\f221'; +} +.fa-mars:before { + content: '\f222'; +} +.fa-mercury:before { + content: '\f223'; +} +.fa-intersex:before, +.fa-transgender:before { + content: '\f224'; +} +.fa-transgender-alt:before { + content: '\f225'; +} +.fa-venus-double:before { + content: '\f226'; +} +.fa-mars-double:before { + content: '\f227'; +} +.fa-venus-mars:before { + content: '\f228'; +} +.fa-mars-stroke:before { + content: '\f229'; +} +.fa-mars-stroke-v:before { + content: '\f22a'; +} +.fa-mars-stroke-h:before { + content: '\f22b'; +} +.fa-neuter:before { + content: '\f22c'; +} +.fa-genderless:before { + content: '\f22d'; +} +.fa-facebook-official:before { + content: '\f230'; +} +.fa-pinterest-p:before { + content: '\f231'; +} +.fa-whatsapp:before { + content: '\f232'; +} +.fa-server:before { + content: '\f233'; +} +.fa-user-plus:before { + content: '\f234'; +} +.fa-user-times:before { + content: '\f235'; +} +.fa-bed:before, +.fa-hotel:before { + content: '\f236'; +} +.fa-viacoin:before { + content: '\f237'; +} +.fa-train:before { + content: '\f238'; +} +.fa-subway:before { + content: '\f239'; +} +.fa-medium:before { + content: '\f23a'; +} +.fa-y-combinator:before, +.fa-yc:before { + content: '\f23b'; +} +.fa-optin-monster:before { + content: '\f23c'; +} +.fa-opencart:before { + content: '\f23d'; +} +.fa-expeditedssl:before { + content: '\f23e'; +} +.fa-battery-4:before, +.fa-battery-full:before, +.fa-battery:before { + content: '\f240'; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: '\f241'; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: '\f242'; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: '\f243'; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: '\f244'; +} +.fa-mouse-pointer:before { + content: '\f245'; +} +.fa-i-cursor:before { + content: '\f246'; +} +.fa-object-group:before { + content: '\f247'; +} +.fa-object-ungroup:before { + content: '\f248'; +} +.fa-sticky-note:before { + content: '\f249'; +} +.fa-sticky-note-o:before { + content: '\f24a'; +} +.fa-cc-jcb:before { + content: '\f24b'; +} +.fa-cc-diners-club:before { + content: '\f24c'; +} +.fa-clone:before { + content: '\f24d'; +} +.fa-balance-scale:before { + content: '\f24e'; +} +.fa-hourglass-o:before { + content: '\f250'; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: '\f251'; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: '\f252'; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: '\f253'; +} +.fa-hourglass:before { + content: '\f254'; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: '\f255'; +} +.fa-hand-paper-o:before, +.fa-hand-stop-o:before { + content: '\f256'; +} +.fa-hand-scissors-o:before { + content: '\f257'; +} +.fa-hand-lizard-o:before { + content: '\f258'; +} +.fa-hand-spock-o:before { + content: '\f259'; +} +.fa-hand-pointer-o:before { + content: '\f25a'; +} +.fa-hand-peace-o:before { + content: '\f25b'; +} +.fa-trademark:before { + content: '\f25c'; +} +.fa-registered:before { + content: '\f25d'; +} +.fa-creative-commons:before { + content: '\f25e'; +} +.fa-gg:before { + content: '\f260'; +} +.fa-gg-circle:before { + content: '\f261'; +} +.fa-tripadvisor:before { + content: '\f262'; +} +.fa-odnoklassniki:before { + content: '\f263'; +} +.fa-odnoklassniki-square:before { + content: '\f264'; +} +.fa-get-pocket:before { + content: '\f265'; +} +.fa-wikipedia-w:before { + content: '\f266'; +} +.fa-safari:before { + content: '\f267'; +} +.fa-chrome:before { + content: '\f268'; +} +.fa-firefox:before { + content: '\f269'; +} +.fa-opera:before { + content: '\f26a'; +} +.fa-internet-explorer:before { + content: '\f26b'; +} +.fa-television:before, +.fa-tv:before { + content: '\f26c'; +} +.fa-contao:before { + content: '\f26d'; +} +.fa-500px:before { + content: '\f26e'; +} +.fa-amazon:before { + content: '\f270'; +} +.fa-calendar-plus-o:before { + content: '\f271'; +} +.fa-calendar-minus-o:before { + content: '\f272'; +} +.fa-calendar-times-o:before { + content: '\f273'; +} +.fa-calendar-check-o:before { + content: '\f274'; +} +.fa-industry:before { + content: '\f275'; +} +.fa-map-pin:before { + content: '\f276'; +} +.fa-map-signs:before { + content: '\f277'; +} +.fa-map-o:before { + content: '\f278'; +} +.fa-map:before { + content: '\f279'; +} +.fa-commenting:before { + content: '\f27a'; +} +.fa-commenting-o:before { + content: '\f27b'; +} +.fa-houzz:before { + content: '\f27c'; +} +.fa-vimeo:before { + content: '\f27d'; +} +.fa-black-tie:before { + content: '\f27e'; +} +.fa-fonticons:before { + content: '\f280'; +} +.fa-reddit-alien:before { + content: '\f281'; +} +.fa-edge:before { + content: '\f282'; +} +.fa-credit-card-alt:before { + content: '\f283'; +} +.fa-codiepie:before { + content: '\f284'; +} +.fa-modx:before { + content: '\f285'; +} +.fa-fort-awesome:before { + content: '\f286'; +} +.fa-usb:before { + content: '\f287'; +} +.fa-product-hunt:before { + content: '\f288'; +} +.fa-mixcloud:before { + content: '\f289'; +} +.fa-scribd:before { + content: '\f28a'; +} +.fa-pause-circle:before { + content: '\f28b'; +} +.fa-pause-circle-o:before { + content: '\f28c'; +} +.fa-stop-circle:before { + content: '\f28d'; +} +.fa-stop-circle-o:before { + content: '\f28e'; +} +.fa-shopping-bag:before { + content: '\f290'; +} +.fa-shopping-basket:before { + content: '\f291'; +} +.fa-hashtag:before { + content: '\f292'; +} +.fa-bluetooth:before { + content: '\f293'; +} +.fa-bluetooth-b:before { + content: '\f294'; +} +.fa-percent:before { + content: '\f295'; +} +.fa-gitlab:before { + content: '\f296'; +} +.fa-wpbeginner:before { + content: '\f297'; +} +.fa-wpforms:before { + content: '\f298'; +} +.fa-envira:before { + content: '\f299'; +} +.fa-universal-access:before { + content: '\f29a'; +} +.fa-wheelchair-alt:before { + content: '\f29b'; +} +.fa-question-circle-o:before { + content: '\f29c'; +} +.fa-blind:before { + content: '\f29d'; +} +.fa-audio-description:before { + content: '\f29e'; +} +.fa-volume-control-phone:before { + content: '\f2a0'; +} +.fa-braille:before { + content: '\f2a1'; +} +.fa-assistive-listening-systems:before { + content: '\f2a2'; +} +.fa-american-sign-language-interpreting:before, +.fa-asl-interpreting:before { + content: '\f2a3'; +} +.fa-deaf:before, +.fa-deafness:before, +.fa-hard-of-hearing:before { + content: '\f2a4'; +} +.fa-glide:before { + content: '\f2a5'; +} +.fa-glide-g:before { + content: '\f2a6'; +} +.fa-sign-language:before, +.fa-signing:before { + content: '\f2a7'; +} +.fa-low-vision:before { + content: '\f2a8'; +} +.fa-viadeo:before { + content: '\f2a9'; +} +.fa-viadeo-square:before { + content: '\f2aa'; +} +.fa-snapchat:before { + content: '\f2ab'; +} +.fa-snapchat-ghost:before { + content: '\f2ac'; +} +.fa-snapchat-square:before { + content: '\f2ad'; +} +.fa-pied-piper:before { + content: '\f2ae'; +} +.fa-first-order:before { + content: '\f2b0'; +} +.fa-yoast:before { + content: '\f2b1'; +} +.fa-themeisle:before { + content: '\f2b2'; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: '\f2b3'; +} +.fa-fa:before, +.fa-font-awesome:before { + content: '\f2b4'; +} +.fa-handshake-o:before { + content: '\f2b5'; +} +.fa-envelope-open:before { + content: '\f2b6'; +} +.fa-envelope-open-o:before { + content: '\f2b7'; +} +.fa-linode:before { + content: '\f2b8'; +} +.fa-address-book:before { + content: '\f2b9'; +} +.fa-address-book-o:before { + content: '\f2ba'; +} +.fa-address-card:before, +.fa-vcard:before { + content: '\f2bb'; +} +.fa-address-card-o:before, +.fa-vcard-o:before { + content: '\f2bc'; +} +.fa-user-circle:before { + content: '\f2bd'; +} +.fa-user-circle-o:before { + content: '\f2be'; +} +.fa-user-o:before { + content: '\f2c0'; +} +.fa-id-badge:before { + content: '\f2c1'; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: '\f2c2'; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: '\f2c3'; +} +.fa-quora:before { + content: '\f2c4'; +} +.fa-free-code-camp:before { + content: '\f2c5'; +} +.fa-telegram:before { + content: '\f2c6'; +} +.fa-thermometer-4:before, +.fa-thermometer-full:before, +.fa-thermometer:before { + content: '\f2c7'; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: '\f2c8'; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: '\f2c9'; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: '\f2ca'; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: '\f2cb'; +} +.fa-shower:before { + content: '\f2cc'; +} +.fa-bath:before, +.fa-bathtub:before, +.fa-s15:before { + content: '\f2cd'; +} +.fa-podcast:before { + content: '\f2ce'; +} +.fa-window-maximize:before { + content: '\f2d0'; +} +.fa-window-minimize:before { + content: '\f2d1'; +} +.fa-window-restore:before { + content: '\f2d2'; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: '\f2d3'; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: '\f2d4'; +} +.fa-bandcamp:before { + content: '\f2d5'; +} +.fa-grav:before { + content: '\f2d6'; +} +.fa-etsy:before { + content: '\f2d7'; +} +.fa-imdb:before { + content: '\f2d8'; +} +.fa-ravelry:before { + content: '\f2d9'; +} +.fa-eercast:before { + content: '\f2da'; +} +.fa-microchip:before { + content: '\f2db'; +} +.fa-snowflake-o:before { + content: '\f2dc'; +} +.fa-superpowers:before { + content: '\f2dd'; +} +.fa-wpexplorer:before { + content: '\f2de'; +} +.fa-meetup:before { + content: '\f2e0'; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +/*! + * AdminLTE v2.4.18 + * + * Author: Colorlib + * Support: + * Repository: git://github.com/ColorlibHQ/AdminLTE.git + * License: MIT + */ +.layout-boxed body, +.layout-boxed html, +body, +html { + height: 100%; +} +body { + font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; +} +.wrapper, +body { + overflow-x: hidden; + overflow-y: auto; +} +.wrapper { + height: 100%; + position: relative; +} +.wrapper:after, +.wrapper:before { + content: ' '; + display: table; +} +.wrapper:after { + clear: both; +} +.layout-boxed .wrapper { + max-width: 1250px; + margin: 0 auto; + min-height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); + position: relative; +} +.layout-boxed { + background-color: #f9fafc; +} +.content-wrapper, +.main-footer { + -webkit-transition: -webkit-transform 0.3s ease-in-out, + margin 0.3s ease-in-out; + -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; + -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; + transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; + margin-left: 230px; + z-index: 820; +} +.layout-top-nav .content-wrapper, +.layout-top-nav .main-footer { + margin-left: 0; +} +@media (max-width: 767px) { + .content-wrapper, + .main-footer { + margin-left: 0; + } +} +@media (min-width: 768px) { + .sidebar-collapse .content-wrapper, + .sidebar-collapse .main-footer { + margin-left: 0; + } +} +@media (max-width: 767px) { + .sidebar-open .content-wrapper, + .sidebar-open .main-footer { + -webkit-transform: translate(230px); + -ms-transform: translate(230px); + -o-transform: translate(230px); + transform: translate(230px); + } +} +.content-wrapper { + min-height: calc(100vh - 101px); + background-color: #ecf0f5; + z-index: 800; +} +@media (max-width: 767px) { + .content-wrapper { + min-height: calc(100vh - 151px); + } +} +.main-footer { + background: #fff; + padding: 15px; + color: #444; + border-top: 1px solid #d2d6de; +} +.fixed .left-side, +.fixed .main-header, +.fixed .main-sidebar { + position: fixed; +} +.fixed .main-header { + top: 0; + right: 0; + left: 0; +} +.fixed .content-wrapper, +.fixed .right-side { + padding-top: 50px; +} +@media (max-width: 767px) { + .fixed .content-wrapper, + .fixed .right-side { + padding-top: 100px; + } +} +.fixed.layout-boxed .wrapper { + max-width: 100%; +} +.fixed .wrapper { + overflow: hidden; +} +.hold-transition .content-wrapper, +.hold-transition .left-side, +.hold-transition .main-footer, +.hold-transition .main-header .logo, +.hold-transition .main-header .navbar, +.hold-transition .main-sidebar, +.hold-transition .menu-open .fa-angle-left, +.hold-transition .right-side { + -webkit-transition: none; + -o-transition: none; + transition: none; +} +.content { + min-height: 250px; + padding: 15px; + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Source Sans Pro, sans-serif; +} +a { + color: #3c8dbc; +} +a:active, +a:focus, +a:hover { + outline: none; + text-decoration: none; + color: #72afd2; +} +.page-header { + margin: 10px 0 20px; + font-size: 22px; +} +.page-header > small { + color: #666; + display: block; + margin-top: 5px; +} +.main-header { + position: relative; + max-height: 100px; + z-index: 1030; +} +.main-header .navbar { + -webkit-transition: margin-left 0.3s ease-in-out; + -o-transition: margin-left 0.3s ease-in-out; + transition: margin-left 0.3s ease-in-out; + margin-bottom: 0; + margin-left: 230px; + border: none; + min-height: 50px; + border-radius: 0; +} +.layout-top-nav .main-header .navbar { + margin-left: 0; +} +.main-header #navbar-search-input.form-control { + background: hsla(0, 0%, 100%, 0.2); + border-color: transparent; +} +.main-header #navbar-search-input.form-control:active, +.main-header #navbar-search-input.form-control:focus { + border-color: rgba(0, 0, 0, 0.1); + background: hsla(0, 0%, 100%, 0.9); +} +.main-header #navbar-search-input.form-control::-moz-placeholder { + color: #ccc; + opacity: 1; +} +.main-header #navbar-search-input.form-control:-ms-input-placeholder { + color: #ccc; +} +.main-header #navbar-search-input.form-control::-webkit-input-placeholder { + color: #ccc; +} +.main-header .navbar-custom-menu, +.main-header .navbar-right { + float: right; +} +@media (max-width: 991px) { + .main-header .navbar-custom-menu a, + .main-header .navbar-right a { + color: inherit; + background: transparent; + } +} +@media (max-width: 767px) { + .main-header .navbar-right { + float: none; + } + .navbar-collapse .main-header .navbar-right { + margin: 7.5px -15px; + } + .main-header .navbar-right > li { + color: inherit; + border: 0; + } +} +.main-header .sidebar-toggle { + float: left; + background-color: transparent; + background-image: none; + padding: 15px; + font-family: fontAwesome; +} +.main-header .sidebar-toggle:before { + content: '\f0c9'; +} +.main-header .sidebar-toggle:hover { + color: #fff; +} +.main-header .sidebar-toggle:active, +.main-header .sidebar-toggle:focus { + background: transparent; +} +.main-header .sidebar-toggle.fa5 { + font-family: Font Awesome\\5 Free; +} +.main-header .sidebar-toggle.fa5:before { + content: '\f0c9'; + font-weight: 900; +} +.main-header .sidebar-toggle .icon-bar { + display: none; +} +.main-header .navbar .nav > li.user > a > .fa, +.main-header .navbar .nav > li.user > a > .glyphicon, +.main-header .navbar .nav > li.user > a > .ion { + margin-right: 5px; +} +.main-header .navbar .nav > li > a > .label { + position: absolute; + top: 9px; + right: 7px; + text-align: center; + font-size: 9px; + padding: 2px 3px; + line-height: 0.9; +} +.main-header .logo { + -webkit-transition: width 0.3s ease-in-out; + -o-transition: width 0.3s ease-in-out; + transition: width 0.3s ease-in-out; + display: block; + float: left; + height: 50px; + font-size: 20px; + line-height: 50px; + text-align: center; + width: 230px; + font-family: Helvetica Neue, Helvetica, Arial, sans-serif; + padding: 0 15px; + font-weight: 300; + overflow: hidden; +} +.main-header .logo img { + padding: 4px; + object-fit: contain; + margin: 0 auto; +} +.main-header .logo .logo-lg { + display: block; +} +.main-header .logo .logo-lg img { + max-width: 200px; + max-height: 50px; +} +.main-header .logo .logo-lg .brandlogo-image { + margin-top: 8px; + margin-right: 10px; + margin-left: -5px; +} +.main-header .logo .logo-mini { + display: none; +} +.main-header .logo .logo-mini img { + max-width: 50px; + max-height: 50px; +} +.main-header .logo .logo-mini .brandlogo-image { + margin-top: 8px; + margin-right: 10px; + margin-left: 10px; +} +.main-header .logo .brandlogo-image { + float: left; + height: 34px; + width: auto; +} +.main-header .navbar-brand { + color: #fff; +} +.content-header { + position: relative; + padding: 15px 15px 0; +} +.content-header > h1 { + margin: 0; + font-size: 24px; +} +.content-header > h1 > small { + font-size: 15px; + display: inline-block; + padding-left: 4px; + font-weight: 300; +} +.content-header > .breadcrumb { + float: right; + background: transparent; + margin-top: 0; + margin-bottom: 0; + font-size: 12px; + padding: 7px 5px; + position: absolute; + top: 15px; + right: 10px; + border-radius: 2px; +} +.content-header > .breadcrumb > li > a { + color: #444; + text-decoration: none; + display: inline-block; +} +.content-header > .breadcrumb > li > a > .fa, +.content-header > .breadcrumb > li > a > .glyphicon, +.content-header > .breadcrumb > li > a > .ion { + margin-right: 5px; +} +.content-header > .breadcrumb > li + li:before { + content: '>\00a0'; +} +@media (max-width: 991px) { + .content-header > .breadcrumb { + position: relative; + margin-top: 5px; + top: 0; + right: 0; + float: none; + background: #d2d6de; + padding-left: 10px; + } + .content-header > .breadcrumb li:before { + color: #97a0b3; + } +} +.navbar-toggle { + color: #fff; + border: 0; + margin: 0; + padding: 15px; +} +@media (max-width: 991px) { + .navbar-custom-menu .navbar-nav > li { + float: left; + } + .navbar-custom-menu .navbar-nav { + margin: 0; + float: left; + } + .navbar-custom-menu .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + line-height: 20px; + } +} +@media (max-width: 767px) { + .main-header { + position: relative; + } + .main-header .logo, + .main-header .navbar { + width: 100%; + float: none; + } + .main-header .navbar { + margin: 0; + } + .main-header .navbar-custom-menu { + float: right; + } +} +@media (max-width: 991px) { + .navbar-collapse.pull-left { + float: none !important; + } + .navbar-collapse.pull-left + .navbar-custom-menu { + display: block; + position: absolute; + top: 0; + right: 40px; + } +} +.main-sidebar { + position: absolute; + top: 0; + left: 0; + padding-top: 50px; + min-height: 100%; + width: 230px; + z-index: 810; + -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; + -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; + -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; + transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; +} +@media (max-width: 767px) { + .main-sidebar { + padding-top: 100px; + -webkit-transform: translate(-230px); + -ms-transform: translate(-230px); + -o-transform: translate(-230px); + transform: translate(-230px); + } +} +@media (min-width: 768px) { + .sidebar-collapse .main-sidebar { + -webkit-transform: translate(-230px); + -ms-transform: translate(-230px); + -o-transform: translate(-230px); + transform: translate(-230px); + } +} +@media (max-width: 767px) { + .sidebar-open .main-sidebar { + -webkit-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); + } +} +.sidebar { + padding-bottom: 10px; +} +.sidebar-form input:focus { + border-color: transparent; +} +.user-panel { + position: relative; + width: 100%; + padding: 10px; + overflow: hidden; +} +.user-panel:after, +.user-panel:before { + content: ' '; + display: table; +} +.user-panel:after { + clear: both; +} +.user-panel > .image > img { + width: 100%; + max-width: 45px; + height: auto; +} +.user-panel > .info { + padding: 5px 5px 5px 15px; + line-height: 1; + position: absolute; + left: 55px; +} +.user-panel > .info > p { + font-weight: 600; + margin-bottom: 9px; +} +.user-panel > .info > a { + text-decoration: none; + padding-right: 5px; + margin-top: 3px; + font-size: 11px; +} +.user-panel > .info > a > .fa, +.user-panel > .info > a > .glyphicon, +.user-panel > .info > a > .ion { + margin-right: 3px; +} +.sidebar-menu { + list-style: none; + margin: 0; + padding: 0; +} +.sidebar-menu > li { + position: relative; + margin: 0; + padding: 0; +} +.sidebar-menu > li > a { + padding: 12px 5px 12px 15px; + display: block; +} +.sidebar-menu > li > a > .fa, +.sidebar-menu > li > a > .glyphicon, +.sidebar-menu > li > a > .ion { + width: 20px; +} +.sidebar-menu > li .badge, +.sidebar-menu > li .label { + margin-right: 5px; +} +.sidebar-menu > li .badge { + margin-top: 3px; +} +.sidebar-menu li.header { + padding: 10px 25px 10px 15px; + font-size: 12px; +} +.sidebar-menu li > a > .fa-angle-left, +.sidebar-menu li > a > .pull-right-container > .fa-angle-left { + width: auto; + height: auto; + padding: 0; + margin-right: 10px; + -webkit-transition: transform 0.5s ease; + -o-transition: transform 0.5s ease; + transition: transform 0.5s ease; +} +.sidebar-menu li > a > .fa-angle-left { + position: absolute; + top: 50%; + right: 10px; + margin-top: -8px; +} +.sidebar-menu .menu-open > a > .fa-angle-left, +.sidebar-menu .menu-open > a > .pull-right-container > .fa-angle-left { + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.sidebar-menu .active > .treeview-menu { + display: block; +} +@media (min-width: 768px) { + .sidebar-mini.sidebar-collapse .content-wrapper, + .sidebar-mini.sidebar-collapse .main-footer, + .sidebar-mini.sidebar-collapse .right-side { + margin-left: 50px !important; + z-index: 840; + } + .sidebar-mini.sidebar-collapse .main-sidebar { + -webkit-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); + width: 50px !important; + z-index: 850; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li { + position: relative; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { + margin-right: 0; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { + border-top-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { + border-bottom-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { + padding-top: 5px; + padding-bottom: 5px; + border-bottom-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, + .sidebar-mini.sidebar-collapse .sidebar-form, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span > .pull-right, + .sidebar-mini.sidebar-collapse .sidebar-menu li.header { + display: none !important; + -webkit-transform: translateZ(0); + } + .sidebar-mini.sidebar-collapse .main-header .logo { + width: 50px; + } + .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { + display: block; + margin-left: -15px; + margin-right: -15px; + font-size: 18px; + } + .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { + display: none; + } + .sidebar-mini.sidebar-collapse .main-header .navbar { + margin-left: 50px; + } +} +@media (min-width: 768px) { + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > .treeview-menu, + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > a + > span:not(.pull-right) { + display: block !important; + position: absolute; + width: 180px; + left: 50px; + } + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > a + > span { + top: 0; + margin-left: -3px; + padding: 12px 5px 12px 20px; + background-color: inherit; + } + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > a + > .pull-right-container { + position: relative !important; + float: right; + width: auto !important; + left: 180px !important; + top: -22px !important; + z-index: 900; + } + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > a + > .pull-right-container + > .label:not(:first-of-type) { + display: none; + } + .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse + .sidebar-menu + > li:hover + > .treeview-menu { + top: 44px; + margin-left: 0; + } +} +.sidebar-expanded-on-hover .content-wrapper, +.sidebar-expanded-on-hover .main-footer { + margin-left: 50px; +} +.sidebar-expanded-on-hover .main-sidebar { + box-shadow: 3px 0 8px rgba(0, 0, 0, 0.125); +} +.main-sidebar .user-panel, +.sidebar-menu, +.sidebar-menu > li.header { + white-space: nowrap; + overflow: hidden; +} +.sidebar-menu:hover { + overflow: visible; +} +.sidebar-form, +.sidebar-menu > li.header { + overflow: hidden; + text-overflow: clip; +} +.sidebar-menu li > a { + position: relative; +} +.sidebar-menu li > a > .pull-right-container { + position: absolute; + right: 10px; + top: 50%; + margin-top: -7px; +} +.control-sidebar-bg { + position: fixed; + z-index: 1000; + bottom: 0; +} +.control-sidebar, +.control-sidebar-bg { + top: 0; + right: -230px; + width: 230px; + -webkit-transition: right 0.3s ease-in-out; + -o-transition: right 0.3s ease-in-out; + transition: right 0.3s ease-in-out; +} +.control-sidebar { + position: absolute; + padding-top: 50px; + z-index: 1010; +} +@media (max-width: 767px) { + .control-sidebar { + padding-top: 100px; + } +} +.control-sidebar > .tab-content { + padding: 10px 15px; +} +.control-sidebar.control-sidebar-open, +.control-sidebar.control-sidebar-open + .control-sidebar-bg { + right: 0; +} +.control-sidebar-hold-transition .content-wrapper, +.control-sidebar-hold-transition .control-sidebar, +.control-sidebar-hold-transition .control-sidebar-bg { + transition: none; +} +.control-sidebar-open .control-sidebar, +.control-sidebar-open .control-sidebar-bg { + right: 0; +} +@media (min-width: 768px) { + .control-sidebar-open .content-wrapper, + .control-sidebar-open .main-footer, + .control-sidebar-open .right-side { + margin-right: 230px; + } +} +.fixed .control-sidebar { + position: fixed; + height: 100%; + overflow-y: auto; + padding-bottom: 50px; +} +.nav-tabs.control-sidebar-tabs > li:first-of-type > a, +.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus, +.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover { + border-left-width: 0; +} +.nav-tabs.control-sidebar-tabs > li > a { + border-radius: 0; +} +.nav-tabs.control-sidebar-tabs > li > a, +.nav-tabs.control-sidebar-tabs > li > a:hover { + border-top: none; + border-right: none; + border-left: 1px solid transparent; + border-bottom: 1px solid transparent; +} +.nav-tabs.control-sidebar-tabs > li > a .icon { + font-size: 16px; +} +.nav-tabs.control-sidebar-tabs > li.active > a, +.nav-tabs.control-sidebar-tabs > li.active > a:active, +.nav-tabs.control-sidebar-tabs > li.active > a:focus, +.nav-tabs.control-sidebar-tabs > li.active > a:hover { + border-top: none; + border-right: none; + border-bottom: none; +} +@media (max-width: 768px) { + .nav-tabs.control-sidebar-tabs { + display: table; + } + .nav-tabs.control-sidebar-tabs > li { + display: table-cell; + } +} +.control-sidebar-heading { + font-weight: 400; + font-size: 16px; + padding: 10px 0; + margin-bottom: 10px; +} +.control-sidebar-subheading { + display: block; + font-weight: 400; + font-size: 14px; +} +.control-sidebar-menu { + list-style: none; + padding: 0; + margin: 0 -15px; +} +.control-sidebar-menu > li > a { + display: block; + padding: 10px 15px; +} +.control-sidebar-menu > li > a:after, +.control-sidebar-menu > li > a:before { + content: ' '; + display: table; +} +.control-sidebar-menu > li > a:after { + clear: both; +} +.control-sidebar-menu > li > a > .control-sidebar-subheading { + margin-top: 0; +} +.control-sidebar-menu .menu-icon { + float: left; + width: 35px; + height: 35px; + border-radius: 50%; + text-align: center; + line-height: 35px; +} +.control-sidebar-menu .menu-info { + margin-left: 45px; + margin-top: 3px; +} +.control-sidebar-menu .menu-info > .control-sidebar-subheading { + margin: 0; +} +.control-sidebar-menu .menu-info > p { + margin: 0; + font-size: 11px; +} +.control-sidebar-menu .progress { + margin: 0; +} +.control-sidebar-dark { + color: #b8c7ce; +} +.control-sidebar-dark, +.control-sidebar-dark + .control-sidebar-bg { + background: #222d32; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs { + border-bottom: #1c2529; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a { + background: #181f23; + color: #b8c7ce; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { + border-left-color: #141a1d; + border-bottom-color: #141a1d; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { + background: #1c2529; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { + color: #fff; +} +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover { + background: #222d32; + color: #fff; +} +.control-sidebar-dark .control-sidebar-heading, +.control-sidebar-dark .control-sidebar-subheading { + color: #fff; +} +.control-sidebar-dark .control-sidebar-menu > li > a:hover { + background: #1e282c; +} +.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { + color: #b8c7ce; +} +.control-sidebar-light { + color: #5e5e5e; +} +.control-sidebar-light, +.control-sidebar-light + .control-sidebar-bg { + background: #f9fafc; + border-left: 1px solid #d2d6de; +} +.control-sidebar-light .nav-tabs.control-sidebar-tabs { + border-bottom: #d2d6de; +} +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a { + background: #e8ecf4; + color: #444; +} +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover { + border-left-color: #d2d6de; + border-bottom-color: #d2d6de; +} +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover { + background: #eff1f7; +} +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus, +.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover { + background: #f9fafc; + color: #111; +} +.control-sidebar-light .control-sidebar-heading, +.control-sidebar-light .control-sidebar-subheading { + color: #111; +} +.control-sidebar-light .control-sidebar-menu { + margin-left: -14px; +} +.control-sidebar-light .control-sidebar-menu > li > a:hover { + background: #f4f4f5; +} +.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { + color: #5e5e5e; +} +.dropdown-menu { + box-shadow: none; + border-color: #eee; +} +.dropdown-menu > li > a { + color: #777; +} +.dropdown-menu > li > a > .fa, +.dropdown-menu > li > a > .glyphicon, +.dropdown-menu > li > a > .ion { + margin-right: 10px; +} +.dropdown-menu > li > a:hover { + background-color: #e1e3e9; + color: #333; +} +.dropdown-menu > .divider { + background-color: #eee; +} +.navbar-nav > .messages-menu > .dropdown-menu, +.navbar-nav > .notifications-menu > .dropdown-menu, +.navbar-nav > .tasks-menu > .dropdown-menu { + width: 280px; + padding: 0; + margin: 0; + top: 100%; +} +.navbar-nav > .messages-menu > .dropdown-menu > li, +.navbar-nav > .notifications-menu > .dropdown-menu > li, +.navbar-nav > .tasks-menu > .dropdown-menu > li { + position: relative; +} +.navbar-nav > .messages-menu > .dropdown-menu > li.header, +.navbar-nav > .notifications-menu > .dropdown-menu > li.header, +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + background-color: #fff; + padding: 7px 10px; + border-bottom: 1px solid #f4f4f4; + color: #444; + font-size: 14px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, +.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, +.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + font-size: 12px; + background-color: #fff; + padding: 7px 10px; + border-bottom: 1px solid #eee; + color: #444 !important; + text-align: center; +} +@media (max-width: 991px) { + .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, + .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, + .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { + background: #fff !important; + color: #444 !important; + } +} +.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, +.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, +.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { + text-decoration: none; + font-weight: 400; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu { + max-height: 200px; + margin: 0; + padding: 0; + list-style: none; + overflow-x: hidden; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + display: block; + white-space: nowrap; + border-bottom: 1px solid #f4f4f4; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { + background: #f4f4f4; + text-decoration: none; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { + color: #444; + overflow: hidden; + text-overflow: ellipsis; + padding: 10px; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, +.navbar-nav + > .notifications-menu + > .dropdown-menu + > li + .menu + > li + > a + > .glyphicon, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { + width: 20px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { + margin: 0; + padding: 10px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { + margin: auto 10px auto auto; + width: 40px; + height: 40px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { + padding: 0; + margin: 0 0 0 45px; + color: #444; + font-size: 15px; + position: relative; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { + color: #999; + font-size: 10px; + position: absolute; + top: 0; + right: 0; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { + margin: 0 0 0 45px; + font-size: 12px; + color: #888; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after, +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before { + content: ' '; + display: table; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { + clear: both; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + padding: 10px; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { + font-size: 14px; + padding: 0; + margin: 0 0 10px; + color: #666; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { + padding: 0; + margin: 0; +} +.navbar-nav > .user-menu > .dropdown-menu { + border-top-right-radius: 0; + border-top-left-radius: 0; + padding: 1px 0 0; + border-top-width: 0; + width: 280px; +} +.navbar-nav > .user-menu > .dropdown-menu, +.navbar-nav > .user-menu > .dropdown-menu > .user-body { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header { + height: 175px; + padding: 10px; + text-align: center; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { + z-index: 5; + height: 90px; + width: 90px; + border: 3px solid; + border-color: transparent; + border-color: hsla(0, 0%, 100%, 0.2); +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { + z-index: 5; + color: #fff; + color: hsla(0, 0%, 100%, 0.8); + font-size: 17px; + margin-top: 10px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { + display: block; + font-size: 12px; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-body { + padding: 15px; + border-bottom: 1px solid #f4f4f4; + border-top: 1px solid #ddd; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-body:after, +.navbar-nav > .user-menu > .dropdown-menu > .user-body:before { + content: ' '; + display: table; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { + clear: both; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-body a { + color: #444 !important; +} +@media (max-width: 991px) { + .navbar-nav > .user-menu > .dropdown-menu > .user-body a { + background: #fff !important; + color: #444 !important; + } +} +.navbar-nav > .user-menu > .dropdown-menu > .user-footer { + background-color: #f9f9f9; + padding: 10px; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after, +.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before { + content: ' '; + display: table; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { + clear: both; +} +.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { + color: #666; +} +@media (max-width: 991px) { + .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { + background-color: #f9f9f9; + } +} +.navbar-nav > .user-menu .user-image { + float: left; + width: 25px; + height: 25px; + border-radius: 50%; + margin-right: 10px; + margin-top: -2px; +} +@media (max-width: 767px) { + .navbar-nav > .user-menu .user-image { + float: none; + margin-right: 0; + margin-top: -8px; + line-height: 10px; + } +} +.open:not(.dropup) > .animated-dropdown-menu { + backface-visibility: visible !important; + -webkit-animation: flipInX 0.7s both; + -o-animation: flipInX 0.7s both; + animation: flipInX 0.7s both; +} +@keyframes flipInX { + 0% { + transform: perspective(400px) rotateX(90deg); + transition-timing-function: ease-in; + opacity: 0; + } + 40% { + transform: perspective(400px) rotateX(-20deg); + transition-timing-function: ease-in; + } + 60% { + transform: perspective(400px) rotateX(10deg); + opacity: 1; + } + 80% { + transform: perspective(400px) rotateX(-5deg); + } + to { + transform: perspective(400px); + } +} +@-webkit-keyframes flipInX { + 0% { + -webkit-transform: perspective(400px) rotateX(90deg); + -webkit-transition-timing-function: ease-in; + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotateX(-20deg); + -webkit-transition-timing-function: ease-in; + } + 60% { + -webkit-transform: perspective(400px) rotateX(10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotateX(-5deg); + } + to { + -webkit-transform: perspective(400px); + } +} +.navbar-custom-menu > .navbar-nav > li { + position: relative; +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + position: absolute; + right: 0; + left: auto; +} +@media (max-width: 991px) { + .navbar-custom-menu > .navbar-nav { + float: right; + } + .navbar-custom-menu > .navbar-nav > li { + position: static; + } + .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + position: absolute; + right: 5%; + left: auto; + border: 1px solid #ddd; + background: #fff; + } +} +.form-control { + border-radius: 0; + box-shadow: none; + border-color: #d2d6de; +} +.form-control:focus { + border-color: #3c8dbc; + box-shadow: none; +} +.form-control:-ms-input-placeholder, +.form-control::-moz-placeholder, +.form-control::-webkit-input-placeholder { + color: #bbb; + opacity: 1; +} +.form-control:not(select) { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-group.has-success label { + color: #00a65a; +} +.form-group.has-success .form-control, +.form-group.has-success .input-group-addon { + border-color: #00a65a; + box-shadow: none; +} +.form-group.has-success .help-block { + color: #00a65a; +} +.form-group.has-warning label { + color: #f39c12; +} +.form-group.has-warning .form-control, +.form-group.has-warning .input-group-addon { + border-color: #f39c12; + box-shadow: none; +} +.form-group.has-warning .help-block { + color: #f39c12; +} +.form-group.has-error label { + color: #dd4b39; +} +.form-group.has-error .form-control, +.form-group.has-error .input-group-addon { + border-color: #dd4b39; + box-shadow: none; +} +.form-group.has-error .help-block { + color: #dd4b39; +} +.input-group .input-group-addon { + border-radius: 0; + border-color: #d2d6de; + background-color: #fff; +} +.btn-group-vertical .btn.btn-flat:first-of-type, +.btn-group-vertical .btn.btn-flat:last-of-type { + border-radius: 0; +} +.icheck > label { + padding-left: 0; +} +.form-control-feedback.fa { + line-height: 34px; +} +.form-group-lg .form-control + .form-control-feedback.fa, +.input-group-lg + .form-control-feedback.fa, +.input-lg + .form-control-feedback.fa { + line-height: 46px; +} +.form-group-sm .form-control + .form-control-feedback.fa, +.input-group-sm + .form-control-feedback.fa, +.input-sm + .form-control-feedback.fa { + line-height: 30px; +} +.progress, +.progress > .progress-bar { + -webkit-box-shadow: none; + box-shadow: none; +} +.progress, +.progress .progress-bar, +.progress > .progress-bar, +.progress > .progress-bar .progress-bar { + border-radius: 1px; +} +.progress-sm, +.progress.sm { + height: 10px; +} +.progress-sm, +.progress-sm .progress-bar, +.progress.sm, +.progress.sm .progress-bar { + border-radius: 1px; +} +.progress-xs, +.progress.xs { + height: 7px; +} +.progress-xs, +.progress-xs .progress-bar, +.progress.xs, +.progress.xs .progress-bar { + border-radius: 1px; +} +.progress-xxs, +.progress.xxs { + height: 3px; +} +.progress-xxs, +.progress-xxs .progress-bar, +.progress.xxs, +.progress.xxs .progress-bar { + border-radius: 1px; +} +.progress.vertical { + position: relative; + width: 30px; + height: 200px; + display: inline-block; + margin-right: 10px; +} +.progress.vertical > .progress-bar { + width: 100%; + position: absolute; + bottom: 0; +} +.progress.vertical.progress-sm, +.progress.vertical.sm { + width: 20px; +} +.progress.vertical.progress-xs, +.progress.vertical.xs { + width: 10px; +} +.progress.vertical.progress-xxs, +.progress.vertical.xxs { + width: 3px; +} +.progress-group .progress-text { + font-weight: 600; +} +.progress-group .progress-number { + float: right; +} +.table tr > td .progress { + margin: 0; +} +.progress-bar-light-blue, +.progress-bar-primary { + background-color: #3c8dbc; +} +.progress-striped .progress-bar-light-blue, +.progress-striped .progress-bar-primary { + background-image: -webkit-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 25%, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 50%, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); +} +.progress-bar-green, +.progress-bar-success { + background-color: #00a65a; +} +.progress-striped .progress-bar-green, +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 25%, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 50%, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); +} +.progress-bar-aqua, +.progress-bar-info { + background-color: #00c0ef; +} +.progress-striped .progress-bar-aqua, +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 25%, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 50%, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); +} +.progress-bar-warning, +.progress-bar-yellow { + background-color: #f39c12; +} +.progress-striped .progress-bar-warning, +.progress-striped .progress-bar-yellow { + background-image: -webkit-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 25%, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 50%, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); +} +.progress-bar-danger, +.progress-bar-red { + background-color: #dd4b39; +} +.progress-striped .progress-bar-danger, +.progress-striped .progress-bar-red { + background-image: -webkit-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 25%, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 50%, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + hsla(0, 0%, 100%, 0.15) 25%, + transparent 0, + transparent 50%, + hsla(0, 0%, 100%, 0.15) 0, + hsla(0, 0%, 100%, 0.15) 75%, + transparent 0, + transparent + ); +} +.small-box { + border-radius: 2px; + position: relative; + display: block; + margin-bottom: 20px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.small-box > .inner { + padding: 10px; +} +.small-box > .small-box-footer { + position: relative; + text-align: center; + padding: 3px 0; + color: #fff; + color: hsla(0, 0%, 100%, 0.8); + display: block; + z-index: 10; + background: rgba(0, 0, 0, 0.1); + text-decoration: none; +} +.small-box > .small-box-footer:hover { + color: #fff; + background: rgba(0, 0, 0, 0.15); +} +.small-box h3 { + font-size: 38px; + font-weight: 700; + margin: 0 0 10px; + white-space: nowrap; + padding: 0; +} +.small-box p { + font-size: 15px; +} +.small-box p > small { + display: block; + color: #f9f9f9; + font-size: 13px; + margin-top: 5px; +} +.small-box h3, +.small-box p { + z-index: 5; +} +.small-box .icon { + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + position: absolute; + top: -10px; + right: 10px; + z-index: 0; + font-size: 90px; + color: rgba(0, 0, 0, 0.15); +} +.small-box:hover { + text-decoration: none; + color: #f9f9f9; +} +.small-box:hover .icon { + font-size: 95px; +} +@media (max-width: 767px) { + .small-box { + text-align: center; + } + .small-box .icon { + display: none; + } + .small-box p { + font-size: 12px; + } +} +.box { + position: relative; + border-radius: 3px; + background: #fff; + border-top: 3px solid #d2d6de; + margin-bottom: 20px; + width: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.box.box-primary { + border-top-color: #3c8dbc; +} +.box.box-info { + border-top-color: #00c0ef; +} +.box.box-danger { + border-top-color: #dd4b39; +} +.box.box-warning { + border-top-color: #f39c12; +} +.box.box-success { + border-top-color: #00a65a; +} +.box.box-default { + border-top-color: #d2d6de; +} +.box.collapsed-box .box-body, +.box.collapsed-box .box-footer { + display: none; +} +.box .nav-stacked > li { + border-bottom: 1px solid #f4f4f4; + margin: 0; +} +.box .nav-stacked > li:last-of-type { + border-bottom: none; +} +.box.height-control .box-body { + max-height: 300px; + overflow: auto; +} +.box .border-right { + border-right: 1px solid #f4f4f4; +} +.box .border-left { + border-left: 1px solid #f4f4f4; +} +.box.box-solid { + border-top: 0; +} +.box.box-solid > .box-header .btn.btn-default { + background: transparent; +} +.box.box-solid > .box-header .btn:hover, +.box.box-solid > .box-header a:hover { + background: rgba(0, 0, 0, 0.1); +} +.box.box-solid.box-default { + border: 1px solid #d2d6de; +} +.box.box-solid.box-default > .box-header { + color: #444; + background: #d2d6de; + background-color: #d2d6de; +} +.box.box-solid.box-default > .box-header .btn, +.box.box-solid.box-default > .box-header a { + color: #444; +} +.box.box-solid.box-primary { + border: 1px solid #3c8dbc; +} +.box.box-solid.box-primary > .box-header { + color: #fff; + background: #3c8dbc; + background-color: #3c8dbc; +} +.box.box-solid.box-primary > .box-header .btn, +.box.box-solid.box-primary > .box-header a { + color: #fff; +} +.box.box-solid.box-info { + border: 1px solid #00c0ef; +} +.box.box-solid.box-info > .box-header { + color: #fff; + background: #00c0ef; + background-color: #00c0ef; +} +.box.box-solid.box-info > .box-header .btn, +.box.box-solid.box-info > .box-header a { + color: #fff; +} +.box.box-solid.box-danger { + border: 1px solid #dd4b39; +} +.box.box-solid.box-danger > .box-header { + color: #fff; + background: #dd4b39; + background-color: #dd4b39; +} +.box.box-solid.box-danger > .box-header .btn, +.box.box-solid.box-danger > .box-header a { + color: #fff; +} +.box.box-solid.box-warning { + border: 1px solid #f39c12; +} +.box.box-solid.box-warning > .box-header { + color: #fff; + background: #f39c12; + background-color: #f39c12; +} +.box.box-solid.box-warning > .box-header .btn, +.box.box-solid.box-warning > .box-header a { + color: #fff; +} +.box.box-solid.box-success { + border: 1px solid #00a65a; +} +.box.box-solid.box-success > .box-header { + color: #fff; + background: #00a65a; + background-color: #00a65a; +} +.box.box-solid.box-success > .box-header .btn, +.box.box-solid.box-success > .box-header a { + color: #fff; +} +.box.box-solid > .box-header > .box-tools .btn { + border: 0; + box-shadow: none; +} +.box.box-solid[class*='bg'] > .box-header { + color: #fff; +} +.box .box-group > .box { + margin-bottom: 5px; +} +.box .knob-label { + text-align: center; + color: #333; + font-weight: 100; + font-size: 12px; + margin-bottom: 0.3em; +} +.box > .loading-img, +.box > .overlay, +.overlay-wrapper > .loading-img, +.overlay-wrapper > .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.box .overlay, +.overlay-wrapper .overlay { + z-index: 50; + background: hsla(0, 0%, 100%, 0.7); + border-radius: 3px; +} +.box .overlay > .fa, +.overlay-wrapper .overlay > .fa { + position: absolute; + top: 50%; + left: 50%; + margin-left: -15px; + margin-top: -15px; + color: #000; + font-size: 30px; +} +.box .overlay.dark, +.overlay-wrapper .overlay.dark { + background: rgba(0, 0, 0, 0.5); +} +.box-body:after, +.box-body:before, +.box-footer:after, +.box-footer:before, +.box-header:after, +.box-header:before { + content: ' '; + display: table; +} +.box-body:after, +.box-footer:after, +.box-header:after { + clear: both; +} +.box-header { + color: #444; + display: block; + padding: 10px; + position: relative; +} +.box-header.with-border { + border-bottom: 1px solid #f4f4f4; +} +.collapsed-box .box-header.with-border { + border-bottom: none; +} +.box-header .box-title, +.box-header > .fa, +.box-header > .glyphicon, +.box-header > .ion { + display: inline-block; + font-size: 18px; + margin: 0; + line-height: 1; +} +.box-header > .fa, +.box-header > .glyphicon, +.box-header > .ion { + margin-right: 5px; +} +.box-header > .box-tools { + float: right; + margin-top: -5px; + margin-bottom: -5px; +} +.box-header > .box-tools [data-toggle='tooltip'] { + position: relative; +} +.box-header > .box-tools.pull-right .dropdown-menu { + right: 0; + left: auto; +} +.box-header > .box-tools .dropdown-menu > li > a { + color: #444 !important; +} +.btn-box-tool { + padding: 5px; + font-size: 12px; + background: transparent; + color: #97a0b3; +} +.btn-box-tool:hover, +.open .btn-box-tool { + color: #606c84; +} +.btn-box-tool.btn:active { + box-shadow: none; +} +.box-body { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + padding: 10px; +} +.no-header .box-body { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.box-body > .table { + margin-bottom: 0; +} +.box-body .fc { + margin-top: 5px; +} +.box-body .full-width-chart { + margin: -19px; +} +.box-body.no-padding .full-width-chart { + margin: -9px; +} +.box-body .box-pane { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; +} +.box-body .box-pane-right { + border-bottom-left-radius: 0; +} +.box-body .box-pane-right, +.box-footer { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 3px; +} +.box-footer { + border-bottom-left-radius: 3px; + border-top: 1px solid #f4f4f4; + padding: 10px; + background-color: #fff; +} +.chart-legend { + margin: 10px 0; +} +@media (max-width: 991px) { + .chart-legend > li { + float: left; + margin-right: 10px; + } +} +.box-comments { + background: #f7f7f7; +} +.box-comments .box-comment { + padding: 8px 0; + border-bottom: 1px solid #eee; +} +.box-comments .box-comment:after, +.box-comments .box-comment:before { + content: ' '; + display: table; +} +.box-comments .box-comment:after { + clear: both; +} +.box-comments .box-comment:last-of-type { + border-bottom: 0; +} +.box-comments .box-comment:first-of-type { + padding-top: 0; +} +.box-comments .box-comment img { + float: left; +} +.box-comments .comment-text { + margin-left: 40px; + color: #555; +} +.box-comments .username { + color: #444; + display: block; + font-weight: 600; +} +.box-comments .text-muted { + font-weight: 400; + font-size: 12px; +} +.todo-list { + margin: 0; + padding: 0; + list-style: none; + overflow: auto; +} +.todo-list > li { + border-radius: 2px; + padding: 10px; + background: #f4f4f4; + margin-bottom: 2px; + border-left: 2px solid #e6e7e8; + color: #444; +} +.todo-list > li:last-of-type { + margin-bottom: 0; +} +.todo-list > li > input[type='checkbox'] { + margin: 0 10px 0 5px; +} +.todo-list > li .text { + display: inline-block; + margin-left: 5px; + font-weight: 600; +} +.todo-list > li .label { + margin-left: 10px; + font-size: 9px; +} +.todo-list > li .tools { + display: none; + float: right; + color: #dd4b39; +} +.todo-list > li .tools > .fa, +.todo-list > li .tools > .glyphicon, +.todo-list > li .tools > .ion { + margin-right: 5px; + cursor: pointer; +} +.todo-list > li:hover .tools { + display: inline-block; +} +.todo-list > li.done { + color: #999; +} +.todo-list > li.done .text { + text-decoration: line-through; + font-weight: 500; +} +.todo-list > li.done .label { + background: #d2d6de !important; +} +.todo-list .danger { + border-left-color: #dd4b39; +} +.todo-list .warning { + border-left-color: #f39c12; +} +.todo-list .info { + border-left-color: #00c0ef; +} +.todo-list .success { + border-left-color: #00a65a; +} +.todo-list .primary { + border-left-color: #3c8dbc; +} +.todo-list .handle { + display: inline-block; + cursor: move; + margin: 0 5px; +} +.chat { + padding: 5px 20px 5px 10px; +} +.chat .item { + margin-bottom: 10px; +} +.chat .item:after, +.chat .item:before { + content: ' '; + display: table; +} +.chat .item:after { + clear: both; +} +.chat .item > img { + width: 40px; + height: 40px; + border: 2px solid transparent; + border-radius: 50%; +} +.chat .item > .online { + border: 2px solid #00a65a; +} +.chat .item > .offline { + border: 2px solid #dd4b39; +} +.chat .item > .message { + margin-left: 55px; + margin-top: -40px; +} +.chat .item > .message > .name { + display: block; + font-weight: 600; +} +.chat .item > .attachment { + border-radius: 3px; + background: #f4f4f4; + margin-left: 65px; + margin-right: 15px; + padding: 10px; +} +.chat .item > .attachment > h4 { + margin: 0 0 5px; + font-weight: 600; + font-size: 14px; +} +.chat .item > .attachment > .filename, +.chat .item > .attachment > p { + font-weight: 600; + font-size: 13px; + font-style: italic; + margin: 0; +} +.chat .item > .attachment:after, +.chat .item > .attachment:before { + content: ' '; + display: table; +} +.chat .item > .attachment:after { + clear: both; +} +.box-input { + max-width: 200px; +} +.modal .panel-body { + color: #444; +} +.info-box { + display: block; + min-height: 90px; + background: #fff; + width: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; + margin-bottom: 15px; +} +.info-box small { + font-size: 14px; +} +.info-box .progress { + background: rgba(0, 0, 0, 0.2); + margin: 5px -10px; + height: 2px; +} +.info-box .progress, +.info-box .progress .progress-bar { + border-radius: 0; +} +.info-box .progress .progress-bar { + background: #fff; +} +.info-box-icon { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; + display: block; + float: left; + height: 90px; + width: 90px; + text-align: center; + font-size: 45px; + line-height: 90px; + background: rgba(0, 0, 0, 0.2); +} +.info-box-icon > img { + max-width: 100%; +} +.info-box-content { + padding: 5px 10px; + margin-left: 90px; +} +.info-box-number { + display: block; + font-weight: 700; + font-size: 18px; +} +.info-box-text, +.progress-description { + display: block; + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.info-box-text { + text-transform: uppercase; +} +.info-box-more { + display: block; +} +.progress-description { + margin: 0; +} +.timeline { + position: relative; + margin: 0 0 30px; + padding: 0; + list-style: none; +} +.timeline:before { + content: ''; + position: absolute; + top: 0; + bottom: 0; + width: 4px; + background: #ddd; + left: 31px; + margin: 0; + border-radius: 2px; +} +.timeline > li { + position: relative; + margin-right: 10px; + margin-bottom: 15px; +} +.timeline > li:after, +.timeline > li:before { + content: ' '; + display: table; +} +.timeline > li:after { + clear: both; +} +.timeline > li > .timeline-item { + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 3px; + margin-top: 0; + background: #fff; + color: #444; + margin-left: 60px; + margin-right: 15px; + padding: 0; + position: relative; +} +.timeline > li > .timeline-item > .time { + color: #999; + float: right; + padding: 10px; + font-size: 12px; +} +.timeline > li > .timeline-item > .timeline-header { + margin: 0; + color: #555; + border-bottom: 1px solid #f4f4f4; + padding: 10px; + font-size: 16px; + line-height: 1.1; +} +.timeline > li > .timeline-item > .timeline-header > a { + font-weight: 600; +} +.timeline > li > .timeline-item > .timeline-body, +.timeline > li > .timeline-item > .timeline-footer { + padding: 10px; +} +.timeline > li > .fa, +.timeline > li > .glyphicon, +.timeline > li > .ion { + width: 30px; + height: 30px; + font-size: 15px; + line-height: 30px; + position: absolute; + color: #666; + background: #d2d6de; + border-radius: 50%; + text-align: center; + left: 18px; + top: 0; +} +.timeline > .time-label > span { + font-weight: 600; + padding: 5px; + display: inline-block; + background-color: #fff; + border-radius: 4px; +} +.timeline-inverse > li > .timeline-item { + background: #f0f0f0; + border: 1px solid #ddd; + -webkit-box-shadow: none; + box-shadow: none; +} +.timeline-inverse > li > .timeline-item > .timeline-header { + border-bottom-color: #ddd; +} +.btn { + border-radius: 3px; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid transparent; +} +.btn.uppercase { + text-transform: uppercase; +} +.btn.btn-flat { + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-width: 1px; +} +.btn:active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn:focus { + outline: none; +} +.btn.btn-file { + position: relative; + overflow: hidden; +} +.btn.btn-file > input[type='file'] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + opacity: 0; + filter: alpha(opacity=0); + outline: none; + background: #fff; + cursor: inherit; + display: block; +} +.btn-default { + background-color: #f4f4f4; + color: #444; + border-color: #ddd; +} +.btn-default.hover, +.btn-default:active, +.btn-default:hover { + background-color: #e7e7e7; +} +.btn-primary { + background-color: #3c8dbc; + border-color: #367fa9; +} +.btn-primary.hover, +.btn-primary:active, +.btn-primary:hover { + background-color: #367fa9; +} +.btn-success { + background-color: #00a65a; + border-color: #008d4c; +} +.btn-success.hover, +.btn-success:active, +.btn-success:hover { + background-color: #008d4c; +} +.btn-info { + background-color: #00c0ef; + border-color: #00acd6; +} +.btn-info.hover, +.btn-info:active, +.btn-info:hover { + background-color: #00acd6; +} +.btn-danger { + background-color: #dd4b39; + border-color: #d73925; +} +.btn-danger.hover, +.btn-danger:active, +.btn-danger:hover { + background-color: #d73925; +} +.btn-warning { + background-color: #f39c12; + border-color: #e08e0b; +} +.btn-warning.hover, +.btn-warning:active, +.btn-warning:hover { + background-color: #e08e0b; +} +.btn-outline { + border: 1px solid #fff; + background: transparent; + color: #fff; +} +.btn-outline:active, +.btn-outline:focus, +.btn-outline:hover { + color: hsla(0, 0%, 100%, 0.7); + border-color: hsla(0, 0%, 100%, 0.7); +} +.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn[class*='bg-']:hover { + -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); +} +.btn-app { + border-radius: 3px; + position: relative; + padding: 15px 5px; + margin: 0 0 10px 10px; + min-width: 80px; + height: 60px; + text-align: center; + color: #666; + border: 1px solid #ddd; + background-color: #f4f4f4; + font-size: 12px; +} +.btn-app > .fa, +.btn-app > .glyphicon, +.btn-app > .ion { + font-size: 20px; + display: block; +} +.btn-app:hover { + background: #f4f4f4; + color: #444; + border-color: #aaa; +} +.btn-app:active, +.btn-app:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-app > .badge { + position: absolute; + top: -3px; + right: -10px; + font-size: 10px; + font-weight: 400; +} +.callout { + border-radius: 3px; + margin: 0 0 20px; + padding: 15px 30px 15px 15px; + border-left: 5px solid #eee; +} +.callout a { + color: #fff; + text-decoration: underline; +} +.callout a:hover { + color: #eee; +} +.callout h4 { + margin-top: 0; + font-weight: 600; +} +.callout p:last-child { + margin-bottom: 0; +} +.callout .highlight, +.callout code { + background-color: #fff; +} +.callout.callout-danger { + border-color: #c23321; +} +.callout.callout-warning { + border-color: #c87f0a; +} +.callout.callout-info { + border-color: #0097bc; +} +.callout.callout-success { + border-color: #00733e; +} +.alert { + border-radius: 3px; +} +.alert h4 { + font-weight: 600; +} +.alert .icon { + margin-right: 10px; +} +.alert .close { + color: #000; + opacity: 0.2; + filter: alpha(opacity=20); +} +.alert .close:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.alert a { + color: #fff; + text-decoration: underline; +} +.alert-success { + border-color: #008d4c; +} +.alert-danger, +.alert-error { + border-color: #d73925; +} +.alert-warning { + border-color: #e08e0b; +} +.alert-info { + border-color: #00acd6; +} +.nav > li > a:active, +.nav > li > a:focus, +.nav > li > a:hover { + color: #444; + background: #f7f7f7; +} +.nav-pills > li > a { + border-radius: 0; + border-top: 3px solid transparent; + color: #444; +} +.nav-pills > li > a > .fa, +.nav-pills > li > a > .glyphicon, +.nav-pills > li > a > .ion { + margin-right: 5px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:focus, +.nav-pills > li.active > a:hover { + border-top-color: #3c8dbc; +} +.nav-pills > li.active > a { + font-weight: 600; +} +.nav-stacked > li > a { + border-radius: 0; + border-top: 0; + border-left: 3px solid transparent; + color: #444; +} +.nav-stacked > li.active > a, +.nav-stacked > li.active > a:hover { + background: transparent; + color: #444; + border-top: 0; + border-left-color: #3c8dbc; +} +.nav-stacked > li.header { + border-bottom: 1px solid #ddd; + color: #777; + margin-bottom: 10px; + padding: 5px 10px; + text-transform: uppercase; +} +.nav-tabs-custom { + margin-bottom: 20px; + background: #fff; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 3px; +} +.nav-tabs-custom > .nav-tabs { + margin: 0; + border-bottom-color: #f4f4f4; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.nav-tabs-custom > .nav-tabs > li { + border-top: 3px solid transparent; + margin-bottom: -2px; + margin-right: 5px; +} +.nav-tabs-custom > .nav-tabs > li.disabled > a { + color: #777; +} +.nav-tabs-custom > .nav-tabs > li > a { + color: #444; + border-radius: 0; +} +.nav-tabs-custom > .nav-tabs > li > a.text-muted { + color: #999; +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li > a:hover { + background: transparent; + margin: 0; +} +.nav-tabs-custom > .nav-tabs > li > a:hover { + color: #999; +} +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active, +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover { + border-color: transparent; +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: #3c8dbc; +} +.nav-tabs-custom > .nav-tabs > li.active:hover > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: #fff; + color: #444; +} +.nav-tabs-custom > .nav-tabs > li.active > a { + border-top-color: transparent; + border-left-color: #f4f4f4; + border-right-color: #f4f4f4; +} +.nav-tabs-custom > .nav-tabs > li:first-of-type { + margin-left: 0; +} +.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { + border-left-color: transparent; +} +.nav-tabs-custom > .nav-tabs.pull-right { + float: none !important; +} +.nav-tabs-custom > .nav-tabs.pull-right > li { + float: right; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { + margin-right: 0; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { + border-left-width: 1px; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { + border-left-color: #f4f4f4; + border-right-color: transparent; +} +.nav-tabs-custom > .nav-tabs > li.header { + line-height: 35px; + padding: 0 10px; + font-size: 20px; + color: #444; +} +.nav-tabs-custom > .nav-tabs > li.header > .fa, +.nav-tabs-custom > .nav-tabs > li.header > .glyphicon, +.nav-tabs-custom > .nav-tabs > li.header > .ion { + margin-right: 5px; +} +.nav-tabs-custom > .tab-content { + background: #fff; + padding: 10px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.nav-tabs-custom .dropdown.open > a:active, +.nav-tabs-custom .dropdown.open > a:focus { + background: transparent; + color: #999; +} +.nav-tabs-custom.tab-primary > .nav-tabs > li.active { + border-top-color: #3c8dbc; +} +.nav-tabs-custom.tab-info > .nav-tabs > li.active { + border-top-color: #00c0ef; +} +.nav-tabs-custom.tab-danger > .nav-tabs > li.active { + border-top-color: #dd4b39; +} +.nav-tabs-custom.tab-warning > .nav-tabs > li.active { + border-top-color: #f39c12; +} +.nav-tabs-custom.tab-success > .nav-tabs > li.active { + border-top-color: #00a65a; +} +.nav-tabs-custom.tab-default > .nav-tabs > li.active { + border-top-color: #d2d6de; +} +.pagination > li > a { + background: #fafafa; + color: #666; +} +.pagination.pagination-flat > li > a { + border-radius: 0 !important; +} +.products-list { + list-style: none; + margin: 0; + padding: 0; +} +.products-list > .item { + border-radius: 3px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 10px 0; + background: #fff; +} +.products-list > .item:after, +.products-list > .item:before { + content: ' '; + display: table; +} +.products-list > .item:after { + clear: both; +} +.products-list .product-img { + float: left; +} +.products-list .product-img img { + width: 50px; + height: 50px; +} +.products-list .product-info { + margin-left: 60px; +} +.products-list .product-title { + font-weight: 600; +} +.products-list .product-description { + display: block; + color: #999; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.product-list-in-box > .item { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; + border-bottom: 1px solid #f4f4f4; +} +.product-list-in-box > .item:last-of-type { + border-bottom-width: 0; +} +.table > tbody > tr > td, +.table > tbody > tr > th, +.table > tfoot > tr > td, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > thead > tr > th { + border-top: 1px solid #f4f4f4; +} +.table > thead > tr > th { + border-bottom: 2px solid #f4f4f4; +} +.table tr td .progress { + margin-top: 5px; +} +.table-bordered, +.table-bordered > tbody > tr > td, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > td, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > thead > tr > th { + border: 1px solid #f4f4f4; +} +.table-bordered > thead > tr > td, +.table-bordered > thead > tr > th { + border-bottom-width: 2px; +} +.table.no-border, +.table.no-border td, +.table.no-border th { + border: 0; +} +table.text-center, +table.text-center td, +table.text-center th { + text-align: center; +} +.table.align th { + text-align: left; +} +.table.align td { + text-align: right; +} +.label-default { + background-color: #d2d6de; + color: #444; +} +.direct-chat .box-body { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + position: relative; + overflow-x: hidden; + padding: 0; +} +.direct-chat-messages, +.direct-chat.chat-pane-open .direct-chat-contacts { + -webkit-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); +} +.direct-chat-messages { + padding: 10px; + height: 250px; + overflow: auto; +} +.direct-chat-msg, +.direct-chat-text { + display: block; +} +.direct-chat-msg { + margin-bottom: 10px; +} +.direct-chat-msg:after, +.direct-chat-msg:before { + content: ' '; + display: table; +} +.direct-chat-msg:after { + clear: both; +} +.direct-chat-contacts, +.direct-chat-messages { + -webkit-transition: -webkit-transform 0.5s ease-in-out; + -moz-transition: -moz-transform 0.5s ease-in-out; + -o-transition: -o-transform 0.5s ease-in-out; + transition: transform 0.5s ease-in-out; +} +.direct-chat-text { + border-radius: 5px; + position: relative; + padding: 5px 10px; + background: #d2d6de; + border: 1px solid #d2d6de; + margin: 5px 0 0 50px; + color: #444; +} +.direct-chat-text:after, +.direct-chat-text:before { + position: absolute; + right: 100%; + top: 15px; + border: solid transparent; + border-right-color: #d2d6de; + content: ' '; + height: 0; + width: 0; + pointer-events: none; +} +.direct-chat-text:after { + border-width: 5px; + margin-top: -5px; +} +.direct-chat-text:before { + border-width: 6px; + margin-top: -6px; +} +.right .direct-chat-text { + margin-right: 50px; + margin-left: 0; +} +.right .direct-chat-text:after, +.right .direct-chat-text:before { + right: auto; + left: 100%; + border-right-color: transparent; + border-left-color: #d2d6de; +} +.direct-chat-img { + border-radius: 50%; + float: left; + width: 40px; + height: 40px; +} +.right .direct-chat-img { + float: right; +} +.direct-chat-info { + display: block; + margin-bottom: 2px; + font-size: 12px; +} +.direct-chat-name { + font-weight: 600; +} +.direct-chat-timestamp { + color: #999; +} +.direct-chat-contacts-open .direct-chat-contacts { + -webkit-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); +} +.direct-chat-contacts { + -webkit-transform: translate(101%); + -ms-transform: translate(101%); + -o-transform: translate(101%); + transform: translate(101%); + position: absolute; + top: 0; + bottom: 0; + height: 250px; + width: 100%; + background: #222d32; + color: #fff; + overflow: auto; +} +.contacts-list > li { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + padding: 10px; + margin: 0; +} +.contacts-list > li:after, +.contacts-list > li:before { + content: ' '; + display: table; +} +.contacts-list > li:after { + clear: both; +} +.contacts-list > li:last-of-type { + border-bottom: none; +} +.contacts-list-img { + border-radius: 50%; + width: 40px; + float: left; +} +.contacts-list-info { + margin-left: 45px; + color: #fff; +} +.contacts-list-name, +.contacts-list-status { + display: block; +} +.contacts-list-name { + font-weight: 600; +} +.contacts-list-status { + font-size: 12px; +} +.contacts-list-date { + color: #aaa; + font-weight: 400; +} +.contacts-list-msg { + color: #999; +} +.direct-chat-danger .right > .direct-chat-text { + background: #dd4b39; + border-color: #dd4b39; + color: #fff; +} +.direct-chat-danger .right > .direct-chat-text:after, +.direct-chat-danger .right > .direct-chat-text:before { + border-left-color: #dd4b39; +} +.direct-chat-primary .right > .direct-chat-text { + background: #3c8dbc; + border-color: #3c8dbc; + color: #fff; +} +.direct-chat-primary .right > .direct-chat-text:after, +.direct-chat-primary .right > .direct-chat-text:before { + border-left-color: #3c8dbc; +} +.direct-chat-warning .right > .direct-chat-text { + background: #f39c12; + border-color: #f39c12; + color: #fff; +} +.direct-chat-warning .right > .direct-chat-text:after, +.direct-chat-warning .right > .direct-chat-text:before { + border-left-color: #f39c12; +} +.direct-chat-info .right > .direct-chat-text { + background: #00c0ef; + border-color: #00c0ef; + color: #fff; +} +.direct-chat-info .right > .direct-chat-text:after, +.direct-chat-info .right > .direct-chat-text:before { + border-left-color: #00c0ef; +} +.direct-chat-success .right > .direct-chat-text { + background: #00a65a; + border-color: #00a65a; + color: #fff; +} +.direct-chat-success .right > .direct-chat-text:after, +.direct-chat-success .right > .direct-chat-text:before { + border-left-color: #00a65a; +} +.users-list > li { + width: 25%; + float: left; + padding: 10px; + text-align: center; +} +.users-list > li img { + border-radius: 50%; + max-width: 100%; + height: auto; +} +.users-list > li > a:hover, +.users-list > li > a:hover .users-list-name { + color: #999; +} +.users-list-date, +.users-list-name { + display: block; +} +.users-list-name { + font-weight: 600; + color: #444; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.users-list-date { + color: #999; + font-size: 12px; +} +.carousel-control.left, +.carousel-control.right { + background-image: none; +} +.carousel-control > .fa { + font-size: 40px; + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -20px; +} +.modal { + background: rgba(0, 0, 0, 0.3); +} +.modal-content { + border-radius: 0; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); + border: 0; +} +@media (min-width: 768px) { + .modal-content { + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); + } +} +.modal-header { + border-bottom-color: #f4f4f4; +} +.modal-footer { + border-top-color: #f4f4f4; +} +.modal-primary .modal-footer, +.modal-primary .modal-header { + border-color: #307095; +} +.modal-warning .modal-footer, +.modal-warning .modal-header { + border-color: #c87f0a; +} +.modal-info .modal-footer, +.modal-info .modal-header { + border-color: #0097bc; +} +.modal-success .modal-footer, +.modal-success .modal-header { + border-color: #00733e; +} +.modal-danger .modal-footer, +.modal-danger .modal-header { + border-color: #c23321; +} +.box-widget { + border: none; + position: relative; +} +.widget-user .widget-user-header { + padding: 20px; + height: 120px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.widget-user .widget-user-username { + margin-top: 0; + margin-bottom: 5px; + font-size: 25px; + font-weight: 300; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.widget-user .widget-user-desc { + margin-top: 0; +} +.widget-user .widget-user-image { + position: absolute; + top: 65px; + left: 50%; + margin-left: -45px; +} +.widget-user .widget-user-image > img { + width: 90px; + height: auto; + border: 3px solid #fff; +} +.widget-user .box-footer { + padding-top: 30px; +} +.widget-user-2 .widget-user-header { + padding: 20px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.widget-user-2 .widget-user-username { + margin-top: 5px; + margin-bottom: 5px; + font-size: 25px; + font-weight: 300; +} +.widget-user-2 .widget-user-desc { + margin-top: 0; +} +.widget-user-2 .widget-user-desc, +.widget-user-2 .widget-user-username { + margin-left: 75px; +} +.widget-user-2 .widget-user-image > img { + width: 65px; + height: auto; + float: left; +} +.treeview-menu { + display: none; + list-style: none; + padding: 0; + margin: 0; + padding-left: 5px; +} +.treeview-menu .treeview-menu { + padding-left: 20px; +} +.treeview-menu > li { + margin: 0; +} +.treeview-menu > li > a { + padding: 5px 5px 5px 15px; + display: block; + font-size: 14px; +} +.treeview-menu > li > a > .fa, +.treeview-menu > li > a > .glyphicon, +.treeview-menu > li > a > .ion { + width: 20px; +} +.treeview-menu > li > a > .fa-angle-down, +.treeview-menu > li > a > .fa-angle-left, +.treeview-menu > li > a > .pull-right-container > .fa-angle-down, +.treeview-menu > li > a > .pull-right-container > .fa-angle-left { + width: auto; +} +.treeview > ul.treeview-menu { + overflow: hidden; + height: auto; + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.treeview.menu-open > ul.treeview-menu { + overflow: visible; + height: auto; +} +.mailbox-messages > .table { + margin: 0; +} +.mailbox-controls { + padding: 5px; +} +.mailbox-controls.with-border, +.mailbox-read-info { + border-bottom: 1px solid #f4f4f4; +} +.mailbox-read-info { + padding: 10px; +} +.mailbox-read-info h3 { + font-size: 20px; + margin: 0; +} +.mailbox-read-info h5 { + margin: 0; + padding: 5px 0 0; +} +.mailbox-read-time { + color: #999; + font-size: 13px; +} +.mailbox-read-message { + padding: 10px; +} +.mailbox-attachments li { + float: left; + width: 200px; + border: 1px solid #eee; + margin-bottom: 10px; + margin-right: 10px; +} +.mailbox-attachment-name { + font-weight: 700; + color: #666; +} +.mailbox-attachment-icon, +.mailbox-attachment-info, +.mailbox-attachment-size { + display: block; +} +.mailbox-attachment-info { + padding: 10px; + background: #f4f4f4; +} +.mailbox-attachment-size { + color: #999; + font-size: 12px; +} +.mailbox-attachment-icon { + text-align: center; + font-size: 65px; + color: #666; + padding: 20px 10px; +} +.mailbox-attachment-icon.has-img { + padding: 0; +} +.mailbox-attachment-icon.has-img > img { + max-width: 100%; + height: auto; +} +.lockscreen { + background: #d2d6de; +} +.lockscreen-logo { + font-size: 35px; + text-align: center; + margin-bottom: 25px; + font-weight: 300; +} +.lockscreen-logo a { + color: #444; +} +.lockscreen-wrapper { + max-width: 400px; + margin: 0 auto; + margin-top: 10%; +} +.lockscreen .lockscreen-name { + text-align: center; + font-weight: 600; +} +.lockscreen-item { + border-radius: 4px; + padding: 0; + background: #fff; + position: relative; + margin: 10px auto 30px; + width: 290px; +} +.lockscreen-image { + border-radius: 50%; + position: absolute; + left: -10px; + top: -25px; + background: #fff; + padding: 5px; + z-index: 10; +} +.lockscreen-image > img { + border-radius: 50%; + width: 70px; + height: 70px; +} +.lockscreen-credentials { + margin-left: 70px; +} +.lockscreen-credentials .form-control { + border: 0; +} +.lockscreen-credentials .btn { + background-color: #fff; + border: 0; + padding: 0 10px; +} +.lockscreen-footer { + margin-top: 10px; +} +.login-logo, +.register-logo { + font-size: 35px; + text-align: center; + margin-bottom: 25px; + font-weight: 300; +} +.login-logo a, +.register-logo a { + color: #444; +} +.login-page, +.register-page { + height: auto; + background: #d2d6de; +} +.login-box, +.register-box { + width: 360px; + margin: 7% auto; +} +@media (max-width: 768px) { + .login-box, + .register-box { + width: 90%; + margin-top: 20px; + } +} +.login-box-body, +.register-box-body { + background: #fff; + padding: 20px; + border-top: 0; + color: #666; +} +.login-box-body .form-control-feedback, +.register-box-body .form-control-feedback { + color: #777; +} +.login-box-msg, +.register-box-msg { + margin: 0; + text-align: center; + padding: 0 20px 20px; +} +.social-auth-links { + margin: 10px 0; +} +.error-page { + width: 600px; + margin: 20px auto 0; +} +@media (max-width: 991px) { + .error-page { + width: 100%; + } +} +.error-page > .headline { + float: left; + font-size: 100px; + font-weight: 300; +} +@media (max-width: 991px) { + .error-page > .headline { + float: none; + text-align: center; + } +} +.error-page > .error-content { + margin-left: 190px; + display: block; +} +@media (max-width: 991px) { + .error-page > .error-content { + margin-left: 0; + } +} +.error-page > .error-content > h3 { + font-weight: 300; + font-size: 25px; +} +@media (max-width: 991px) { + .error-page > .error-content > h3 { + text-align: center; + } +} +.invoice { + position: relative; + background: #fff; + border: 1px solid #f4f4f4; + padding: 20px; + margin: 10px 25px; +} +.invoice-title { + margin-top: 0; +} +.profile-user-img { + margin: 0 auto; + width: 100px; + padding: 3px; + border: 3px solid #d2d6de; +} +.profile-username { + font-size: 21px; + margin-top: 5px; +} +.post { + border-bottom: 1px solid #d2d6de; + margin-bottom: 15px; + padding-bottom: 15px; + color: #666; +} +.post:last-of-type { + border-bottom: 0; + margin-bottom: 0; + padding-bottom: 0; +} +.post .user-block { + margin-bottom: 15px; +} +.btn-social { + position: relative; + padding-left: 44px; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.btn-social > :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 32px; + line-height: 34px; + font-size: 1.6em; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.btn-social.btn-lg { + padding-left: 61px; +} +.btn-social.btn-lg > :first-child { + line-height: 45px; + width: 45px; + font-size: 1.8em; +} +.btn-social.btn-sm { + padding-left: 38px; +} +.btn-social.btn-sm > :first-child { + line-height: 28px; + width: 28px; + font-size: 1.4em; +} +.btn-social.btn-xs { + padding-left: 30px; +} +.btn-social.btn-xs > :first-child { + line-height: 20px; + width: 20px; + font-size: 1.2em; +} +.btn-social-icon { + position: relative; + padding-left: 44px; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + height: 34px; + width: 34px; + padding: 0; +} +.btn-social-icon > :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 32px; + line-height: 34px; + font-size: 1.6em; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.btn-social-icon.btn-lg { + padding-left: 61px; +} +.btn-social-icon.btn-lg > :first-child { + line-height: 45px; + width: 45px; + font-size: 1.8em; +} +.btn-social-icon.btn-sm { + padding-left: 38px; +} +.btn-social-icon.btn-sm > :first-child { + line-height: 28px; + width: 28px; + font-size: 1.4em; +} +.btn-social-icon.btn-xs { + padding-left: 30px; +} +.btn-social-icon.btn-xs > :first-child { + line-height: 20px; + width: 20px; + font-size: 1.2em; +} +.btn-social-icon > :first-child { + border: none; + text-align: center; + width: 100%; +} +.btn-social-icon.btn-lg { + height: 45px; + width: 45px; + padding-left: 0; + padding-right: 0; +} +.btn-social-icon.btn-sm { + height: 30px; + width: 30px; + padding-left: 0; + padding-right: 0; +} +.btn-social-icon.btn-xs { + height: 22px; + width: 22px; + padding-left: 0; + padding-right: 0; +} +.btn-adn { + color: #fff; + background-color: #d87a68; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-adn.active, +.btn-adn.focus, +.btn-adn:active, +.btn-adn:focus, +.btn-adn:hover, +.open > .dropdown-toggle.btn-adn { + color: #fff; + background-color: #ce563f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-adn.active.focus, +.btn-adn.active:focus, +.btn-adn.active:hover, +.btn-adn:active.focus, +.btn-adn:active:focus, +.btn-adn:active:hover, +.open > .dropdown-toggle.btn-adn.focus, +.open > .dropdown-toggle.btn-adn:focus, +.open > .dropdown-toggle.btn-adn:hover { + color: #fff; + background-color: #b94630; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-adn.active, +.btn-adn:active, +.open > .dropdown-toggle.btn-adn { + background-image: none; +} +.btn-adn.disabled.focus, +.btn-adn.disabled:focus, +.btn-adn.disabled:hover, +.btn-adn[disabled].focus, +.btn-adn[disabled]:focus, +.btn-adn[disabled]:hover, +fieldset[disabled] .btn-adn.focus, +fieldset[disabled] .btn-adn:focus, +fieldset[disabled] .btn-adn:hover { + background-color: #d87a68; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-adn .badge { + color: #d87a68; + background-color: #fff; +} +.btn-bitbucket { + color: #fff; + background-color: #205081; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket.active, +.btn-bitbucket.focus, +.btn-bitbucket:active, +.btn-bitbucket:focus, +.btn-bitbucket:hover, +.open > .dropdown-toggle.btn-bitbucket { + color: #fff; + background-color: #163758; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket.active.focus, +.btn-bitbucket.active:focus, +.btn-bitbucket.active:hover, +.btn-bitbucket:active.focus, +.btn-bitbucket:active:focus, +.btn-bitbucket:active:hover, +.open > .dropdown-toggle.btn-bitbucket.focus, +.open > .dropdown-toggle.btn-bitbucket:focus, +.open > .dropdown-toggle.btn-bitbucket:hover { + color: #fff; + background-color: #0f253c; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket.active, +.btn-bitbucket:active, +.open > .dropdown-toggle.btn-bitbucket { + background-image: none; +} +.btn-bitbucket.disabled.focus, +.btn-bitbucket.disabled:focus, +.btn-bitbucket.disabled:hover, +.btn-bitbucket[disabled].focus, +.btn-bitbucket[disabled]:focus, +.btn-bitbucket[disabled]:hover, +fieldset[disabled] .btn-bitbucket.focus, +fieldset[disabled] .btn-bitbucket:focus, +fieldset[disabled] .btn-bitbucket:hover { + background-color: #205081; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket .badge { + color: #205081; + background-color: #fff; +} +.btn-dropbox { + color: #fff; + background-color: #1087dd; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox.active, +.btn-dropbox.focus, +.btn-dropbox:active, +.btn-dropbox:focus, +.btn-dropbox:hover, +.open > .dropdown-toggle.btn-dropbox { + color: #fff; + background-color: #0d6aad; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox.active.focus, +.btn-dropbox.active:focus, +.btn-dropbox.active:hover, +.btn-dropbox:active.focus, +.btn-dropbox:active:focus, +.btn-dropbox:active:hover, +.open > .dropdown-toggle.btn-dropbox.focus, +.open > .dropdown-toggle.btn-dropbox:focus, +.open > .dropdown-toggle.btn-dropbox:hover { + color: #fff; + background-color: #0a568c; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox.active, +.btn-dropbox:active, +.open > .dropdown-toggle.btn-dropbox { + background-image: none; +} +.btn-dropbox.disabled.focus, +.btn-dropbox.disabled:focus, +.btn-dropbox.disabled:hover, +.btn-dropbox[disabled].focus, +.btn-dropbox[disabled]:focus, +.btn-dropbox[disabled]:hover, +fieldset[disabled] .btn-dropbox.focus, +fieldset[disabled] .btn-dropbox:focus, +fieldset[disabled] .btn-dropbox:hover { + background-color: #1087dd; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox .badge { + color: #1087dd; + background-color: #fff; +} +.btn-facebook { + color: #fff; + background-color: #3b5998; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook.active, +.btn-facebook.focus, +.btn-facebook:active, +.btn-facebook:focus, +.btn-facebook:hover, +.open > .dropdown-toggle.btn-facebook { + color: #fff; + background-color: #2d4373; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook.active.focus, +.btn-facebook.active:focus, +.btn-facebook.active:hover, +.btn-facebook:active.focus, +.btn-facebook:active:focus, +.btn-facebook:active:hover, +.open > .dropdown-toggle.btn-facebook.focus, +.open > .dropdown-toggle.btn-facebook:focus, +.open > .dropdown-toggle.btn-facebook:hover { + color: #fff; + background-color: #23345a; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook.active, +.btn-facebook:active, +.open > .dropdown-toggle.btn-facebook { + background-image: none; +} +.btn-facebook.disabled.focus, +.btn-facebook.disabled:focus, +.btn-facebook.disabled:hover, +.btn-facebook[disabled].focus, +.btn-facebook[disabled]:focus, +.btn-facebook[disabled]:hover, +fieldset[disabled] .btn-facebook.focus, +fieldset[disabled] .btn-facebook:focus, +fieldset[disabled] .btn-facebook:hover { + background-color: #3b5998; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook .badge { + color: #3b5998; + background-color: #fff; +} +.btn-flickr { + color: #fff; + background-color: #ff0084; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr.active, +.btn-flickr.focus, +.btn-flickr:active, +.btn-flickr:focus, +.btn-flickr:hover, +.open > .dropdown-toggle.btn-flickr { + color: #fff; + background-color: #cc006a; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr.active.focus, +.btn-flickr.active:focus, +.btn-flickr.active:hover, +.btn-flickr:active.focus, +.btn-flickr:active:focus, +.btn-flickr:active:hover, +.open > .dropdown-toggle.btn-flickr.focus, +.open > .dropdown-toggle.btn-flickr:focus, +.open > .dropdown-toggle.btn-flickr:hover { + color: #fff; + background-color: #a80057; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr.active, +.btn-flickr:active, +.open > .dropdown-toggle.btn-flickr { + background-image: none; +} +.btn-flickr.disabled.focus, +.btn-flickr.disabled:focus, +.btn-flickr.disabled:hover, +.btn-flickr[disabled].focus, +.btn-flickr[disabled]:focus, +.btn-flickr[disabled]:hover, +fieldset[disabled] .btn-flickr.focus, +fieldset[disabled] .btn-flickr:focus, +fieldset[disabled] .btn-flickr:hover { + background-color: #ff0084; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr .badge { + color: #ff0084; + background-color: #fff; +} +.btn-foursquare { + color: #fff; + background-color: #f94877; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare.active, +.btn-foursquare.focus, +.btn-foursquare:active, +.btn-foursquare:focus, +.btn-foursquare:hover, +.open > .dropdown-toggle.btn-foursquare { + color: #fff; + background-color: #f71752; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare.active.focus, +.btn-foursquare.active:focus, +.btn-foursquare.active:hover, +.btn-foursquare:active.focus, +.btn-foursquare:active:focus, +.btn-foursquare:active:hover, +.open > .dropdown-toggle.btn-foursquare.focus, +.open > .dropdown-toggle.btn-foursquare:focus, +.open > .dropdown-toggle.btn-foursquare:hover { + color: #fff; + background-color: #e30742; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare.active, +.btn-foursquare:active, +.open > .dropdown-toggle.btn-foursquare { + background-image: none; +} +.btn-foursquare.disabled.focus, +.btn-foursquare.disabled:focus, +.btn-foursquare.disabled:hover, +.btn-foursquare[disabled].focus, +.btn-foursquare[disabled]:focus, +.btn-foursquare[disabled]:hover, +fieldset[disabled] .btn-foursquare.focus, +fieldset[disabled] .btn-foursquare:focus, +fieldset[disabled] .btn-foursquare:hover { + background-color: #f94877; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare .badge { + color: #f94877; + background-color: #fff; +} +.btn-github { + color: #fff; + background-color: #444; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github.active, +.btn-github.focus, +.btn-github:active, +.btn-github:focus, +.btn-github:hover, +.open > .dropdown-toggle.btn-github { + color: #fff; + background-color: #2b2b2b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github.active.focus, +.btn-github.active:focus, +.btn-github.active:hover, +.btn-github:active.focus, +.btn-github:active:focus, +.btn-github:active:hover, +.open > .dropdown-toggle.btn-github.focus, +.open > .dropdown-toggle.btn-github:focus, +.open > .dropdown-toggle.btn-github:hover { + color: #fff; + background-color: #191919; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github.active, +.btn-github:active, +.open > .dropdown-toggle.btn-github { + background-image: none; +} +.btn-github.disabled.focus, +.btn-github.disabled:focus, +.btn-github.disabled:hover, +.btn-github[disabled].focus, +.btn-github[disabled]:focus, +.btn-github[disabled]:hover, +fieldset[disabled] .btn-github.focus, +fieldset[disabled] .btn-github:focus, +fieldset[disabled] .btn-github:hover { + background-color: #444; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github .badge { + color: #444; + background-color: #fff; +} +.btn-google { + color: #fff; + background-color: #dd4b39; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google.active, +.btn-google.focus, +.btn-google:active, +.btn-google:focus, +.btn-google:hover, +.open > .dropdown-toggle.btn-google { + color: #fff; + background-color: #c23321; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google.active.focus, +.btn-google.active:focus, +.btn-google.active:hover, +.btn-google:active.focus, +.btn-google:active:focus, +.btn-google:active:hover, +.open > .dropdown-toggle.btn-google.focus, +.open > .dropdown-toggle.btn-google:focus, +.open > .dropdown-toggle.btn-google:hover { + color: #fff; + background-color: #a32b1c; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google.active, +.btn-google:active, +.open > .dropdown-toggle.btn-google { + background-image: none; +} +.btn-google.disabled.focus, +.btn-google.disabled:focus, +.btn-google.disabled:hover, +.btn-google[disabled].focus, +.btn-google[disabled]:focus, +.btn-google[disabled]:hover, +fieldset[disabled] .btn-google.focus, +fieldset[disabled] .btn-google:focus, +fieldset[disabled] .btn-google:hover { + background-color: #dd4b39; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google .badge { + color: #dd4b39; + background-color: #fff; +} +.btn-instagram { + color: #fff; + background-color: #3f729b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram.active, +.btn-instagram.focus, +.btn-instagram:active, +.btn-instagram:focus, +.btn-instagram:hover, +.open > .dropdown-toggle.btn-instagram { + color: #fff; + background-color: #305777; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram.active.focus, +.btn-instagram.active:focus, +.btn-instagram.active:hover, +.btn-instagram:active.focus, +.btn-instagram:active:focus, +.btn-instagram:active:hover, +.open > .dropdown-toggle.btn-instagram.focus, +.open > .dropdown-toggle.btn-instagram:focus, +.open > .dropdown-toggle.btn-instagram:hover { + color: #fff; + background-color: #26455d; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram.active, +.btn-instagram:active, +.open > .dropdown-toggle.btn-instagram { + background-image: none; +} +.btn-instagram.disabled.focus, +.btn-instagram.disabled:focus, +.btn-instagram.disabled:hover, +.btn-instagram[disabled].focus, +.btn-instagram[disabled]:focus, +.btn-instagram[disabled]:hover, +fieldset[disabled] .btn-instagram.focus, +fieldset[disabled] .btn-instagram:focus, +fieldset[disabled] .btn-instagram:hover { + background-color: #3f729b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram .badge { + color: #3f729b; + background-color: #fff; +} +.btn-linkedin { + color: #fff; + background-color: #007bb6; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin.active, +.btn-linkedin.focus, +.btn-linkedin:active, +.btn-linkedin:focus, +.btn-linkedin:hover, +.open > .dropdown-toggle.btn-linkedin { + color: #fff; + background-color: #005983; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin.active.focus, +.btn-linkedin.active:focus, +.btn-linkedin.active:hover, +.btn-linkedin:active.focus, +.btn-linkedin:active:focus, +.btn-linkedin:active:hover, +.open > .dropdown-toggle.btn-linkedin.focus, +.open > .dropdown-toggle.btn-linkedin:focus, +.open > .dropdown-toggle.btn-linkedin:hover { + color: #fff; + background-color: #00405f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin.active, +.btn-linkedin:active, +.open > .dropdown-toggle.btn-linkedin { + background-image: none; +} +.btn-linkedin.disabled.focus, +.btn-linkedin.disabled:focus, +.btn-linkedin.disabled:hover, +.btn-linkedin[disabled].focus, +.btn-linkedin[disabled]:focus, +.btn-linkedin[disabled]:hover, +fieldset[disabled] .btn-linkedin.focus, +fieldset[disabled] .btn-linkedin:focus, +fieldset[disabled] .btn-linkedin:hover { + background-color: #007bb6; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin .badge { + color: #007bb6; + background-color: #fff; +} +.btn-microsoft { + color: #fff; + background-color: #2672ec; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-microsoft.active, +.btn-microsoft.focus, +.btn-microsoft:active, +.btn-microsoft:focus, +.btn-microsoft:hover, +.open > .dropdown-toggle.btn-microsoft { + color: #fff; + background-color: #125acd; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-microsoft.active.focus, +.btn-microsoft.active:focus, +.btn-microsoft.active:hover, +.btn-microsoft:active.focus, +.btn-microsoft:active:focus, +.btn-microsoft:active:hover, +.open > .dropdown-toggle.btn-microsoft.focus, +.open > .dropdown-toggle.btn-microsoft:focus, +.open > .dropdown-toggle.btn-microsoft:hover { + color: #fff; + background-color: #0f4bac; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-microsoft.active, +.btn-microsoft:active, +.open > .dropdown-toggle.btn-microsoft { + background-image: none; +} +.btn-microsoft.disabled.focus, +.btn-microsoft.disabled:focus, +.btn-microsoft.disabled:hover, +.btn-microsoft[disabled].focus, +.btn-microsoft[disabled]:focus, +.btn-microsoft[disabled]:hover, +fieldset[disabled] .btn-microsoft.focus, +fieldset[disabled] .btn-microsoft:focus, +fieldset[disabled] .btn-microsoft:hover { + background-color: #2672ec; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-microsoft .badge { + color: #2672ec; + background-color: #fff; +} +.btn-openid { + color: #fff; + background-color: #f7931e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-openid.active, +.btn-openid.focus, +.btn-openid:active, +.btn-openid:focus, +.btn-openid:hover, +.open > .dropdown-toggle.btn-openid { + color: #fff; + background-color: #da7908; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-openid.active.focus, +.btn-openid.active:focus, +.btn-openid.active:hover, +.btn-openid:active.focus, +.btn-openid:active:focus, +.btn-openid:active:hover, +.open > .dropdown-toggle.btn-openid.focus, +.open > .dropdown-toggle.btn-openid:focus, +.open > .dropdown-toggle.btn-openid:hover { + color: #fff; + background-color: #b86607; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-openid.active, +.btn-openid:active, +.open > .dropdown-toggle.btn-openid { + background-image: none; +} +.btn-openid.disabled.focus, +.btn-openid.disabled:focus, +.btn-openid.disabled:hover, +.btn-openid[disabled].focus, +.btn-openid[disabled]:focus, +.btn-openid[disabled]:hover, +fieldset[disabled] .btn-openid.focus, +fieldset[disabled] .btn-openid:focus, +fieldset[disabled] .btn-openid:hover { + background-color: #f7931e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-openid .badge { + color: #f7931e; + background-color: #fff; +} +.btn-pinterest { + color: #fff; + background-color: #cb2027; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-pinterest.active, +.btn-pinterest.focus, +.btn-pinterest:active, +.btn-pinterest:focus, +.btn-pinterest:hover, +.open > .dropdown-toggle.btn-pinterest { + color: #fff; + background-color: #9f191f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-pinterest.active.focus, +.btn-pinterest.active:focus, +.btn-pinterest.active:hover, +.btn-pinterest:active.focus, +.btn-pinterest:active:focus, +.btn-pinterest:active:hover, +.open > .dropdown-toggle.btn-pinterest.focus, +.open > .dropdown-toggle.btn-pinterest:focus, +.open > .dropdown-toggle.btn-pinterest:hover { + color: #fff; + background-color: #801419; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-pinterest.active, +.btn-pinterest:active, +.open > .dropdown-toggle.btn-pinterest { + background-image: none; +} +.btn-pinterest.disabled.focus, +.btn-pinterest.disabled:focus, +.btn-pinterest.disabled:hover, +.btn-pinterest[disabled].focus, +.btn-pinterest[disabled]:focus, +.btn-pinterest[disabled]:hover, +fieldset[disabled] .btn-pinterest.focus, +fieldset[disabled] .btn-pinterest:focus, +fieldset[disabled] .btn-pinterest:hover { + background-color: #cb2027; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-pinterest .badge { + color: #cb2027; + background-color: #fff; +} +.btn-reddit { + color: #000; + background-color: #eff7ff; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-reddit.active, +.btn-reddit.focus, +.btn-reddit:active, +.btn-reddit:focus, +.btn-reddit:hover, +.open > .dropdown-toggle.btn-reddit { + color: #000; + background-color: #bcddff; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-reddit.active.focus, +.btn-reddit.active:focus, +.btn-reddit.active:hover, +.btn-reddit:active.focus, +.btn-reddit:active:focus, +.btn-reddit:active:hover, +.open > .dropdown-toggle.btn-reddit.focus, +.open > .dropdown-toggle.btn-reddit:focus, +.open > .dropdown-toggle.btn-reddit:hover { + color: #000; + background-color: #98ccff; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-reddit.active, +.btn-reddit:active, +.open > .dropdown-toggle.btn-reddit { + background-image: none; +} +.btn-reddit.disabled.focus, +.btn-reddit.disabled:focus, +.btn-reddit.disabled:hover, +.btn-reddit[disabled].focus, +.btn-reddit[disabled]:focus, +.btn-reddit[disabled]:hover, +fieldset[disabled] .btn-reddit.focus, +fieldset[disabled] .btn-reddit:focus, +fieldset[disabled] .btn-reddit:hover { + background-color: #eff7ff; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-reddit .badge { + color: #eff7ff; + background-color: #000; +} +.btn-soundcloud { + color: #fff; + background-color: #f50; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-soundcloud.active, +.btn-soundcloud.focus, +.btn-soundcloud:active, +.btn-soundcloud:focus, +.btn-soundcloud:hover, +.open > .dropdown-toggle.btn-soundcloud { + color: #fff; + background-color: #c40; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-soundcloud.active.focus, +.btn-soundcloud.active:focus, +.btn-soundcloud.active:hover, +.btn-soundcloud:active.focus, +.btn-soundcloud:active:focus, +.btn-soundcloud:active:hover, +.open > .dropdown-toggle.btn-soundcloud.focus, +.open > .dropdown-toggle.btn-soundcloud:focus, +.open > .dropdown-toggle.btn-soundcloud:hover { + color: #fff; + background-color: #a83800; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-soundcloud.active, +.btn-soundcloud:active, +.open > .dropdown-toggle.btn-soundcloud { + background-image: none; +} +.btn-soundcloud.disabled.focus, +.btn-soundcloud.disabled:focus, +.btn-soundcloud.disabled:hover, +.btn-soundcloud[disabled].focus, +.btn-soundcloud[disabled]:focus, +.btn-soundcloud[disabled]:hover, +fieldset[disabled] .btn-soundcloud.focus, +fieldset[disabled] .btn-soundcloud:focus, +fieldset[disabled] .btn-soundcloud:hover { + background-color: #f50; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-soundcloud .badge { + color: #f50; + background-color: #fff; +} +.btn-tumblr { + color: #fff; + background-color: #2c4762; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr.active, +.btn-tumblr.focus, +.btn-tumblr:active, +.btn-tumblr:focus, +.btn-tumblr:hover, +.open > .dropdown-toggle.btn-tumblr { + color: #fff; + background-color: #1c2d3f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr.active.focus, +.btn-tumblr.active:focus, +.btn-tumblr.active:hover, +.btn-tumblr:active.focus, +.btn-tumblr:active:focus, +.btn-tumblr:active:hover, +.open > .dropdown-toggle.btn-tumblr.focus, +.open > .dropdown-toggle.btn-tumblr:focus, +.open > .dropdown-toggle.btn-tumblr:hover { + color: #fff; + background-color: #111c26; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr.active, +.btn-tumblr:active, +.open > .dropdown-toggle.btn-tumblr { + background-image: none; +} +.btn-tumblr.disabled.focus, +.btn-tumblr.disabled:focus, +.btn-tumblr.disabled:hover, +.btn-tumblr[disabled].focus, +.btn-tumblr[disabled]:focus, +.btn-tumblr[disabled]:hover, +fieldset[disabled] .btn-tumblr.focus, +fieldset[disabled] .btn-tumblr:focus, +fieldset[disabled] .btn-tumblr:hover { + background-color: #2c4762; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr .badge { + color: #2c4762; + background-color: #fff; +} +.btn-twitter { + color: #fff; + background-color: #55acee; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter.active, +.btn-twitter.focus, +.btn-twitter:active, +.btn-twitter:focus, +.btn-twitter:hover, +.open > .dropdown-toggle.btn-twitter { + color: #fff; + background-color: #2795e9; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter.active.focus, +.btn-twitter.active:focus, +.btn-twitter.active:hover, +.btn-twitter:active.focus, +.btn-twitter:active:focus, +.btn-twitter:active:hover, +.open > .dropdown-toggle.btn-twitter.focus, +.open > .dropdown-toggle.btn-twitter:focus, +.open > .dropdown-toggle.btn-twitter:hover { + color: #fff; + background-color: #1583d7; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter.active, +.btn-twitter:active, +.open > .dropdown-toggle.btn-twitter { + background-image: none; +} +.btn-twitter.disabled.focus, +.btn-twitter.disabled:focus, +.btn-twitter.disabled:hover, +.btn-twitter[disabled].focus, +.btn-twitter[disabled]:focus, +.btn-twitter[disabled]:hover, +fieldset[disabled] .btn-twitter.focus, +fieldset[disabled] .btn-twitter:focus, +fieldset[disabled] .btn-twitter:hover { + background-color: #55acee; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter .badge { + color: #55acee; + background-color: #fff; +} +.btn-vimeo { + color: #fff; + background-color: #1ab7ea; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vimeo.active, +.btn-vimeo.focus, +.btn-vimeo:active, +.btn-vimeo:focus, +.btn-vimeo:hover, +.open > .dropdown-toggle.btn-vimeo { + color: #fff; + background-color: #1295bf; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vimeo.active.focus, +.btn-vimeo.active:focus, +.btn-vimeo.active:hover, +.btn-vimeo:active.focus, +.btn-vimeo:active:focus, +.btn-vimeo:active:hover, +.open > .dropdown-toggle.btn-vimeo.focus, +.open > .dropdown-toggle.btn-vimeo:focus, +.open > .dropdown-toggle.btn-vimeo:hover { + color: #fff; + background-color: #0f7b9f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vimeo.active, +.btn-vimeo:active, +.open > .dropdown-toggle.btn-vimeo { + background-image: none; +} +.btn-vimeo.disabled.focus, +.btn-vimeo.disabled:focus, +.btn-vimeo.disabled:hover, +.btn-vimeo[disabled].focus, +.btn-vimeo[disabled]:focus, +.btn-vimeo[disabled]:hover, +fieldset[disabled] .btn-vimeo.focus, +fieldset[disabled] .btn-vimeo:focus, +fieldset[disabled] .btn-vimeo:hover { + background-color: #1ab7ea; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vimeo .badge { + color: #1ab7ea; + background-color: #fff; +} +.btn-vk { + color: #fff; + background-color: #587ea3; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk.active, +.btn-vk.focus, +.btn-vk:active, +.btn-vk:focus, +.btn-vk:hover, +.open > .dropdown-toggle.btn-vk { + color: #fff; + background-color: #466482; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk.active.focus, +.btn-vk.active:focus, +.btn-vk.active:hover, +.btn-vk:active.focus, +.btn-vk:active:focus, +.btn-vk:active:hover, +.open > .dropdown-toggle.btn-vk.focus, +.open > .dropdown-toggle.btn-vk:focus, +.open > .dropdown-toggle.btn-vk:hover { + color: #fff; + background-color: #3a526b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk.active, +.btn-vk:active, +.open > .dropdown-toggle.btn-vk { + background-image: none; +} +.btn-vk.disabled.focus, +.btn-vk.disabled:focus, +.btn-vk.disabled:hover, +.btn-vk[disabled].focus, +.btn-vk[disabled]:focus, +.btn-vk[disabled]:hover, +fieldset[disabled] .btn-vk.focus, +fieldset[disabled] .btn-vk:focus, +fieldset[disabled] .btn-vk:hover { + background-color: #587ea3; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk .badge { + color: #587ea3; + background-color: #fff; +} +.btn-yahoo { + color: #fff; + background-color: #720e9e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-yahoo.active, +.btn-yahoo.focus, +.btn-yahoo:active, +.btn-yahoo:focus, +.btn-yahoo:hover, +.open > .dropdown-toggle.btn-yahoo { + color: #fff; + background-color: #500a6f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-yahoo.active.focus, +.btn-yahoo.active:focus, +.btn-yahoo.active:hover, +.btn-yahoo:active.focus, +.btn-yahoo:active:focus, +.btn-yahoo:active:hover, +.open > .dropdown-toggle.btn-yahoo.focus, +.open > .dropdown-toggle.btn-yahoo:focus, +.open > .dropdown-toggle.btn-yahoo:hover { + color: #fff; + background-color: #39074e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-yahoo.active, +.btn-yahoo:active, +.open > .dropdown-toggle.btn-yahoo { + background-image: none; +} +.btn-yahoo.disabled.focus, +.btn-yahoo.disabled:focus, +.btn-yahoo.disabled:hover, +.btn-yahoo[disabled].focus, +.btn-yahoo[disabled]:focus, +.btn-yahoo[disabled]:hover, +fieldset[disabled] .btn-yahoo.focus, +fieldset[disabled] .btn-yahoo:focus, +fieldset[disabled] .btn-yahoo:hover { + background-color: #720e9e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-yahoo .badge { + color: #720e9e; + background-color: #fff; +} +.fc-button { + background: #f4f4f4; + background-image: none; + color: #444; + border-color: #ddd; + border-bottom-color: #ddd; +} +.fc-button.hover, +.fc-button:active, +.fc-button:hover { + background-color: #e9e9e9; +} +.fc-header-title h2 { + font-size: 15px; + line-height: 1.6em; + color: #666; + margin-left: 10px; +} +.fc-header-right { + padding-right: 10px; +} +.fc-header-left { + padding-left: 10px; +} +.fc-widget-header { + background: #fafafa; +} +.fc-grid { + width: 100%; + border: 0; +} +.fc-widget-content:first-of-type, +.fc-widget-header:first-of-type { + border-left: 0; + border-right: 0; +} +.fc-widget-content:last-of-type, +.fc-widget-header:last-of-type { + border-right: 0; +} +.fc-toolbar { + padding: 10px; + margin: 0; +} +.fc-day-number { + font-size: 20px; + font-weight: 300; + padding-right: 10px; +} +.fc-color-picker { + list-style: none; + margin: 0; + padding: 0; +} +.fc-color-picker > li { + float: left; + font-size: 30px; + margin-right: 5px; + line-height: 30px; +} +.fc-color-picker > li .fa { + -webkit-transition: -webkit-transform 0.3s linear; + -moz-transition: -moz-transform linear 0.3s; + -o-transition: -o-transform linear 0.3s; + transition: transform 0.3s linear; +} +.fc-color-picker > li .fa:hover { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + -o-transform: rotate(30deg); + transform: rotate(30deg); +} +#add-new-event { + -webkit-transition: all 0.3s linear; + -o-transition: all linear 0.3s; + transition: all 0.3s linear; +} +.external-event { + padding: 5px 10px; + font-weight: 700; + margin-bottom: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 3px; + cursor: move; +} +.external-event:hover { + box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); +} +.select2-container--default.select2-container--focus, +.select2-container--default:active, +.select2-container--default:focus, +.select2-selection.select2-container--focus, +.select2-selection:active, +.select2-selection:focus { + outline: none; +} +.select2-container--default .select2-selection--single, +.select2-selection .select2-selection--single { + border: 1px solid #d2d6de; + border-radius: 0; + padding: 6px 12px; + height: 34px; +} +.select2-container--default.select2-container--open { + border-color: #3c8dbc; +} +.select2-dropdown { + border: 1px solid #d2d6de; + border-radius: 0; +} +.select2-container--default + .select2-results__option--highlighted[aria-selected] { + background-color: #3c8dbc; + color: #fff; +} +.select2-results__option { + padding: 6px 12px; + user-select: none; + -webkit-user-select: none; +} +.select2-container .select2-selection--single .select2-selection__rendered { + padding-left: 0; + padding-right: 0; + height: auto; + margin-top: -4px; +} +.select2-container[dir='rtl'] + .select2-selection--single + .select2-selection__rendered { + padding-right: 6px; + padding-left: 20px; +} +.select2-container--default + .select2-selection--single + .select2-selection__arrow { + height: 28px; + right: 3px; +} +.select2-container--default + .select2-selection--single + .select2-selection__arrow + b { + margin-top: 0; +} +.select2-dropdown .select2-search__field, +.select2-search--inline .select2-search__field { + border: 1px solid #d2d6de; +} +.select2-dropdown .select2-search__field:focus, +.select2-search--inline .select2-search__field:focus { + outline: none; +} +.select2-container--default.select2-container--focus + .select2-selection--multiple, +.select2-container--default .select2-search--dropdown .select2-search__field { + border-color: #3c8dbc !important; +} +.select2-container--default .select2-results__option[aria-disabled='true'] { + color: #999; +} +.select2-container--default .select2-results__option[aria-selected='true'] { + background-color: #ddd; +} +.select2-container--default .select2-results__option[aria-selected='true'], +.select2-container--default + .select2-results__option[aria-selected='true']:hover { + color: #444; +} +.select2-container--default .select2-selection--multiple { + border: 1px solid #d2d6de; + border-radius: 0; +} +.select2-container--default .select2-selection--multiple:focus { + border-color: #3c8dbc; +} +.select2-container--default.select2-container--focus + .select2-selection--multiple { + border-color: #d2d6de; +} +.select2-container--default + .select2-selection--multiple + .select2-selection__choice { + background-color: #3c8dbc; + border-color: #367fa9; + padding: 1px 10px; + color: #fff; +} +.select2-container--default + .select2-selection--multiple + .select2-selection__choice__remove { + margin-right: 5px; + color: hsla(0, 0%, 100%, 0.7); +} +.select2-container--default + .select2-selection--multiple + .select2-selection__choice__remove:hover { + color: #fff; +} +.select2-container .select2-selection--single .select2-selection__rendered { + padding-right: 10px; +} +.box .datepicker-inline, +.box .datepicker-inline .datepicker-days, +.box .datepicker-inline .datepicker-days > table, +.box .datepicker-inline > table { + width: 100%; +} +.box .datepicker-inline .datepicker-days > table td:hover, +.box .datepicker-inline .datepicker-days td:hover, +.box .datepicker-inline > table td:hover, +.box .datepicker-inline td:hover { + background-color: hsla(0, 0%, 100%, 0.3); +} +.box .datepicker-inline .datepicker-days > table td.day.new, +.box .datepicker-inline .datepicker-days > table td.day.old, +.box .datepicker-inline .datepicker-days td.day.new, +.box .datepicker-inline .datepicker-days td.day.old, +.box .datepicker-inline > table td.day.new, +.box .datepicker-inline > table td.day.old, +.box .datepicker-inline td.day.new, +.box .datepicker-inline td.day.old { + color: #777; +} +.pad { + padding: 10px; +} +.margin { + margin: 10px; +} +.margin-bottom { + margin-bottom: 20px; +} +.margin-bottom-none { + margin-bottom: 0; +} +.margin-r-5 { + margin-right: 5px; +} +.inline { + display: inline; +} +.description-block { + display: block; + margin: 10px 0; + text-align: center; +} +.description-block.margin-bottom { + margin-bottom: 25px; +} +.description-block > .description-header { + margin: 0; + padding: 0; + font-weight: 600; + font-size: 16px; +} +.description-block > .description-text { + text-transform: uppercase; +} +.alert-danger, +.alert-error, +.alert-info, +.alert-success, +.alert-warning, +.bg-aqua, +.bg-aqua-active, +.bg-black, +.bg-black-active, +.bg-blue, +.bg-blue-active, +.bg-fuchsia, +.bg-fuchsia-active, +.bg-green, +.bg-green-active, +.bg-light-blue, +.bg-light-blue-active, +.bg-lime, +.bg-lime-active, +.bg-maroon, +.bg-maroon-active, +.bg-navy, +.bg-navy-active, +.bg-olive, +.bg-olive-active, +.bg-orange, +.bg-orange-active, +.bg-purple, +.bg-purple-active, +.bg-red, +.bg-red-active, +.bg-teal, +.bg-teal-active, +.bg-yellow, +.bg-yellow-active, +.callout.callout-danger, +.callout.callout-info, +.callout.callout-success, +.callout.callout-warning, +.label-danger, +.label-info, +.label-primary, +.label-success, +.label-warning, +.modal-danger .modal-body, +.modal-danger .modal-footer, +.modal-danger .modal-header, +.modal-info .modal-body, +.modal-info .modal-footer, +.modal-info .modal-header, +.modal-primary .modal-body, +.modal-primary .modal-footer, +.modal-primary .modal-header, +.modal-success .modal-body, +.modal-success .modal-footer, +.modal-success .modal-header, +.modal-warning .modal-body, +.modal-warning .modal-footer, +.modal-warning .modal-header { + color: #fff !important; +} +.bg-gray { + color: #000; + background-color: #d2d6de !important; +} +.bg-gray-light { + background-color: #f7f7f7; +} +.bg-black { + background-color: #111 !important; +} +.alert-danger, +.alert-error, +.bg-red, +.callout.callout-danger, +.label-danger, +.modal-danger .modal-body { + background-color: #dd4b39 !important; +} +.alert-warning, +.bg-yellow, +.callout.callout-warning, +.label-warning, +.modal-warning .modal-body { + background-color: #f39c12 !important; +} +.alert-info, +.bg-aqua, +.callout.callout-info, +.label-info, +.modal-info .modal-body { + background-color: #00c0ef !important; +} +.bg-blue { + background-color: #0073b7 !important; +} +.bg-light-blue, +.label-primary, +.modal-primary .modal-body { + background-color: #3c8dbc !important; +} +.alert-success, +.bg-green, +.callout.callout-success, +.label-success, +.modal-success .modal-body { + background-color: #00a65a !important; +} +.bg-navy { + background-color: #001f3f !important; +} +.bg-teal { + background-color: #39cccc !important; +} +.bg-olive { + background-color: #3d9970 !important; +} +.bg-lime { + background-color: #01ff70 !important; +} +.bg-orange { + background-color: #ff851b !important; +} +.bg-fuchsia { + background-color: #f012be !important; +} +.bg-purple { + background-color: #605ca8 !important; +} +.bg-maroon { + background-color: #d81b60 !important; +} +.bg-gray-active { + color: #000; + background-color: #b5bbc8 !important; +} +.bg-black-active { + background-color: #000 !important; +} +.bg-red-active, +.modal-danger .modal-footer, +.modal-danger .modal-header { + background-color: #d33724 !important; +} +.bg-yellow-active, +.modal-warning .modal-footer, +.modal-warning .modal-header { + background-color: #db8b0b !important; +} +.bg-aqua-active, +.modal-info .modal-footer, +.modal-info .modal-header { + background-color: #00a7d0 !important; +} +.bg-blue-active { + background-color: #005384 !important; +} +.bg-light-blue-active, +.modal-primary .modal-footer, +.modal-primary .modal-header { + background-color: #357ca5 !important; +} +.bg-green-active, +.modal-success .modal-footer, +.modal-success .modal-header { + background-color: #008d4c !important; +} +.bg-navy-active { + background-color: #001a35 !important; +} +.bg-teal-active { + background-color: #30bbbb !important; +} +.bg-olive-active { + background-color: #368763 !important; +} +.bg-lime-active { + background-color: #00e765 !important; +} +.bg-orange-active { + background-color: #ff7701 !important; +} +.bg-fuchsia-active { + background-color: #db0ead !important; +} +.bg-purple-active { + background-color: #555299 !important; +} +.bg-maroon-active { + background-color: #ca195a !important; +} +[class^='bg-'].disabled { + opacity: 0.65; + filter: alpha(opacity=65); +} +.text-red { + color: #dd4b39 !important; +} +.text-yellow { + color: #f39c12 !important; +} +.text-aqua { + color: #00c0ef !important; +} +.text-blue { + color: #0073b7 !important; +} +.text-black { + color: #111 !important; +} +.text-light-blue { + color: #3c8dbc !important; +} +.text-green { + color: #00a65a !important; +} +.text-gray { + color: #d2d6de !important; +} +.text-navy { + color: #001f3f !important; +} +.text-teal { + color: #39cccc !important; +} +.text-olive { + color: #3d9970 !important; +} +.text-lime { + color: #01ff70 !important; +} +.text-orange { + color: #ff851b !important; +} +.text-fuchsia { + color: #f012be !important; +} +.text-purple { + color: #605ca8 !important; +} +.text-maroon { + color: #d81b60 !important; +} +.link-muted { + color: #7a869d; +} +.link-muted:focus, +.link-muted:hover { + color: #606c84; +} +.link-black { + color: #666; +} +.link-black:focus, +.link-black:hover { + color: #999; +} +.hide { + display: none !important; +} +.no-border { + border: 0 !important; +} +.no-padding { + padding: 0 !important; +} +.no-margin { + margin: 0 !important; +} +.no-shadow { + box-shadow: none !important; +} +.chart-legend, +.contacts-list, +.list-unstyled, +.mailbox-attachments, +.users-list { + list-style: none; + margin: 0; + padding: 0; +} +.list-group-unbordered > .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; + padding-left: 0; + padding-right: 0; +} +.flat { + border-radius: 0 !important; +} +.text-bold, +.text-bold.table td, +.text-bold.table th { + font-weight: 700; +} +.text-sm { + font-size: 12px; +} +.jqstooltip { + padding: 5px !important; + width: auto !important; + height: auto !important; +} +.bg-teal-gradient { + background: #39cccc !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #39cccc), + color-stop(1, #7adddd) + ) !important; + background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important; + background: -moz-linear-gradient( + center bottom, + #39cccc 0, + #7adddd 100% + ) !important; + background: -o-linear-gradient(#7adddd, #39cccc) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#7adddd",endColorstr="#39CCCC",GradientType=0) !important; + color: #fff; +} +.bg-light-blue-gradient { + background: #3c8dbc !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #3c8dbc), + color-stop(1, #67a8ce) + ) !important; + background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; + background: -moz-linear-gradient( + center bottom, + #3c8dbc 0, + #67a8ce 100% + ) !important; + background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#67a8ce",endColorstr="#3c8dbc",GradientType=0) !important; + color: #fff; +} +.bg-blue-gradient { + background: #0073b7 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #0073b7), + color-stop(1, #0089db) + ) !important; + background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; + background: -moz-linear-gradient( + center bottom, + #0073b7 0, + #0089db 100% + ) !important; + background: -o-linear-gradient(#0089db, #0073b7) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#0089db",endColorstr="#0073b7",GradientType=0) !important; + color: #fff; +} +.bg-aqua-gradient { + background: #00c0ef !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #00c0ef), + color-stop(1, #14d1ff) + ) !important; + background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; + background: -moz-linear-gradient( + center bottom, + #00c0ef 0, + #14d1ff 100% + ) !important; + background: -o-linear-gradient(#14d1ff, #00c0ef) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#14d1ff",endColorstr="#00c0ef",GradientType=0) !important; + color: #fff; +} +.bg-yellow-gradient { + background: #f39c12 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #f39c12), + color-stop(1, #f7bc60) + ) !important; + background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; + background: -moz-linear-gradient( + center bottom, + #f39c12 0, + #f7bc60 100% + ) !important; + background: -o-linear-gradient(#f7bc60, #f39c12) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#f7bc60",endColorstr="#f39c12",GradientType=0) !important; + color: #fff; +} +.bg-purple-gradient { + background: #605ca8 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #605ca8), + color-stop(1, #9491c4) + ) !important; + background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important; + background: -moz-linear-gradient( + center bottom, + #605ca8 0, + #9491c4 100% + ) !important; + background: -o-linear-gradient(#9491c4, #605ca8) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#9491c4",endColorstr="#605ca8",GradientType=0) !important; + color: #fff; +} +.bg-green-gradient { + background: #00a65a !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #00a65a), + color-stop(1, #00ca6d) + ) !important; + background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; + background: -moz-linear-gradient( + center bottom, + #00a65a 0, + #00ca6d 100% + ) !important; + background: -o-linear-gradient(#00ca6d, #00a65a) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#00ca6d",endColorstr="#00a65a",GradientType=0) !important; + color: #fff; +} +.bg-red-gradient { + background: #dd4b39 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #dd4b39), + color-stop(1, #e47365) + ) !important; + background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important; + background: -moz-linear-gradient( + center bottom, + #dd4b39 0, + #e47365 100% + ) !important; + background: -o-linear-gradient(#e47365, #dd4b39) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#e47365",endColorstr="#dd4b39",GradientType=0) !important; + color: #fff; +} +.bg-black-gradient { + background: #111 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #111), + color-stop(1, #2b2b2b) + ) !important; + background: -ms-linear-gradient(bottom, #111, #2b2b2b) !important; + background: -moz-linear-gradient( + center bottom, + #111 0, + #2b2b2b 100% + ) !important; + background: -o-linear-gradient(#2b2b2b, #111) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#2b2b2b",endColorstr="#111",GradientType=0) !important; + color: #fff; +} +.bg-maroon-gradient { + background: #d81b60 !important; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #d81b60), + color-stop(1, #e73f7c) + ) !important; + background: -ms-linear-gradient(bottom, #d81b60, #e73f7c) !important; + background: -moz-linear-gradient( + center bottom, + #d81b60 0, + #e73f7c 100% + ) !important; + background: -o-linear-gradient(#e73f7c, #d81b60) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#e73f7c",endColorstr="#D81B60",GradientType=0) !important; + color: #fff; +} +.description-block .description-icon { + font-size: 16px; +} +.no-pad-top { + padding-top: 0; +} +.position-static { + position: static !important; +} +.list-header { + font-size: 15px; + padding: 10px 4px; + font-weight: 700; + color: #666; +} +.list-seperator { + height: 1px; + background: #f4f4f4; + margin: 15px 0 9px; +} +.list-link > a { + padding: 4px; + color: #777; +} +.list-link > a:hover { + color: #222; +} +.font-light { + font-weight: 300; +} +.user-block:after, +.user-block:before { + content: ' '; + display: table; +} +.user-block:after { + clear: both; +} +.user-block img { + width: 40px; + height: 40px; + float: left; +} +.user-block .comment, +.user-block .description, +.user-block .username { + display: block; + margin-left: 50px; +} +.user-block .username { + font-size: 16px; + font-weight: 600; +} +.user-block .description { + color: #999; + font-size: 13px; +} +.user-block.user-block-sm .comment, +.user-block.user-block-sm .description, +.user-block.user-block-sm .username { + margin-left: 40px; +} +.user-block.user-block-sm .username { + font-size: 14px; +} +.box-comments .box-comment img, +.img-lg, +.img-md, +.img-sm, +.user-block.user-block-sm img { + float: left; +} +.box-comments .box-comment img, +.img-sm, +.user-block.user-block-sm img { + width: 30px !important; + height: 30px !important; +} +.img-sm + .img-push { + margin-left: 40px; +} +.img-md { + width: 60px; + height: 60px; +} +.img-md + .img-push { + margin-left: 70px; +} +.img-lg { + width: 100px; + height: 100px; +} +.img-lg + .img-push { + margin-left: 110px; +} +.img-bordered { + border: 3px solid #d2d6de; + padding: 3px; +} +.img-bordered-sm { + border: 2px solid #d2d6de; + padding: 2px; +} +.attachment-block { + border: 1px solid #f4f4f4; + padding: 5px; + margin-bottom: 10px; + background: #f7f7f7; +} +.attachment-block .attachment-img { + max-width: 100px; + max-height: 100px; + height: auto; + float: left; +} +.attachment-block .attachment-pushed { + margin-left: 110px; +} +.attachment-block .attachment-heading { + margin: 0; +} +.attachment-block .attachment-text { + color: #555; +} +.connectedSortable { + min-height: 100px; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.sort-highlight { + background: #f4f4f4; + border: 1px dashed #ddd; + margin-bottom: 10px; +} +.full-opacity-hover { + opacity: 0.65; + filter: alpha(opacity=65); +} +.full-opacity-hover:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.chart { + position: relative; + overflow: hidden; + width: 100%; +} +.chart canvas, +.chart svg { + width: 100% !important; +} +hr { + border-top: 1px solid #555; +} +#red .slider-selection { + background: #f56954; +} +#blue .slider-selection { + background: #3c8dbc; +} +#green .slider-selection { + background: #00a65a; +} +#yellow .slider-selection { + background: #f39c12; +} +#aqua .slider-selection { + background: #00c0ef; +} +#purple .slider-selection { + background: #932ab6; +} +@media print { + .content-header, + .left-side, + .main-header, + .main-sidebar, + .no-print { + display: none !important; + } + .content-wrapper, + .main-footer, + .right-side { + margin-left: 0 !important; + min-height: 0 !important; + -webkit-transform: translate(0) !important; + -ms-transform: translate(0) !important; + -o-transform: translate(0) !important; + transform: translate(0) !important; + } + .fixed .content-wrapper, + .fixed .right-side { + padding-top: 0 !important; + } + .invoice { + width: 100%; + border: 0; + margin: 0; + padding: 0; + } + .invoice-col { + float: left; + width: 33.3333333%; + } + .table-responsive { + overflow: auto; + } + .table-responsive > .table tr td, + .table-responsive > .table tr th { + white-space: normal !important; + } +} +body.stop-scrolling { + height: 100%; + overflow: hidden; +} +.sweet-overlay { + background-color: #000; + -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=40)'; + background-color: rgba(0, 0, 0, 0.4); + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: none; + z-index: 10000; +} +.sweet-alert { + background-color: #fff; + font-family: Open Sans, Helvetica Neue, Helvetica, Arial, sans-serif; + width: 478px; + padding: 17px; + border-radius: 5px; + text-align: center; + position: fixed; + left: 50%; + top: 50%; + margin-left: -256px; + margin-top: -200px; + overflow: hidden; + display: none; + z-index: 99999; +} +@media (max-width: 540px) { + .sweet-alert { + width: auto; + margin-left: 0; + margin-right: 0; + left: 15px; + right: 15px; + } +} +.sweet-alert h2 { + color: #575757; + font-size: 30px; + font-weight: 600; + text-transform: none; + margin: 25px 0; + line-height: 40px; + display: block; +} +.sweet-alert h2, +.sweet-alert p { + text-align: center; + position: relative; + padding: 0; +} +.sweet-alert p { + color: #797979; + font-size: 16px; + font-weight: 300; + text-align: inherit; + float: none; + margin: 0; + line-height: normal; +} +.sweet-alert fieldset { + border: none; + position: relative; +} +.sweet-alert .sa-error-container { + background-color: #f1f1f1; + margin-left: -17px; + margin-right: -17px; + overflow: hidden; + padding: 0 10px; + max-height: 0; + webkit-transition: padding 0.15s, max-height 0.15s; + transition: padding 0.15s, max-height 0.15s; +} +.sweet-alert .sa-error-container.show { + padding: 10px 0; + max-height: 100px; + webkit-transition: padding 0.2s, max-height 0.2s; + transition: padding 0.25s, max-height 0.25s; +} +.sweet-alert .sa-error-container .icon { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #ea7d7d; + color: #fff; + line-height: 24px; + text-align: center; + margin-right: 3px; +} +.sweet-alert .sa-error-container p { + display: inline-block; +} +.sweet-alert .sa-input-error { + position: absolute; + top: 29px; + right: 26px; + width: 20px; + height: 20px; + opacity: 0; + -webkit-transform: scale(0.5); + transform: scale(0.5); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.1s; + transition: all 0.1s; +} +.sweet-alert .sa-input-error:after, +.sweet-alert .sa-input-error:before { + content: ''; + width: 20px; + height: 6px; + background-color: #f06e57; + border-radius: 3px; + position: absolute; + top: 50%; + margin-top: -4px; + left: 50%; + margin-left: -9px; +} +.sweet-alert .sa-input-error:before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.sweet-alert .sa-input-error:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.sweet-alert .sa-input-error.show { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); +} +.sweet-alert input { + width: 100%; + box-sizing: border-box; + border-radius: 3px; + border: 1px solid #d7d7d7; + height: 43px; + margin-top: 10px; + margin-bottom: 17px; + font-size: 18px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06); + padding: 0 12px; + display: none; + -webkit-transition: all 0.3s; + transition: all 0.3s; +} +.sweet-alert input:focus { + outline: none; + box-shadow: 0 0 3px #c4e6f5; + border: 1px solid #b4dbed; +} +.sweet-alert input:focus::-moz-placeholder { + transition: opacity 0.3s ease 0.03s; + opacity: 0.5; +} +.sweet-alert input:focus:-ms-input-placeholder { + transition: opacity 0.3s ease 0.03s; + opacity: 0.5; +} +.sweet-alert input:focus::-webkit-input-placeholder { + transition: opacity 0.3s ease 0.03s; + opacity: 0.5; +} +.sweet-alert input::-moz-placeholder { + color: #bdbdbd; +} +.sweet-alert input:-ms-input-placeholder { + color: #bdbdbd; +} +.sweet-alert input::-webkit-input-placeholder { + color: #bdbdbd; +} +.sweet-alert.show-input input { + display: block; +} +.sweet-alert .sa-confirm-button-container { + display: inline-block; + position: relative; +} +.sweet-alert .la-ball-fall { + position: absolute; + left: 50%; + top: 50%; + margin-left: -27px; + margin-top: 4px; + opacity: 0; + visibility: hidden; +} +.sweet-alert button { + background-color: #8cd4f5; + color: #fff; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + -webkit-border-radius: 4px; + border-radius: 5px; + padding: 10px 32px; + margin: 26px 5px 0; + cursor: pointer; +} +.sweet-alert button:focus { + outline: none; + box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), + inset 0 0 0 1px rgba(0, 0, 0, 0.05); +} +.sweet-alert button:hover { + background-color: #7ecff4; +} +.sweet-alert button:active { + background-color: #5dc2f1; +} +.sweet-alert button.cancel { + background-color: #c1c1c1; +} +.sweet-alert button.cancel:hover { + background-color: #b9b9b9; +} +.sweet-alert button.cancel:active { + background-color: #a8a8a8; +} +.sweet-alert button.cancel:focus { + box-shadow: 0 0 2px rgba(197, 205, 211, 0.8), + inset 0 0 0 1px rgba(0, 0, 0, 0.0470588) !important; +} +.sweet-alert button[disabled] { + opacity: 0.6; + cursor: default; +} +.sweet-alert button.confirm[disabled] { + color: transparent; +} +.sweet-alert button.confirm[disabled] ~ .la-ball-fall { + opacity: 1; + visibility: visible; + transition-delay: 0s; +} +.sweet-alert button::-moz-focus-inner { + border: 0; +} +.sweet-alert[data-has-cancel-button='false'] button { + box-shadow: none !important; +} +.sweet-alert[data-has-confirm-button='false'][data-has-cancel-button='false'] { + padding-bottom: 40px; +} +.sweet-alert .sa-icon { + width: 80px; + height: 80px; + border: 4px solid gray; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + margin: 20px auto; + padding: 0; + position: relative; + box-sizing: content-box; +} +.sweet-alert .sa-icon.sa-error { + border-color: #f27474; +} +.sweet-alert .sa-icon.sa-error .sa-x-mark { + position: relative; + display: block; +} +.sweet-alert .sa-icon.sa-error .sa-line { + position: absolute; + height: 5px; + width: 47px; + background-color: #f27474; + display: block; + top: 37px; + border-radius: 2px; +} +.sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; +} +.sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; +} +.sweet-alert .sa-icon.sa-warning { + border-color: #f8bb86; +} +.sweet-alert .sa-icon.sa-warning .sa-body { + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + -webkit-border-radius: 2px; + border-radius: 2px; + margin-left: -2px; + background-color: #f8bb86; +} +.sweet-alert .sa-icon.sa-warning .sa-dot { + position: absolute; + width: 7px; + height: 7px; + -webkit-border-radius: 50%; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: #f8bb86; +} +.sweet-alert .sa-icon.sa-info { + border-color: #c9dae1; +} +.sweet-alert .sa-icon.sa-info:before { + content: ''; + position: absolute; + width: 5px; + height: 29px; + left: 50%; + bottom: 17px; + border-radius: 2px; + margin-left: -2px; + background-color: #c9dae1; +} +.sweet-alert .sa-icon.sa-info:after { + content: ''; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + top: 19px; + background-color: #c9dae1; +} +.sweet-alert .sa-icon.sa-success { + border-color: #a5dc86; +} +.sweet-alert .sa-icon.sa-success:after, +.sweet-alert .sa-icon.sa-success:before { + content: ''; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: #fff; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.sweet-alert .sa-icon.sa-success:before { + -webkit-border-radius: 120px 0 0 120px; + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; +} +.sweet-alert .sa-icon.sa-success:after { + -webkit-border-radius: 0 120px 120px 0; + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0 60px; + transform-origin: 0 60px; +} +.sweet-alert .sa-icon.sa-success .sa-placeholder { + width: 80px; + height: 80px; + border: 4px solid hsla(98, 55%, 69%, 0.2); + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2; +} +.sweet-alert .sa-icon.sa-success .sa-fix { + width: 5px; + height: 90px; + background-color: #fff; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.sweet-alert .sa-icon.sa-success .sa-line { + height: 5px; + background-color: #a5dc86; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2; +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-long { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.sweet-alert .sa-icon.sa-custom { + background-size: contain; + border-radius: 0; + border: none; + background-position: 50%; + background-repeat: no-repeat; +} +@-webkit-keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); + } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); + } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); + } + to { + transform: scale(1); + -webkit-transform: scale(1); + } +} +@keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); + } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); + } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); + } + to { + transform: scale(1); + -webkit-transform: scale(1); + } +} +@-webkit-keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); + } + to { + transform: scale(0.5); + -webkit-transform: scale(0.5); + } +} +@keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); + } + to { + transform: scale(0.5); + -webkit-transform: scale(0.5); + } +} +@-webkit-keyframes slideFromTop { + 0% { + top: 0; + } + to { + top: 50%; + } +} +@keyframes slideFromTop { + 0% { + top: 0; + } + to { + top: 50%; + } +} +@-webkit-keyframes slideToTop { + 0% { + top: 50%; + } + to { + top: 0; + } +} +@keyframes slideToTop { + 0% { + top: 50%; + } + to { + top: 0; + } +} +@-webkit-keyframes slideFromBottom { + 0% { + top: 70%; + } + to { + top: 50%; + } +} +@keyframes slideFromBottom { + 0% { + top: 70%; + } + to { + top: 50%; + } +} +@-webkit-keyframes slideToBottom { + 0% { + top: 50%; + } + to { + top: 70%; + } +} +@keyframes slideToBottom { + 0% { + top: 50%; + } + to { + top: 70%; + } +} +.showSweetAlert[data-animation='pop'] { + -webkit-animation: showSweetAlert 0.3s; + animation: showSweetAlert 0.3s; +} +.showSweetAlert[data-animation='none'] { + -webkit-animation: none; + animation: none; +} +.showSweetAlert[data-animation='slide-from-top'] { + -webkit-animation: slideFromTop 0.3s; + animation: slideFromTop 0.3s; +} +.showSweetAlert[data-animation='slide-from-bottom'] { + -webkit-animation: slideFromBottom 0.3s; + animation: slideFromBottom 0.3s; +} +.hideSweetAlert[data-animation='pop'] { + -webkit-animation: hideSweetAlert 0.2s; + animation: hideSweetAlert 0.2s; +} +.hideSweetAlert[data-animation='none'] { + -webkit-animation: none; + animation: none; +} +.hideSweetAlert[data-animation='slide-from-top'] { + -webkit-animation: slideToTop 0.4s; + animation: slideToTop 0.4s; +} +.hideSweetAlert[data-animation='slide-from-bottom'] { + -webkit-animation: slideToBottom 0.3s; + animation: slideToBottom 0.3s; +} +@-webkit-keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + to { + width: 25px; + left: 14px; + top: 45px; + } +} +@keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + to { + width: 25px; + left: 14px; + top: 45px; + } +} +@-webkit-keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0; + top: 35px; + } + to { + width: 47px; + right: 8px; + top: 38px; + } +} +@keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0; + top: 35px; + } + to { + width: 47px; + right: 8px; + top: 38px; + } +} +@-webkit-keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } + to { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } +} +@keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } + to { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } +} +.animateSuccessTip { + -webkit-animation: animateSuccessTip 0.75s; + animation: animateSuccessTip 0.75s; +} +.animateSuccessLong { + -webkit-animation: animateSuccessLong 0.75s; + animation: animateSuccessLong 0.75s; +} +.sa-icon.sa-success.animate:after { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in; +} +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; + } + to { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; + } + to { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; + } +} +.animateErrorIcon { + -webkit-animation: animateErrorIcon 0.5s; + animation: animateErrorIcon 0.5s; +} +@-webkit-keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; + } + to { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +@keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; + } + to { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +.animateXMark { + -webkit-animation: animateXMark 0.5s; + animation: animateXMark 0.5s; +} +@-webkit-keyframes pulseWarning { + 0% { + border-color: #f8d486; + } + to { + border-color: #f8bb86; + } +} +@keyframes pulseWarning { + 0% { + border-color: #f8d486; + } + to { + border-color: #f8bb86; + } +} +.pulseWarning { + -webkit-animation: pulseWarning 0.75s infinite alternate; + animation: pulseWarning 0.75s infinite alternate; +} +@-webkit-keyframes pulseWarningIns { + 0% { + background-color: #f8d486; + } + to { + background-color: #f8bb86; + } +} +@keyframes pulseWarningIns { + 0% { + background-color: #f8d486; + } + to { + background-color: #f8bb86; + } +} +.pulseWarningIns { + -webkit-animation: pulseWarningIns 0.75s infinite alternate; + animation: pulseWarningIns 0.75s infinite alternate; +} +@-webkit-keyframes rotate-loading { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(1turn); + } +} +@keyframes rotate-loading { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(1turn); + } +} +.sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -ms-transform: rotate(45deg) \9; +} +.sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -ms-transform: rotate(-45deg) \9; +} +.sweet-alert .sa-icon.sa-success { + border-color: transparent\9; +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + -ms-transform: rotate(45deg) \9; +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-long { + -ms-transform: rotate(-45deg) \9; +} + +/*! + * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) + * Copyright 2015 Daniel Cardoso <@DanielCardoso> + * Licensed under MIT + */ +.la-ball-fall, +.la-ball-fall > div { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.la-ball-fall { + display: block; + font-size: 0; + color: #fff; +} +.la-ball-fall.la-dark { + color: #333; +} +.la-ball-fall > div { + display: inline-block; + float: none; + background-color: currentColor; + border: 0 solid currentColor; +} +.la-ball-fall { + width: 54px; + height: 18px; +} +.la-ball-fall > div { + width: 10px; + height: 10px; + margin: 4px; + border-radius: 100%; + opacity: 0; + -webkit-animation: ball-fall 1s ease-in-out infinite; + -moz-animation: ball-fall 1s ease-in-out infinite; + -o-animation: ball-fall 1s ease-in-out infinite; + animation: ball-fall 1s ease-in-out infinite; +} +.la-ball-fall > div:first-child { + -webkit-animation-delay: -0.2s; + -moz-animation-delay: -0.2s; + -o-animation-delay: -0.2s; + animation-delay: -0.2s; +} +.la-ball-fall > div:nth-child(2) { + -webkit-animation-delay: -0.1s; + -moz-animation-delay: -0.1s; + -o-animation-delay: -0.1s; + animation-delay: -0.1s; +} +.la-ball-fall > div:nth-child(3) { + -webkit-animation-delay: 0ms; + -moz-animation-delay: 0ms; + -o-animation-delay: 0ms; + animation-delay: 0ms; +} +.la-ball-fall.la-sm { + width: 26px; + height: 8px; +} +.la-ball-fall.la-sm > div { + width: 4px; + height: 4px; + margin: 2px; +} +.la-ball-fall.la-2x { + width: 108px; + height: 36px; +} +.la-ball-fall.la-2x > div { + width: 20px; + height: 20px; + margin: 8px; +} +.la-ball-fall.la-3x { + width: 162px; + height: 54px; +} +.la-ball-fall.la-3x > div { + width: 30px; + height: 30px; + margin: 12px; +} +@-webkit-keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: 0.5; + } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: 0.5; + } + to { + opacity: 0; + -webkit-transform: translateY(145%); + transform: translateY(145%); + } +} +@-moz-keyframes ball-fall { + 0% { + opacity: 0; + -moz-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: 0.5; + } + 20% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: 0.5; + } + to { + opacity: 0; + -moz-transform: translateY(145%); + transform: translateY(145%); + } +} +@-o-keyframes ball-fall { + 0% { + opacity: 0; + -o-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: 0.5; + } + 20% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: 0.5; + } + to { + opacity: 0; + -o-transform: translateY(145%); + transform: translateY(145%); + } +} +@keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + -moz-transform: translateY(-145%); + -o-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: 0.5; + } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: 0.5; + } + to { + opacity: 0; + -webkit-transform: translateY(145%); + -moz-transform: translateY(145%); + -o-transform: translateY(145%); + transform: translateY(145%); + } +} +.checkbox { + padding-left: 20px; +} +.checkbox label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.checkbox label:before { + content: ''; + width: 17px; + height: 17px; + border: 1px solid #ccc; + border-radius: 3px; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; +} +.checkbox label:after, +.checkbox label:before { + display: inline-block; + position: absolute; + left: 0; + margin-left: -20px; +} +.checkbox label:after { + width: 16px; + height: 16px; + top: 0; + padding-left: 3px; + padding-top: 1px; + font-size: 11px; + color: #555; +} +.checkbox input[type='checkbox'], +.checkbox input[type='radio'] { + opacity: 0; + z-index: 1; +} +.checkbox input[type='checkbox']:focus + label:before, +.checkbox input[type='radio']:focus + label:before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.checkbox input[type='checkbox']:checked + label:after, +.checkbox input[type='radio']:checked + label:after { + font-family: FontAwesome; + content: '\f00c'; +} +.checkbox input[type='checkbox']:indeterminate + label:after, +.checkbox input[type='radio']:indeterminate + label:after { + display: block; + content: ''; + width: 10px; + height: 3px; + background-color: #555; + border-radius: 2px; + margin-left: -16.5px; + margin-top: 7px; +} +.checkbox input[type='checkbox']:disabled + label, +.checkbox input[type='radio']:disabled + label { + opacity: 0.65; +} +.checkbox input[type='checkbox']:disabled + label:before, +.checkbox input[type='radio']:disabled + label:before { + background-color: #eee; + cursor: not-allowed; +} +.checkbox.checkbox-circle label:before { + border-radius: 50%; +} +.checkbox.checkbox-inline { + margin-top: 0; +} +.checkbox-primary input[type='checkbox']:checked + label:before, +.checkbox-primary input[type='radio']:checked + label:before { + background-color: #337ab7; + border-color: #337ab7; +} +.checkbox-primary input[type='checkbox']:checked + label:after, +.checkbox-primary input[type='radio']:checked + label:after { + color: #fff; +} +.checkbox-danger input[type='checkbox']:checked + label:before, +.checkbox-danger input[type='radio']:checked + label:before { + background-color: #d9534f; + border-color: #d9534f; +} +.checkbox-danger input[type='checkbox']:checked + label:after, +.checkbox-danger input[type='radio']:checked + label:after { + color: #fff; +} +.checkbox-info input[type='checkbox']:checked + label:before, +.checkbox-info input[type='radio']:checked + label:before { + background-color: #5bc0de; + border-color: #5bc0de; +} +.checkbox-info input[type='checkbox']:checked + label:after, +.checkbox-info input[type='radio']:checked + label:after { + color: #fff; +} +.checkbox-warning input[type='checkbox']:checked + label:before, +.checkbox-warning input[type='radio']:checked + label:before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.checkbox-warning input[type='checkbox']:checked + label:after, +.checkbox-warning input[type='radio']:checked + label:after { + color: #fff; +} +.checkbox-success input[type='checkbox']:checked + label:before, +.checkbox-success input[type='radio']:checked + label:before { + background-color: #5cb85c; + border-color: #5cb85c; +} +.checkbox-success input[type='checkbox']:checked + label:after, +.checkbox-success input[type='radio']:checked + label:after { + color: #fff; +} +.checkbox-primary input[type='checkbox']:indeterminate + label:before, +.checkbox-primary input[type='radio']:indeterminate + label:before { + background-color: #337ab7; + border-color: #337ab7; +} +.checkbox-primary input[type='checkbox']:indeterminate + label:after, +.checkbox-primary input[type='radio']:indeterminate + label:after { + background-color: #fff; +} +.checkbox-danger input[type='checkbox']:indeterminate + label:before, +.checkbox-danger input[type='radio']:indeterminate + label:before { + background-color: #d9534f; + border-color: #d9534f; +} +.checkbox-danger input[type='checkbox']:indeterminate + label:after, +.checkbox-danger input[type='radio']:indeterminate + label:after { + background-color: #fff; +} +.checkbox-info input[type='checkbox']:indeterminate + label:before, +.checkbox-info input[type='radio']:indeterminate + label:before { + background-color: #5bc0de; + border-color: #5bc0de; +} +.checkbox-info input[type='checkbox']:indeterminate + label:after, +.checkbox-info input[type='radio']:indeterminate + label:after { + background-color: #fff; +} +.checkbox-warning input[type='checkbox']:indeterminate + label:before, +.checkbox-warning input[type='radio']:indeterminate + label:before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.checkbox-warning input[type='checkbox']:indeterminate + label:after, +.checkbox-warning input[type='radio']:indeterminate + label:after { + background-color: #fff; +} +.checkbox-success input[type='checkbox']:indeterminate + label:before, +.checkbox-success input[type='radio']:indeterminate + label:before { + background-color: #5cb85c; + border-color: #5cb85c; +} +.checkbox-success input[type='checkbox']:indeterminate + label:after, +.checkbox-success input[type='radio']:indeterminate + label:after { + background-color: #fff; +} +.radio { + padding-left: 20px; +} +.radio label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.radio label:before { + content: ''; + width: 17px; + height: 17px; + left: 0; + border: 1px solid #ccc; + border-radius: 50%; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out; + transition: border 0.15s ease-in-out; +} +.radio label:after, +.radio label:before { + display: inline-block; + position: absolute; + margin-left: -20px; +} +.radio label:after { + content: ' '; + width: 11px; + height: 11px; + left: 3px; + top: 3px; + border-radius: 50%; + background-color: #555; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); +} +.radio input[type='radio'] { + opacity: 0; + z-index: 1; +} +.radio input[type='radio']:focus + label:before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.radio input[type='radio']:checked + label:after { + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} +.radio input[type='radio']:disabled + label { + opacity: 0.65; +} +.radio input[type='radio']:disabled + label:before { + cursor: not-allowed; +} +.radio.radio-inline { + margin-top: 0; +} +.radio-primary input[type='radio'] + label:after { + background-color: #337ab7; +} +.radio-primary input[type='radio']:checked + label:before { + border-color: #337ab7; +} +.radio-primary input[type='radio']:checked + label:after { + background-color: #337ab7; +} +.radio-danger input[type='radio'] + label:after { + background-color: #d9534f; +} +.radio-danger input[type='radio']:checked + label:before { + border-color: #d9534f; +} +.radio-danger input[type='radio']:checked + label:after { + background-color: #d9534f; +} +.radio-info input[type='radio'] + label:after { + background-color: #5bc0de; +} +.radio-info input[type='radio']:checked + label:before { + border-color: #5bc0de; +} +.radio-info input[type='radio']:checked + label:after { + background-color: #5bc0de; +} +.radio-warning input[type='radio'] + label:after { + background-color: #f0ad4e; +} +.radio-warning input[type='radio']:checked + label:before { + border-color: #f0ad4e; +} +.radio-warning input[type='radio']:checked + label:after { + background-color: #f0ad4e; +} +.radio-success input[type='radio'] + label:after { + background-color: #5cb85c; +} +.radio-success input[type='radio']:checked + label:before { + border-color: #5cb85c; +} +.radio-success input[type='radio']:checked + label:after { + background-color: #5cb85c; +} +input[type='checkbox'].styled:checked + label:after, +input[type='radio'].styled:checked + label:after { + font-family: FontAwesome; + content: '\f00c'; +} +input[type='checkbox'] .styled:checked + label:after, +input[type='checkbox'] .styled:checked + label:before, +input[type='radio'] .styled:checked + label:after, +input[type='radio'] .styled:checked + label:before { + color: #fff; +} +.ng-cloak, +.ng-hide:not(.ng-hide-animate), +.x-ng-cloak, +[data-ng-cloak], +[ng-cloak], +[ng\:cloak], +[x-ng-cloak] { + display: none !important; +} +ng\:form { + display: block; +} +.ng-animate-shim { + visibility: hidden; +} +.ng-anchor { + position: absolute; +} +.ui-notification { + position: fixed; + z-index: 9999; + width: 300px; + -webkit-transition: all 0.5s ease; + -o-transition: all ease 0.5s; + transition: all 0.5s ease; + color: #fff; + border-radius: 0; + background: #337ab7; + box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3); +} +.ui-notification.clickable { + cursor: pointer; +} +.ui-notification.clickable:hover { + opacity: 0.7; +} +.ui-notification.killed { + -webkit-transition: opacity 1s ease; + -o-transition: opacity ease 1s; + transition: opacity 1s ease; + opacity: 0; +} +.ui-notification > h3 { + font-size: 14px; + font-weight: 700; + display: block; + margin: 10px 10px 0; + padding: 0 0 5px; + text-align: left; + border-bottom: 1px solid hsla(0, 0%, 100%, 0.3); +} +.ui-notification a { + color: #fff; +} +.ui-notification a:hover { + text-decoration: underline; +} +.ui-notification > .message { + margin: 10px; +} +.ui-notification.warning { + color: #fff; + background: #f0ad4e; +} +.ui-notification.error { + color: #fff; + background: #d9534f; +} +.ui-notification.success { + color: #fff; + background: #5cb85c; +} +.ui-notification.info { + color: #fff; + background: #5bc0de; +} +.cg-busy { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1001; +} +.cg-busy-animation.ng-hide-add, +.cg-busy-animation.ng-hide-remove { + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; + display: block !important; +} +.cg-busy-animation.ng-hide-remove { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); +} +.cg-busy-animation.ng-hide-add, +.cg-busy-animation.ng-hide-remove.ng-hide-remove-active { + opacity: 1; + -webkit-transform: translate(0); + -moz-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); +} +.cg-busy-animation.ng-hide-add.ng-hide-add-active { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); +} +.cg-busy-backdrop { + background-color: #fff; + opacity: 0.7; +} +.cg-busy-backdrop-animation.ng-hide-add, +.cg-busy-backdrop-animation.ng-hide-remove { + -webkit-transition: opacity 0.3s ease; + -moz-transition: opacity 0.3s ease; + -o-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + display: block !important; +} +.cg-busy-backdrop-animation.ng-hide { + opacity: 0; +} +.cg-busy-default-wrapper { + text-align: center; +} +.cg-busy-default-sign { + display: inline-block; + position: relative; + z-index: 1002; + padding-bottom: 6px; + color: #333; + text-shadow: 0 1px 1px hsla(0, 0%, 100%, 0.75); + background-color: #e9eeee; + border: 1px solid #ddd; + border-top-width: 0; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + border-top-left-radius: 0; + border-top-right-radius: 0; + -webkit-box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); +} +.cg-busy-default-text { + margin: 13px 12px 6px 49px; + font-size: 16px; + color: #555; + text-align: left; + max-width: 400px; +} +.cg-busy-default-spinner { + position: absolute; + width: 25px; + height: 25px; + display: inline-block; + top: 12px; + left: 14px; +} +.cg-busy-default-spinner div { + width: 12%; + height: 26%; + background: #000; + position: absolute; + left: 44.5%; + top: 37%; + opacity: 0; + -webkit-animation: cg-busy-spinner-anim 1s linear infinite; + -moz-animation: cg-busy-spinner-anim 1s linear infinite; + -ms-animation: cg-busy-spinner-anim 1s linear infinite; + -o-animation: cg-busy-spinner-anim 1s linear infinite; + animation: cg-busy-spinner-anim 1s linear infinite; + -webkit-border-radius: 50px; + -moz-border-radius: 50px; + border-radius: 50px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} +.cg-busy-default-spinner div.bar1 { + -webkit-transform: rotate(0deg) translateY(-142%); + -moz-transform: rotate(0deg) translateY(-142%); + -ms-transform: rotate(0deg) translateY(-142%); + -o-transform: rotate(0deg) translateY(-142%); + transform: rotate(0deg) translateY(-142%); + -webkit-animation-delay: 0s; + -moz-animation-delay: 0s; + -ms-animation-delay: 0s; + -o-animation-delay: 0s; + animation-delay: 0s; +} +.cg-busy-default-spinner div.bar2 { + -webkit-transform: rotate(30deg) translateY(-142%); + -moz-transform: rotate(30deg) translateY(-142%); + -ms-transform: rotate(30deg) translateY(-142%); + -o-transform: rotate(30deg) translateY(-142%); + transform: rotate(30deg) translateY(-142%); + -webkit-animation-delay: -0.9167s; + -moz-animation-delay: -0.9167s; + -ms-animation-delay: -0.9167s; + -o-animation-delay: -0.9167s; + animation-delay: -0.9167s; +} +.cg-busy-default-spinner div.bar3 { + -webkit-transform: rotate(60deg) translateY(-142%); + -moz-transform: rotate(60deg) translateY(-142%); + -ms-transform: rotate(60deg) translateY(-142%); + -o-transform: rotate(60deg) translateY(-142%); + transform: rotate(60deg) translateY(-142%); + -webkit-animation-delay: -0.833s; + -moz-animation-delay: -0.833s; + -ms-animation-delay: -0.833s; + -o-animation-delay: -0.833s; + animation-delay: -0.833s; +} +.cg-busy-default-spinner div.bar4 { + -webkit-transform: rotate(90deg) translateY(-142%); + -moz-transform: rotate(90deg) translateY(-142%); + -ms-transform: rotate(90deg) translateY(-142%); + -o-transform: rotate(90deg) translateY(-142%); + transform: rotate(90deg) translateY(-142%); + -webkit-animation-delay: -0.75s; + -moz-animation-delay: -0.75s; + -ms-animation-delay: -0.75s; + -o-animation-delay: -0.75s; + animation-delay: -0.75s; +} +.cg-busy-default-spinner div.bar5 { + -webkit-transform: rotate(120deg) translateY(-142%); + -moz-transform: rotate(120deg) translateY(-142%); + -ms-transform: rotate(120deg) translateY(-142%); + -o-transform: rotate(120deg) translateY(-142%); + transform: rotate(120deg) translateY(-142%); + -webkit-animation-delay: -0.667s; + -moz-animation-delay: -0.667s; + -ms-animation-delay: -0.667s; + -o-animation-delay: -0.667s; + animation-delay: -0.667s; +} +.cg-busy-default-spinner div.bar6 { + -webkit-transform: rotate(150deg) translateY(-142%); + -moz-transform: rotate(150deg) translateY(-142%); + -ms-transform: rotate(150deg) translateY(-142%); + -o-transform: rotate(150deg) translateY(-142%); + transform: rotate(150deg) translateY(-142%); + -webkit-animation-delay: -0.5833s; + -moz-animation-delay: -0.5833s; + -ms-animation-delay: -0.5833s; + -o-animation-delay: -0.5833s; + animation-delay: -0.5833s; +} +.cg-busy-default-spinner div.bar7 { + -webkit-transform: rotate(180deg) translateY(-142%); + -moz-transform: rotate(180deg) translateY(-142%); + -ms-transform: rotate(180deg) translateY(-142%); + -o-transform: rotate(180deg) translateY(-142%); + transform: rotate(180deg) translateY(-142%); + -webkit-animation-delay: -0.5s; + -moz-animation-delay: -0.5s; + -ms-animation-delay: -0.5s; + -o-animation-delay: -0.5s; + animation-delay: -0.5s; +} +.cg-busy-default-spinner div.bar8 { + -webkit-transform: rotate(210deg) translateY(-142%); + -moz-transform: rotate(210deg) translateY(-142%); + -ms-transform: rotate(210deg) translateY(-142%); + -o-transform: rotate(210deg) translateY(-142%); + transform: rotate(210deg) translateY(-142%); + -webkit-animation-delay: -0.41667s; + -moz-animation-delay: -0.41667s; + -ms-animation-delay: -0.41667s; + -o-animation-delay: -0.41667s; + animation-delay: -0.41667s; +} +.cg-busy-default-spinner div.bar9 { + -webkit-transform: rotate(240deg) translateY(-142%); + -moz-transform: rotate(240deg) translateY(-142%); + -ms-transform: rotate(240deg) translateY(-142%); + -o-transform: rotate(240deg) translateY(-142%); + transform: rotate(240deg) translateY(-142%); + -webkit-animation-delay: -0.333s; + -moz-animation-delay: -0.333s; + -ms-animation-delay: -0.333s; + -o-animation-delay: -0.333s; + animation-delay: -0.333s; +} +.cg-busy-default-spinner div.bar10 { + -webkit-transform: rotate(270deg) translateY(-142%); + -moz-transform: rotate(270deg) translateY(-142%); + -ms-transform: rotate(270deg) translateY(-142%); + -o-transform: rotate(270deg) translateY(-142%); + transform: rotate(270deg) translateY(-142%); + -webkit-animation-delay: -0.25s; + -moz-animation-delay: -0.25s; + -ms-animation-delay: -0.25s; + -o-animation-delay: -0.25s; + animation-delay: -0.25s; +} +.cg-busy-default-spinner div.bar11 { + -webkit-transform: rotate(300deg) translateY(-142%); + -moz-transform: rotate(300deg) translateY(-142%); + -ms-transform: rotate(300deg) translateY(-142%); + -o-transform: rotate(300deg) translateY(-142%); + transform: rotate(300deg) translateY(-142%); + -webkit-animation-delay: -0.1667s; + -moz-animation-delay: -0.1667s; + -ms-animation-delay: -0.1667s; + -o-animation-delay: -0.1667s; + animation-delay: -0.1667s; +} +.cg-busy-default-spinner div.bar12 { + -webkit-transform: rotate(330deg) translateY(-142%); + -moz-transform: rotate(330deg) translateY(-142%); + -ms-transform: rotate(330deg) translateY(-142%); + -o-transform: rotate(330deg) translateY(-142%); + transform: rotate(330deg) translateY(-142%); + -webkit-animation-delay: -0.0833s; + -moz-animation-delay: -0.0833s; + -ms-animation-delay: -0.0833s; + -o-animation-delay: -0.0833s; + animation-delay: -0.0833s; +} +@-webkit-keyframes cg-busy-spinner-anim { + 0% { + opacity: 1; + } + to { + opacity: 0.25; + } +} +@-moz-keyframes cg-busy-spinner-anim { + 0% { + opacity: 1; + } + to { + opacity: 0.25; + } +} +@keyframes cg-busy-spinner-anim { + 0% { + opacity: 1; + } + to { + opacity: 0.25; + } +} +.input-dropdown { + display: inline-block; + position: relative; +} +.input-dropdown input[type='text'], +.input-dropdown ul { + box-sizing: border-box; + width: 100%; +} +.input-dropdown ul { + background: #fff; + border: 1px solid #000; + list-style: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 1000; +} +.input-dropdown ul > li { + cursor: pointer; + padding: 10px; +} +.input-dropdown ul > li.active { + background: #608aeb; +} +.gu-mirror { + position: fixed !important; + margin: 0 !important; + z-index: 9999 !important; + opacity: 0.8; + -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)'; + filter: alpha(opacity=80); +} +.gu-hide { + display: none !important; +} +.gu-unselectable { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} +.gu-transit { + opacity: 0.2; + -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=20)'; + filter: alpha(opacity=20); +} diff --git a/src/web/favicon.ico b/src/web/favicon.ico new file mode 100755 index 0000000..0fddc00 Binary files /dev/null and b/src/web/favicon.ico differ diff --git a/src/web/favicon.png b/src/web/favicon.png new file mode 100755 index 0000000..74a312d Binary files /dev/null and b/src/web/favicon.png differ diff --git a/src/web/fonts/fontawesome-webfont.eot b/src/web/fonts/fontawesome-webfont.eot new file mode 100755 index 0000000..e9f60ca Binary files /dev/null and b/src/web/fonts/fontawesome-webfont.eot differ diff --git a/src/web/fonts/fontawesome-webfont.svg b/src/web/fonts/fontawesome-webfont.svg new file mode 100755 index 0000000..855c845 --- /dev/null +++ b/src/web/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/web/fonts/fontawesome-webfont.ttf b/src/web/fonts/fontawesome-webfont.ttf new file mode 100755 index 0000000..35acda2 Binary files /dev/null and b/src/web/fonts/fontawesome-webfont.ttf differ diff --git a/src/web/fonts/fontawesome-webfont.woff b/src/web/fonts/fontawesome-webfont.woff new file mode 100755 index 0000000..400014a Binary files /dev/null and b/src/web/fonts/fontawesome-webfont.woff differ diff --git a/src/web/fonts/fontawesome-webfont.woff2 b/src/web/fonts/fontawesome-webfont.woff2 new file mode 100755 index 0000000..4d13fc6 Binary files /dev/null and b/src/web/fonts/fontawesome-webfont.woff2 differ diff --git a/src/web/index.html b/src/web/index.html new file mode 100755 index 0000000..1d5d554 --- /dev/null +++ b/src/web/index.html @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + Aria2 Frontend + + +
+
+ + +
+ +
+
+
+
+
+ + +
+ + + + + + + + + diff --git a/src/web/js/angular-packages-1.6.10.min.js b/src/web/js/angular-packages-1.6.10.min.js new file mode 100755 index 0000000..406f367 --- /dev/null +++ b/src/web/js/angular-packages-1.6.10.min.js @@ -0,0 +1,13943 @@ +/* + AngularJS v1.6.10 + (c) 2010-2018 Google, Inc. http://angularjs.org + License: MIT +*/ +(function (y) { + 'use strict'; + function qe(a) { + if (G(a)) + u(a.objectMaxDepth) && + (Oc.objectMaxDepth = Wb(a.objectMaxDepth) ? a.objectMaxDepth : NaN); + else return Oc; + } + function Wb(a) { + return Y(a) && 0 < a; + } + function M(a, b) { + b = b || Error; + return function () { + var d = arguments[0], + c; + c = + '[' + + (a ? a + ':' : '') + + d + + '] http://errors.angularjs.org/1.6.10/' + + (a ? a + '/' : '') + + d; + for (d = 1; d < arguments.length; d++) { + c = c + (1 == d ? '?' : '&') + 'p' + (d - 1) + '='; + var e = encodeURIComponent, + f; + f = arguments[d]; + f = + 'function' == typeof f + ? f.toString().replace(/ \{[\s\S]*$/, '') + : 'undefined' == typeof f + ? 'undefined' + : 'string' != typeof f + ? JSON.stringify(f) + : f; + c += e(f); + } + return new b(c); + }; + } + function ja(a) { + if (null == a || Za(a)) return !1; + if (I(a) || F(a) || (z && a instanceof z)) return !0; + var b = 'length' in Object(a) && a.length; + return ( + Y(b) && + ((0 <= b && (b - 1 in a || a instanceof Array)) || + 'function' === typeof a.item) + ); + } + function q(a, b, d) { + var c, e; + if (a) + if (C(a)) + for (c in a) + 'prototype' !== c && + 'length' !== c && + 'name' !== c && + a.hasOwnProperty(c) && + b.call(d, a[c], c, a); + else if (I(a) || ja(a)) { + var f = 'object' !== typeof a; + c = 0; + for (e = a.length; c < e; c++) (f || c in a) && b.call(d, a[c], c, a); + } else if (a.forEach && a.forEach !== q) a.forEach(b, d, a); + else if (Pc(a)) for (c in a) b.call(d, a[c], c, a); + else if ('function' === typeof a.hasOwnProperty) + for (c in a) a.hasOwnProperty(c) && b.call(d, a[c], c, a); + else for (c in a) ra.call(a, c) && b.call(d, a[c], c, a); + return a; + } + function Qc(a, b, d) { + for (var c = Object.keys(a).sort(), e = 0; e < c.length; e++) + b.call(d, a[c[e]], c[e]); + return c; + } + function Xb(a) { + return function (b, d) { + a(d, b); + }; + } + function re() { + return ++qb; + } + function Yb(a, b, d) { + for (var c = a.$$hashKey, e = 0, f = b.length; e < f; ++e) { + var g = b[e]; + if (G(g) || C(g)) + for (var k = Object.keys(g), h = 0, l = k.length; h < l; h++) { + var m = k[h], + p = g[m]; + d && G(p) + ? da(p) + ? (a[m] = new Date(p.valueOf())) + : $a(p) + ? (a[m] = new RegExp(p)) + : p.nodeName + ? (a[m] = p.cloneNode(!0)) + : Zb(p) + ? (a[m] = p.clone()) + : (G(a[m]) || (a[m] = I(p) ? [] : {}), Yb(a[m], [p], !0)) + : (a[m] = p); + } + } + c ? (a.$$hashKey = c) : delete a.$$hashKey; + return a; + } + function P(a) { + return Yb(a, xa.call(arguments, 1), !1); + } + function se(a) { + return Yb(a, xa.call(arguments, 1), !0); + } + function Z(a) { + return parseInt(a, 10); + } + function $b(a, b) { + return P(Object.create(a), b); + } + function D() {} + function ab(a) { + return a; + } + function ka(a) { + return function () { + return a; + }; + } + function ac(a) { + return C(a.toString) && a.toString !== ha; + } + function x(a) { + return 'undefined' === typeof a; + } + function u(a) { + return 'undefined' !== typeof a; + } + function G(a) { + return null !== a && 'object' === typeof a; + } + function Pc(a) { + return null !== a && 'object' === typeof a && !Rc(a); + } + function F(a) { + return 'string' === typeof a; + } + function Y(a) { + return 'number' === typeof a; + } + function da(a) { + return '[object Date]' === ha.call(a); + } + function bc(a) { + switch (ha.call(a)) { + case '[object Error]': + return !0; + case '[object Exception]': + return !0; + case '[object DOMException]': + return !0; + default: + return a instanceof Error; + } + } + function C(a) { + return 'function' === typeof a; + } + function $a(a) { + return '[object RegExp]' === ha.call(a); + } + function Za(a) { + return a && a.window === a; + } + function bb(a) { + return a && a.$evalAsync && a.$watch; + } + function La(a) { + return 'boolean' === typeof a; + } + function te(a) { + return a && Y(a.length) && ue.test(ha.call(a)); + } + function Zb(a) { + return !(!a || !(a.nodeName || (a.prop && a.attr && a.find))); + } + function ve(a) { + var b = {}; + a = a.split(','); + var d; + for (d = 0; d < a.length; d++) b[a[d]] = !0; + return b; + } + function ya(a) { + return N(a.nodeName || (a[0] && a[0].nodeName)); + } + function cb(a, b) { + var d = a.indexOf(b); + 0 <= d && a.splice(d, 1); + return d; + } + function na(a, b, d) { + function c(a, b, c) { + c--; + if (0 > c) return '...'; + var d = b.$$hashKey, + g; + if (I(a)) { + g = 0; + for (var f = a.length; g < f; g++) b.push(e(a[g], c)); + } else if (Pc(a)) for (g in a) b[g] = e(a[g], c); + else if (a && 'function' === typeof a.hasOwnProperty) + for (g in a) a.hasOwnProperty(g) && (b[g] = e(a[g], c)); + else for (g in a) ra.call(a, g) && (b[g] = e(a[g], c)); + d ? (b.$$hashKey = d) : delete b.$$hashKey; + return b; + } + function e(a, b) { + if (!G(a)) return a; + var d = g.indexOf(a); + if (-1 !== d) return k[d]; + if (Za(a) || bb(a)) throw oa('cpws'); + var d = !1, + e = f(a); + void 0 === e && ((e = I(a) ? [] : Object.create(Rc(a))), (d = !0)); + g.push(a); + k.push(e); + return d ? c(a, e, b) : e; + } + function f(a) { + switch (ha.call(a)) { + case '[object Int8Array]': + case '[object Int16Array]': + case '[object Int32Array]': + case '[object Float32Array]': + case '[object Float64Array]': + case '[object Uint8Array]': + case '[object Uint8ClampedArray]': + case '[object Uint16Array]': + case '[object Uint32Array]': + return new a.constructor(e(a.buffer), a.byteOffset, a.length); + case '[object ArrayBuffer]': + if (!a.slice) { + var b = new ArrayBuffer(a.byteLength); + new Uint8Array(b).set(new Uint8Array(a)); + return b; + } + return a.slice(0); + case '[object Boolean]': + case '[object Number]': + case '[object String]': + case '[object Date]': + return new a.constructor(a.valueOf()); + case '[object RegExp]': + return ( + (b = new RegExp(a.source, a.toString().match(/[^/]*$/)[0])), + (b.lastIndex = a.lastIndex), + b + ); + case '[object Blob]': + return new a.constructor([a], { type: a.type }); + } + if (C(a.cloneNode)) return a.cloneNode(!0); + } + var g = [], + k = []; + d = Wb(d) ? d : NaN; + if (b) { + if (te(b) || '[object ArrayBuffer]' === ha.call(b)) throw oa('cpta'); + if (a === b) throw oa('cpi'); + I(b) + ? (b.length = 0) + : q(b, function (a, c) { + '$$hashKey' !== c && delete b[c]; + }); + g.push(a); + k.push(b); + return c(a, b, d); + } + return e(a, d); + } + function cc(a, b) { + return a === b || (a !== a && b !== b); + } + function sa(a, b) { + if (a === b) return !0; + if (null === a || null === b) return !1; + if (a !== a && b !== b) return !0; + var d = typeof a, + c; + if (d === typeof b && 'object' === d) + if (I(a)) { + if (!I(b)) return !1; + if ((d = a.length) === b.length) { + for (c = 0; c < d; c++) if (!sa(a[c], b[c])) return !1; + return !0; + } + } else { + if (da(a)) return da(b) ? cc(a.getTime(), b.getTime()) : !1; + if ($a(a)) return $a(b) ? a.toString() === b.toString() : !1; + if (bb(a) || bb(b) || Za(a) || Za(b) || I(b) || da(b) || $a(b)) + return !1; + d = R(); + for (c in a) + if ('$' !== c.charAt(0) && !C(a[c])) { + if (!sa(a[c], b[c])) return !1; + d[c] = !0; + } + for (c in b) + if (!(c in d) && '$' !== c.charAt(0) && u(b[c]) && !C(b[c])) + return !1; + return !0; + } + return !1; + } + function db(a, b, d) { + return a.concat(xa.call(b, d)); + } + function Ta(a, b) { + var d = 2 < arguments.length ? xa.call(arguments, 2) : []; + return !C(b) || b instanceof RegExp + ? b + : d.length + ? function () { + return arguments.length + ? b.apply(a, db(d, arguments, 0)) + : b.apply(a, d); + } + : function () { + return arguments.length ? b.apply(a, arguments) : b.call(a); + }; + } + function Sc(a, b) { + var d = b; + 'string' === typeof a && '$' === a.charAt(0) && '$' === a.charAt(1) + ? (d = void 0) + : Za(b) + ? (d = '$WINDOW') + : b && y.document === b + ? (d = '$DOCUMENT') + : bb(b) && (d = '$SCOPE'); + return d; + } + function eb(a, b) { + if (!x(a)) return Y(b) || (b = b ? 2 : null), JSON.stringify(a, Sc, b); + } + function Tc(a) { + return F(a) ? JSON.parse(a) : a; + } + function dc(a, b) { + a = a.replace(we, ''); + var d = Date.parse('Jan 01, 1970 00:00:00 ' + a) / 6e4; + return X(d) ? b : d; + } + function Uc(a, b) { + a = new Date(a.getTime()); + a.setMinutes(a.getMinutes() + b); + return a; + } + function ec(a, b, d) { + d = d ? -1 : 1; + var c = a.getTimezoneOffset(); + b = dc(b, c); + return Uc(a, d * (b - c)); + } + function za(a) { + a = z(a).clone().empty(); + var b = z('
').append(a).html(); + try { + return a[0].nodeType === Ma + ? N(b) + : b.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function (a, b) { + return '<' + N(b); + }); + } catch (d) { + return N(b); + } + } + function Vc(a) { + try { + return decodeURIComponent(a); + } catch (b) {} + } + function fc(a) { + var b = {}; + q((a || '').split('&'), function (a) { + var c, e, f; + a && + ((e = a = a.replace(/\+/g, '%20')), + (c = a.indexOf('=')), + -1 !== c && ((e = a.substring(0, c)), (f = a.substring(c + 1))), + (e = Vc(e)), + u(e) && + ((f = u(f) ? Vc(f) : !0), + ra.call(b, e) + ? I(b[e]) + ? b[e].push(f) + : (b[e] = [b[e], f]) + : (b[e] = f))); + }); + return b; + } + function gc(a) { + var b = []; + q(a, function (a, c) { + I(a) + ? q(a, function (a) { + b.push(ia(c, !0) + (!0 === a ? '' : '=' + ia(a, !0))); + }) + : b.push(ia(c, !0) + (!0 === a ? '' : '=' + ia(a, !0))); + }); + return b.length ? b.join('&') : ''; + } + function fb(a) { + return ia(a, !0) + .replace(/%26/gi, '&') + .replace(/%3D/gi, '=') + .replace(/%2B/gi, '+'); + } + function ia(a, b) { + return encodeURIComponent(a) + .replace(/%40/gi, '@') + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%3B/gi, ';') + .replace(/%20/g, b ? '%20' : '+'); + } + function xe(a, b) { + var d, + c, + e = Ga.length; + for (c = 0; c < e; ++c) + if (((d = Ga[c] + b), F((d = a.getAttribute(d))))) return d; + return null; + } + function ye(a, b) { + var d, + c, + e = {}; + q(Ga, function (b) { + b += 'app'; + !d && + a.hasAttribute && + a.hasAttribute(b) && + ((d = a), (c = a.getAttribute(b))); + }); + q(Ga, function (b) { + b += 'app'; + var e; + !d && + (e = a.querySelector('[' + b.replace(':', '\\:') + ']')) && + ((d = e), (c = e.getAttribute(b))); + }); + d && + (ze + ? ((e.strictDi = null !== xe(d, 'strict-di')), b(d, c ? [c] : [], e)) + : y.console.error( + 'AngularJS: disabling automatic bootstrap.