From 08335cdedc846270dd149fc1ffad92826b5f8cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Dekkers?= Date: Mon, 7 May 2018 15:32:15 +0200 Subject: [PATCH 01/37] Fail when non-numeric otp token was inserted --- app/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views.py b/app/views.py index 35d3f79..0f0d2ab 100644 --- a/app/views.py +++ b/app/views.py @@ -276,7 +276,7 @@ def login(): # check if user enabled OPT authentication if user.otp_secret: - if otp_token: + if otp_token and isinstance(otp_token, int): good_token = user.verify_totp(otp_token) if not good_token: return render_template('login.html', error='Invalid credentials', ldap_enabled=LDAP_ENABLE, login_title=LOGIN_TITLE, basic_enabled=BASIC_ENABLED, signup_enabled=SIGNUP_ENABLED) From a7e91b6f4082f528a6f027ef2ee374f38fb4cc09 Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Thu, 24 May 2018 16:12:12 -0200 Subject: [PATCH 02/37] Fix SOA-EDIT-API options The options for SOA-EDIT-API included was actually the options used for SOA-EDIT, which is a very different beast. Those options have been swapped out for the options allowed in SOA-EDIT-API and SOA-EDIT-DNSUPDATE. --- app/models.py | 52 ++++++++++++++-------------- app/templates/domain_add.html | 44 ++++++----------------- app/templates/domain_management.html | 28 +++++---------- 3 files changed, 44 insertions(+), 80 deletions(-) diff --git a/app/models.py b/app/models.py index a246320..a3592c7 100644 --- a/app/models.py +++ b/app/models.py @@ -627,21 +627,19 @@ class Domain(db.Model): domain_name = domain_name + '.' domain_ns = [ns + '.' for ns in domain_ns] - if soa_edit_api == 'OFF': - post_data = { - "name": domain_name, - "kind": domain_type, - "masters": domain_master_ips, - "nameservers": domain_ns, - } - else: - post_data = { - "name": domain_name, - "kind": domain_type, - "masters": domain_master_ips, - "nameservers": domain_ns, - "soa_edit_api": soa_edit_api - } + if soa_edit_api not in ["DEFAULT", "INCREASE", "EPOCH", "OFF"]: + soa_edit_api = 'DEFAULT' + + elif soa_edit_api == 'OFF': + soa_edit_api = '' + + post_data = { + "name": domain_name, + "kind": domain_type, + "masters": domain_master_ips, + "nameservers": domain_ns, + "soa_edit_api": soa_edit_api + } try: jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones'), headers=headers, method='POST', data=post_data) @@ -662,16 +660,18 @@ class Domain(db.Model): return {'status': 'error', 'msg': 'Domain doesnt exist.'} headers = {} headers['X-API-Key'] = PDNS_API_KEY - if soa_edit_api == 'OFF': - post_data = { - "soa_edit_api": None, - "kind": domain.type - } - else: - post_data = { - "soa_edit_api": soa_edit_api, - "kind": domain.type - } + + if soa_edit_api not in ["DEFAULT", "INCREASE", "EPOCH", "OFF"]: + soa_edit_api = 'DEFAULT' + + elif soa_edit_api == 'OFF': + soa_edit_api = '' + + post_data = { + "soa_edit_api": soa_edit_api, + "kind": domain.type + } + try: jdata = utils.fetch_json( urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}'.format(domain.name)), headers=headers, @@ -705,7 +705,7 @@ class Domain(db.Model): system_auto_ptr or \ domain_auto_ptr ): - result = self.add(domain_reverse_name, 'Master', 'INCEPTION-INCREMENT', '', '') + result = self.add(domain_reverse_name, 'Master', 'DEFAULT', '', '') self.update() if result['status'] == 'ok': history = History(msg='Add reverse lookup domain {0}'.format(domain_reverse_name), detail=str({'domain_type': 'Master', 'domain_master_ips': ''}), created_by='System') diff --git a/app/templates/domain_add.html b/app/templates/domain_add.html index 96daec5..d64beb1 100644 --- a/app/templates/domain_add.html +++ b/app/templates/domain_add.html @@ -63,27 +63,12 @@
-
-
- -
-
- -
-
-
@@ -93,7 +78,7 @@
@@ -132,28 +117,19 @@
SOA-EDIT-API
-
The SOA-EDIT-API setting defines when and how the SOA serial number will be updated after a change is made to the domain. +
The SOA-EDIT-API setting defines how the SOA serial number will be updated after a change is made to the domain.
    -
  • - (OFF) - Not set +
  • + DEFAULT - Generate a soa serial of YYYYMMDD01. If the current serial is lower than the generated serial, use the generated serial. If the current serial is higher or equal to the generated serial, increase the current serial by 1.
  • - INCEPTION-INCREMENT - Uses YYYYMMDDSS format for SOA serial numbers. If the SOA serial from the backend is within two days after inception, it gets incremented by two (the backend should keep SS below 98). + INCREASE - Increase the current serial by 1.
  • - INCEPTION - Sets the SOA serial to the last inception time in YYYYMMDD01 format. Uses localtime to find the day for inception time. Not recomended. + EPOCH - Change the serial to the number of seconds since the EPOCH, aka unixtime.
  • - INCREMENT-WEEK - Sets the SOA serial to the number of weeks since the epoch, which is the last inception time in weeks. Not recomended. -
  • -
  • - INCREMENT-WEEKS - Increments the serial with the number of weeks since the UNIX epoch. This should work in every setup; but the result won't look like YYYYMMDDSS anymore. -
  • -
  • - EPOCH - Sets the SOA serial to the number of seconds since the epoch. -
  • -
  • - INCEPTION-EPOCH - Sets the new SOA serial number to the maximum of the old SOA serial number, and age in seconds of the last inception. + OFF - Disable automatic updates of the SOA serial.
@@ -176,4 +152,4 @@ } }); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/domain_management.html b/app/templates/domain_management.html index 8ca8507..bf35849 100644 --- a/app/templates/domain_management.html +++ b/app/templates/domain_management.html @@ -109,41 +109,29 @@

Change SOA-EDIT-API

-

The SOA-EDIT-API setting defines when and how the SOA serial number will be updated after a change is made to the domain.

+

The SOA-EDIT-API setting defines how the SOA serial number will be updated after a change is made to the domain.

  • - (OFF) - Not set + DEFAULT - Generate a soa serial of YYYYMMDD01. If the current serial is lower than the generated serial, use the generated serial. If the current serial is higher or equal to the generated serial, increase the current serial by 1.
  • - INCEPTION-INCREMENT - Uses YYYYMMDDSS format for SOA serial numbers. If the SOA serial from the backend is within two days after inception, it gets incremented by two (the backend should keep SS below 98). + INCREASE - Increase the current serial by 1.
  • - INCEPTION - Sets the SOA serial to the last inception time in YYYYMMDD01 format. Uses localtime to find the day for inception time. Not recomended. + EPOCH - Change the serial to the number of seconds since the EPOCH, aka unixtime.
  • - INCREMENT-WEEK - Sets the SOA serial to the number of weeks since the epoch, which is the last inception time in weeks. Not recomended. -
  • -
  • - INCREMENT-WEEKS - Increments the serial with the number of weeks since the UNIX epoch. This should work in every setup; but the result won't look like YYYYMMDDSS anymore. -
  • -
  • - EPOCH - Sets the SOA serial to the number of seconds since the epoch. -
  • -
  • - INCEPTION-EPOCH - Sets the new SOA serial number to the maximum of the old SOA serial number, and age in seconds of the last inception. + OFF - Disable automatic updates of the SOA serial.
New SOA-EDIT-API Setting:

+

Error!

+ {{ error }} +
+ {{ error }} + {% endif %} +
+ + + + {% if invalid_accountname %} + Cannot be blank and must only contain alphanumeric characters. + {% elif duplicate_accountname %} + Account name already in use. + {% endif %} +
+
+ + + +
+
+ + + +
+
+ + + +
+ + + + + +
+
+
+

Help with creating a new account

+
+
+

+ An account allows grouping of domains belonging to a particular entity, such as a customer or department.
+ A domain can be assigned to an account upon domain creation or through the domain administration page. +

+

Fill in all the fields to the in the form to the left.

+

+ Name is an account identifier. It will be stored as all lowercase letters (no spaces, special characters etc).
+ Description is a user friendly name for this account.
+ Contact person is the name of a contact person at the account.
+ Mail Address is an e-mail address for the contact person. +

+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/app/templates/admin_manageaccount.html b/app/templates/admin_manageaccount.html new file mode 100644 index 0000000..7af5125 --- /dev/null +++ b/app/templates/admin_manageaccount.html @@ -0,0 +1,127 @@ +{% extends "base.html" %} {% block title %} +DNS Control Panel - Account Management +{% endblock %} {% block dashboard_stat %} +
+

+ Accounts Manage accounts +

+ +
+{% endblock %} {% block content %} +
+
+
+
+
+

Account Management

+
+ +
+ + + + + + + + + + + + {% for account in accounts %} + + + + + + + + {% endfor %} + +
NameDescriptionContactMailAction
{{ account.name }}{{ account.description }}{{ account.contact }}{{ account.mail }} + + +
+
+ +
+ +
+ +
+ +
+{% endblock %} +{% block extrascripts %} + +{% endblock %} +{% block modals %} + +{% endblock %} diff --git a/app/templates/base.html b/app/templates/base.html index 1ba7b56..e1d1451 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -129,6 +129,7 @@
  • Admin Console
  • Domain Templates
  • Users
  • +
  • Accounts
  • History
  • Settings
  • {% endif %} diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 0f806df..204971d 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -134,6 +134,7 @@ Type Serial Master + Account Action @@ -178,6 +179,10 @@ "lengthChange" : true, "searching" : true, "ordering" : true, + "columnDefs": [ + { "orderable": false, "targets": [-1] } + {% if current_user.role.name != 'Administrator' %},{ "visible": false, "targets": [-2] }{% endif %} + ], "processing" : true, "serverSide" : true, "ajax" : "{{ url_for('dashboard_domains') }}", diff --git a/app/templates/dashboard_domain.html b/app/templates/dashboard_domain.html index 2834207..6d42edb 100644 --- a/app/templates/dashboard_domain.html +++ b/app/templates/dashboard_domain.html @@ -22,6 +22,12 @@ {% if domain.master == '[]'%}N/A{% else %}{{ domain.master|display_master_name }}{% endif %} {% endmacro %} +{% macro account(domain) %} + {% if current_user.role.name =='Administrator' %} + {% if domain.account_description != "" %}{{ domain.account.description }} {% endif %}[{{ domain.account.name }}] + {% endif %} +{% endmacro %} + {% macro actions(domain) %} {% if current_user.role.name =='Administrator' %} diff --git a/app/templates/domain_add.html b/app/templates/domain_add.html index d64beb1..64ed76c 100644 --- a/app/templates/domain_add.html +++ b/app/templates/domain_add.html @@ -31,6 +31,12 @@
    +
    diff --git a/app/templates/domain_management.html b/app/templates/domain_management.html index bf35849..aa99915 100644 --- a/app/templates/domain_management.html +++ b/app/templates/domain_management.html @@ -71,6 +71,32 @@
    +
    +
    +
    +
    +

    Account

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/app/views.py b/app/views.py index 1c65ca1..c593bc0 100644 --- a/app/views.py +++ b/app/views.py @@ -17,7 +17,7 @@ from flask_login import login_user, logout_user, current_user, login_required from werkzeug import secure_filename from werkzeug.security import gen_salt -from .models import User, Domain, Record, Server, History, Anonymous, Setting, DomainSetting, DomainTemplate, DomainTemplateRecord +from .models import User, Account, Domain, Record, Server, History, Anonymous, Setting, DomainSetting, DomainTemplate, DomainTemplateRecord from app import app, login_manager, github, google from app.lib import utils from app.decorators import admin_role_required, can_access_domain @@ -486,7 +486,7 @@ def dashboard_domains(): template = app.jinja_env.get_template("dashboard_domain.html") render = template.make_module(vars={"current_user": current_user}) - columns = [Domain.name, Domain.dnssec, Domain.type, Domain.serial, Domain.master] + columns = [Domain.name, Domain.dnssec, Domain.type, Domain.serial, Domain.master, Domain.account] # History.created_on.desc() order_by = [] for i in range(len(columns)): @@ -509,7 +509,13 @@ def dashboard_domains(): if search: start = "" if search.startswith("^") else "%" end = "" if search.endswith("$") else "%" - domains = domains.filter(Domain.name.ilike(start + search.strip("^$") + end)) + + if current_user.role.name == 'Administrator': + domains = domains.outerjoin(Account).filter(Domain.name.ilike(start + search.strip("^$") + end) | + Account.name.ilike(start + search.strip("^$") + end) | + Account.description.ilike(start + search.strip("^$") + end)) + else: + domains = domains.filter(Domain.name.ilike(start + search.strip("^$") + end)) filtered_count = domains.count() @@ -530,6 +536,7 @@ def dashboard_domains(): render.type(domain), render.serial(domain), render.master(domain), + render.account(domain), render.actions(domain), ]) @@ -595,6 +602,7 @@ def domain_add(): domain_type = request.form.getlist('radio_type')[0] domain_template = request.form.getlist('domain_template')[0] soa_edit_api = request.form.getlist('radio_type_soa_edit_api')[0] + account_id = request.form.getlist('accountid')[0] if ' ' in domain_name or not domain_name or not domain_type: return render_template('errors/400.html', msg="Please correct your input"), 400 @@ -606,10 +614,13 @@ def domain_add(): domain_master_ips = domain_master_string.split(',') else: domain_master_ips = [] + + account_name = Account().get_name_by_id(account_id) + d = Domain() - result = d.add(domain_name=domain_name, domain_type=domain_type, soa_edit_api=soa_edit_api, domain_master_ips=domain_master_ips) + result = d.add(domain_name=domain_name, domain_type=domain_type, soa_edit_api=soa_edit_api, domain_master_ips=domain_master_ips, account_name=account_name) if result['status'] == 'ok': - history = History(msg='Add domain {0}'.format(domain_name), detail=str({'domain_type': domain_type, 'domain_master_ips': domain_master_ips}), created_by=current_user.username) + history = History(msg='Add domain {0}'.format(domain_name), detail=str({'domain_type': domain_type, 'domain_master_ips': domain_master_ips, 'account_id': account_id}), created_by=current_user.username) history.add() if domain_template != '0': template = DomainTemplate.query.filter(DomainTemplate.id == domain_template).first() @@ -632,7 +643,10 @@ def domain_add(): except: logging.error(traceback.print_exc()) return redirect(url_for('error', code=500)) - return render_template('domain_add.html', templates=templates) + + else: + accounts = Account.query.all() + return render_template('domain_add.html', templates=templates, accounts=accounts) @app.route('/admin/domain//delete', methods=['GET']) @@ -660,12 +674,14 @@ def domain_management(domain_name): if not domain: return redirect(url_for('error', code=404)) users = User.query.all() + accounts = Account.query.all() # get list of user ids to initilize selection data d = Domain(name=domain_name) domain_user_ids = d.get_user() + account = d.get_account() - return render_template('domain_management.html', domain=domain, users=users, domain_user_ids=domain_user_ids) + return render_template('domain_management.html', domain=domain, users=users, domain_user_ids=domain_user_ids, accounts=accounts, domain_account=account) if request.method == 'POST': # username in right column @@ -701,9 +717,32 @@ def domain_change_soa_edit_api(domain_name): status = d.update_soa_setting(domain_name=domain_name, soa_edit_api=new_setting) if status['status'] != None: users = User.query.all() + accounts = Account.query.all() d = Domain(name=domain_name) domain_user_ids = d.get_user() - return render_template('domain_management.html', domain=domain, users=users, domain_user_ids=domain_user_ids, status=status) + account = d.get_account() + return render_template('domain_management.html', domain=domain, users=users, domain_user_ids=domain_user_ids, accounts=accounts, domain_account=account) + else: + return redirect(url_for('error', code=500)) + + +@app.route('/admin/domain//change_account', methods=['POST']) +@login_required +@admin_role_required +def domain_change_account(domain_name): + domain = Domain.query.filter(Domain.name == domain_name).first() + if not domain: + return redirect(url_for('error', code=404)) + + account_id = request.form.get('accountid') + status = domain.assoc_account(account_id) + if status['status']: + users = User.query.all() + accounts = Account.query.all() + d = Domain(name=domain_name) + domain_user_ids = d.get_user() + account = d.get_account() + return render_template('domain_management.html', domain=domain, users=users, domain_user_ids=domain_user_ids, accounts=accounts, domain_account=account) else: return redirect(url_for('error', code=500)) @@ -1135,6 +1174,85 @@ def admin_manageuser(): return make_response(jsonify( { 'status': 'error', 'msg': 'There is something wrong, please contact Administrator.' } ), 400) +@app.route('/admin/account/edit/', methods=['GET', 'POST']) +@app.route('/admin/account/edit', methods=['GET', 'POST']) +@login_required +@admin_role_required +def admin_editaccount(account_name=None): + + if request.method == 'GET': + if account_name is None: + return render_template('admin_editaccount.html', create=1) + + else: + account = Account.query.filter(Account.name == account_name).first() + return render_template('admin_editaccount.html', account=account, create=0) + + if request.method == 'POST': + fdata = request.form + + if not account_name: + account_name = fdata['accountname'] + account = Account(name=account_name, description=fdata['accountdescription'], contact=fdata['accountcontact'], mail=fdata['accountmail']) + + create = int(fdata['create']) + if create: + # account __init__ sanitizes and lowercases the name, so to manage expectations + # we let the user reenter the name until it's not empty and it's valid (ignoring the case) + if account.name == "" or account.name != account_name.lower(): + return render_template('admin_editaccount.html', account=account, create=create, invalid_accountname=True) + + if Account.query.filter(Account.name == account_name).first(): + return render_template('admin_editaccount.html', account=account, create=create, duplicate_accountname=True) + + result = account.create_account() + history = History(msg='Create account {0}'.format(account.name), created_by=current_user.username) + + else: + result = account.update_account() + history = History(msg='Update account {0}'.format(account.name), created_by=current_user.username) + + if result['status']: + history.add() + return redirect(url_for('admin_manageaccount')) + + return render_template('admin_editaccount.html', account=account, create=create, error=result['msg']) + + +@app.route('/admin/manageaccount', methods=['GET', 'POST']) +@login_required +@admin_role_required +def admin_manageaccount(): + if request.method == 'GET': + accounts = Account.query.order_by(Account.name).all() + return render_template('admin_manageaccount.html', accounts=accounts) + + if request.method == 'POST': + # + # post data should in format + # {'action': 'delete_account', 'data': 'accountname'} + # + try: + jdata = request.json + data = jdata['data'] + + if jdata['action'] == 'delete_account': + account = Account(name=data) + result = account.delete_account() + if result: + history = History(msg='Delete account {0}'.format(data), created_by=current_user.username) + history.add() + return make_response(jsonify( { 'status': 'ok', 'msg': 'Account has been removed.' } ), 200) + else: + return make_response(jsonify( { 'status': 'error', 'msg': 'Cannot remove account.' } ), 500) + + else: + return make_response(jsonify( { 'status': 'error', 'msg': 'Action not supported.' } ), 400) + except: + logging.error(traceback.print_exc()) + return make_response(jsonify( { 'status': 'error', 'msg': 'There is something wrong, please contact Administrator.' } ), 400) + + @app.route('/admin/history', methods=['GET', 'POST']) @login_required @admin_role_required From a4af4ad4b3f820255cbe1ccc8dff37134672487c Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Tue, 5 Jun 2018 16:41:39 -0200 Subject: [PATCH 05/37] Implement per account domain access Added the possibility for assigning users to an account, providing access to all domains associated with that account automatically. This makes management easier, especially in installations with lots of domains and lots of managing entities. The old style per-domain permissions are still there and working as usual. The two methods work perfectly side-by-side and are analogous to "user" (per-domain) and "group" (account) permissions as we know them from Active Directory and such places. (cherry picked from commit 34fbc634d2848a7f76dc89a03dd8c0604068cc17) --- app/models.py | 102 +++++++++++++++++++++++++-- app/templates/admin_editaccount.html | 20 ++++++ app/views.py | 25 ++++--- 3 files changed, 131 insertions(+), 16 deletions(-) diff --git a/app/models.py b/app/models.py index 13ff831..c8d4244 100644 --- a/app/models.py +++ b/app/models.py @@ -355,25 +355,48 @@ class User(db.Model): db.session.rollback() return False + def get_account_query(self): + """ + Get query for account to which the user is associated. + """ + return db.session.query(Account) \ + .outerjoin(AccountUser, Account.id==AccountUser.account_id) \ + .filter(AccountUser.user_id==self.id) + + def get_account(self): + """ + Get all accounts to which the user is associated. + """ + return self.get_account_query() + def get_domain_query(self): - return db.session.query(User, DomainUser, Domain) \ - .filter(User.id == self.id) \ - .filter(User.id == DomainUser.user_id) \ - .filter(Domain.id == DomainUser.domain_id) + """ + Get query for domain to which the user has access permission. + This includes direct domain permission AND permission through + account membership + """ + return db.session.query(Domain) \ + .outerjoin(DomainUser, Domain.id==DomainUser.domain_id) \ + .outerjoin(Account, Domain.account_id==Account.id) \ + .outerjoin(AccountUser, Account.id==AccountUser.account_id) \ + .filter(db.or_(DomainUser.user_id==User.id, AccountUser.user_id==User.id)) \ + .filter(User.id==self.id) def get_domain(self): """ Get domains which user has permission to access """ - return [q[2] for q in self.get_domain_query()] + return self.get_domain_query() def delete(self): """ Delete a user """ - # revoke all user privileges first + # revoke all user privileges and account associations first self.revoke_privilege() + for a in self.get_account(): + a.revoke_privileges_by_id(self.id) try: User.query.filter(User.username == self.username).delete() @@ -516,8 +539,9 @@ class Account(db.Model): """ Delete an account """ - # unassociate all domains first + # unassociate all domains and users first self.unassociate_domains() + self.grant_privileges([]) try: Account.query.filter(Account.name == self.name).delete() @@ -529,6 +553,56 @@ class Account(db.Model): logging.error('Cannot delete account {0} from DB'.format(self.username)) return False + def get_user(self): + """ + Get users (id) associated with this account + """ + user_ids = [] + query = db.session.query(AccountUser, Account).filter(User.id==AccountUser.user_id).filter(Account.id==AccountUser.account_id).filter(Account.name==self.name).all() + for q in query: + user_ids.append(q[0].user_id) + return user_ids + + def grant_privileges(self, new_user_list): + """ + Reconfigure account_user table + """ + account_id = self.get_id_by_name(self.name) + + account_user_ids = self.get_user() + new_user_ids = [u.id for u in User.query.filter(User.username.in_(new_user_list)).all()] if new_user_list else [] + + removed_ids = list(set(account_user_ids).difference(new_user_ids)) + added_ids = list(set(new_user_ids).difference(account_user_ids)) + + try: + for uid in removed_ids: + AccountUser.query.filter(AccountUser.user_id == uid).filter(AccountUser.account_id==account_id).delete() + db.session.commit() + except: + db.session.rollback() + logging.error('Cannot revoke user privielges on account {0}'.format(self.name)) + + try: + for uid in added_ids: + au = AccountUser(account_id, uid) + db.session.add(au) + db.session.commit() + except: + db.session.rollback() + logging.error('Cannot grant user privileges to account {0}'.format(self.name)) + + def revoke_privileges_by_id(self, user_id): + """ + Remove a single user from prigilege list based on user_id + """ + new_uids = [u for u in self.get_user() if u != user_id] + users = [] + for uid in new_uids: + users.append(User(id=uid).get_user_info_by_id().username) + + self.grant_privileges(users) + class Role(db.Model): id = db.Column(db.Integer, primary_key = True) @@ -1061,6 +1135,20 @@ class DomainUser(db.Model): return ''.format(self.domain_id, self.user_id) +class AccountUser(db.Model): + __tablename__ = 'account_user' + id = db.Column(db.Integer, primary_key = True) + account_id = db.Column(db.Integer, db.ForeignKey('account.id'), nullable = False) + user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable = False) + + def __init__(self, account_id, user_id): + self.account_id = account_id + self.user_id = user_id + + def __repr__(self): + return ''.format(self.account_id, self.user_id) + + class Record(object): """ This is not a model, it's just an object diff --git a/app/templates/admin_editaccount.html b/app/templates/admin_editaccount.html index 04eaf97..1f31650 100644 --- a/app/templates/admin_editaccount.html +++ b/app/templates/admin_editaccount.html @@ -67,6 +67,21 @@
    +
    +

    Access Control

    +
    +
    +

    Users on the right have access to manage records in all domains + associated with the account.

    +

    Click on users to move between columns.

    +
    + +
    +
    @@ -95,4 +110,9 @@
    +{% endblock %} +{% block extrascripts %} + {% endblock %} \ No newline at end of file diff --git a/app/views.py b/app/views.py index c593bc0..d6160e5 100644 --- a/app/views.py +++ b/app/views.py @@ -525,9 +525,6 @@ def dashboard_domains(): if length != -1: domains = domains[start:start + length] - if current_user.role.name != 'Administrator': - domains = [d[2] for d in domains] - data = [] for domain in domains: data.append([ @@ -1179,31 +1176,40 @@ def admin_manageuser(): @login_required @admin_role_required def admin_editaccount(account_name=None): + users = User.query.all() if request.method == 'GET': if account_name is None: - return render_template('admin_editaccount.html', create=1) + return render_template('admin_editaccount.html', users=users, create=1) else: account = Account.query.filter(Account.name == account_name).first() - return render_template('admin_editaccount.html', account=account, create=0) + account_user_ids = account.get_user() + return render_template('admin_editaccount.html', account=account, account_user_ids=account_user_ids, users=users, create=0) if request.method == 'POST': fdata = request.form + new_user_list = request.form.getlist('account_multi_user') + # on POST, synthesize account and account_user_ids from form data if not account_name: account_name = fdata['accountname'] + account = Account(name=account_name, description=fdata['accountdescription'], contact=fdata['accountcontact'], mail=fdata['accountmail']) + account_user_ids = [] + for username in new_user_list: + userid = User(username=username).get_user_info_by_username().id + account_user_ids.append(userid) create = int(fdata['create']) if create: # account __init__ sanitizes and lowercases the name, so to manage expectations # we let the user reenter the name until it's not empty and it's valid (ignoring the case) if account.name == "" or account.name != account_name.lower(): - return render_template('admin_editaccount.html', account=account, create=create, invalid_accountname=True) + return render_template('admin_editaccount.html', account=account, account_user_ids=account_user_ids, users=users, create=create, invalid_accountname=True) - if Account.query.filter(Account.name == account_name).first(): - return render_template('admin_editaccount.html', account=account, create=create, duplicate_accountname=True) + if Account.query.filter(Account.name == account.name).first(): + return render_template('admin_editaccount.html', account=account, account_user_ids=account_user_ids, users=users, create=create, duplicate_accountname=True) result = account.create_account() history = History(msg='Create account {0}'.format(account.name), created_by=current_user.username) @@ -1213,10 +1219,11 @@ def admin_editaccount(account_name=None): history = History(msg='Update account {0}'.format(account.name), created_by=current_user.username) if result['status']: + account.grant_privileges(new_user_list) history.add() return redirect(url_for('admin_manageaccount')) - return render_template('admin_editaccount.html', account=account, create=create, error=result['msg']) + return render_template('admin_editaccount.html', account=account, account_user_ids=account_user_ids, users=users, create=create, error=result['msg']) @app.route('/admin/manageaccount', methods=['GET', 'POST']) From 10f47039ec846a36f5420521758df4aae589dc95 Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Wed, 6 Jun 2018 08:42:57 -0200 Subject: [PATCH 06/37] Add config option to allow DNSSEC changes only for admins DNSSEC requires changes to the parent domain, which in many cases requires special access to a registry or the like. For that reason, especially the option to disable DNSSEC can be dangerous - if DNSSEC is disabled in PowerDNS but not in the registry, the domain stops working. For this reason, adding an option to disable DNSSEC changes for non-admins seems reasonable. (cherry picked from commit 5cdfc0263b07f4658d51cf7c038fea9a8911152a) --- app/templates/dashboard.html | 2 ++ app/views.py | 3 ++- config_template.py | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 0f806df..588c3d4 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -224,6 +224,7 @@ modal.modal('show'); }); + {% if current_user.role.name == 'Administrator' or dnssec_adm_only == false %} $(document.body).on("click", ".button_dnssec", function() { var domain = $(this).prop('id'); getdnssec($SCRIPT_ROOT + '/domain/' + domain + '/dnssec', domain); @@ -240,6 +241,7 @@ enable_dns_sec($SCRIPT_ROOT + '/domain/' + domain + '/dnssec/disable'); }); + {% endif %} {% endblock %} {% block modals %} diff --git a/app/views.py b/app/views.py index 1c65ca1..7d67780 100644 --- a/app/views.py +++ b/app/views.py @@ -472,7 +472,8 @@ def dashboard(): uptime = list([uptime for uptime in statistics if uptime['name'] == 'uptime'])[0]['value'] else: uptime = 0 - return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history,pdns_version=app.config['PDNS_VERSION']) + + return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history, dnssec_adm_only=app.config['DNSSEC_ADMINS_ONLY'], pdns_version=app.config['PDNS_VERSION']) @app.route('/dashboard-domains', methods=['GET']) diff --git a/config_template.py b/config_template.py index cbc4d2a..a481cac 100644 --- a/config_template.py +++ b/config_template.py @@ -125,5 +125,8 @@ RECORDS_ALLOW_EDIT = ['SOA', 'A', 'AAAA', 'CAA', 'CNAME', 'MX', 'PTR', 'SPF', 'S FORWARD_RECORDS_ALLOW_EDIT = ['A', 'AAAA', 'CAA', 'CNAME', 'MX', 'PTR', 'SPF', 'SRV', 'TXT', 'LOC' 'NS'] REVERSE_RECORDS_ALLOW_EDIT = ['SOA', 'TXT', 'LOC', 'NS', 'PTR'] +# ALLOW DNSSEC CHANGES FOR ADMINS ONLY +DNSSEC_ADMINS_ONLY = False + # EXPERIMENTAL FEATURES PRETTY_IPV6_PTR = False From ccec6c37b4ed51b4faa81350dc09467c8283d0db Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Wed, 6 Jun 2018 09:14:48 -0200 Subject: [PATCH 07/37] Restrict certain admin changes on the current user Disable the admin toggle and delete operations from the current user, to avoid accidents. (cherry picked from commit b0f5ac6df5d31f612dc833a88cfca8936c4137d7) --- app/templates/admin_manageuser.html | 4 ++-- app/views.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/templates/admin_manageuser.html b/app/templates/admin_manageuser.html index 745e08a..03545bb 100644 --- a/app/templates/admin_manageuser.html +++ b/app/templates/admin_manageuser.html @@ -47,7 +47,7 @@ {{ user.lastname }} {{ user.email }} - + - diff --git a/app/views.py b/app/views.py index 1c65ca1..e453f6c 100644 --- a/app/views.py +++ b/app/views.py @@ -1098,6 +1098,8 @@ def admin_manageuser(): data = jdata['data'] if jdata['action'] == 'delete_user': + if username == current_user.username: + return make_response(jsonify( { 'status': 'error', 'msg': 'You cannot delete yourself.' } ), 400) user = User(username=data) result = user.delete() if result: @@ -1119,6 +1121,8 @@ def admin_manageuser(): elif jdata['action'] == 'set_admin': username = data['username'] + if username == current_user.username: + return make_response(jsonify( { 'status': 'error', 'msg': 'You cannot change you own admin rights.' } ), 400) is_admin = data['is_admin'] user = User(username=username) result = user.set_admin(is_admin) From 5d40c42bbf08ebec1844ae86f03a2e1b65384998 Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Wed, 6 Jun 2018 09:17:26 -0200 Subject: [PATCH 08/37] Fix OTP validation The result from the form is never an int but rather a string of digits, so that's what we should be checking for. This fixes OTP validation (cherry picked from commit 5fe3c8b9f92665db54d74dc6b2334666c318bf0c) --- app/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views.py b/app/views.py index 1c65ca1..4ca679c 100644 --- a/app/views.py +++ b/app/views.py @@ -365,7 +365,7 @@ def login(): # check if user enabled OPT authentication if user.otp_secret: - if otp_token and isinstance(otp_token, int): + if otp_token and otp_token.isdigit(): good_token = user.verify_totp(otp_token) if not good_token: return render_template('login.html', error='Invalid credentials', From 2b3b67a3afda35431d205f336bfa3cacfc53b564 Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Wed, 6 Jun 2018 11:59:15 -0200 Subject: [PATCH 09/37] Fix foreign key constraint error on MySQL (cherry picked from commit 2a9108f90482a6be86d0b8af4dfcc30f6651ff28) --- app/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models.py b/app/models.py index c8d4244..f3ad5ac 100644 --- a/app/models.py +++ b/app/models.py @@ -486,7 +486,7 @@ class Account(db.Model): """ account = Account.query.filter(Account.name == account_name).first() if account is None: - return 0 + return None return account.id @@ -664,7 +664,7 @@ class Domain(db.Model): notified_serial = db.Column(db.Integer) last_check = db.Column(db.Integer) dnssec = db.Column(db.Integer) - account_id = db.Column(db.Integer, db.ForeignKey('account.id'), nullable = False) + account_id = db.Column(db.Integer, db.ForeignKey('account.id')) account = db.relationship("Account", back_populates="domains") settings = db.relationship('DomainSetting', back_populates='domain') From 2958ae663cfbfaffd62e9d01ac4040d8c7b30351 Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Thu, 7 Jun 2018 09:28:14 +0700 Subject: [PATCH 10/37] Validate user role and DNSSEC_ADMINS_ONLY config on DNSSEC related routes --- app/decorators.py | 10 ++++++++++ app/models.py | 4 ++-- app/views.py | 4 +++- configs/development.py | 3 +++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/decorators.py b/app/decorators.py index e13dc8d..2ba7ce4 100644 --- a/app/decorators.py +++ b/app/decorators.py @@ -26,3 +26,13 @@ def can_access_domain(f): return f(*args, **kwargs) return decorated_function + + +def can_configure_dnssec(f): + @wraps(f) + def decorated_function(*args, **kwargs): + if g.user.role.name != 'Administrator' and app.config['DNSSEC_ADMINS_ONLY']: + return redirect(url_for('error', code=401)) + + return f(*args, **kwargs) + return decorated_function diff --git a/app/models.py b/app/models.py index 85758d1..8d01a4f 100644 --- a/app/models.py +++ b/app/models.py @@ -849,7 +849,7 @@ class Domain(db.Model): try: jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}/cryptokeys'.format(domain.name)), headers=headers, method='POST',data=post_data) if 'error' in jdata: - return {'status': 'error', 'msg': 'DNSSEC is not enabled for this domain', 'jdata' : jdata} + return {'status': 'error', 'msg': 'Cannot enable DNSSEC for this domain. Error: {0}'.format(jdata['error']), 'jdata' : jdata} else: return {'status': 'ok'} except: @@ -871,7 +871,7 @@ class Domain(db.Model): try: jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + url), headers=headers, method='DELETE') if 'error' in jdata: - return {'status': 'error', 'msg': 'DNSSEC is not disabled for this domain', 'jdata' : jdata} + return {'status': 'error', 'msg': 'Cannot disable DNSSEC for this domain. Error: {0}'.format(jdata['error']), 'jdata' : jdata} else: return {'status': 'ok'} except: diff --git a/app/views.py b/app/views.py index 7c7f4aa..9fae83f 100644 --- a/app/views.py +++ b/app/views.py @@ -20,7 +20,7 @@ from werkzeug.security import gen_salt from .models import User, Domain, Record, Server, History, Anonymous, Setting, DomainSetting, DomainTemplate, DomainTemplateRecord from app import app, login_manager, github, google from app.lib import utils -from app.decorators import admin_role_required, can_access_domain +from app.decorators import admin_role_required, can_access_domain, can_configure_dnssec if app.config['SAML_ENABLED']: from onelogin.saml2.auth import OneLogin_Saml2_Auth @@ -807,6 +807,7 @@ def domain_dnssec(domain_name): @app.route('/domain//dnssec/enable', methods=['GET']) @login_required @can_access_domain +@can_configure_dnssec def domain_dnssec_enable(domain_name): domain = Domain() dnssec = domain.enable_domain_dnssec(domain_name) @@ -816,6 +817,7 @@ def domain_dnssec_enable(domain_name): @app.route('/domain//dnssec/disable', methods=['GET']) @login_required @can_access_domain +@can_configure_dnssec def domain_dnssec_disable(domain_name): domain = Domain() dnssec = domain.get_domain_dnssec(domain_name) diff --git a/configs/development.py b/configs/development.py index c797e86..a459696 100644 --- a/configs/development.py +++ b/configs/development.py @@ -115,5 +115,8 @@ RECORDS_ALLOW_EDIT = ['SOA', 'A', 'AAAA', 'CAA', 'CNAME', 'MX', 'PTR', 'SPF', 'S FORWARD_RECORDS_ALLOW_EDIT = ['A', 'AAAA', 'CAA', 'CNAME', 'MX', 'PTR', 'SPF', 'SRV', 'TXT', 'LOC' 'NS'] REVERSE_RECORDS_ALLOW_EDIT = ['SOA', 'TXT', 'LOC', 'NS', 'PTR'] +# ALLOW DNSSEC CHANGES FOR ADMINS ONLY +DNSSEC_ADMINS_ONLY = True + # EXPERIMENTAL FEATURES PRETTY_IPV6_PTR = False From 90f08ee92e690b4c11e52a4297cf8184e37c0a9c Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Thu, 7 Jun 2018 15:26:54 -0200 Subject: [PATCH 11/37] Fix user deletion An improper check causes problems when trying to delete a user. This fixes that error. (cherry picked from commit 3c838cc0e4a2d4904d0fc919fb88c58ebd4fe4bd) --- app/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views.py b/app/views.py index e453f6c..78f03b1 100644 --- a/app/views.py +++ b/app/views.py @@ -1098,9 +1098,9 @@ def admin_manageuser(): data = jdata['data'] if jdata['action'] == 'delete_user': - if username == current_user.username: - return make_response(jsonify( { 'status': 'error', 'msg': 'You cannot delete yourself.' } ), 400) user = User(username=data) + if user.username == current_user.username: + return make_response(jsonify( { 'status': 'error', 'msg': 'You cannot delete yourself.' } ), 400) result = user.delete() if result: history = History(msg='Delete username {0}'.format(data), created_by=current_user.username) From 734a6d5b325c3765e01f61b1e9a0f4813d11b30b Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 11:46:17 +0200 Subject: [PATCH 12/37] Enable bg updates --- app/views.py | 7 ++++++- config_template.py | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/views.py b/app/views.py index 9fae83f..1e15aec 100644 --- a/app/views.py +++ b/app/views.py @@ -459,7 +459,12 @@ def saml_logout(): @app.route('/dashboard', methods=['GET', 'POST']) @login_required def dashboard(): - d = Domain().update() + if not app.config.get('BG_DOMAIN_UPDATES'): + logging.debug('Update domains in foreground') + d = Domain().update() + else: + logging.debug('Update domains in background') + # stats for dashboard domain_count = Domain.query.count() diff --git a/config_template.py b/config_template.py index a481cac..9d25fd9 100644 --- a/config_template.py +++ b/config_template.py @@ -130,3 +130,6 @@ DNSSEC_ADMINS_ONLY = False # EXPERIMENTAL FEATURES PRETTY_IPV6_PTR = False + +# Domain updates in background, for big installations +BG_DOMAIN_UPDATES = False From 8b2083be77812a0071cecd141caf1d75e6c63043 Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:21:17 +0200 Subject: [PATCH 13/37] Add domain refresh endpoint --- app/views.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/views.py b/app/views.py index 1e15aec..0f18aa1 100644 --- a/app/views.py +++ b/app/views.py @@ -547,6 +547,17 @@ def dashboard_domains(): } return jsonify(response_data) +@app.route('/dashboard-domains-updater', methods=['GET', 'POST']) +@login_required +def dashboard_domains_updater(): + logging.debug('Update domains in background') + d = Domain().update() + + response_data = { + "result": d, + } + return jsonify(response_data) + @app.route('/domain/', methods=['GET', 'POST']) @login_required From 39d3a4d6ac8ecb31038bde5145efe114be057f17 Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:22:03 +0200 Subject: [PATCH 14/37] add bg settings for button --- app/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views.py b/app/views.py index 0f18aa1..47ddc64 100644 --- a/app/views.py +++ b/app/views.py @@ -478,7 +478,7 @@ def dashboard(): else: uptime = 0 - return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history, dnssec_adm_only=app.config['DNSSEC_ADMINS_ONLY'], pdns_version=app.config['PDNS_VERSION']) + return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history, dnssec_adm_only=app.config['DNSSEC_ADMINS_ONLY'], pdns_version=app.config['PDNS_VERSION'], show_bg_domain_button=app.config['BG_DOMAIN_UPDATES']) @app.route('/dashboard-domains', methods=['GET']) From 97329618543fc78deaeecc52eb80d490f961f3cc Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:23:04 +0200 Subject: [PATCH 15/37] Add refesh button --- app/templates/dashboard.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 588c3d4..f88cc70 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -123,7 +123,7 @@
    -

    Hosted Domains

    +

    Hosted Domains

    {% if show_bg_domain_button %}{% endif %}
    From e334749382ecbe67aad97cffcf47fb53ca3d124a Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:25:21 +0200 Subject: [PATCH 16/37] Add dialog for refresh status --- app/templates/dashboard.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index f88cc70..1955a06 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -314,4 +314,29 @@ + {% endblock %} From 689b25817ca06dda0f50bd4cd1c4f62ce0f5fa4f Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:25:43 +0200 Subject: [PATCH 17/37] Add action to dialog --- app/templates/dashboard.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 1955a06..fa77882 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -199,6 +199,12 @@ modal.modal('show'); }); + $(document.body).on('click', '.refresh-bg-button', function() { + var modal = $("#modal_bg_reload"); + modal.modal('show'); + reload_domains($SCRIPT_ROOT + '/dashboard-domains-updater'); + }); + $(document.body).on("click", ".button_template", function (e) { var modal = $("#modal_template"); var domain = $(this).prop('id'); From 18133ab19cd14510ffa8b3aa56837b0eb1510407 Mon Sep 17 00:00:00 2001 From: Jeroen Boonstra Date: Fri, 8 Jun 2018 13:26:06 +0200 Subject: [PATCH 18/37] Add ajax call for refresh --- app/static/custom/js/custom.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/static/custom/js/custom.js b/app/static/custom/js/custom.js index 279463d..6442bb2 100644 --- a/app/static/custom/js/custom.js +++ b/app/static/custom/js/custom.js @@ -212,6 +212,13 @@ function getdnssec(url, domain){ }); } +function reload_domains(url) { + $.getJSON(url, function(data) { + $('#modal_bg_reload_content').html(" Finished: " + data['result']['msg']); + }) +} + + // pretty JSON json_library = { replacer: function(match, pIndent, pKey, pVal, pEnd) { From 0a670845fa574b7c5595daf8bb6b0f69b587036f Mon Sep 17 00:00:00 2001 From: Thomas M Steenholdt Date: Sun, 10 Jun 2018 21:23:10 -0200 Subject: [PATCH 19/37] Automatically rectify DNSSEC enabled zones For DNSSEC enabled zones to function correctly, they need to be rectified on update. This changes the DNSSEC enable/disable code to set API-RECTIFY: To `true` when activating DNSSEC on a domain To `false` when deactivating DNSSEC on a domain With this, PowerDNS promises to handle the needed rectifications. (cherry picked from commit 5d15d8899cc03a4a7d433d33c2c4b1da09b5eb2d) --- app/models.py | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/app/models.py b/app/models.py index 8d01a4f..1c02928 100644 --- a/app/models.py +++ b/app/models.py @@ -842,19 +842,30 @@ class Domain(db.Model): if domain: headers = {} headers['X-API-Key'] = PDNS_API_KEY - post_data = { - "keytype": "ksk", - "active": True - } try: + # Enable API-RECTIFY for domain, BEFORE activating DNSSEC + post_data = { + "api_rectify": True + } + jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}'.format(domain.name)), headers=headers, method='PUT', data=post_data) + if 'error' in jdata: + return {'status': 'error', 'msg': 'API-RECTIFY could not be enabled for this domain', 'jdata' : jdata} + + # Activate DNSSEC + post_data = { + "keytype": "ksk", + "active": True + } jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}/cryptokeys'.format(domain.name)), headers=headers, method='POST',data=post_data) if 'error' in jdata: return {'status': 'error', 'msg': 'Cannot enable DNSSEC for this domain. Error: {0}'.format(jdata['error']), 'jdata' : jdata} - else: - return {'status': 'ok'} + + return {'status': 'ok'} + except: logging.error(traceback.print_exc()) return {'status': 'error', 'msg': 'There was something wrong, please contact administrator'} + else: return {'status': 'error', 'msg': 'This domain does not exist'} @@ -866,16 +877,26 @@ class Domain(db.Model): if domain: headers = {} headers['X-API-Key'] = PDNS_API_KEY - url = '/servers/localhost/zones/{0}/cryptokeys/{1}'.format(domain.name, key_id) - try: - jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + url), headers=headers, method='DELETE') - if 'error' in jdata: + # Deactivate DNSSEC + jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}/cryptokeys/{1}'.format(domain.name, key_id)), headers=headers, method='DELETE') + if jdata != True: return {'status': 'error', 'msg': 'Cannot disable DNSSEC for this domain. Error: {0}'.format(jdata['error']), 'jdata' : jdata} - else: - return {'status': 'ok'} + + # Disable API-RECTIFY for domain, AFTER deactivating DNSSEC + post_data = { + "api_rectify": False + } + jdata = utils.fetch_json(urljoin(PDNS_STATS_URL, API_EXTENDED_URL + '/servers/localhost/zones/{0}'.format(domain.name)), headers=headers, method='PUT', data=post_data) + if 'error' in jdata: + return {'status': 'error', 'msg': 'API-RECTIFY could not be disabled for this domain', 'jdata' : jdata} + + return {'status': 'ok'} + except: - return {'status': 'error', 'msg': 'There was something wrong, please contact administrator','id': key_id, 'url': url} + logging.error(traceback.print_exc()) + return {'status': 'error', 'msg': 'There was something wrong, please contact administrator','domain': domain.name, 'id': key_id} + else: return {'status': 'error', 'msg': 'This domain doesnot exist'} From a6f0bf26d4eec612c138a586f0b43d579d0c5350 Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Mon, 11 Jun 2018 10:58:47 +0700 Subject: [PATCH 20/37] Use Flask-Migrate for db migration --- .gitignore | 1 + app/__init__.py | 2 + app/models.py | 3 +- create_db.py | 121 ------------------------------------------------ db_downgrade.py | 8 ---- db_migrate.py | 17 ------- db_upgrade.py | 7 --- 7 files changed, 5 insertions(+), 154 deletions(-) delete mode 100755 create_db.py delete mode 100755 db_downgrade.py delete mode 100755 db_migrate.py delete mode 100755 db_upgrade.py diff --git a/.gitignore b/.gitignore index bd129d0..8acb3db 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ advanced_settings.json idp.crt log.txt +migrations/* db_repository/* upload/avatar/* tmp/* diff --git a/app/__init__.py b/app/__init__.py index c309b78..20dcab9 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -2,6 +2,7 @@ from werkzeug.contrib.fixers import ProxyFix from flask import Flask, request, session, redirect, url_for from flask_login import LoginManager from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate app = Flask(__name__) app.config.from_object('config') @@ -14,6 +15,7 @@ logging = logger('powerdns-admin', app.config['LOG_LEVEL'], app.config['LOG_FILE login_manager = LoginManager() login_manager.init_app(app) db = SQLAlchemy(app) +migrate = Migrate(app, db) # used for flask-migrate def enable_github_oauth(GITHUB_ENABLE): if not GITHUB_ENABLE: diff --git a/app/models.py b/app/models.py index 8d01a4f..0938c14 100644 --- a/app/models.py +++ b/app/models.py @@ -1389,7 +1389,8 @@ class Server(object): class History(db.Model): id = db.Column(db.Integer, primary_key = True) msg = db.Column(db.String(256)) - detail = db.Column(db.Text().with_variant(db.Text(length=2**24-2), 'mysql')) + # detail = db.Column(db.Text().with_variant(db.Text(length=2**24-2), 'mysql')) + detail = db.Column(db.Text()) created_by = db.Column(db.String(128)) created_on = db.Column(db.DateTime, default=datetime.utcnow) diff --git a/create_db.py b/create_db.py deleted file mode 100755 index 952f04e..0000000 --- a/create_db.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import time -import os.path -import traceback - -from migrate.versioning import api -from config import SQLALCHEMY_DATABASE_URI -from config import SQLALCHEMY_MIGRATE_REPO -from app import db -from app.models import Role, Setting, DomainTemplate - - -def start(): - wait_time = get_waittime_from_env() - - if not connect_db(wait_time): - print("ERROR: Couldn't connect to database server") - exit(1) - - init_records() - -def get_waittime_from_env(): - return int(os.environ.get('WAITFOR_DB', 1)) - -def connect_db(wait_time): - for i in range(0, wait_time): - print("INFO: Wait for database server") - sys.stdout.flush() - try: - db.create_all() - return True - except: - traceback.print_exc() - time.sleep(1) - - return False - -def init_roles(db, role_names): - - # Get key name of data - name_of_roles = [r.name for r in role_names] - - # Query to get current data - rows = db.session.query(Role).filter(Role.name.in_(name_of_roles)).all() - name_of_rows = [r.name for r in rows] - - # Check which data that need to insert - roles = [r for r in role_names if r.name not in name_of_rows] - - # Insert data - for role in roles: - db.session.add(role) - -def init_settings(db, setting_names): - - # Get key name of data - name_of_settings = [r.name for r in setting_names] - - # Query to get current data - rows = db.session.query(Setting).filter(Setting.name.in_(name_of_settings)).all() - - # Check which data that need to insert - name_of_rows = [r.name for r in rows] - settings = [r for r in setting_names if r.name not in name_of_rows] - - # Insert data - for setting in settings: - db.session.add(setting) - - -def init_domain_templates(db, domain_template_names): - - # Get key name of data - name_of_domain_templates = map(lambda r: r.name, domain_template_names) - - # Query to get current data - rows = db.session.query(DomainTemplate).filter(DomainTemplate.name.in_(name_of_domain_templates)).all() - - # Check which data that need to insert - name_of_rows = map(lambda r: r.name, rows) - domain_templates = filter(lambda r: r.name not in name_of_rows, domain_template_names) - - # Insert data - for domain_template in domain_templates: - db.session.add(domain_template) - -def init_records(): - # Create initial user roles and turn off maintenance mode - init_roles(db, [ - Role('Administrator', 'Administrator'), - Role('User', 'User') - ]) - init_settings(db, [ - Setting('maintenance', 'False'), - Setting('fullscreen_layout', 'True'), - Setting('record_helper', 'True'), - Setting('login_ldap_first', 'True'), - Setting('default_record_table_size', '15'), - Setting('default_domain_table_size', '10'), - Setting('auto_ptr','False') - ]) - # TODO: add sample records to sample templates - init_domain_templates(db, [ - DomainTemplate('basic_template_1', 'Basic Template #1'), - DomainTemplate('basic_template_2', 'Basic Template #2'), - DomainTemplate('basic_template_3', 'Basic Template #3') - ]) - db_commit = db.session.commit() - commit_version_control(db_commit) - -def commit_version_control(db_commit): - if not os.path.exists(SQLALCHEMY_MIGRATE_REPO): - api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository') - api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) - elif db_commit is not None: - api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO)) - -if __name__ == '__main__': - start() diff --git a/db_downgrade.py b/db_downgrade.py deleted file mode 100755 index fa5866e..0000000 --- a/db_downgrade.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python3 -from migrate.versioning import api -from config import SQLALCHEMY_DATABASE_URI -from config import SQLALCHEMY_MIGRATE_REPO -v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -api.downgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, v - 1) -v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -print('Current database version: ' + str(v)) diff --git a/db_migrate.py b/db_migrate.py deleted file mode 100755 index 7d0869e..0000000 --- a/db_migrate.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python3 -import imp -from migrate.versioning import api -from app import db -from config import SQLALCHEMY_DATABASE_URI -from config import SQLALCHEMY_MIGRATE_REPO -v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -migration = SQLALCHEMY_MIGRATE_REPO + ('/versions/%03d_migration.py' % (v+1)) -tmp_module = imp.new_module('old_model') -old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -exec(old_model, tmp_module.__dict__) -script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, tmp_module.meta, db.metadata) -open(migration, "wt").write(script) -api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -print('New migration saved as ' + migration) -print('Current database version: ' + str(v)) diff --git a/db_upgrade.py b/db_upgrade.py deleted file mode 100755 index 515b309..0000000 --- a/db_upgrade.py +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env python3 -from migrate.versioning import api -from config import SQLALCHEMY_DATABASE_URI -from config import SQLALCHEMY_MIGRATE_REPO -api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) -print('Current database version: ' + str(v)) From ab0124b3e24c8fadd92aee06c32a598f9f79b975 Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Mon, 11 Jun 2018 11:11:43 +0700 Subject: [PATCH 21/37] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 555f16c..ef90853 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,8 +3,8 @@ Flask-WTF==0.14.2 Flask-Login==0.4.1 Flask-OAuthlib==0.9.4 Flask-SQLAlchemy==2.3.2 +Flask-Migrate==2.1.1 SQLAlchemy==1.2.5 -sqlalchemy-migrate==0.10.0 mysqlclient==1.3.12 configobj==5.0.6 bcrypt==3.1.4 From 232d39cca085af6d098f5b22bd54e887a0b111ad Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Mon, 11 Jun 2018 14:12:04 +0700 Subject: [PATCH 22/37] Adjustment in Docker stuff to work with new migration. Add init_data.py script to initialize table data --- docker-compose.yml | 1 + docker/PowerDNS-Admin/Dockerfile | 8 ++++++- docker/PowerDNS-Admin/entrypoint.sh | 13 ++++++++++- init_data.py | 36 +++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100755 init_data.py diff --git a/docker-compose.yml b/docker-compose.yml index 4c9ec5c..08925ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,6 +30,7 @@ services: - PDA_DB_PASSWORD=${PDA_DB_PASSWORD} - PDNS_HOST=${PDNS_HOST} - PDNS_API_KEY=${PDNS_API_KEY} + - FLASK_APP=/powerdns-admin/app/__init__.py depends_on: powerdns-admin-mysql: condition: service_healthy diff --git a/docker/PowerDNS-Admin/Dockerfile b/docker/PowerDNS-Admin/Dockerfile index bb6c51f..09b37dc 100644 --- a/docker/PowerDNS-Admin/Dockerfile +++ b/docker/PowerDNS-Admin/Dockerfile @@ -1,11 +1,17 @@ FROM ubuntu:latest -MAINTAINER Khanh Ngo "ngokhanhit@gmail.com" +MAINTAINER Khanh Ngo "k@ndk.name" ARG ENVIRONMENT=development ENV ENVIRONMENT=${ENVIRONMENT} WORKDIR /powerdns-admin RUN apt-get update -y + +RUN apt-get install -y locales locales-all +ENV LC_ALL en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US.UTF-8 + RUN apt-get install -y python3-pip python3-dev supervisor # lib for building mysql db driver diff --git a/docker/PowerDNS-Admin/entrypoint.sh b/docker/PowerDNS-Admin/entrypoint.sh index f041308..7bdb0b0 100755 --- a/docker/PowerDNS-Admin/entrypoint.sh +++ b/docker/PowerDNS-Admin/entrypoint.sh @@ -1,3 +1,14 @@ #!/bin/sh -cd /powerdns-admin && ./create_db.py + +if [ ! -d "/powerdns-admin/migrations" ]; then + /usr/local/bin/flask db init --directory /powerdns-admin/migrations + /usr/local/bin/flask db migrate -m "Init DB" --directory /powerdns-admin/migrations + /usr/local/bin/flask db upgrade --directory /powerdns-admin/migrations + cd /powerdns-admin && ./init_data.py + +else + /usr/local/bin/flask db migrate -m "Upgrade BD Schema" --directory /powerdns-admin/migrations + /usr/local/bin/flask db upgrade --directory /powerdns-admin/migrations +fi + /usr/bin/supervisord -c /etc/supervisord.conf diff --git a/init_data.py b/init_data.py new file mode 100755 index 0000000..dbd3277 --- /dev/null +++ b/init_data.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +from app import app, db +from app.models import Role, Setting, DomainTemplate + +admin_role = Role(name='Administrator', description='Administrator') +user_role = Role(name='User', description='User') + +setting_1 = Setting(name='maintenance', value='False') +setting_2 = Setting(name='fullscreen_layout', value='True') +setting_3 = Setting(name='record_helper', value='True') +setting_4 = Setting(name='login_ldap_first', value='True') +setting_5 = Setting(name='default_record_table_size', value='15') +setting_6 = Setting(name='default_domain_table_size', value='10') +setting_7 = Setting(name='auto_ptr', value='False') + +template_1 = DomainTemplate(name='basic_template_1', description='Basic Template #1') +template_2 = DomainTemplate(name='basic_template_2', description='Basic Template #2') +template_3 = DomainTemplate(name='basic_template_3', description='Basic Template #3') + +db.session.add(admin_role) +db.session.add(user_role) + +db.session.add(setting_1) +db.session.add(setting_2) +db.session.add(setting_3) +db.session.add(setting_4) +db.session.add(setting_5) +db.session.add(setting_6) +db.session.add(setting_7) + +db.session.add(template_1) +db.session.add(template_2) +db.session.add(template_3) + +db.session.commit() From f85f814d9fca8191fca4a0056aa35e3e1d6f09a4 Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Mon, 11 Jun 2018 17:02:01 +0700 Subject: [PATCH 23/37] Add BG_DOMAIN_UPDATES config for docker development env --- configs/development.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/development.py b/configs/development.py index a459696..67fe430 100644 --- a/configs/development.py +++ b/configs/development.py @@ -120,3 +120,6 @@ DNSSEC_ADMINS_ONLY = True # EXPERIMENTAL FEATURES PRETTY_IPV6_PTR = False + +# Domain updates in background, for big installations +BG_DOMAIN_UPDATES = False From fb234e359253c649e2c420dc7b50c77dbf5f51c5 Mon Sep 17 00:00:00 2001 From: Khanh Ngo Date: Mon, 11 Jun 2018 17:12:52 +0700 Subject: [PATCH 24/37] Add .gitattributes --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b1bb66a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +app/static/* linguist-vendored + From 17fb6b0ddd76623f11096db5e6539e49862300a7 Mon Sep 17 00:00:00 2001 From: Felix Kaechele Date: Sun, 10 Jun 2018 15:00:26 +0200 Subject: [PATCH 25/37] Delete bundled libraries Signed-off-by: Felix Kaechele --- .../adminlte2/bootstrap/css/bootstrap.css | 6760 ------- .../adminlte2/bootstrap/css/bootstrap.css.map | 1 - .../adminlte2/bootstrap/css/bootstrap.min.css | 6 - .../bootstrap/css/bootstrap.min.css.map | 1 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../adminlte2/bootstrap/js/bootstrap.js | 2363 --- .../adminlte2/bootstrap/js/bootstrap.min.js | 7 - app/static/adminlte2/bootstrap/js/npm.js | 13 - app/static/adminlte2/dist/css/AdminLTE.css | 4915 ----- .../adminlte2/dist/css/AdminLTE.min.css | 7 - .../adminlte2/dist/css/skins/_all-skins.css | 1806 -- .../dist/css/skins/_all-skins.min.css | 1 - .../dist/css/skins/skin-black-light.css | 176 - .../dist/css/skins/skin-black-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-black.css | 161 - .../dist/css/skins/skin-black.min.css | 1 - .../dist/css/skins/skin-blue-light.css | 167 - .../dist/css/skins/skin-blue-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-blue.css | 142 - .../dist/css/skins/skin-blue.min.css | 1 - .../dist/css/skins/skin-green-light.css | 156 - .../dist/css/skins/skin-green-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-green.css | 134 - .../dist/css/skins/skin-green.min.css | 1 - .../dist/css/skins/skin-purple-light.css | 156 - .../dist/css/skins/skin-purple-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-purple.css | 134 - .../dist/css/skins/skin-purple.min.css | 1 - .../dist/css/skins/skin-red-light.css | 156 - .../dist/css/skins/skin-red-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-red.css | 134 - .../adminlte2/dist/css/skins/skin-red.min.css | 1 - .../dist/css/skins/skin-yellow-light.css | 156 - .../dist/css/skins/skin-yellow-light.min.css | 1 - .../adminlte2/dist/css/skins/skin-yellow.css | 134 - .../dist/css/skins/skin-yellow.min.css | 1 - app/static/adminlte2/dist/img/avatar.png | Bin 8543 -> 0 bytes app/static/adminlte2/dist/img/avatar04.png | Bin 14037 -> 0 bytes app/static/adminlte2/dist/img/avatar2.png | Bin 8836 -> 0 bytes app/static/adminlte2/dist/img/avatar3.png | Bin 9780 -> 0 bytes app/static/adminlte2/dist/img/avatar5.png | Bin 8007 -> 0 bytes app/static/adminlte2/dist/img/boxed-bg.jpg | Bin 123770 -> 0 bytes app/static/adminlte2/dist/img/boxed-bg.png | Bin 43694 -> 0 bytes .../dist/img/credit/american-express.png | Bin 2205 -> 0 bytes .../adminlte2/dist/img/credit/cirrus.png | Bin 1593 -> 0 bytes .../adminlte2/dist/img/credit/mastercard.png | Bin 1593 -> 0 bytes .../adminlte2/dist/img/credit/mestro.png | Bin 1588 -> 0 bytes .../adminlte2/dist/img/credit/paypal.png | Bin 2046 -> 0 bytes .../adminlte2/dist/img/credit/paypal2.png | Bin 1372 -> 0 bytes app/static/adminlte2/dist/img/credit/visa.png | Bin 1137 -> 0 bytes .../adminlte2/dist/img/default-50x50.gif | Bin 184 -> 0 bytes app/static/adminlte2/dist/img/icons.png | Bin 1154 -> 0 bytes app/static/adminlte2/dist/img/photo1.png | Bin 673900 -> 0 bytes app/static/adminlte2/dist/img/photo2.png | Bin 424395 -> 0 bytes app/static/adminlte2/dist/img/photo3.jpg | Bin 392079 -> 0 bytes app/static/adminlte2/dist/img/photo4.jpg | Bin 1179224 -> 0 bytes .../adminlte2/dist/img/user1-128x128.jpg | Bin 2879 -> 0 bytes .../adminlte2/dist/img/user2-160x160.jpg | Bin 7070 -> 0 bytes .../adminlte2/dist/img/user3-128x128.jpg | Bin 3511 -> 0 bytes .../adminlte2/dist/img/user4-128x128.jpg | Bin 3477 -> 0 bytes .../adminlte2/dist/img/user5-128x128.jpg | Bin 6446 -> 0 bytes .../adminlte2/dist/img/user6-128x128.jpg | Bin 4342 -> 0 bytes .../adminlte2/dist/img/user7-128x128.jpg | Bin 6434 -> 0 bytes .../adminlte2/dist/img/user8-128x128.jpg | Bin 5060 -> 0 bytes app/static/adminlte2/dist/js/app.js | 758 - app/static/adminlte2/dist/js/app.min.js | 13 - app/static/adminlte2/dist/js/demo.js | 338 - .../adminlte2/dist/js/pages/dashboard.js | 210 - .../adminlte2/dist/js/pages/dashboard2.js | 274 - .../bootstrap-slider/bootstrap-slider.js | 1576 -- .../plugins/bootstrap-slider/slider.css | 282 - .../bootstrap3-wysihtml5.all.js | 14975 -------------- .../bootstrap3-wysihtml5.all.min.js | 8 - .../bootstrap3-wysihtml5.css | 117 - .../bootstrap3-wysihtml5.min.css | 3 - app/static/adminlte2/plugins/chartjs/Chart.js | 3477 ---- .../adminlte2/plugins/chartjs/Chart.min.js | 11 - .../adminlte2/plugins/ckeditor/CHANGES.md | 1053 - .../adminlte2/plugins/ckeditor/LICENSE.md | 1420 -- .../adminlte2/plugins/ckeditor/README.md | 39 - .../plugins/ckeditor/adapters/jquery.js | 10 - .../plugins/ckeditor/build-config.js | 159 - .../adminlte2/plugins/ckeditor/ckeditor.js | 1010 - .../adminlte2/plugins/ckeditor/config.js | 38 - .../adminlte2/plugins/ckeditor/contents.css | 132 - .../adminlte2/plugins/ckeditor/lang/af.js | 5 - .../adminlte2/plugins/ckeditor/lang/ar.js | 5 - .../adminlte2/plugins/ckeditor/lang/bg.js | 5 - .../adminlte2/plugins/ckeditor/lang/bn.js | 5 - .../adminlte2/plugins/ckeditor/lang/bs.js | 5 - .../adminlte2/plugins/ckeditor/lang/ca.js | 5 - .../adminlte2/plugins/ckeditor/lang/cs.js | 5 - .../adminlte2/plugins/ckeditor/lang/cy.js | 5 - .../adminlte2/plugins/ckeditor/lang/da.js | 5 - .../adminlte2/plugins/ckeditor/lang/de-ch.js | 5 - .../adminlte2/plugins/ckeditor/lang/de.js | 5 - .../adminlte2/plugins/ckeditor/lang/el.js | 5 - .../adminlte2/plugins/ckeditor/lang/en-au.js | 5 - .../adminlte2/plugins/ckeditor/lang/en-ca.js | 5 - .../adminlte2/plugins/ckeditor/lang/en-gb.js | 5 - .../adminlte2/plugins/ckeditor/lang/en.js | 5 - .../adminlte2/plugins/ckeditor/lang/eo.js | 5 - .../adminlte2/plugins/ckeditor/lang/es.js | 5 - .../adminlte2/plugins/ckeditor/lang/et.js | 5 - .../adminlte2/plugins/ckeditor/lang/eu.js | 5 - .../adminlte2/plugins/ckeditor/lang/fa.js | 5 - .../adminlte2/plugins/ckeditor/lang/fi.js | 5 - .../adminlte2/plugins/ckeditor/lang/fo.js | 5 - .../adminlte2/plugins/ckeditor/lang/fr-ca.js | 5 - .../adminlte2/plugins/ckeditor/lang/fr.js | 5 - .../adminlte2/plugins/ckeditor/lang/gl.js | 5 - .../adminlte2/plugins/ckeditor/lang/gu.js | 5 - .../adminlte2/plugins/ckeditor/lang/he.js | 5 - .../adminlte2/plugins/ckeditor/lang/hi.js | 5 - .../adminlte2/plugins/ckeditor/lang/hr.js | 5 - .../adminlte2/plugins/ckeditor/lang/hu.js | 5 - .../adminlte2/plugins/ckeditor/lang/id.js | 5 - .../adminlte2/plugins/ckeditor/lang/is.js | 5 - .../adminlte2/plugins/ckeditor/lang/it.js | 5 - .../adminlte2/plugins/ckeditor/lang/ja.js | 5 - .../adminlte2/plugins/ckeditor/lang/ka.js | 5 - .../adminlte2/plugins/ckeditor/lang/km.js | 5 - .../adminlte2/plugins/ckeditor/lang/ko.js | 5 - .../adminlte2/plugins/ckeditor/lang/ku.js | 5 - .../adminlte2/plugins/ckeditor/lang/lt.js | 5 - .../adminlte2/plugins/ckeditor/lang/lv.js | 5 - .../adminlte2/plugins/ckeditor/lang/mk.js | 5 - .../adminlte2/plugins/ckeditor/lang/mn.js | 5 - .../adminlte2/plugins/ckeditor/lang/ms.js | 5 - .../adminlte2/plugins/ckeditor/lang/nb.js | 5 - .../adminlte2/plugins/ckeditor/lang/nl.js | 5 - .../adminlte2/plugins/ckeditor/lang/no.js | 5 - .../adminlte2/plugins/ckeditor/lang/pl.js | 5 - .../adminlte2/plugins/ckeditor/lang/pt-br.js | 5 - .../adminlte2/plugins/ckeditor/lang/pt.js | 5 - .../adminlte2/plugins/ckeditor/lang/ro.js | 5 - .../adminlte2/plugins/ckeditor/lang/ru.js | 5 - .../adminlte2/plugins/ckeditor/lang/si.js | 5 - .../adminlte2/plugins/ckeditor/lang/sk.js | 5 - .../adminlte2/plugins/ckeditor/lang/sl.js | 5 - .../adminlte2/plugins/ckeditor/lang/sq.js | 5 - .../plugins/ckeditor/lang/sr-latn.js | 5 - .../adminlte2/plugins/ckeditor/lang/sr.js | 5 - .../adminlte2/plugins/ckeditor/lang/sv.js | 5 - .../adminlte2/plugins/ckeditor/lang/th.js | 5 - .../adminlte2/plugins/ckeditor/lang/tr.js | 5 - .../adminlte2/plugins/ckeditor/lang/tt.js | 5 - .../adminlte2/plugins/ckeditor/lang/ug.js | 5 - .../adminlte2/plugins/ckeditor/lang/uk.js | 5 - .../adminlte2/plugins/ckeditor/lang/vi.js | 5 - .../adminlte2/plugins/ckeditor/lang/zh-cn.js | 5 - .../adminlte2/plugins/ckeditor/lang/zh.js | 5 - .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 - .../dialogs/lang/_translationstatus.txt | 25 - .../plugins/a11yhelp/dialogs/lang/af.js | 11 - .../plugins/a11yhelp/dialogs/lang/ar.js | 11 - .../plugins/a11yhelp/dialogs/lang/bg.js | 11 - .../plugins/a11yhelp/dialogs/lang/ca.js | 12 - .../plugins/a11yhelp/dialogs/lang/cs.js | 12 - .../plugins/a11yhelp/dialogs/lang/cy.js | 11 - .../plugins/a11yhelp/dialogs/lang/da.js | 11 - .../plugins/a11yhelp/dialogs/lang/de-ch.js | 12 - .../plugins/a11yhelp/dialogs/lang/de.js | 12 - .../plugins/a11yhelp/dialogs/lang/el.js | 12 - .../plugins/a11yhelp/dialogs/lang/en-gb.js | 11 - .../plugins/a11yhelp/dialogs/lang/en.js | 11 - .../plugins/a11yhelp/dialogs/lang/eo.js | 13 - .../plugins/a11yhelp/dialogs/lang/es.js | 12 - .../plugins/a11yhelp/dialogs/lang/et.js | 11 - .../plugins/a11yhelp/dialogs/lang/eu.js | 12 - .../plugins/a11yhelp/dialogs/lang/fa.js | 11 - .../plugins/a11yhelp/dialogs/lang/fi.js | 11 - .../plugins/a11yhelp/dialogs/lang/fo.js | 11 - .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 11 - .../plugins/a11yhelp/dialogs/lang/fr.js | 12 - .../plugins/a11yhelp/dialogs/lang/gl.js | 12 - .../plugins/a11yhelp/dialogs/lang/gu.js | 11 - .../plugins/a11yhelp/dialogs/lang/he.js | 11 - .../plugins/a11yhelp/dialogs/lang/hi.js | 11 - .../plugins/a11yhelp/dialogs/lang/hr.js | 11 - .../plugins/a11yhelp/dialogs/lang/hu.js | 12 - .../plugins/a11yhelp/dialogs/lang/id.js | 11 - .../plugins/a11yhelp/dialogs/lang/it.js | 13 - .../plugins/a11yhelp/dialogs/lang/ja.js | 9 - .../plugins/a11yhelp/dialogs/lang/km.js | 11 - .../plugins/a11yhelp/dialogs/lang/ko.js | 10 - .../plugins/a11yhelp/dialogs/lang/ku.js | 11 - .../plugins/a11yhelp/dialogs/lang/lt.js | 11 - .../plugins/a11yhelp/dialogs/lang/lv.js | 12 - .../plugins/a11yhelp/dialogs/lang/mk.js | 11 - .../plugins/a11yhelp/dialogs/lang/mn.js | 11 - .../plugins/a11yhelp/dialogs/lang/nb.js | 12 - .../plugins/a11yhelp/dialogs/lang/nl.js | 11 - .../plugins/a11yhelp/dialogs/lang/no.js | 11 - .../plugins/a11yhelp/dialogs/lang/pl.js | 13 - .../plugins/a11yhelp/dialogs/lang/pt-br.js | 13 - .../plugins/a11yhelp/dialogs/lang/pt.js | 12 - .../plugins/a11yhelp/dialogs/lang/ro.js | 11 - .../plugins/a11yhelp/dialogs/lang/ru.js | 11 - .../plugins/a11yhelp/dialogs/lang/si.js | 10 - .../plugins/a11yhelp/dialogs/lang/sk.js | 11 - .../plugins/a11yhelp/dialogs/lang/sl.js | 11 - .../plugins/a11yhelp/dialogs/lang/sq.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr.js | 11 - .../plugins/a11yhelp/dialogs/lang/sv.js | 11 - .../plugins/a11yhelp/dialogs/lang/th.js | 11 - .../plugins/a11yhelp/dialogs/lang/tr.js | 12 - .../plugins/a11yhelp/dialogs/lang/tt.js | 11 - .../plugins/a11yhelp/dialogs/lang/ug.js | 12 - .../plugins/a11yhelp/dialogs/lang/uk.js | 12 - .../plugins/a11yhelp/dialogs/lang/vi.js | 11 - .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 - .../plugins/a11yhelp/dialogs/lang/zh.js | 9 - .../ckeditor/plugins/about/dialogs/about.js | 7 - .../about/dialogs/hidpi/logo_ckeditor.png | Bin 13339 -> 0 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 6757 -> 0 bytes .../plugins/clipboard/dialogs/paste.js | 12 - .../plugins/dialog/dialogDefinition.js | 4 - .../plugins/ckeditor/plugins/icons.png | Bin 10227 -> 0 bytes .../plugins/ckeditor/plugins/icons_hidpi.png | Bin 34465 -> 0 bytes .../ckeditor/plugins/image/dialogs/image.js | 44 - .../ckeditor/plugins/image/images/noimage.png | Bin 1610 -> 0 bytes .../ckeditor/plugins/link/dialogs/anchor.js | 7 - .../ckeditor/plugins/link/dialogs/link.js | 26 - .../ckeditor/plugins/link/images/anchor.png | Bin 589 -> 0 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1379 -> 0 bytes .../magicline/images/hidpi/icon-rtl.png | Bin 176 -> 0 bytes .../plugins/magicline/images/hidpi/icon.png | Bin 199 -> 0 bytes .../plugins/magicline/images/icon-rtl.png | Bin 138 -> 0 bytes .../plugins/magicline/images/icon.png | Bin 133 -> 0 bytes .../plugins/pastefromword/filter/default.js | 32 - .../ckeditor/plugins/scayt/CHANGELOG.md | 20 - .../plugins/ckeditor/plugins/scayt/LICENSE.md | 28 - .../plugins/ckeditor/plugins/scayt/README.md | 25 - .../ckeditor/plugins/scayt/dialogs/options.js | 19 - .../plugins/scayt/dialogs/toolbar.css | 71 - .../dialogs/lang/_translationstatus.txt | 20 - .../plugins/specialchar/dialogs/lang/af.js | 13 - .../plugins/specialchar/dialogs/lang/ar.js | 13 - .../plugins/specialchar/dialogs/lang/bg.js | 13 - .../plugins/specialchar/dialogs/lang/ca.js | 14 - .../plugins/specialchar/dialogs/lang/cs.js | 13 - .../plugins/specialchar/dialogs/lang/cy.js | 14 - .../plugins/specialchar/dialogs/lang/da.js | 11 - .../plugins/specialchar/dialogs/lang/de-ch.js | 13 - .../plugins/specialchar/dialogs/lang/de.js | 13 - .../plugins/specialchar/dialogs/lang/el.js | 13 - .../plugins/specialchar/dialogs/lang/en-gb.js | 13 - .../plugins/specialchar/dialogs/lang/en.js | 13 - .../plugins/specialchar/dialogs/lang/eo.js | 12 - .../plugins/specialchar/dialogs/lang/es.js | 13 - .../plugins/specialchar/dialogs/lang/et.js | 13 - .../plugins/specialchar/dialogs/lang/eu.js | 13 - .../plugins/specialchar/dialogs/lang/fa.js | 12 - .../plugins/specialchar/dialogs/lang/fi.js | 13 - .../plugins/specialchar/dialogs/lang/fr-ca.js | 10 - .../plugins/specialchar/dialogs/lang/fr.js | 11 - .../plugins/specialchar/dialogs/lang/gl.js | 13 - .../plugins/specialchar/dialogs/lang/he.js | 12 - .../plugins/specialchar/dialogs/lang/hr.js | 13 - .../plugins/specialchar/dialogs/lang/hu.js | 12 - .../plugins/specialchar/dialogs/lang/id.js | 13 - .../plugins/specialchar/dialogs/lang/it.js | 14 - .../plugins/specialchar/dialogs/lang/ja.js | 9 - .../plugins/specialchar/dialogs/lang/km.js | 13 - .../plugins/specialchar/dialogs/lang/ko.js | 10 - .../plugins/specialchar/dialogs/lang/ku.js | 13 - .../plugins/specialchar/dialogs/lang/lt.js | 13 - .../plugins/specialchar/dialogs/lang/lv.js | 13 - .../plugins/specialchar/dialogs/lang/nb.js | 11 - .../plugins/specialchar/dialogs/lang/nl.js | 13 - .../plugins/specialchar/dialogs/lang/no.js | 11 - .../plugins/specialchar/dialogs/lang/pl.js | 12 - .../plugins/specialchar/dialogs/lang/pt-br.js | 11 - .../plugins/specialchar/dialogs/lang/pt.js | 13 - .../plugins/specialchar/dialogs/lang/ru.js | 13 - .../plugins/specialchar/dialogs/lang/si.js | 13 - .../plugins/specialchar/dialogs/lang/sk.js | 13 - .../plugins/specialchar/dialogs/lang/sl.js | 12 - .../plugins/specialchar/dialogs/lang/sq.js | 13 - .../plugins/specialchar/dialogs/lang/sv.js | 11 - .../plugins/specialchar/dialogs/lang/th.js | 13 - .../plugins/specialchar/dialogs/lang/tr.js | 12 - .../plugins/specialchar/dialogs/lang/tt.js | 13 - .../plugins/specialchar/dialogs/lang/ug.js | 13 - .../plugins/specialchar/dialogs/lang/uk.js | 12 - .../plugins/specialchar/dialogs/lang/vi.js | 14 - .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 - .../plugins/specialchar/dialogs/lang/zh.js | 9 - .../specialchar/dialogs/specialchar.js | 14 - .../ckeditor/plugins/table/dialogs/table.js | 21 - .../plugins/tabletools/dialogs/tableCell.js | 17 - .../plugins/ckeditor/plugins/wsc/LICENSE.md | 28 - .../plugins/ckeditor/plugins/wsc/README.md | 25 - .../ckeditor/plugins/wsc/dialogs/ciframe.html | 66 - .../plugins/wsc/dialogs/tmpFrameset.html | 52 - .../ckeditor/plugins/wsc/dialogs/wsc.css | 82 - .../ckeditor/plugins/wsc/dialogs/wsc.js | 92 - .../ckeditor/plugins/wsc/dialogs/wsc_ie.js | 11 - .../plugins/ckeditor/samples/css/samples.css | 1640 -- .../ckeditor/samples/img/github-top.png | Bin 383 -> 0 bytes .../ckeditor/samples/img/header-bg.png | Bin 13086 -> 0 bytes .../ckeditor/samples/img/header-separator.png | Bin 123 -> 0 bytes .../plugins/ckeditor/samples/img/logo.png | Bin 5891 -> 0 bytes .../ckeditor/samples/img/navigation-tip.png | Bin 12029 -> 0 bytes .../plugins/ckeditor/samples/index.html | 128 - .../plugins/ckeditor/samples/js/sample.js | 53 - .../plugins/ckeditor/samples/js/sf.js | 17 - .../plugins/ckeditor/samples/old/ajax.html | 85 - .../plugins/ckeditor/samples/old/api.html | 210 - .../ckeditor/samples/old/appendto.html | 59 - .../samples/old/assets/inlineall/logo.png | Bin 4283 -> 0 bytes .../old/assets/outputxhtml/outputxhtml.css | 204 - .../samples/old/assets/posteddata.php | 59 - .../ckeditor/samples/old/assets/sample.jpg | Bin 14449 -> 0 bytes .../old/assets/uilanguages/languages.js | 7 - .../ckeditor/samples/old/datafiltering.html | 508 - .../samples/old/dialog/assets/my_dialog.js | 48 - .../ckeditor/samples/old/dialog/dialog.html | 190 - .../ckeditor/samples/old/divreplace.html | 144 - .../samples/old/enterkey/enterkey.html | 106 - .../assets/outputforflash/outputforflash.fla | Bin 85504 -> 0 bytes .../assets/outputforflash/outputforflash.swf | Bin 15571 -> 0 bytes .../assets/outputforflash/swfobject.js | 19 - .../old/htmlwriter/outputforflash.html | 283 - .../samples/old/htmlwriter/outputhtml.html | 224 - .../plugins/ckeditor/samples/old/index.html | 131 - .../ckeditor/samples/old/inlineall.html | 314 - .../ckeditor/samples/old/inlinebycode.html | 124 - .../ckeditor/samples/old/inlinetextarea.html | 113 - .../plugins/ckeditor/samples/old/jquery.html | 103 - .../samples/old/magicline/magicline.html | 209 - .../ckeditor/samples/old/readonly.html | 76 - .../ckeditor/samples/old/replacebyclass.html | 60 - .../ckeditor/samples/old/replacebycode.html | 59 - .../plugins/ckeditor/samples/old/sample.css | 357 - .../plugins/ckeditor/samples/old/sample.js | 50 - .../samples/old/sample_posteddata.php | 16 - .../ckeditor/samples/old/tabindex.html | 78 - .../ckeditor/samples/old/toolbar/toolbar.html | 235 - .../plugins/ckeditor/samples/old/uicolor.html | 72 - .../ckeditor/samples/old/uilanguages.html | 122 - .../samples/old/wysiwygarea/fullpage.html | 80 - .../ckeditor/samples/old/xhtmlstyle.html | 234 - .../toolbarconfigurator/css/fontello.css | 55 - .../toolbarconfigurator/font/LICENSE.txt | 10 - .../toolbarconfigurator/font/config.json | 28 - .../toolbarconfigurator/font/fontello.eot | Bin 4988 -> 0 bytes .../toolbarconfigurator/font/fontello.svg | 14 - .../toolbarconfigurator/font/fontello.ttf | Bin 4820 -> 0 bytes .../toolbarconfigurator/font/fontello.woff | Bin 2904 -> 0 bytes .../samples/toolbarconfigurator/index.html | 446 - .../js/abstracttoolbarmodifier.js | 13 - .../js/fulltoolbareditor.js | 9 - .../toolbarconfigurator/js/toolbarmodifier.js | 33 - .../js/toolbartextmodifier.js | 14 - .../lib/codemirror/LICENSE | 19 - .../lib/codemirror/codemirror.css | 325 - .../lib/codemirror/codemirror.js | 288 - .../lib/codemirror/javascript.js | 25 - .../lib/codemirror/neo.css | 36 - .../lib/codemirror/show-hint.css | 38 - .../lib/codemirror/show-hint.js | 16 - .../plugins/ckeditor/skins/moono/dialog.css | 5 - .../ckeditor/skins/moono/dialog_ie.css | 5 - .../ckeditor/skins/moono/dialog_ie7.css | 5 - .../ckeditor/skins/moono/dialog_ie8.css | 5 - .../ckeditor/skins/moono/dialog_iequirks.css | 5 - .../plugins/ckeditor/skins/moono/editor.css | 5 - .../ckeditor/skins/moono/editor_gecko.css | 5 - .../ckeditor/skins/moono/editor_ie.css | 5 - .../ckeditor/skins/moono/editor_ie7.css | 5 - .../ckeditor/skins/moono/editor_ie8.css | 5 - .../ckeditor/skins/moono/editor_iequirks.css | 5 - .../plugins/ckeditor/skins/moono/icons.png | Bin 10227 -> 0 bytes .../ckeditor/skins/moono/icons_hidpi.png | Bin 34465 -> 0 bytes .../ckeditor/skins/moono/images/arrow.png | Bin 191 -> 0 bytes .../ckeditor/skins/moono/images/close.png | Bin 468 -> 0 bytes .../skins/moono/images/hidpi/close.png | Bin 1271 -> 0 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 1329 -> 0 bytes .../skins/moono/images/hidpi/lock.png | Bin 1299 -> 0 bytes .../skins/moono/images/hidpi/refresh.png | Bin 1842 -> 0 bytes .../ckeditor/skins/moono/images/lock-open.png | Bin 349 -> 0 bytes .../ckeditor/skins/moono/images/lock.png | Bin 475 -> 0 bytes .../ckeditor/skins/moono/images/refresh.png | Bin 422 -> 0 bytes .../ckeditor/skins/moono/images/spinner.gif | Bin 2984 -> 0 bytes .../plugins/ckeditor/skins/moono/readme.md | 49 - .../adminlte2/plugins/ckeditor/styles.js | 111 - .../colorpicker/bootstrap-colorpicker.css | 251 - .../colorpicker/bootstrap-colorpicker.js | 1079 - .../colorpicker/bootstrap-colorpicker.min.css | 9 - .../colorpicker/bootstrap-colorpicker.min.js | 1 - .../colorpicker/img/alpha-horizontal.png | Bin 3635 -> 0 bytes .../plugins/colorpicker/img/alpha.png | Bin 3271 -> 0 bytes .../colorpicker/img/hue-horizontal.png | Bin 2837 -> 0 bytes .../adminlte2/plugins/colorpicker/img/hue.png | Bin 2972 -> 0 bytes .../plugins/colorpicker/img/saturation.png | Bin 8817 -> 0 bytes .../datatables/dataTables.bootstrap.css | 372 - .../datatables/dataTables.bootstrap.js | 206 - .../datatables/dataTables.bootstrap.min.js | 8 - .../datatables/extensions/AutoFill/Readme.txt | 38 - .../AutoFill/css/dataTables.autoFill.css | 24 - .../AutoFill/css/dataTables.autoFill.min.css | 1 - .../extensions/AutoFill/examples/columns.html | 644 - .../AutoFill/examples/complete-callback.html | 652 - .../AutoFill/examples/fill-both.html | 641 - .../AutoFill/examples/fill-horizontal.html | 641 - .../extensions/AutoFill/examples/index.html | 66 - .../AutoFill/examples/scrolling.html | 638 - .../extensions/AutoFill/examples/simple.html | 631 - .../AutoFill/examples/step-callback.html | 660 - .../extensions/AutoFill/images/filler.png | Bin 1040 -> 0 bytes .../AutoFill/js/dataTables.autoFill.js | 855 - .../AutoFill/js/dataTables.autoFill.min.js | 22 - .../extensions/ColReorder/License.txt | 20 - .../extensions/ColReorder/Readme.md | 39 - .../ColReorder/css/dataTables.colReorder.css | 14 - .../css/dataTables.colReorder.min.css | 1 - .../ColReorder/examples/alt_insert.html | 637 - .../ColReorder/examples/col_filter.html | 656 - .../ColReorder/examples/colvis.html | 635 - .../ColReorder/examples/fixedcolumns.html | 831 - .../ColReorder/examples/fixedheader.html | 635 - .../extensions/ColReorder/examples/index.html | 74 - .../ColReorder/examples/jqueryui.html | 635 - .../ColReorder/examples/new_init.html | 626 - .../ColReorder/examples/predefined.html | 636 - .../ColReorder/examples/realtime.html | 637 - .../extensions/ColReorder/examples/reset.html | 649 - .../ColReorder/examples/scrolling.html | 632 - .../ColReorder/examples/server_side.html | 192 - .../ColReorder/examples/simple.html | 630 - .../ColReorder/examples/state_save.html | 631 - .../extensions/ColReorder/images/insert.png | Bin 1885 -> 0 bytes .../ColReorder/js/dataTables.colReorder.js | 1372 -- .../js/dataTables.colReorder.min.js | 26 - .../datatables/extensions/ColVis/License.txt | 20 - .../datatables/extensions/ColVis/Readme.md | 38 - .../ColVis/css/dataTables.colVis.css | 185 - .../ColVis/css/dataTables.colVis.min.css | 1 - .../ColVis/css/dataTables.colvis.jqueryui.css | 41 - .../ColVis/examples/button_order.html | 630 - .../ColVis/examples/exclude_columns.html | 632 - .../ColVis/examples/group_columns.html | 656 - .../extensions/ColVis/examples/index.html | 72 - .../extensions/ColVis/examples/jqueryui.html | 637 - .../extensions/ColVis/examples/mouseover.html | 632 - .../extensions/ColVis/examples/new_init.html | 629 - .../extensions/ColVis/examples/restore.html | 641 - .../extensions/ColVis/examples/simple.html | 627 - .../extensions/ColVis/examples/text.html | 631 - .../ColVis/examples/title_callback.html | 636 - .../ColVis/examples/two_tables.html | 339 - .../ColVis/examples/two_tables_identical.html | 363 - .../extensions/ColVis/js/dataTables.colVis.js | 1123 -- .../ColVis/js/dataTables.colVis.min.js | 24 - .../extensions/FixedColumns/License.txt | 20 - .../extensions/FixedColumns/Readme.md | 42 - .../css/dataTables.fixedColumns.css | 25 - .../css/dataTables.fixedColumns.min.css | 1 - .../FixedColumns/examples/bootstrap.html | 819 - .../FixedColumns/examples/col_filter.html | 857 - .../FixedColumns/examples/colvis.html | 833 - .../FixedColumns/examples/css_size.html | 828 - .../FixedColumns/examples/index.html | 74 - .../FixedColumns/examples/index_column.html | 932 - .../examples/left_right_columns.html | 816 - .../FixedColumns/examples/right_column.html | 816 - .../FixedColumns/examples/rowspan.html | 657 - .../examples/server-side-processing.html | 204 - .../FixedColumns/examples/simple.html | 813 - .../FixedColumns/examples/size_fixed.html | 824 - .../FixedColumns/examples/size_fluid.html | 824 - .../FixedColumns/examples/two_columns.html | 810 - .../js/dataTables.fixedColumns.js | 1423 -- .../js/dataTables.fixedColumns.min.js | 30 - .../extensions/FixedHeader/Readme.txt | 36 - .../css/dataTables.fixedHeader.css | 7 - .../css/dataTables.fixedHeader.min.css | 1 - .../FixedHeader/examples/header_footer.html | 641 - .../FixedHeader/examples/index.html | 69 - .../FixedHeader/examples/simple.html | 637 - .../FixedHeader/examples/top_left_right.html | 236 - .../FixedHeader/examples/two_tables.html | 354 - .../FixedHeader/examples/zIndexes.html | 653 - .../FixedHeader/js/dataTables.fixedHeader.js | 1028 - .../js/dataTables.fixedHeader.min.js | 30 - .../datatables/extensions/KeyTable/Readme.txt | 36 - .../KeyTable/css/dataTables.keyTable.css | 7 - .../KeyTable/css/dataTables.keyTable.min.css | 1 - .../extensions/KeyTable/examples/events.html | 756 - .../extensions/KeyTable/examples/html.html | 627 - .../extensions/KeyTable/examples/index.html | 69 - .../KeyTable/examples/scrolling.html | 637 - .../extensions/KeyTable/examples/simple.html | 631 - .../KeyTable/js/dataTables.keyTable.js | 1175 -- .../KeyTable/js/dataTables.keyTable.min.js | 18 - .../extensions/NaturalSort/natural.js | 114 - .../extensions/NaturalSort/natural.min.js | 1 - .../extensions/Responsive/License.txt | 20 - .../extensions/Responsive/Readme.md | 0 .../Responsive/css/dataTables.responsive.css | 106 - .../Responsive/css/dataTables.responsive.scss | 149 - .../examples/child-rows/column-control.html | 854 - .../examples/child-rows/custom-renderer.html | 863 - .../child-rows/disable-child-rows.html | 819 - .../Responsive/examples/child-rows/index.html | 72 - .../examples/child-rows/right-column.html | 850 - .../child-rows/whole-row-control.html | 853 - .../examples/display-control/auto.html | 813 - .../examples/display-control/classes.html | 247 - .../display-control/complexHeader.html | 708 - .../examples/display-control/fixedHeader.html | 825 - .../examples/display-control/index.html | 65 - .../display-control/init-classes.html | 215 - .../extensions/Responsive/examples/index.html | 86 - .../examples/initialisation/ajax.html | 210 - .../examples/initialisation/className.html | 812 - .../examples/initialisation/default.html | 822 - .../examples/initialisation/index.html | 65 - .../examples/initialisation/new.html | 821 - .../examples/initialisation/option.html | 820 - .../examples/styling/bootstrap.html | 831 - .../Responsive/examples/styling/compact.html | 816 - .../examples/styling/foundation.html | 822 - .../Responsive/examples/styling/index.html | 57 - .../examples/styling/scrolling.html | 826 - .../Responsive/js/dataTables.responsive.js | 873 - .../js/dataTables.responsive.min.js | 19 - .../datatables/extensions/Scroller/Readme.txt | 43 - .../Scroller/css/dataTables.scroller.css | 44 - .../Scroller/css/dataTables.scroller.min.css | 1 - .../Scroller/examples/api_scrolling.html | 174 - .../Scroller/examples/data/2500.txt | 2502 --- .../extensions/Scroller/examples/data/ssp.php | 58 - .../extensions/Scroller/examples/index.html | 83 - .../Scroller/examples/large_js_source.html | 182 - .../examples/server-side_processing.html | 220 - .../extensions/Scroller/examples/simple.html | 175 - .../Scroller/examples/state_saving.html | 170 - .../Scroller/images/loading-background.png | Bin 1013 -> 0 bytes .../Scroller/js/dataTables.scroller.js | 1262 -- .../Scroller/js/dataTables.scroller.min.js | 25 - .../extensions/TableTools/Readme.md | 41 - .../TableTools/css/dataTables.tableTools.css | 361 - .../css/dataTables.tableTools.min.css | 1 - .../extensions/TableTools/examples/ajax.html | 190 - .../TableTools/examples/alter_buttons.html | 637 - .../TableTools/examples/bootstrap.html | 645 - .../TableTools/examples/button_text.html | 669 - .../TableTools/examples/collection.html | 654 - .../TableTools/examples/defaults.html | 634 - .../extensions/TableTools/examples/index.html | 80 - .../TableTools/examples/jqueryui.html | 637 - .../TableTools/examples/multi_instance.html | 638 - .../TableTools/examples/multiple_tables.html | 343 - .../TableTools/examples/new_init.html | 644 - .../TableTools/examples/pdf_message.html | 655 - .../TableTools/examples/plug-in.html | 682 - .../TableTools/examples/select_column.html | 228 - .../TableTools/examples/select_multi.html | 649 - .../TableTools/examples/select_os.html | 649 - .../TableTools/examples/select_single.html | 646 - .../TableTools/examples/simple.html | 633 - .../TableTools/examples/swf_path.html | 639 - .../TableTools/images/collection.png | Bin 1166 -> 0 bytes .../TableTools/images/collection_hover.png | Bin 1194 -> 0 bytes .../extensions/TableTools/images/copy.png | Bin 2184 -> 0 bytes .../TableTools/images/copy_hover.png | Bin 2797 -> 0 bytes .../extensions/TableTools/images/csv.png | Bin 1607 -> 0 bytes .../TableTools/images/csv_hover.png | Bin 1854 -> 0 bytes .../extensions/TableTools/images/pdf.png | Bin 4325 -> 0 bytes .../TableTools/images/pdf_hover.png | Bin 2786 -> 0 bytes .../extensions/TableTools/images/print.png | Bin 2123 -> 0 bytes .../TableTools/images/print_hover.png | Bin 2230 -> 0 bytes .../TableTools/images/psd/collection.psd | Bin 25792 -> 0 bytes .../TableTools/images/psd/copy document.psd | Bin 104729 -> 0 bytes .../TableTools/images/psd/file_types.psd | Bin 1090645 -> 0 bytes .../TableTools/images/psd/printer.psd | Bin 119952 -> 0 bytes .../extensions/TableTools/images/xls.png | Bin 1641 -> 0 bytes .../TableTools/images/xls_hover.png | Bin 2061 -> 0 bytes .../TableTools/js/dataTables.tableTools.js | 3230 --- .../js/dataTables.tableTools.min.js | 70 - .../TableTools/swf/copy_csv_xls.swf | Bin 2232 -> 0 bytes .../TableTools/swf/copy_csv_xls_pdf.swf | Bin 58846 -> 0 bytes .../plugins/datatables/images/sort_asc.png | Bin 160 -> 0 bytes .../datatables/images/sort_asc_disabled.png | Bin 148 -> 0 bytes .../plugins/datatables/images/sort_both.png | Bin 201 -> 0 bytes .../plugins/datatables/images/sort_desc.png | Bin 158 -> 0 bytes .../datatables/images/sort_desc_disabled.png | Bin 146 -> 0 bytes .../plugins/datatables/jquery.dataTables.css | 455 - .../plugins/datatables/jquery.dataTables.js | 14951 -------------- .../datatables/jquery.dataTables.min.css | 1 - .../datatables/jquery.dataTables.min.js | 160 - .../jquery.dataTables_themeroller.css | 416 - .../datepicker/bootstrap-datepicker.js | 1671 -- .../plugins/datepicker/datepicker3.css | 790 - .../locales/bootstrap-datepicker.ar.js | 15 - .../locales/bootstrap-datepicker.az.js | 12 - .../locales/bootstrap-datepicker.bg.js | 14 - .../locales/bootstrap-datepicker.ca.js | 14 - .../locales/bootstrap-datepicker.cs.js | 15 - .../locales/bootstrap-datepicker.cy.js | 14 - .../locales/bootstrap-datepicker.da.js | 15 - .../locales/bootstrap-datepicker.de.js | 17 - .../locales/bootstrap-datepicker.el.js | 13 - .../locales/bootstrap-datepicker.es.js | 14 - .../locales/bootstrap-datepicker.et.js | 18 - .../locales/bootstrap-datepicker.fa.js | 17 - .../locales/bootstrap-datepicker.fi.js | 16 - .../locales/bootstrap-datepicker.fr.js | 17 - .../locales/bootstrap-datepicker.gl.js | 11 - .../locales/bootstrap-datepicker.he.js | 15 - .../locales/bootstrap-datepicker.hr.js | 13 - .../locales/bootstrap-datepicker.hu.js | 16 - .../locales/bootstrap-datepicker.id.js | 15 - .../locales/bootstrap-datepicker.is.js | 14 - .../locales/bootstrap-datepicker.it.js | 17 - .../locales/bootstrap-datepicker.ja.js | 15 - .../locales/bootstrap-datepicker.ka.js | 17 - .../locales/bootstrap-datepicker.kk.js | 15 - .../locales/bootstrap-datepicker.kr.js | 13 - .../locales/bootstrap-datepicker.lt.js | 16 - .../locales/bootstrap-datepicker.lv.js | 16 - .../locales/bootstrap-datepicker.mk.js | 15 - .../locales/bootstrap-datepicker.ms.js | 14 - .../locales/bootstrap-datepicker.nb.js | 14 - .../locales/bootstrap-datepicker.nl-BE.js | 17 - .../locales/bootstrap-datepicker.nl.js | 14 - .../locales/bootstrap-datepicker.no.js | 16 - .../locales/bootstrap-datepicker.pl.js | 15 - .../locales/bootstrap-datepicker.pt-BR.js | 15 - .../locales/bootstrap-datepicker.pt.js | 16 - .../locales/bootstrap-datepicker.ro.js | 16 - .../locales/bootstrap-datepicker.rs-latin.js | 14 - .../locales/bootstrap-datepicker.rs.js | 14 - .../locales/bootstrap-datepicker.ru.js | 15 - .../locales/bootstrap-datepicker.sk.js | 15 - .../locales/bootstrap-datepicker.sl.js | 14 - .../locales/bootstrap-datepicker.sq.js | 15 - .../locales/bootstrap-datepicker.sv.js | 16 - .../locales/bootstrap-datepicker.sw.js | 15 - .../locales/bootstrap-datepicker.th.js | 14 - .../locales/bootstrap-datepicker.tr.js | 16 - .../locales/bootstrap-datepicker.ua.js | 15 - .../locales/bootstrap-datepicker.vi.js | 16 - .../locales/bootstrap-datepicker.zh-CN.js | 16 - .../locales/bootstrap-datepicker.zh-TW.js | 17 - .../daterangepicker/daterangepicker-bs3.css | 335 - .../daterangepicker/daterangepicker.js | 1304 -- .../plugins/daterangepicker/moment.js | 3043 --- .../plugins/daterangepicker/moment.min.js | 7 - .../adminlte2/plugins/fastclick/fastclick.js | 841 - .../plugins/fastclick/fastclick.min.js | 1 - app/static/adminlte2/plugins/flot/excanvas.js | 1427 -- .../adminlte2/plugins/flot/excanvas.min.js | 1 - .../plugins/flot/jquery.colorhelpers.js | 180 - .../plugins/flot/jquery.colorhelpers.min.js | 1 - .../plugins/flot/jquery.flot.canvas.js | 345 - .../plugins/flot/jquery.flot.canvas.min.js | 1 - .../plugins/flot/jquery.flot.categories.js | 190 - .../flot/jquery.flot.categories.min.js | 1 - .../plugins/flot/jquery.flot.crosshair.js | 176 - .../plugins/flot/jquery.flot.crosshair.min.js | 1 - .../plugins/flot/jquery.flot.errorbars.js | 353 - .../plugins/flot/jquery.flot.errorbars.min.js | 1 - .../plugins/flot/jquery.flot.fillbetween.js | 226 - .../flot/jquery.flot.fillbetween.min.js | 1 - .../plugins/flot/jquery.flot.image.js | 241 - .../plugins/flot/jquery.flot.image.min.js | 1 - .../adminlte2/plugins/flot/jquery.flot.js | 3137 --- .../adminlte2/plugins/flot/jquery.flot.min.js | 2 - .../plugins/flot/jquery.flot.navigate.js | 346 - .../plugins/flot/jquery.flot.navigate.min.js | 1 - .../adminlte2/plugins/flot/jquery.flot.pie.js | 817 - .../plugins/flot/jquery.flot.pie.min.js | 1 - .../plugins/flot/jquery.flot.resize.js | 60 - .../plugins/flot/jquery.flot.resize.min.js | 1 - .../plugins/flot/jquery.flot.selection.js | 360 - .../plugins/flot/jquery.flot.selection.min.js | 1 - .../plugins/flot/jquery.flot.stack.js | 188 - .../plugins/flot/jquery.flot.stack.min.js | 1 - .../plugins/flot/jquery.flot.symbol.js | 71 - .../plugins/flot/jquery.flot.symbol.min.js | 1 - .../plugins/flot/jquery.flot.threshold.js | 142 - .../plugins/flot/jquery.flot.threshold.min.js | 1 - .../plugins/flot/jquery.flot.time.js | 429 - .../plugins/flot/jquery.flot.time.min.js | 1 - .../plugins/fullcalendar/fullcalendar.css | 977 - .../plugins/fullcalendar/fullcalendar.js | 9732 --------- .../plugins/fullcalendar/fullcalendar.min.css | 5 - .../plugins/fullcalendar/fullcalendar.min.js | 8 - .../fullcalendar/fullcalendar.print.css | 202 - app/static/adminlte2/plugins/iCheck/all.css | 61 - .../adminlte2/plugins/iCheck/flat/_all.css | 560 - .../adminlte2/plugins/iCheck/flat/aero.css | 56 - .../adminlte2/plugins/iCheck/flat/aero.png | Bin 1520 -> 0 bytes .../adminlte2/plugins/iCheck/flat/aero@2x.png | Bin 3218 -> 0 bytes .../adminlte2/plugins/iCheck/flat/blue.css | 56 - .../adminlte2/plugins/iCheck/flat/blue.png | Bin 1518 -> 0 bytes .../adminlte2/plugins/iCheck/flat/blue@2x.png | Bin 3217 -> 0 bytes .../adminlte2/plugins/iCheck/flat/flat.css | 56 - .../adminlte2/plugins/iCheck/flat/flat.png | Bin 1515 -> 0 bytes .../adminlte2/plugins/iCheck/flat/flat@2x.png | Bin 3217 -> 0 bytes .../adminlte2/plugins/iCheck/flat/green.css | 56 - .../adminlte2/plugins/iCheck/flat/green.png | Bin 1444 -> 0 bytes .../plugins/iCheck/flat/green@2x.png | Bin 3117 -> 0 bytes .../adminlte2/plugins/iCheck/flat/grey.css | 56 - .../adminlte2/plugins/iCheck/flat/grey.png | Bin 1516 -> 0 bytes .../adminlte2/plugins/iCheck/flat/grey@2x.png | Bin 3217 -> 0 bytes .../adminlte2/plugins/iCheck/flat/orange.css | 56 - .../adminlte2/plugins/iCheck/flat/orange.png | Bin 1518 -> 0 bytes .../plugins/iCheck/flat/orange@2x.png | Bin 3275 -> 0 bytes .../adminlte2/plugins/iCheck/flat/pink.css | 56 - .../adminlte2/plugins/iCheck/flat/pink.png | Bin 1522 -> 0 bytes .../adminlte2/plugins/iCheck/flat/pink@2x.png | Bin 3218 -> 0 bytes .../adminlte2/plugins/iCheck/flat/purple.css | 56 - .../adminlte2/plugins/iCheck/flat/purple.png | Bin 1519 -> 0 bytes .../plugins/iCheck/flat/purple@2x.png | Bin 3218 -> 0 bytes .../adminlte2/plugins/iCheck/flat/red.css | 56 - .../adminlte2/plugins/iCheck/flat/red.png | Bin 1516 -> 0 bytes .../adminlte2/plugins/iCheck/flat/red@2x.png | Bin 3276 -> 0 bytes .../adminlte2/plugins/iCheck/flat/yellow.css | 56 - .../adminlte2/plugins/iCheck/flat/yellow.png | Bin 1516 -> 0 bytes .../plugins/iCheck/flat/yellow@2x.png | Bin 3216 -> 0 bytes .../plugins/iCheck/futurico/futurico.css | 56 - .../plugins/iCheck/futurico/futurico.png | Bin 1734 -> 0 bytes .../plugins/iCheck/futurico/futurico@2x.png | Bin 3446 -> 0 bytes app/static/adminlte2/plugins/iCheck/icheck.js | 478 - .../adminlte2/plugins/iCheck/icheck.min.js | 10 - .../adminlte2/plugins/iCheck/line/_all.css | 740 - .../adminlte2/plugins/iCheck/line/aero.css | 74 - .../adminlte2/plugins/iCheck/line/blue.css | 74 - .../adminlte2/plugins/iCheck/line/green.css | 74 - .../adminlte2/plugins/iCheck/line/grey.css | 74 - .../adminlte2/plugins/iCheck/line/line.css | 74 - .../adminlte2/plugins/iCheck/line/line.png | Bin 588 -> 0 bytes .../adminlte2/plugins/iCheck/line/line@2x.png | Bin 1073 -> 0 bytes .../adminlte2/plugins/iCheck/line/orange.css | 74 - .../adminlte2/plugins/iCheck/line/pink.css | 74 - .../adminlte2/plugins/iCheck/line/purple.css | 74 - .../adminlte2/plugins/iCheck/line/red.css | 74 - .../adminlte2/plugins/iCheck/line/yellow.css | 74 - .../adminlte2/plugins/iCheck/minimal/_all.css | 557 - .../adminlte2/plugins/iCheck/minimal/aero.css | 62 - .../adminlte2/plugins/iCheck/minimal/aero.png | Bin 1151 -> 0 bytes .../plugins/iCheck/minimal/aero@2x.png | Bin 1409 -> 0 bytes .../adminlte2/plugins/iCheck/minimal/blue.css | 62 - .../adminlte2/plugins/iCheck/minimal/blue.png | Bin 1132 -> 0 bytes .../plugins/iCheck/minimal/blue@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/green.css | 62 - .../plugins/iCheck/minimal/green.png | Bin 1143 -> 0 bytes .../plugins/iCheck/minimal/green@2x.png | Bin 1408 -> 0 bytes .../adminlte2/plugins/iCheck/minimal/grey.css | 62 - .../adminlte2/plugins/iCheck/minimal/grey.png | Bin 1142 -> 0 bytes .../plugins/iCheck/minimal/grey@2x.png | Bin 1407 -> 0 bytes .../plugins/iCheck/minimal/minimal.css | 62 - .../plugins/iCheck/minimal/minimal.png | Bin 1114 -> 0 bytes .../plugins/iCheck/minimal/minimal@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/orange.css | 62 - .../plugins/iCheck/minimal/orange.png | Bin 1139 -> 0 bytes .../plugins/iCheck/minimal/orange@2x.png | Bin 1407 -> 0 bytes .../adminlte2/plugins/iCheck/minimal/pink.css | 62 - .../adminlte2/plugins/iCheck/minimal/pink.png | Bin 1150 -> 0 bytes .../plugins/iCheck/minimal/pink@2x.png | Bin 1409 -> 0 bytes .../plugins/iCheck/minimal/purple.css | 62 - .../plugins/iCheck/minimal/purple.png | Bin 1132 -> 0 bytes .../plugins/iCheck/minimal/purple@2x.png | Bin 1409 -> 0 bytes .../adminlte2/plugins/iCheck/minimal/red.css | 62 - .../adminlte2/plugins/iCheck/minimal/red.png | Bin 1130 -> 0 bytes .../plugins/iCheck/minimal/red@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/yellow.css | 62 - .../plugins/iCheck/minimal/yellow.png | Bin 1135 -> 0 bytes .../plugins/iCheck/minimal/yellow@2x.png | Bin 1406 -> 0 bytes .../plugins/iCheck/polaris/polaris.css | 62 - .../plugins/iCheck/polaris/polaris.png | Bin 6401 -> 0 bytes .../plugins/iCheck/polaris/polaris@2x.png | Bin 16760 -> 0 bytes .../adminlte2/plugins/iCheck/square/_all.css | 620 - .../adminlte2/plugins/iCheck/square/aero.css | 62 - .../adminlte2/plugins/iCheck/square/aero.png | Bin 2167 -> 0 bytes .../plugins/iCheck/square/aero@2x.png | Bin 4455 -> 0 bytes .../adminlte2/plugins/iCheck/square/blue.css | 62 - .../adminlte2/plugins/iCheck/square/blue.png | Bin 2185 -> 0 bytes .../plugins/iCheck/square/blue@2x.png | Bin 4485 -> 0 bytes .../adminlte2/plugins/iCheck/square/green.css | 62 - .../adminlte2/plugins/iCheck/square/green.png | Bin 2193 -> 0 bytes .../plugins/iCheck/square/green@2x.png | Bin 4498 -> 0 bytes .../adminlte2/plugins/iCheck/square/grey.css | 62 - .../adminlte2/plugins/iCheck/square/grey.png | Bin 2186 -> 0 bytes .../plugins/iCheck/square/grey@2x.png | Bin 4483 -> 0 bytes .../plugins/iCheck/square/orange.css | 62 - .../plugins/iCheck/square/orange.png | Bin 2181 -> 0 bytes .../plugins/iCheck/square/orange@2x.png | Bin 4474 -> 0 bytes .../adminlte2/plugins/iCheck/square/pink.css | 62 - .../adminlte2/plugins/iCheck/square/pink.png | Bin 2189 -> 0 bytes .../plugins/iCheck/square/pink@2x.png | Bin 4479 -> 0 bytes .../plugins/iCheck/square/purple.css | 62 - .../plugins/iCheck/square/purple.png | Bin 2188 -> 0 bytes .../plugins/iCheck/square/purple@2x.png | Bin 4501 -> 0 bytes .../adminlte2/plugins/iCheck/square/red.css | 62 - .../adminlte2/plugins/iCheck/square/red.png | Bin 2190 -> 0 bytes .../plugins/iCheck/square/red@2x.png | Bin 4490 -> 0 bytes .../plugins/iCheck/square/square.css | 62 - .../plugins/iCheck/square/square.png | Bin 2175 -> 0 bytes .../plugins/iCheck/square/square@2x.png | Bin 4478 -> 0 bytes .../plugins/iCheck/square/yellow.css | 62 - .../plugins/iCheck/square/yellow.png | Bin 2131 -> 0 bytes .../plugins/iCheck/square/yellow@2x.png | Bin 4385 -> 0 bytes .../jquery.inputmask.date.extensions.js | 488 - .../input-mask/jquery.inputmask.extensions.js | 122 - .../plugins/input-mask/jquery.inputmask.js | 1627 -- .../jquery.inputmask.numeric.extensions.js | 177 - .../jquery.inputmask.phone.extensions.js | 50 - .../jquery.inputmask.regex.extensions.js | 169 - .../input-mask/phone-codes/phone-be.json | 45 - .../input-mask/phone-codes/phone-codes.json | 294 - .../plugins/input-mask/phone-codes/readme.txt | 1 - .../ionslider/img/sprite-skin-flat.png | Bin 304 -> 0 bytes .../ionslider/img/sprite-skin-nice.png | Bin 694 -> 0 bytes .../plugins/ionslider/ion.rangeSlider.css | 149 - .../plugins/ionslider/ion.rangeSlider.min.js | 76 - .../ionslider/ion.rangeSlider.skinFlat.css | 106 - .../ionslider/ion.rangeSlider.skinNice.css | 102 - .../plugins/jQuery/jQuery-2.2.0.min.js | 4 - .../adminlte2/plugins/jQueryUI/jquery-ui.js | 16617 ---------------- .../plugins/jQueryUI/jquery-ui.min.js | 13 - .../jvectormap/jquery-jvectormap-1.2.2.css | 40 - .../jvectormap/jquery-jvectormap-1.2.2.min.js | 8 - .../jvectormap/jquery-jvectormap-usa-en.js | 1 - .../jquery-jvectormap-world-mill-en.js | 1 - .../adminlte2/plugins/knob/jquery.knob.js | 805 - .../adminlte2/plugins/morris/morris.css | 2 - app/static/adminlte2/plugins/morris/morris.js | 1892 -- .../adminlte2/plugins/morris/morris.min.js | 7 - app/static/adminlte2/plugins/pace/pace.css | 85 - app/static/adminlte2/plugins/pace/pace.js | 935 - .../adminlte2/plugins/pace/pace.min.css | 1 - app/static/adminlte2/plugins/pace/pace.min.js | 2 - .../adminlte2/plugins/select2/i18n/ar.js | 3 - .../adminlte2/plugins/select2/i18n/az.js | 3 - .../adminlte2/plugins/select2/i18n/bg.js | 3 - .../adminlte2/plugins/select2/i18n/ca.js | 3 - .../adminlte2/plugins/select2/i18n/cs.js | 3 - .../adminlte2/plugins/select2/i18n/da.js | 3 - .../adminlte2/plugins/select2/i18n/de.js | 3 - .../adminlte2/plugins/select2/i18n/en.js | 3 - .../adminlte2/plugins/select2/i18n/es.js | 3 - .../adminlte2/plugins/select2/i18n/et.js | 3 - .../adminlte2/plugins/select2/i18n/eu.js | 3 - .../adminlte2/plugins/select2/i18n/fa.js | 3 - .../adminlte2/plugins/select2/i18n/fi.js | 3 - .../adminlte2/plugins/select2/i18n/fr.js | 3 - .../adminlte2/plugins/select2/i18n/gl.js | 3 - .../adminlte2/plugins/select2/i18n/he.js | 3 - .../adminlte2/plugins/select2/i18n/hi.js | 3 - .../adminlte2/plugins/select2/i18n/hr.js | 3 - .../adminlte2/plugins/select2/i18n/hu.js | 3 - .../adminlte2/plugins/select2/i18n/id.js | 3 - .../adminlte2/plugins/select2/i18n/is.js | 3 - .../adminlte2/plugins/select2/i18n/it.js | 3 - .../adminlte2/plugins/select2/i18n/ja.js | 3 - .../adminlte2/plugins/select2/i18n/ko.js | 3 - .../adminlte2/plugins/select2/i18n/lt.js | 3 - .../adminlte2/plugins/select2/i18n/lv.js | 3 - .../adminlte2/plugins/select2/i18n/mk.js | 3 - .../adminlte2/plugins/select2/i18n/ms.js | 3 - .../adminlte2/plugins/select2/i18n/nb.js | 3 - .../adminlte2/plugins/select2/i18n/nl.js | 3 - .../adminlte2/plugins/select2/i18n/pl.js | 3 - .../adminlte2/plugins/select2/i18n/pt-BR.js | 3 - .../adminlte2/plugins/select2/i18n/pt.js | 3 - .../adminlte2/plugins/select2/i18n/ro.js | 3 - .../adminlte2/plugins/select2/i18n/ru.js | 3 - .../adminlte2/plugins/select2/i18n/sk.js | 3 - .../adminlte2/plugins/select2/i18n/sr-Cyrl.js | 3 - .../adminlte2/plugins/select2/i18n/sr.js | 3 - .../adminlte2/plugins/select2/i18n/sv.js | 3 - .../adminlte2/plugins/select2/i18n/th.js | 3 - .../adminlte2/plugins/select2/i18n/tr.js | 3 - .../adminlte2/plugins/select2/i18n/uk.js | 3 - .../adminlte2/plugins/select2/i18n/vi.js | 3 - .../adminlte2/plugins/select2/i18n/zh-CN.js | 3 - .../adminlte2/plugins/select2/i18n/zh-TW.js | 3 - .../adminlte2/plugins/select2/select2.css | 482 - .../adminlte2/plugins/select2/select2.full.js | 6281 ------ .../plugins/select2/select2.full.min.js | 3 - .../adminlte2/plugins/select2/select2.js | 5570 ------ .../adminlte2/plugins/select2/select2.min.css | 1 - .../adminlte2/plugins/select2/select2.min.js | 2 - .../plugins/slimScroll/jquery.slimscroll.js | 490 - .../slimScroll/jquery.slimscroll.min.js | 1 - .../plugins/sparkline/jquery.sparkline.js | 3054 --- .../plugins/sparkline/jquery.sparkline.min.js | 5 - .../timepicker/bootstrap-timepicker.css | 121 - .../timepicker/bootstrap-timepicker.js | 903 - .../timepicker/bootstrap-timepicker.min.css | 10 - .../timepicker/bootstrap-timepicker.min.js | 5 - app/static/multiselect/css/multi-select.css | 93 - app/static/multiselect/img/switch.png | Bin 540 -> 0 bytes .../multiselect/js/jquery.multi-select.js | 536 - 905 files changed, 226018 deletions(-) delete mode 100644 app/static/adminlte2/bootstrap/css/bootstrap.css delete mode 100644 app/static/adminlte2/bootstrap/css/bootstrap.css.map delete mode 100644 app/static/adminlte2/bootstrap/css/bootstrap.min.css delete mode 100644 app/static/adminlte2/bootstrap/css/bootstrap.min.css.map delete mode 100644 app/static/adminlte2/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 app/static/adminlte2/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 app/static/adminlte2/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 app/static/adminlte2/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 app/static/adminlte2/bootstrap/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 app/static/adminlte2/bootstrap/js/bootstrap.js delete mode 100644 app/static/adminlte2/bootstrap/js/bootstrap.min.js delete mode 100644 app/static/adminlte2/bootstrap/js/npm.js delete mode 100644 app/static/adminlte2/dist/css/AdminLTE.css delete mode 100644 app/static/adminlte2/dist/css/AdminLTE.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/_all-skins.css delete mode 100644 app/static/adminlte2/dist/css/skins/_all-skins.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-black-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-black-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-black.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-black.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-blue-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-blue-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-blue.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-blue.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-green-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-green-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-green.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-green.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-purple-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-purple-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-purple.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-purple.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-red-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-red-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-red.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-red.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-yellow-light.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-yellow-light.min.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-yellow.css delete mode 100644 app/static/adminlte2/dist/css/skins/skin-yellow.min.css delete mode 100644 app/static/adminlte2/dist/img/avatar.png delete mode 100644 app/static/adminlte2/dist/img/avatar04.png delete mode 100644 app/static/adminlte2/dist/img/avatar2.png delete mode 100644 app/static/adminlte2/dist/img/avatar3.png delete mode 100644 app/static/adminlte2/dist/img/avatar5.png delete mode 100644 app/static/adminlte2/dist/img/boxed-bg.jpg delete mode 100644 app/static/adminlte2/dist/img/boxed-bg.png delete mode 100644 app/static/adminlte2/dist/img/credit/american-express.png delete mode 100644 app/static/adminlte2/dist/img/credit/cirrus.png delete mode 100644 app/static/adminlte2/dist/img/credit/mastercard.png delete mode 100644 app/static/adminlte2/dist/img/credit/mestro.png delete mode 100644 app/static/adminlte2/dist/img/credit/paypal.png delete mode 100644 app/static/adminlte2/dist/img/credit/paypal2.png delete mode 100644 app/static/adminlte2/dist/img/credit/visa.png delete mode 100644 app/static/adminlte2/dist/img/default-50x50.gif delete mode 100644 app/static/adminlte2/dist/img/icons.png delete mode 100644 app/static/adminlte2/dist/img/photo1.png delete mode 100644 app/static/adminlte2/dist/img/photo2.png delete mode 100644 app/static/adminlte2/dist/img/photo3.jpg delete mode 100644 app/static/adminlte2/dist/img/photo4.jpg delete mode 100644 app/static/adminlte2/dist/img/user1-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user2-160x160.jpg delete mode 100644 app/static/adminlte2/dist/img/user3-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user4-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user5-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user6-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user7-128x128.jpg delete mode 100644 app/static/adminlte2/dist/img/user8-128x128.jpg delete mode 100644 app/static/adminlte2/dist/js/app.js delete mode 100644 app/static/adminlte2/dist/js/app.min.js delete mode 100644 app/static/adminlte2/dist/js/demo.js delete mode 100644 app/static/adminlte2/dist/js/pages/dashboard.js delete mode 100644 app/static/adminlte2/dist/js/pages/dashboard2.js delete mode 100644 app/static/adminlte2/plugins/bootstrap-slider/bootstrap-slider.js delete mode 100644 app/static/adminlte2/plugins/bootstrap-slider/slider.css delete mode 100644 app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js delete mode 100644 app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js delete mode 100644 app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css delete mode 100644 app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css delete mode 100644 app/static/adminlte2/plugins/chartjs/Chart.js delete mode 100644 app/static/adminlte2/plugins/chartjs/Chart.min.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/CHANGES.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/LICENSE.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/README.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/adapters/jquery.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/build-config.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/ckeditor.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/config.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/contents.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/af.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ar.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/bg.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/bn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/bs.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/cs.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/cy.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/da.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/de-ch.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/de.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/el.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/en-au.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/en-ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/en-gb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/en.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/eo.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/es.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/et.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/eu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/fa.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/fi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/fo.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/fr-ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/fr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/gl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/gu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/he.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/hi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/hr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/hu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/id.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/is.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/it.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ja.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ka.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/km.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ko.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ku.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/lt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/lv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/mk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/mn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ms.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/nb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/nl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/no.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/pl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/pt-br.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/pt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ro.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ru.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/si.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sq.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sr-latn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/sv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/th.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/tr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/tt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/ug.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/uk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/vi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/zh-cn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/lang/zh.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/af.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/about/dialogs/about.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/clipboard/dialogs/paste.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/dialog/dialogDefinition.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/icons.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/icons_hidpi.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/image/dialogs/image.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/image/images/noimage.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/link/dialogs/anchor.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/link/dialogs/link.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/link/images/anchor.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/link/images/hidpi/anchor.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/magicline/images/hidpi/icon.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/magicline/images/icon-rtl.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/magicline/images/icon.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/pastefromword/filter/default.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/scayt/CHANGELOG.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/scayt/LICENSE.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/scayt/README.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/scayt/dialogs/options.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/af.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/da.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/eu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ko.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/lt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/tt.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/table/dialogs/table.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/LICENSE.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/README.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/dialogs/wsc.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/dialogs/wsc.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/css/samples.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/img/github-top.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/img/header-bg.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/img/header-separator.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/img/logo.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/img/navigation-tip.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/index.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/js/sample.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/js/sf.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/ajax.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/api.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/appendto.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/assets/inlineall/logo.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/assets/posteddata.php delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/assets/sample.jpg delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/assets/uilanguages/languages.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/datafiltering.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/dialog/assets/my_dialog.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/dialog/dialog.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/divreplace.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/enterkey/enterkey.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/htmlwriter/assets/outputforflash/swfobject.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/htmlwriter/outputforflash.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/htmlwriter/outputhtml.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/index.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/inlineall.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/inlinebycode.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/inlinetextarea.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/jquery.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/magicline/magicline.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/readonly.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/replacebyclass.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/replacebycode.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/sample.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/sample.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/sample_posteddata.php delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/tabindex.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/toolbar/toolbar.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/uicolor.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/uilanguages.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/wysiwygarea/fullpage.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/old/xhtmlstyle.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/css/fontello.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/config.json delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/fontello.eot delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/fontello.svg delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/fontello.ttf delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/font/fontello.woff delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/index.html delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/dialog.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/dialog_ie.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/dialog_ie7.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/dialog_ie8.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/dialog_iequirks.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor_gecko.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor_ie.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor_ie7.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor_ie8.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/editor_iequirks.css delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/icons.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/icons_hidpi.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/arrow.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/close.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/hidpi/close.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/hidpi/lock-open.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/hidpi/lock.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/hidpi/refresh.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/lock-open.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/lock.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/refresh.png delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/images/spinner.gif delete mode 100644 app/static/adminlte2/plugins/ckeditor/skins/moono/readme.md delete mode 100644 app/static/adminlte2/plugins/ckeditor/styles.js delete mode 100644 app/static/adminlte2/plugins/colorpicker/bootstrap-colorpicker.css delete mode 100644 app/static/adminlte2/plugins/colorpicker/bootstrap-colorpicker.js delete mode 100644 app/static/adminlte2/plugins/colorpicker/bootstrap-colorpicker.min.css delete mode 100644 app/static/adminlte2/plugins/colorpicker/bootstrap-colorpicker.min.js delete mode 100644 app/static/adminlte2/plugins/colorpicker/img/alpha-horizontal.png delete mode 100644 app/static/adminlte2/plugins/colorpicker/img/alpha.png delete mode 100644 app/static/adminlte2/plugins/colorpicker/img/hue-horizontal.png delete mode 100644 app/static/adminlte2/plugins/colorpicker/img/hue.png delete mode 100644 app/static/adminlte2/plugins/colorpicker/img/saturation.png delete mode 100644 app/static/adminlte2/plugins/datatables/dataTables.bootstrap.css delete mode 100644 app/static/adminlte2/plugins/datatables/dataTables.bootstrap.js delete mode 100644 app/static/adminlte2/plugins/datatables/dataTables.bootstrap.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/Readme.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/columns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/complete-callback.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/fill-both.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/fill-horizontal.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/scrolling.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/examples/step-callback.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/images/filler.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/License.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/Readme.md delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/css/dataTables.colReorder.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/css/dataTables.colReorder.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/alt_insert.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/col_filter.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/colvis.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/fixedcolumns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/fixedheader.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/jqueryui.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/new_init.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/predefined.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/realtime.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/reset.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/scrolling.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/server_side.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/examples/state_save.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/images/insert.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/js/dataTables.colReorder.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColReorder/js/dataTables.colReorder.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/License.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/Readme.md delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/css/dataTables.colVis.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/css/dataTables.colVis.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/css/dataTables.colvis.jqueryui.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/button_order.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/exclude_columns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/group_columns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/jqueryui.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/mouseover.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/new_init.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/restore.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/text.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/title_callback.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/two_tables.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/examples/two_tables_identical.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/js/dataTables.colVis.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/ColVis/js/dataTables.colVis.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/License.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/Readme.md delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/bootstrap.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/col_filter.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/colvis.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/css_size.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/index_column.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/left_right_columns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/right_column.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/rowspan.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/server-side-processing.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/size_fixed.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/size_fluid.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/examples/two_columns.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/Readme.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/header_footer.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/top_left_right.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/two_tables.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/examples/zIndexes.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/Readme.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/examples/events.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/examples/html.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/examples/scrolling.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/NaturalSort/natural.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/NaturalSort/natural.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/License.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/Readme.md delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/css/dataTables.responsive.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/css/dataTables.responsive.scss delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/auto.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/classes.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/className.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/default.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/new.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/initialisation/option.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/styling/compact.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/styling/foundation.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/styling/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/examples/styling/scrolling.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/js/dataTables.responsive.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/Readme.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/css/dataTables.scroller.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/api_scrolling.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/data/2500.txt delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/data/ssp.php delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/large_js_source.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/server-side_processing.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/examples/state_saving.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/images/loading-background.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/js/dataTables.scroller.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/Scroller/js/dataTables.scroller.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/Readme.md delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/ajax.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/alter_buttons.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/bootstrap.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/button_text.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/collection.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/defaults.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/index.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/jqueryui.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/multi_instance.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/multiple_tables.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/new_init.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/pdf_message.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/plug-in.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/select_column.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/select_multi.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/select_os.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/select_single.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/simple.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/examples/swf_path.html delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/collection.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/collection_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/copy.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/copy_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/csv.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/csv_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/pdf.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/pdf_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/print.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/print_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/psd/collection.psd delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/psd/copy document.psd delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/psd/file_types.psd delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/psd/printer.psd delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/xls.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/images/xls_hover.png delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/swf/copy_csv_xls.swf delete mode 100644 app/static/adminlte2/plugins/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf delete mode 100644 app/static/adminlte2/plugins/datatables/images/sort_asc.png delete mode 100644 app/static/adminlte2/plugins/datatables/images/sort_asc_disabled.png delete mode 100644 app/static/adminlte2/plugins/datatables/images/sort_both.png delete mode 100644 app/static/adminlte2/plugins/datatables/images/sort_desc.png delete mode 100644 app/static/adminlte2/plugins/datatables/images/sort_desc_disabled.png delete mode 100644 app/static/adminlte2/plugins/datatables/jquery.dataTables.css delete mode 100644 app/static/adminlte2/plugins/datatables/jquery.dataTables.js delete mode 100644 app/static/adminlte2/plugins/datatables/jquery.dataTables.min.css delete mode 100644 app/static/adminlte2/plugins/datatables/jquery.dataTables.min.js delete mode 100644 app/static/adminlte2/plugins/datatables/jquery.dataTables_themeroller.css delete mode 100644 app/static/adminlte2/plugins/datepicker/bootstrap-datepicker.js delete mode 100644 app/static/adminlte2/plugins/datepicker/datepicker3.css delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ar.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.az.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.bg.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ca.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.cs.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.cy.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.da.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.de.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.el.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.es.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.et.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.fa.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.fi.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.fr.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.gl.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.he.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.hr.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.hu.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.id.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.is.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.it.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ja.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ka.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.kk.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.kr.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.lt.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.lv.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.mk.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ms.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.nb.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.nl.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.no.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.pl.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.pt.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ro.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.rs.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ru.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.sk.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.sl.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.sq.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.sv.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.sw.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.th.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.tr.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.ua.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.vi.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js delete mode 100644 app/static/adminlte2/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js delete mode 100644 app/static/adminlte2/plugins/daterangepicker/daterangepicker-bs3.css delete mode 100644 app/static/adminlte2/plugins/daterangepicker/daterangepicker.js delete mode 100644 app/static/adminlte2/plugins/daterangepicker/moment.js delete mode 100644 app/static/adminlte2/plugins/daterangepicker/moment.min.js delete mode 100644 app/static/adminlte2/plugins/fastclick/fastclick.js delete mode 100644 app/static/adminlte2/plugins/fastclick/fastclick.min.js delete mode 100644 app/static/adminlte2/plugins/flot/excanvas.js delete mode 100644 app/static/adminlte2/plugins/flot/excanvas.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.colorhelpers.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.colorhelpers.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.canvas.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.canvas.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.categories.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.categories.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.crosshair.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.crosshair.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.errorbars.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.errorbars.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.fillbetween.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.fillbetween.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.image.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.image.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.navigate.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.navigate.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.pie.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.pie.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.resize.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.resize.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.selection.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.selection.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.stack.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.stack.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.symbol.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.symbol.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.threshold.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.threshold.min.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.time.js delete mode 100644 app/static/adminlte2/plugins/flot/jquery.flot.time.min.js delete mode 100644 app/static/adminlte2/plugins/fullcalendar/fullcalendar.css delete mode 100644 app/static/adminlte2/plugins/fullcalendar/fullcalendar.js delete mode 100644 app/static/adminlte2/plugins/fullcalendar/fullcalendar.min.css delete mode 100644 app/static/adminlte2/plugins/fullcalendar/fullcalendar.min.js delete mode 100644 app/static/adminlte2/plugins/fullcalendar/fullcalendar.print.css delete mode 100644 app/static/adminlte2/plugins/iCheck/all.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/_all.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/aero.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/aero.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/aero@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/blue.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/blue.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/blue@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/flat.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/flat.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/flat@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/green.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/green.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/green@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/grey.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/grey.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/grey@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/orange.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/orange.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/orange@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/pink.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/pink.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/pink@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/purple.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/purple.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/purple@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/red.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/red.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/red@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/yellow.css delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/yellow.png delete mode 100644 app/static/adminlte2/plugins/iCheck/flat/yellow@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/futurico/futurico.css delete mode 100644 app/static/adminlte2/plugins/iCheck/futurico/futurico.png delete mode 100644 app/static/adminlte2/plugins/iCheck/futurico/futurico@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/icheck.js delete mode 100644 app/static/adminlte2/plugins/iCheck/icheck.min.js delete mode 100644 app/static/adminlte2/plugins/iCheck/line/_all.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/aero.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/blue.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/green.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/grey.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/line.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/line.png delete mode 100644 app/static/adminlte2/plugins/iCheck/line/line@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/line/orange.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/pink.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/purple.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/red.css delete mode 100644 app/static/adminlte2/plugins/iCheck/line/yellow.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/_all.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/aero.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/aero.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/aero@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/blue.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/blue.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/blue@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/green.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/green.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/green@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/grey.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/grey.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/grey@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/minimal.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/minimal.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/minimal@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/orange.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/orange.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/orange@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/pink.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/pink.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/pink@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/purple.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/purple.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/purple@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/red.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/red.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/red@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/yellow.css delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/yellow.png delete mode 100644 app/static/adminlte2/plugins/iCheck/minimal/yellow@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/polaris/polaris.css delete mode 100644 app/static/adminlte2/plugins/iCheck/polaris/polaris.png delete mode 100644 app/static/adminlte2/plugins/iCheck/polaris/polaris@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/_all.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/aero.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/aero.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/aero@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/blue.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/blue.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/blue@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/green.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/green.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/green@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/grey.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/grey.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/grey@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/orange.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/orange.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/orange@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/pink.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/pink.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/pink@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/purple.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/purple.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/purple@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/red.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/red.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/red@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/square.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/square.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/square@2x.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/yellow.css delete mode 100644 app/static/adminlte2/plugins/iCheck/square/yellow.png delete mode 100644 app/static/adminlte2/plugins/iCheck/square/yellow@2x.png delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.date.extensions.js delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.extensions.js delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.js delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.numeric.extensions.js delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.phone.extensions.js delete mode 100644 app/static/adminlte2/plugins/input-mask/jquery.inputmask.regex.extensions.js delete mode 100644 app/static/adminlte2/plugins/input-mask/phone-codes/phone-be.json delete mode 100644 app/static/adminlte2/plugins/input-mask/phone-codes/phone-codes.json delete mode 100644 app/static/adminlte2/plugins/input-mask/phone-codes/readme.txt delete mode 100644 app/static/adminlte2/plugins/ionslider/img/sprite-skin-flat.png delete mode 100644 app/static/adminlte2/plugins/ionslider/img/sprite-skin-nice.png delete mode 100644 app/static/adminlte2/plugins/ionslider/ion.rangeSlider.css delete mode 100644 app/static/adminlte2/plugins/ionslider/ion.rangeSlider.min.js delete mode 100644 app/static/adminlte2/plugins/ionslider/ion.rangeSlider.skinFlat.css delete mode 100644 app/static/adminlte2/plugins/ionslider/ion.rangeSlider.skinNice.css delete mode 100644 app/static/adminlte2/plugins/jQuery/jQuery-2.2.0.min.js delete mode 100644 app/static/adminlte2/plugins/jQueryUI/jquery-ui.js delete mode 100644 app/static/adminlte2/plugins/jQueryUI/jquery-ui.min.js delete mode 100644 app/static/adminlte2/plugins/jvectormap/jquery-jvectormap-1.2.2.css delete mode 100644 app/static/adminlte2/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js delete mode 100644 app/static/adminlte2/plugins/jvectormap/jquery-jvectormap-usa-en.js delete mode 100644 app/static/adminlte2/plugins/jvectormap/jquery-jvectormap-world-mill-en.js delete mode 100644 app/static/adminlte2/plugins/knob/jquery.knob.js delete mode 100644 app/static/adminlte2/plugins/morris/morris.css delete mode 100644 app/static/adminlte2/plugins/morris/morris.js delete mode 100644 app/static/adminlte2/plugins/morris/morris.min.js delete mode 100644 app/static/adminlte2/plugins/pace/pace.css delete mode 100644 app/static/adminlte2/plugins/pace/pace.js delete mode 100644 app/static/adminlte2/plugins/pace/pace.min.css delete mode 100644 app/static/adminlte2/plugins/pace/pace.min.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ar.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/az.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/bg.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ca.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/cs.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/da.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/de.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/en.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/es.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/et.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/eu.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/fa.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/fi.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/fr.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/gl.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/he.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/hi.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/hr.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/hu.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/id.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/is.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/it.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ja.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ko.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/lt.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/lv.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/mk.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ms.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/nb.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/nl.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/pl.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/pt-BR.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/pt.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ro.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/ru.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/sk.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/sr-Cyrl.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/sr.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/sv.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/th.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/tr.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/uk.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/vi.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/zh-CN.js delete mode 100644 app/static/adminlte2/plugins/select2/i18n/zh-TW.js delete mode 100644 app/static/adminlte2/plugins/select2/select2.css delete mode 100644 app/static/adminlte2/plugins/select2/select2.full.js delete mode 100644 app/static/adminlte2/plugins/select2/select2.full.min.js delete mode 100644 app/static/adminlte2/plugins/select2/select2.js delete mode 100644 app/static/adminlte2/plugins/select2/select2.min.css delete mode 100644 app/static/adminlte2/plugins/select2/select2.min.js delete mode 100644 app/static/adminlte2/plugins/slimScroll/jquery.slimscroll.js delete mode 100644 app/static/adminlte2/plugins/slimScroll/jquery.slimscroll.min.js delete mode 100644 app/static/adminlte2/plugins/sparkline/jquery.sparkline.js delete mode 100644 app/static/adminlte2/plugins/sparkline/jquery.sparkline.min.js delete mode 100644 app/static/adminlte2/plugins/timepicker/bootstrap-timepicker.css delete mode 100644 app/static/adminlte2/plugins/timepicker/bootstrap-timepicker.js delete mode 100644 app/static/adminlte2/plugins/timepicker/bootstrap-timepicker.min.css delete mode 100644 app/static/adminlte2/plugins/timepicker/bootstrap-timepicker.min.js delete mode 100644 app/static/multiselect/css/multi-select.css delete mode 100644 app/static/multiselect/img/switch.png delete mode 100644 app/static/multiselect/js/jquery.multi-select.js diff --git a/app/static/adminlte2/bootstrap/css/bootstrap.css b/app/static/adminlte2/bootstrap/css/bootstrap.css deleted file mode 100644 index 42c79d6..0000000 --- a/app/static/adminlte2/bootstrap/css/bootstrap.css +++ /dev/null @@ -1,6760 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 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; - -webkit-text-size-adjust: 100%; - -ms-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: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -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 { - padding: 0; - border: 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-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !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: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - 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 th, - .table-bordered td { - 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: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur: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; -} -*:before, -*:after { - -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; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.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, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.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, -.h4, -h5, -.h5, -h6, -.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: .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:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.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 p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small: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 footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small: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, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -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; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - 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; -} -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 > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - 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 > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -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; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .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 > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - 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: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - 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, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .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; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.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; -} -textarea.input-sm, -select[multiple].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 textarea.form-control, -.form-group-sm select[multiple].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; -} -textarea.input-lg, -select[multiple].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 textarea.form-control, -.form-group-lg select[multiple].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; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(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 .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(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 .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(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 .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - 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; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - 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, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -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; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - 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; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - 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; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - 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; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - 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; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - 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; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - 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:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - 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="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .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-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.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; -} -.dropup, -.dropdown { - 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; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(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: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - 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 > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - 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, .125); - box-shadow: inset 0 3px 5px rgba(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="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - 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; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].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; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control: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: normal; - 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="radio"], -.input-group-addon input[type="checkbox"] { - 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:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - 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:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - 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:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - 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:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - 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:hover, -.nav-tabs > li.active > a:focus { - 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:hover, -.nav-tabs.nav-justified > .active > a:focus { - 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:hover, - .nav-tabs.nav-justified > .active > a:focus { - 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:hover, -.nav-pills > li.active > a:focus { - 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:hover, -.nav-tabs-justified > .active > a:focus { - 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:hover, - .nav-tabs-justified > .active > a:focus { - 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; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.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-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - 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-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - 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; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - 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-top: 8px; - margin-right: 15px; - 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 > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - 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-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@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 .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - 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:hover, -.navbar-default .navbar-brand:focus { - 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:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - 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-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - 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:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - 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:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - 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-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - 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:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - 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: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 > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - 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:hover, -.pager li > a:focus { - 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:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - 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]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - 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-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - 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 .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - 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: bold; -} -.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, .1); - box-shadow: inset 0 1px 2px rgba(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, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -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, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .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, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .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, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .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, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .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-left, -.media-right, -.media-body { - 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; -} -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:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.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:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - 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:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - 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:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - 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:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - 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, .05); - box-shadow: 0 1px 1px rgba(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 > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.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 > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .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 th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.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 > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - 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 iframe, -.embed-responsive embed, -.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, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(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: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.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-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.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; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.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: .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, .5); - box-shadow: 0 5px 15px rgba(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-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - 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; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .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-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; -} -.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; -} -.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-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - 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; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.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; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.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, .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, .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, .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, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 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, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(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, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - 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 \9; - 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, .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-prev, - .carousel-control .icon-next { - 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; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer: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-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-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; - } - th.visible-xs, - td.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; - } - th.visible-sm, - td.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; - } - th.visible-md, - td.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; - } - th.visible-lg, - td.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; - } - th.visible-print, - td.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; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/app/static/adminlte2/bootstrap/css/bootstrap.css.map b/app/static/adminlte2/bootstrap/css/bootstrap.css.map deleted file mode 100644 index 09f8cda..0000000 --- a/app/static/adminlte2/bootstrap/css/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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CE,oBAAA;CfwkDH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n 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');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .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-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .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-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .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-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n 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);\n 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);\n 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);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n 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);\n 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);\n 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);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n 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);\n 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);\n 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);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n 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);\n 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);\n 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);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n 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);\n 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);\n 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);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n \n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
    I 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

    ELRal-gVr2-YJ1fc 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 z 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℞%g>139%c;s#V{{b9h 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㢸>&M}c+bp4zprxqE!Z?L{y67C{0R8w87 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 sB!v4|;nT< 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 vzJ;E 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 diff --git a/app/static/adminlte2/dist/img/user3-128x128.jpg b/app/static/adminlte2/dist/img/user3-128x128.jpg deleted file mode 100644 index caf5f9662419ff4bb7d6d067f017868b29b5fc05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3511 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 SMP`sMK2^T1ZrsG!een+wPq@MW diff --git a/app/static/adminlte2/dist/img/user4-128x128.jpg b/app/static/adminlte2/dist/img/user4-128x128.jpg deleted file mode 100644 index eb8e2bb73f4007edee164e50a7a582a4d8860c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3477 zcmX|D2T+qs7yS}KfY1_}^b)F4lqP~Sg(xJH06_@7gMv~*vC%sikzN#}22eVP1OWl* z(m@5JD@_3-5X5K6kMDo)ojbF$Gdr_8bM86kE^UUk48YNs3@-s75C||hE`atP&;#he zfAD9eI|c*_`2$8Mlpe~&2!k;(GBLqe*jZrAY|KndtO!;%b~qdXhp}*Qa=@F#MXc=A zLoqBxwmH`eI$*u*4wzU|Z9WKcFh2ijq_}?R@>@~$FhsUa{fJeO2yntRG z4NyGaD5lNak3@?$k-ge9(31|V3PKD66*da^eEWrGvsg9RRgi(JSHW08C^zD=u7e-( zO`gKg?`N)mVaSVN#nm_Dmvj_1sAqy?NBtZk7S1Z(F)@BI7PcU`g)uN(| zjlawZO?9A8&vF(9ejyv4xQ&TA%{@P1Ge6cB=^8W2qUD|g9! zE8@ncz}DoAqnB&4*f#Up8?oQ2z8oszsbmWyzUQ1dx87EGEky%wtXODR1 zGL0hDTIN2+uyzj=f|UW&)$a|*@=`pO7af=m3ZbX}$7mn`jGz;Pa45n>&s;Eb=0qy_ zbBSMci8QweD5|IYqcf-uSRl38j>7$j?dwunL({@7Pmhb9i4VACjnkszRl_**v4_~s zhBkYB(c2Z9<pa60ceEPi{9{isi>uYL^o5?_;Z8eUmFsMYT!aId$+U!i^F4 zP|hv4HAvl?wABXz?h!I3&zTRFp+NRvI-YI8Ox>seIGT^_OfA!-(H)XU~#Wn{Lx z!W(|#VZ3d673~GtV4`VCr9BPs&oF=}yZJr2BNfX$Y&J7KL2#Q3@_N>%(70?UeW1=C zWMi{Zai03rJq}cBDKs4;2$rY~iggPOXi(dFW7i!lIvuZK+p%x`#iYjaq>Aoq#_hA~ z5xWgVwudul`lYXz8%Xa6=f@}1qfYyt9ZDJPZ)VCE|I9%U&Bsz>b5stExuqELH!3$P zr<1*2XnY8I;53ry!PB)hajAQNY@a9U^R@n2?Aa7GvaVAdRhAk;Ix$*gC$ijeNy1dB zGG?&&x8YulL+pXwK|L4cu zmw*Fw02mB{(ES&)AcUCW1v7uRb7X2!eb>al4F~Cnp@gNJKem9)qy}m~8hIV9yU8EP zEut`D99-`_rMJklYAl&BY0geI&9OS8R0g@w>y>>v9XZeDJAar?8*gXk{&`hUMFUOxj$1NiohAjtq?|mW;0Oh}OCA zdDmKIJUX;DFRCr2#l;v={=``M+yk#u9(+d@Y9l=*P+w(MJlC@BDzuV4T%s%;cW3H4 zg0RQ)V5V}|o!K{(-PXB#C8_V4_$+LVqdu{LvT%=WeY=A-+tIR$v&t?E&gJ2lgjoANq8Ftj<*W z#i_pU%u4ntWlKtYqGBhyt{`IWGr-TdQvw!^9KE9~@{s`;$xi@$`GM1P%|K&KS= z$+x{<8&+%%pB1!x$Pup3tqG!XNYeaCW!k!$&Lmr4?G0{9-pN&C+i&1TbOmv+ zziUe)K4N?5P*T`OHkoov6MF$gIx|Dw9Wjai$kh)M6SJBQj z0Z%B->#pA9x{sp)XChfQWG=Jrj1Nj}?HUU{#?&_G^CWh}R1X}%FVR1*pUieo{qLgy zpJl6+5^33SD0q7>|3r5k^K{U@(eTdCePn3n_4;;Ou46Yy!jH4>j~l>r|7GFdZgBSh zzZq62U;mx6I`9A<3-AI9Vei zIq+Qe%>ZI?@6Zf+tOqV{?s7I6-V)|kNtpM%fZ@L9-rK2tcSsu8mXZHX_Nn(6mTtQ! z>T(#$`%a7_iRF@Bgp0k(wD(DcutLdP*IBreb8&aSM#8n+(GZT&PlC4+f4EMr6=bYh z$lIqr#cRe0H*C!-ayDB|3yPaL+qvMX4kE^{I9WCup!iS^w&g>3Eg0iC)DCsKij%ZW z=MjO?@rkY&h)9aTz;-QyuW9bKGANVTEIQ|6xvIRYk-N?77_}JhnJIz5^@JiLJ8h

    JMCwr=IDN>O5kB!^)mEA!P)-sY*mMS2Xsq6 z?*A6aP5O|KdKiO-C0p{`DRgI^w?y5Jor{cze7oIEStnUjvO7v@1gzL4$T!s2{18vx zG;SPaZudStMG1Z+uGhIw-z5ccd;#0hFJ#uru?a~Uwju5cB<5~GnAM}+wD)p(u)WZl z(^|75u=&uf;snLll*0ye>rzgb48}%jUkyw89>L0ZyVjo{h1tg7Z~S6)O;9Yx1lVfgZ3 zTcKygpC0*NLs$6(ahw2JzmTs)jV@b-6(R|k%f8v4PG}A&&7J=Z;Yn*K4t)MaFlzK1 zYHXp)2t&RhIq6Y^9PiZ&r&ifx4j69+$b6;X0+KLIELCrQ-4oE0I(%H+RlI#8I(s4N z+*Fo*sAEGLMei| zxa^PzifO9Hjp@E_lV46K@)<5+gCGJEbQRfiY=x3pejD0MOWxi4ZBQdu5KPf!CC;L4 zgx2LFYNi}s>0fu~)7*({VdAQosTjO|{{FSM?u9wS6`p>D4R+1bK3_|!IU(p>&wdCV zx~@=YH7?~pI=Awg3ioJS_#S^>!x)uh{VV?F>0-JF> z1IK(BWw^MKsFDtSUy=V+C(&0|Mc`u?(oO0@SN|s_W-m4`8W26l?MAG(OMQmc_i^5> jLRlv~eV)3qRE0wUHON~8xQgrQSf0VRfz4hfO&5>V+ux{(g0LqZy)Ymi0+ z5gzz{zW4rp``&feI&0r^*4^LU=R4os*VETa01_3%BLn~l1Ono2F2MC1K>l|0zlMbc z!n!pu2!sWKfFTeF7z~DB<6uJ|IM`q?HZC>}^wuEQxOliwyxYO;BDV|N&bqmwH?#h} z^8b2VcLGSEfIvVX2*?J&A_am-f!Ch_i~s-@=DGXMcV$c_7- z69B-*0^RtbK*04ZfB*ypV3B}G007|B)0xNcjmGqs)eqb`)-<%mU8JhQ{o(Z`ut7=P z?w=98s>M1+B!^6b?})a7ZS}mxvk7ZC*4}gWo6u-;O?qAf?u)8SX58K3aQAehMCMW) zFdGg=2LE=Yr~6*hY7U_nr`LfY6FXi`9vk`2w49C1&lJUFd`T)@ZxQ`eI-xpb0cPf* z&|l56n|tNvK%D_X3?ddw38_V?oTd_n8FLnXW~{<{WQCqq$ct_1^5|}B@xpU>HThqZ zU?j1{O!zBMzZ#a6r=p`Gs3SO>AX%oV#qWh%^&_*0^wV0?U%3`tY?|w9TB={rQW@y(HZnHSM32mr*otvWJNauNzQR^gj$LT`LP z2-cf%Tv#HmS88@;@UU`1RKSiI5$5vQVafvGqFRsw88;FfAtH;8hK&=#rrtqlpv{z3_pgXvItw$%sh%yaYuS;9VeEdy(Qrk202y1+*OgB zHnvLng>Cs!$aU)t2b_UVyHc_kymncZ;lZV^w1$-Nw3P9NvWmh^UwQ-F{femj8*6E1 zY%Va?Q^`N9a&8TcE>QmkhnMb^Q**dWCWLS=JVzeJ5bQamk0NhON5>Ri;7*nFZsKA6 z_pY8Qhhr_eA}xw9tF8OgqA(A8GoUHuC?n;lsp7Zst5)!`>4}-$MT=PK~6I zV#U<-h(w%cnN@z}kgb7JczRxMfdjHJ2u%>&qy_|$n=I9 zXNovGNCiGq{C*d={7K`X1>&w8vrf3kBkm#BZ**l&6Kh6w(kdw^_H&6PCcj8&W@_`{ zvMHOyRm^PC@%F}QkAVXol>_YV3+d8F@nrT*euY1yo(S3YxUF~{hembzla}Mo71L7% z_Es=JD}bcD+F{e|$JJBa^dC}^)+m)PMQ;M+8~SNubQb+v7`LU} zlU)$n#Xn1&;x|v4hFP?8Ph$fffB9sazNx!;-%dI5rs{b}0YK1Am4iY5=<8++fWV{> zY;sl{G9g)uo61L`Ud8{d{hOU34FrntWdSH;Y8g8e5W5tfd|n>oIkl^{^>4mA8Gx%j-!7QUz;k$3;rlW#5zAG z25#YYG%Zzcu&6#}k&-q~)GNR^8m4?c;?VZ7|LuqFJsX1gP7GzKufs1Mb^%cr4@LHu zUih!iMw8BQ=L(X^TUknsJ%hYX(1ANmM{PIYaovCi#sY%CSpU$w1&dXd>lV80ih#A87*$}g(RS;f=8uZ#Q03511H!!yFzu9TmbxT?wK+v}OsLIL zV%!FVsOER-Y>*Xi37TGw5xTAV4T*Yp4T#H)J9gkhx*P)aZInag@^>=z9uirP;?vPY zI`vQV5cjUF$|5!zjP)txya=iE5EJi4OHayC4rPi3Q+;)%2$NE(u?o@5H`eIVlccX5 z>*O;w?d;FUs@QTrmkQ9cdu=ZJu$JrwC#nb5Ujv#n?OD}k<7(}E)B?Wnte@h3AB#M} zzX@EN1aK2J78W)(?tcmgcmn~Ll#CT3M9wCQ)Ve7fm@q0Eo8^w2<*WG04i5Q*Wvigk z|1c=FG*;P@v{HWj9;vk~rpme`Q0c|ELm2An&S-0AwDUCoI=}lfGUMUseIC&J_6v=Q z3vu$@#xEQY39YW8CEvZKvDS$o>98Z#P!eD}^4T*fctBUJ9QBcb+4E?& zK}RoDXkkZ?y^2Lln7rY8Q)<Ts{PDlW~^s))Qp4+U%* zj6BZWJwlxB)a%FP&ssZ#{E^i(C#v_EAw&s_d+pOcz`8woxudM$vz+NF_rXW1Fh;n5;Iq9YyNz7;Zd7 z2Qh}-cY>C^Uhp5M?>mbI2P-(0$FBBbJT)#==?LdOm*yR(dsybI)| z5?qh!9WRSaxK5gKo^bBQ$PY`e`MWuDABij=k%zR7CBOV~on9}Tcvfl|9<0CJK)h%^ z62L$ABIY&q$#P?pQ5&iFrB_E2@9YQbS}|{v*y?V#%sWQsyl8Hi!Lf1UD@3C%zK!6v z#!fa^&+r;oc=#%s8qS~~D=DLlY^c8G>RBbe(VV-X3-ZD2b-mOFOIE+~66t$q#2J(A z9GI|A$An=zVrEk4vPTa~-$xTGrZZgV{Mm}>tYvSQ3jG#yahg#lD2}n})Ubg`l239L zRwOTg!vnXxdwn|gi}!QKDy*LKgy}~P*PS>6`c>Qp`5=mj_zYUj^C)mwZe- zDk87ML(}Z9HojU*Vdo^Oipcj8NHeIFan3(}C2DCgF&Dn{j%OuxVowB@j75-(ycAXe4{suOJ5ZB2At%|xu&E7YTF!=2uV~uo zSavL_tp6_hejf!Zd)BA!5Oo=B2EN!B-k4V(cep5gO`0dP(RD^0ixbhBOjpcM?u$l_ ztLq;c2l4$9+B1{wweufs7Z{om>9L?CKzt~m8rQa75LI7W5b>t_1B)_~gPPC6pMxt+ zCL34D3jD2@SZzDYHSskf|8JUTbC_2W8Za3S)QTqA4Fc1P?}zo-tG7JBl?5 z?;8Y)RqtxL^eRdI{L=g|o&KEjQY4=)O7T-8iaERZ zs|_4r^yLGj9q~ZWz11dJE7>?|Cmh5 zA=nym`aT*vQFWsz z+%7J=9QxEsN13bi9PsAhB;!T`GmUjuTqKyqaqiqfTmCJ}_=uU>Ld7KG7uiusrW7LU zXHTV`)YgtPKjGtA=ld$@Lvdx3Ih5GidP)99nV3Yzax3vut?Q+l5cw+f{aU(qcgJ~# zg2r#pI(htK${z1GT6?q-8@ZO^lcJpC2?$#P!VK-csI%novKR zwC3l#HX%5z2fATzc8Ha;V_@L~6?but;4s)BKWPKr2+NtxgZL5a!2<1m z*Y0kM=R&U80S!l#@#t()8ITnxh zQusLBu~13o1>bA>($Mxi`&kchKWKI7Y`7GY?=9;ydtxrnZ#Mbge|f;I)+4D(;D6^s zVz7W)M5jp#i2ehF_pJ!bMweLEYT`EWvKOR>C?q=c;OWVsKKgmLd@a7Ak~^d~RB|I0 z{}IVeN8m4&SdiQb?Ci>ej=wx|E3!$pX~Hw>36W7$J@Q5O$yauBlp1Q z1n+F==M#;d>Rw+Iy(zXF1fNe>Y_)y{(;&jX?w+sM7^3GHy8_VE-lXVS`R@6F=Req_ ziFKRFK1g;v#s~>7Qgwymh;2$Knjh_D_ zp#QQfiN&i*RD8$s!Cy#j#WP7!+D|n~!Qg;&Lt$7{;d`V@uN8XY2^-V~$N8xS9n4Ux z^!|^FBFlH7r{^hgjqPLwnao;+;70~omi}JX0G~*UjHyDeSJN>Tcf!JQ$W`b(hIT{8 zt^C?aiCl~C@yoo+IHGUC-k`~?5124l5&ix75oxxXa!$J5HtK2XW7ZA9YUXIQh*t-0 zCj)-3S+H|u`avAPP`=^+%SGGnaa6hS))Z8uX!=3z<}jQE8=OZ)Ca?=Lt` zsIjj8Z|4W3QEVc}a_g-}c{f!0QO_%U$_ZKx(APY15P%okT z?Q6#opWi@b-eG-5Ne(-BiCv!U+VwWYYTs*fnxqVI#x0rRWKMy|o6ABvW;pT)O$XeU zT4?I{L{+<3CcZNr5@;zu(D~re_NO;I$@XnqFp(UkH0@Lw0r6%j#q+#?^vK$@wWW^C z85J=R)Z%g1@f1z2s*6IyStbp$A#Nfjb3%*OpZcOVT;ee0<**~`&kz;gBUIT^rq*8B zKrZFmev=BG$AK|IkMpWzU`sWUn9M5Z5ul^*2Bg+oAdwKrCOYE%&xz zfVi3)+)J$B*u^5p0Kc^%Ak*c?O2D1fVQrVrJbu>4#m$~f(dHQ}x-aXV<3R^{WJ?{) zM^Wau8PWTTC`cbvw_bsr2S4rr(;*JeJc!>ME7&?7~#jhiwDPY5^FwP zt9WOcJ|G&bYJ|ZfUb_Mr^vhpjjoEn+9vZU}SEP8<$Kwjmvrg>BeS&gBRAYKyNLE34 zi8qlLo<#ZC9>5~+ zC_0@V^nl?2eE3S}E5y#^FJ$+kjK(7{PZBDbvV9=(;aq!BGGnj|Y^vj+UQ?+k_1XpG5 z#VP@)R`p!tFw=lX3D?h^mmE{OOb>ab4?;45dgG*GXw2JABt|5dX_kK<2UfLZrnMat zvIcn_PoKQ>pSN?;ig>*k(~)}?K{LazG9E9vg34TjslN64lOiKB_Sq~*y0A0h^nKF;rx;Irv=;3 zm@HL1vD;0P8n;JODi=+cPYr8|6p1?z8Qw!DM8xs3k|lMfyLL7_jmYPg1NvR92dLA9 z^a-(S$#nFy>@~_YmNK+B_6}A)$?^oKa(THfZuQWcb0caK2~U21k2@xbblp{6cI|~) zW89XwGlv`jQT!o;?F(QJJ~pstpEP;sb6HCOZ6R-0R5m7dU#x^-tl1m=nK&u{LADSj z%kt@M?o^4-(X@!y3!nCc2Y!l>JD1&$5kR&?Y_0iMRE0Y*acUsb Tg4x-;AE-4LT?1m^*E9bGxV@Q2 diff --git a/app/static/adminlte2/dist/img/user6-128x128.jpg b/app/static/adminlte2/dist/img/user6-128x128.jpg deleted file mode 100644 index 3ac24681a45256755c8e39137a17c58361501085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4342 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 Dj2wOA diff --git a/app/static/adminlte2/dist/img/user7-128x128.jpg b/app/static/adminlte2/dist/img/user7-128x128.jpg deleted file mode 100644 index 97febc29834c950c0bb0e560bd0d38893fc0ee95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6434 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 C;^EK$ diff --git a/app/static/adminlte2/dist/js/app.js b/app/static/adminlte2/dist/js/app.js deleted file mode 100644 index cd312ab..0000000 --- a/app/static/adminlte2/dist/js/app.js +++ /dev/null @@ -1,758 +0,0 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support - * @Email - * @version 2.3.3 - * @license MIT - */ - -//Make sure jQuery has been loaded before app.js -if (typeof jQuery === "undefined") { - throw new Error("AdminLTE requires jQuery"); -} - -/* AdminLTE - * - * @type Object - * @description $.AdminLTE is the main object for the template's app. - * It's used for implementing functions and options related - * to the template. Keeping everything wrapped in an object - * prevents conflict with other plugins and is a better - * way to organize our code. - */ -$.AdminLTE = {}; - -/* -------------------- - * - AdminLTE Options - - * -------------------- - * Modify these options to suit your implementation - */ -$.AdminLTE.options = { - //Add slimscroll to navbar menus - //This requires you to load the slimscroll plugin - //in every page before app.js - navbarMenuSlimscroll: true, - navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar - navbarMenuHeight: "200px", //The height of the inner menu - //General animation speed for JS animated elements such as box collapse/expand and - //sidebar treeview slide up/down. This options accepts an integer as milliseconds, - //'fast', 'normal', or 'slow' - animationSpeed: 500, - //Sidebar push menu toggle button selector - sidebarToggleSelector: "[data-toggle='offcanvas']", - //Activate sidebar push menu - sidebarPushMenu: true, - //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) - sidebarSlimScroll: true, - //Enable sidebar expand on hover effect for sidebar mini - //This option is forced to true if both the fixed layout and sidebar mini - //are used together - sidebarExpandOnHover: false, - //BoxRefresh Plugin - enableBoxRefresh: true, - //Bootstrap.js tooltip - enableBSToppltip: true, - BSTooltipSelector: "[data-toggle='tooltip']", - //Enable Fast Click. Fastclick.js creates a more - //native touch experience with touch devices. If you - //choose to enable the plugin, make sure you load the script - //before AdminLTE's app.js - enableFastclick: true, - //Control Sidebar Options - enableControlSidebar: true, - controlSidebarOptions: { - //Which button should trigger the open/close event - toggleBtnSelector: "[data-toggle='control-sidebar']", - //The sidebar selector - selector: ".control-sidebar", - //Enable slide over content - slide: true - }, - //Box Widget Plugin. Enable this plugin - //to allow boxes to be collapsed and/or removed - enableBoxWidget: true, - //Box Widget plugin options - boxWidgetOptions: { - boxWidgetIcons: { - //Collapse icon - collapse: 'fa-minus', - //Open icon - open: 'fa-plus', - //Remove icon - remove: 'fa-times' - }, - boxWidgetSelectors: { - //Remove button selector - remove: '[data-widget="remove"]', - //Collapse button selector - collapse: '[data-widget="collapse"]' - } - }, - //Direct Chat plugin options - directChat: { - //Enable direct chat by default - enable: true, - //The button to open and close the chat contacts pane - contactToggleSelector: '[data-widget="chat-pane-toggle"]' - }, - //Define the set of colors to use globally around the website - colors: { - lightBlue: "#3c8dbc", - red: "#f56954", - green: "#00a65a", - aqua: "#00c0ef", - yellow: "#f39c12", - blue: "#0073b7", - navy: "#001F3F", - teal: "#39CCCC", - olive: "#3D9970", - lime: "#01FF70", - orange: "#FF851B", - fuchsia: "#F012BE", - purple: "#8E24AA", - maroon: "#D81B60", - black: "#222222", - gray: "#d2d6de" - }, - //The standard screen sizes that bootstrap uses. - //If you change these in the variables.less file, change - //them here too. - screenSizes: { - xs: 480, - sm: 768, - md: 992, - lg: 1200 - } -}; - -/* ------------------ - * - Implementation - - * ------------------ - * The next block of code implements AdminLTE's - * functions and plugins as specified by the - * options above. - */ -$(function () { - "use strict"; - - //Fix for IE page transitions - $("body").removeClass("hold-transition"); - - //Extend options if external options exist - if (typeof AdminLTEOptions !== "undefined") { - $.extend(true, - $.AdminLTE.options, - AdminLTEOptions); - } - - //Easy access to options - var o = $.AdminLTE.options; - - //Set up the object - _init(); - - //Activate the layout maker - $.AdminLTE.layout.activate(); - - //Enable sidebar tree view controls - $.AdminLTE.tree('.sidebar'); - - //Enable control sidebar - if (o.enableControlSidebar) { - $.AdminLTE.controlSidebar.activate(); - } - - //Add slimscroll to navbar dropdown - if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { - $(".navbar .menu").slimscroll({ - height: o.navbarMenuHeight, - alwaysVisible: false, - size: o.navbarMenuSlimscrollWidth - }).css("width", "100%"); - } - - //Activate sidebar push menu - if (o.sidebarPushMenu) { - $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); - } - - //Activate Bootstrap tooltip - if (o.enableBSToppltip) { - $('body').tooltip({ - selector: o.BSTooltipSelector - }); - } - - //Activate box widget - if (o.enableBoxWidget) { - $.AdminLTE.boxWidget.activate(); - } - - //Activate fast click - if (o.enableFastclick && typeof FastClick != 'undefined') { - FastClick.attach(document.body); - } - - //Activate direct chat widget - if (o.directChat.enable) { - $(document).on('click', o.directChat.contactToggleSelector, function () { - var box = $(this).parents('.direct-chat').first(); - box.toggleClass('direct-chat-contacts-open'); - }); - } - - /* - * INITIALIZE BUTTON TOGGLE - * ------------------------ - */ - $('.btn-group[data-toggle="btn-toggle"]').each(function () { - var group = $(this); - $(this).find(".btn").on('click', function (e) { - group.find(".btn.active").removeClass("active"); - $(this).addClass("active"); - e.preventDefault(); - }); - - }); -}); - -/* ---------------------------------- - * - Initialize the AdminLTE Object - - * ---------------------------------- - * All AdminLTE functions are implemented below. - */ -function _init() { - 'use strict'; - /* Layout - * ====== - * Fixes the layout height in case min-height fails. - * - * @type Object - * @usage $.AdminLTE.layout.activate() - * $.AdminLTE.layout.fix() - * $.AdminLTE.layout.fixSidebar() - */ - $.AdminLTE.layout = { - activate: function () { - var _this = this; - _this.fix(); - _this.fixSidebar(); - $(window, ".wrapper").resize(function () { - _this.fix(); - _this.fixSidebar(); - }); - }, - fix: function () { - //Get window height and the wrapper height - var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight(); - var window_height = $(window).height(); - var sidebar_height = $(".sidebar").height(); - //Set the min-height of the content and sidebar based on the - //the height of the document. - if ($("body").hasClass("fixed")) { - $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight()); - } else { - var postSetWidth; - if (window_height >= sidebar_height) { - $(".content-wrapper, .right-side").css('min-height', window_height - neg); - postSetWidth = window_height - neg; - } else { - $(".content-wrapper, .right-side").css('min-height', sidebar_height); - postSetWidth = sidebar_height; - } - - //Fix for the control sidebar height - var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); - if (typeof controlSidebar !== "undefined") { - if (controlSidebar.height() > postSetWidth) - $(".content-wrapper, .right-side").css('min-height', controlSidebar.height()); - } - - } - }, - fixSidebar: function () { - //Make sure the body tag has the .fixed class - if (!$("body").hasClass("fixed")) { - if (typeof $.fn.slimScroll != 'undefined') { - $(".sidebar").slimScroll({destroy: true}).height("auto"); - } - return; - } else if (typeof $.fn.slimScroll == 'undefined' && window.console) { - window.console.error("Error: the fixed layout requires the slimscroll plugin!"); - } - //Enable slimscroll for fixed layout - if ($.AdminLTE.options.sidebarSlimScroll) { - if (typeof $.fn.slimScroll != 'undefined') { - //Destroy if it exists - $(".sidebar").slimScroll({destroy: true}).height("auto"); - //Add slimscroll - $(".sidebar").slimscroll({ - height: ($(window).height() - $(".main-header").height()) + "px", - color: "rgba(0,0,0,0.2)", - size: "3px" - }); - } - } - } - }; - - /* PushMenu() - * ========== - * Adds the push menu functionality to the sidebar. - * - * @type Function - * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") - */ - $.AdminLTE.pushMenu = { - activate: function (toggleBtn) { - //Get the screen sizes - var screenSizes = $.AdminLTE.options.screenSizes; - - //Enable sidebar toggle - $(document).on('click', toggleBtn, function (e) { - e.preventDefault(); - - //Enable sidebar push menu - if ($(window).width() > (screenSizes.sm - 1)) { - if ($("body").hasClass('sidebar-collapse')) { - $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu'); - } else { - $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } - } - //Handle sidebar push menu for small screens - else { - if ($("body").hasClass('sidebar-open')) { - $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } else { - $("body").addClass('sidebar-open').trigger('expanded.pushMenu'); - } - } - }); - - $(".content-wrapper").click(function () { - //Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { - $("body").removeClass('sidebar-open'); - } - }); - - //Enable expand on hover for sidebar mini - if ($.AdminLTE.options.sidebarExpandOnHover - || ($('body').hasClass('fixed') - && $('body').hasClass('sidebar-mini'))) { - this.expandOnHover(); - } - }, - expandOnHover: function () { - var _this = this; - var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; - //Expand sidebar on hover - $('.main-sidebar').hover(function () { - if ($('body').hasClass('sidebar-mini') - && $("body").hasClass('sidebar-collapse') - && $(window).width() > screenWidth) { - _this.expand(); - } - }, function () { - if ($('body').hasClass('sidebar-mini') - && $('body').hasClass('sidebar-expanded-on-hover') - && $(window).width() > screenWidth) { - _this.collapse(); - } - }); - }, - expand: function () { - $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover'); - }, - collapse: function () { - if ($('body').hasClass('sidebar-expanded-on-hover')) { - $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse'); - } - } - }; - - /* Tree() - * ====== - * Converts the sidebar into a multilevel - * tree view menu. - * - * @type Function - * @Usage: $.AdminLTE.tree('.sidebar') - */ - $.AdminLTE.tree = function (menu) { - var _this = this; - var animationSpeed = $.AdminLTE.options.animationSpeed; - $(document).on('click', menu + ' li a', function (e) { - //Get the clicked link and the next element - var $this = $(this); - var checkElement = $this.next(); - - //Check if the next element is a menu and is visible - if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) { - //Close the menu - checkElement.slideUp(animationSpeed, function () { - checkElement.removeClass('menu-open'); - //Fix the layout in case the sidebar stretches over the height of the window - //_this.layout.fix(); - }); - checkElement.parent("li").removeClass("active"); - } - //If the menu is not visible - else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) { - //Get the parent menu - var parent = $this.parents('ul').first(); - //Close all open menus within the parent - var ul = parent.find('ul:visible').slideUp(animationSpeed); - //Remove the menu-open class from the parent - ul.removeClass('menu-open'); - //Get the parent li - var parent_li = $this.parent("li"); - - //Open the target menu and add the menu-open class - checkElement.slideDown(animationSpeed, function () { - //Add the class active to the parent li - checkElement.addClass('menu-open'); - parent.find('li.active').removeClass('active'); - parent_li.addClass('active'); - //Fix the layout in case the sidebar stretches over the height of the window - _this.layout.fix(); - }); - } - //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu')) { - e.preventDefault(); - } - }); - }; - - /* ControlSidebar - * ============== - * Adds functionality to the right sidebar - * - * @type Object - * @usage $.AdminLTE.controlSidebar.activate(options) - */ - $.AdminLTE.controlSidebar = { - //instantiate the object - activate: function () { - //Get the object - var _this = this; - //Update options - var o = $.AdminLTE.options.controlSidebarOptions; - //Get the sidebar - var sidebar = $(o.selector); - //The toggle button - var btn = $(o.toggleBtnSelector); - - //Listen to the click event - btn.on('click', function (e) { - e.preventDefault(); - //If the sidebar is not open - if (!sidebar.hasClass('control-sidebar-open') - && !$('body').hasClass('control-sidebar-open')) { - //Open the sidebar - _this.open(sidebar, o.slide); - } else { - _this.close(sidebar, o.slide); - } - }); - - //If the body has a boxed layout, fix the sidebar bg position - var bg = $(".control-sidebar-bg"); - _this._fix(bg); - - //If the body has a fixed layout, make the control sidebar fixed - if ($('body').hasClass('fixed')) { - _this._fixForFixed(sidebar); - } else { - //If the content height is less than the sidebar's height, force max height - if ($('.content-wrapper, .right-side').height() < sidebar.height()) { - _this._fixForContent(sidebar); - } - } - }, - //Open the control sidebar - open: function (sidebar, slide) { - //Slide over content - if (slide) { - sidebar.addClass('control-sidebar-open'); - } else { - //Push the content by adding the open class to the body instead - //of the sidebar itself - $('body').addClass('control-sidebar-open'); - } - }, - //Close the control sidebar - close: function (sidebar, slide) { - if (slide) { - sidebar.removeClass('control-sidebar-open'); - } else { - $('body').removeClass('control-sidebar-open'); - } - }, - _fix: function (sidebar) { - var _this = this; - if ($("body").hasClass('layout-boxed')) { - sidebar.css('position', 'absolute'); - sidebar.height($(".wrapper").height()); - $(window).resize(function () { - _this._fix(sidebar); - }); - } else { - sidebar.css({ - 'position': 'fixed', - 'height': 'auto' - }); - } - }, - _fixForFixed: function (sidebar) { - sidebar.css({ - 'position': 'fixed', - 'max-height': '100%', - 'overflow': 'auto', - 'padding-bottom': '50px' - }); - }, - _fixForContent: function (sidebar) { - $(".content-wrapper, .right-side").css('min-height', sidebar.height()); - } - }; - - /* BoxWidget - * ========= - * BoxWidget is a plugin to handle collapsing and - * removing boxes from the screen. - * - * @type Object - * @usage $.AdminLTE.boxWidget.activate() - * Set all your options in the main $.AdminLTE.options object - */ - $.AdminLTE.boxWidget = { - selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, - icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, - animationSpeed: $.AdminLTE.options.animationSpeed, - activate: function (_box) { - var _this = this; - if (!_box) { - _box = document; // activate all boxes per default - } - //Listen for collapse event triggers - $(_box).on('click', _this.selectors.collapse, function (e) { - e.preventDefault(); - _this.collapse($(this)); - }); - - //Listen for remove event triggers - $(_box).on('click', _this.selectors.remove, function (e) { - e.preventDefault(); - _this.remove($(this)); - }); - }, - collapse: function (element) { - var _this = this; - //Find the box parent - var box = element.parents(".box").first(); - //Find the body and the footer - var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer"); - if (!box.hasClass("collapsed-box")) { - //Convert minus into plus - element.children(":first") - .removeClass(_this.icons.collapse) - .addClass(_this.icons.open); - //Hide the content - box_content.slideUp(_this.animationSpeed, function () { - box.addClass("collapsed-box"); - }); - } else { - //Convert plus into minus - element.children(":first") - .removeClass(_this.icons.open) - .addClass(_this.icons.collapse); - //Show the content - box_content.slideDown(_this.animationSpeed, function () { - box.removeClass("collapsed-box"); - }); - } - }, - remove: function (element) { - //Find the box parent - var box = element.parents(".box").first(); - box.slideUp(this.animationSpeed); - } - }; -} - -/* ------------------ - * - Custom Plugins - - * ------------------ - * All custom plugins are defined below. - */ - -/* - * BOX REFRESH BUTTON - * ------------------ - * This is a custom plugin to use with the component BOX. It allows you to add - * a refresh button to the box. It converts the box's state to a loading state. - * - * @type plugin - * @usage $("#box-widget").boxRefresh( options ); - */ -(function ($) { - - "use strict"; - - $.fn.boxRefresh = function (options) { - - // Render options - var settings = $.extend({ - //Refresh button selector - trigger: ".refresh-btn", - //File source to be loaded (e.g: ajax/src.php) - source: "", - //Callbacks - onLoadStart: function (box) { - return box; - }, //Right after the button has been clicked - onLoadDone: function (box) { - return box; - } //When the source has been loaded - - }, options); - - //The overlay - var overlay = $('

    '); - - return this.each(function () { - //if a source is specified - if (settings.source === "") { - if (window.console) { - window.console.log("Please specify a source first - boxRefresh()"); - } - return; - } - //the box - var box = $(this); - //the button - var rBtn = box.find(settings.trigger).first(); - - //On trigger click - rBtn.on('click', function (e) { - e.preventDefault(); - //Add loading overlay - start(box); - - //Perform ajax call - box.find(".box-body").load(settings.source, function () { - done(box); - }); - }); - }); - - function start(box) { - //Add overlay and loading img - box.append(overlay); - - settings.onLoadStart.call(box); - } - - function done(box) { - //Remove overlay and loading img - box.find(overlay).remove(); - - settings.onLoadDone.call(box); - } - - }; - -})(jQuery); - - /* - * EXPLICIT BOX CONTROLS - * ----------------------- - * This is a custom plugin to use with the component BOX. It allows you to activate - * a box inserted in the DOM after the app.js was loaded, toggle and remove box. - * - * @type plugin - * @usage $("#box-widget").activateBox(); - * @usage $("#box-widget").toggleBox(); - * @usage $("#box-widget").removeBox(); - */ -(function ($) { - - 'use strict'; - - $.fn.activateBox = function () { - $.AdminLTE.boxWidget.activate(this); - }; - - $.fn.toggleBox = function(){ - var button = $($.AdminLTE.boxWidget.selectors.collapse, this); - $.AdminLTE.boxWidget.collapse(button); - }; - - $.fn.removeBox = function(){ - var button = $($.AdminLTE.boxWidget.selectors.remove, this); - $.AdminLTE.boxWidget.remove(button); - }; - -})(jQuery); - -/* - * TODO LIST CUSTOM PLUGIN - * ----------------------- - * This plugin depends on iCheck plugin for checkbox and radio inputs - * - * @type plugin - * @usage $("#todo-widget").todolist( options ); - */ -(function ($) { - - 'use strict'; - - $.fn.todolist = function (options) { - // Render options - var settings = $.extend({ - //When the user checks the input - onCheck: function (ele) { - return ele; - }, - //When the user unchecks the input - onUncheck: function (ele) { - return ele; - } - }, options); - - return this.each(function () { - - if (typeof $.fn.iCheck != 'undefined') { - $('input', this).on('ifChecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onCheck.call(ele); - }); - - $('input', this).on('ifUnchecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onUncheck.call(ele); - }); - } else { - $('input', this).on('change', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - if ($('input', ele).is(":checked")) { - settings.onCheck.call(ele); - } else { - settings.onUncheck.call(ele); - } - }); - } - }); - }; -}(jQuery)); diff --git a/app/static/adminlte2/dist/js/app.min.js b/app/static/adminlte2/dist/js/app.min.js deleted file mode 100644 index 560593d..0000000 --- a/app/static/adminlte2/dist/js/app.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support - * @Email - * @version 2.3.3 - * @license MIT - */ -function _init(){"use strict";$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight());else{var d;b>=c?($(".content-wrapper, .right-side").css("min-height",b-a),d=b-a):($(".content-wrapper, .right-side").css("min-height",c),d=c);var e=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof e&&e.height()>d&&$(".content-wrapper, .right-side").css("min-height",e.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(document).on("click",a,function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this,c=$.AdminLTE.options.animationSpeed;$(document).on("click",a+" li a",function(a){var d=$(this),e=d.next();if(e.is(".treeview-menu")&&e.is(":visible")&&!$("body").hasClass("sidebar-collapse"))e.slideUp(c,function(){e.removeClass("menu-open")}),e.parent("li").removeClass("active");else if(e.is(".treeview-menu")&&!e.is(":visible")){var f=d.parents("ul").first(),g=f.find("ul:visible").slideUp(c);g.removeClass("menu-open");var h=d.parent("li");e.slideDown(c,function(){e.addClass("menu-open"),f.find("li.active").removeClass("active"),h.addClass("active"),b.layout.fix()})}e.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height() .box-body, > .box-footer, > form >.box-body, > form > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(b.animationSpeed,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(b.animationSpeed,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp(this.animationSpeed)}}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",animationSpeed:500,sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"use strict";$("body").removeClass("hold-transition"),"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(document).on("click",a.directChat.contactToggleSelector,function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){"use strict";a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){return a},onLoadDone:function(a){return a}},b),f=a('
    ');return this.each(function(){if(""===e.source)return void(window.console&&window.console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){"use strict";a.fn.activateBox=function(){a.AdminLTE.boxWidget.activate(this)},a.fn.toggleBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.collapse,this);a.AdminLTE.boxWidget.collapse(b)},a.fn.removeBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.remove,this);a.AdminLTE.boxWidget.remove(b)}}(jQuery),function(a){"use strict";a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){return a},onUncheck:function(a){return a}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)}),a("input",this).on("ifUnchecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onUncheck.call(b)})):a("input",this).on("change",function(){var b=a(this).parents("li").first();b.toggleClass("done"),a("input",b).is(":checked")?c.onCheck.call(b):c.onUncheck.call(b)})})}}(jQuery); \ No newline at end of file diff --git a/app/static/adminlte2/dist/js/demo.js b/app/static/adminlte2/dist/js/demo.js deleted file mode 100644 index 86731bd..0000000 --- a/app/static/adminlte2/dist/js/demo.js +++ /dev/null @@ -1,338 +0,0 @@ -/** - * AdminLTE Demo Menu - * ------------------ - * You should not use this file in production. - * This file is for demo purposes only. - */ -(function ($, AdminLTE) { - - "use strict"; - - /** - * List of all the available skins - * - * @type Array - */ - var my_skins = [ - "skin-blue", - "skin-black", - "skin-red", - "skin-yellow", - "skin-purple", - "skin-green", - "skin-blue-light", - "skin-black-light", - "skin-red-light", - "skin-yellow-light", - "skin-purple-light", - "skin-green-light" - ]; - - //Create the new tab - var tab_pane = $("
    ", { - "id": "control-sidebar-theme-demo-options-tab", - "class": "tab-pane active" - }); - - //Create the tab button - var tab_button = $("
  • ", {"class": "active"}) - .html("" - + "" - + ""); - - //Add the tab button to the right sidebar tabs - $("[href='#control-sidebar-home-tab']") - .parent() - .before(tab_button); - - //Create the menu - var demo_settings = $("
    "); - - //Layout options - demo_settings.append( - "

    " - + "Layout Options" - + "

    " - //Fixed layout - + "
    " - + "" - + "

    Activate the fixed layout. You can't use fixed and boxed layouts together

    " - + "
    " - //Boxed layout - + "
    " - + "" - + "

    Activate the boxed layout

    " - + "
    " - //Sidebar Toggle - + "
    " - + "" - + "

    Toggle the left sidebar's state (open or collapse)

    " - + "
    " - //Sidebar mini expand on hover toggle - + "
    " - + "" - + "

    Let the sidebar mini expand on hover

    " - + "
    " - //Control Sidebar Toggle - + "
    " - + "" - + "

    Toggle between slide over content and push content effects

    " - + "
    " - //Control Sidebar Skin Toggle - + "
    " - + "" - + "

    Toggle between dark and light skins for the right sidebar

    " - + "
    " - ); - var skins_list = $("
      ", {"class": 'list-unstyled clearfix'}); - - //Dark sidebar skins - var skin_blue = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Blue

      "); - skins_list.append(skin_blue); - var skin_black = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Black

      "); - skins_list.append(skin_black); - var skin_purple = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Purple

      "); - skins_list.append(skin_purple); - var skin_green = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Green

      "); - skins_list.append(skin_green); - var skin_red = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Red

      "); - skins_list.append(skin_red); - var skin_yellow = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Yellow

      "); - skins_list.append(skin_yellow); - - //Light sidebar skins - var skin_blue_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Blue Light

      "); - skins_list.append(skin_blue_light); - var skin_black_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Black Light

      "); - skins_list.append(skin_black_light); - var skin_purple_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Purple Light

      "); - skins_list.append(skin_purple_light); - var skin_green_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Green Light

      "); - skins_list.append(skin_green_light); - var skin_red_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Red Light

      "); - skins_list.append(skin_red_light); - var skin_yellow_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Yellow Light

      "); - skins_list.append(skin_yellow_light); - - demo_settings.append("

      Skins

      "); - demo_settings.append(skins_list); - - tab_pane.append(demo_settings); - $("#control-sidebar-home-tab").after(tab_pane); - - setup(); - - /** - * Toggles layout classes - * - * @param String cls the layout class to toggle - * @returns void - */ - function change_layout(cls) { - $("body").toggleClass(cls); - AdminLTE.layout.fixSidebar(); - //Fix the problem with right sidebar and layout boxed - if (cls == "layout-boxed") - AdminLTE.controlSidebar._fix($(".control-sidebar-bg")); - if ($('body').hasClass('fixed') && cls == 'fixed') { - AdminLTE.pushMenu.expandOnHover(); - AdminLTE.layout.activate(); - } - AdminLTE.controlSidebar._fix($(".control-sidebar-bg")); - AdminLTE.controlSidebar._fix($(".control-sidebar")); - } - - /** - * Replaces the old skin with the new skin - * @param String cls the new skin class - * @returns Boolean false to prevent link's default action - */ - function change_skin(cls) { - $.each(my_skins, function (i) { - $("body").removeClass(my_skins[i]); - }); - - $("body").addClass(cls); - store('skin', cls); - return false; - } - - /** - * Store a new settings in the browser - * - * @param String name Name of the setting - * @param String val Value of the setting - * @returns void - */ - function store(name, val) { - if (typeof (Storage) !== "undefined") { - localStorage.setItem(name, val); - } else { - window.alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Get a prestored setting - * - * @param String name Name of of the setting - * @returns String The value of the setting | null - */ - function get(name) { - if (typeof (Storage) !== "undefined") { - return localStorage.getItem(name); - } else { - window.alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Retrieve default settings and apply them to the template - * - * @returns void - */ - function setup() { - var tmp = get('skin'); - if (tmp && $.inArray(tmp, my_skins)) - change_skin(tmp); - - //Add the change skin listener - $("[data-skin]").on('click', function (e) { - e.preventDefault(); - change_skin($(this).data('skin')); - }); - - //Add the layout manager - $("[data-layout]").on('click', function () { - change_layout($(this).data('layout')); - }); - - $("[data-controlsidebar]").on('click', function () { - change_layout($(this).data('controlsidebar')); - var slide = !AdminLTE.options.controlSidebarOptions.slide; - AdminLTE.options.controlSidebarOptions.slide = slide; - if (!slide) - $('.control-sidebar').removeClass('control-sidebar-open'); - }); - - $("[data-sidebarskin='toggle']").on('click', function () { - var sidebar = $(".control-sidebar"); - if (sidebar.hasClass("control-sidebar-dark")) { - sidebar.removeClass("control-sidebar-dark") - sidebar.addClass("control-sidebar-light") - } else { - sidebar.removeClass("control-sidebar-light") - sidebar.addClass("control-sidebar-dark") - } - }); - - $("[data-enable='expandOnHover']").on('click', function () { - $(this).attr('disabled', true); - AdminLTE.pushMenu.expandOnHover(); - if (!$('body').hasClass('sidebar-collapse')) - $("[data-layout='sidebar-collapse']").click(); - }); - - // Reset options - if ($('body').hasClass('fixed')) { - $("[data-layout='fixed']").attr('checked', 'checked'); - } - if ($('body').hasClass('layout-boxed')) { - $("[data-layout='layout-boxed']").attr('checked', 'checked'); - } - if ($('body').hasClass('sidebar-collapse')) { - $("[data-layout='sidebar-collapse']").attr('checked', 'checked'); - } - - } -})(jQuery, $.AdminLTE); diff --git a/app/static/adminlte2/dist/js/pages/dashboard.js b/app/static/adminlte2/dist/js/pages/dashboard.js deleted file mode 100644 index 0f7c007..0000000 --- a/app/static/adminlte2/dist/js/pages/dashboard.js +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Author: Abdullah A Almsaeed - * Date: 4 Jan 2014 - * Description: - * This is a demo file used only for the main dashboard (index.html) - **/ - -$(function () { - - "use strict"; - - //Make the dashboard widgets sortable Using jquery UI - $(".connectedSortable").sortable({ - placeholder: "sort-highlight", - connectWith: ".connectedSortable", - handle: ".box-header, .nav-tabs", - forcePlaceholderSize: true, - zIndex: 999999 - }); - $(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move"); - - //jQuery UI sortable for the todo list - $(".todo-list").sortable({ - placeholder: "sort-highlight", - handle: ".handle", - forcePlaceholderSize: true, - zIndex: 999999 - }); - - //bootstrap WYSIHTML5 - text editor - $(".textarea").wysihtml5(); - - $('.daterange').daterangepicker({ - ranges: { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }, - startDate: moment().subtract(29, 'days'), - endDate: moment() - }, function (start, end) { - window.alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); - }); - - /* jQueryKnob */ - $(".knob").knob(); - - //jvectormap data - var visitorsData = { - "US": 398, //USA - "SA": 400, //Saudi Arabia - "CA": 1000, //Canada - "DE": 500, //Germany - "FR": 760, //France - "CN": 300, //China - "AU": 700, //Australia - "BR": 600, //Brazil - "IN": 800, //India - "GB": 320, //Great Britain - "RU": 3000 //Russia - }; - //World map by jvectormap - $('#world-map').vectorMap({ - map: 'world_mill_en', - backgroundColor: "transparent", - regionStyle: { - initial: { - fill: '#e4e4e4', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - } - }, - series: { - regions: [{ - values: visitorsData, - scale: ["#92c1dc", "#ebf4f9"], - normalizeFunction: 'polynomial' - }] - }, - onRegionLabelShow: function (e, el, code) { - if (typeof visitorsData[code] != "undefined") - el.html(el.html() + ': ' + visitorsData[code] + ' new visitors'); - } - }); - - //Sparkline charts - var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]; - $('#sparkline-1').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]; - $('#sparkline-2').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]; - $('#sparkline-3').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - - //The Calender - $("#calendar").datepicker(); - - //SLIMSCROLL FOR CHAT WIDGET - $('#chat-box').slimScroll({ - height: '250px' - }); - - /* Morris.js Charts */ - // Sales chart - var area = new Morris.Area({ - element: 'revenue-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666, item2: 2666}, - {y: '2011 Q2', item1: 2778, item2: 2294}, - {y: '2011 Q3', item1: 4912, item2: 1969}, - {y: '2011 Q4', item1: 3767, item2: 3597}, - {y: '2012 Q1', item1: 6810, item2: 1914}, - {y: '2012 Q2', item1: 5670, item2: 4293}, - {y: '2012 Q3', item1: 4820, item2: 3795}, - {y: '2012 Q4', item1: 15073, item2: 5967}, - {y: '2013 Q1', item1: 10687, item2: 4460}, - {y: '2013 Q2', item1: 8432, item2: 5713} - ], - xkey: 'y', - ykeys: ['item1', 'item2'], - labels: ['Item 1', 'Item 2'], - lineColors: ['#a0d0e0', '#3c8dbc'], - hideHover: 'auto' - }); - var line = new Morris.Line({ - element: 'line-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666}, - {y: '2011 Q2', item1: 2778}, - {y: '2011 Q3', item1: 4912}, - {y: '2011 Q4', item1: 3767}, - {y: '2012 Q1', item1: 6810}, - {y: '2012 Q2', item1: 5670}, - {y: '2012 Q3', item1: 4820}, - {y: '2012 Q4', item1: 15073}, - {y: '2013 Q1', item1: 10687}, - {y: '2013 Q2', item1: 8432} - ], - xkey: 'y', - ykeys: ['item1'], - labels: ['Item 1'], - lineColors: ['#efefef'], - lineWidth: 2, - hideHover: 'auto', - gridTextColor: "#fff", - gridStrokeWidth: 0.4, - pointSize: 4, - pointStrokeColors: ["#efefef"], - gridLineColor: "#efefef", - gridTextFamily: "Open Sans", - gridTextSize: 10 - }); - - //Donut Chart - var donut = new Morris.Donut({ - element: 'sales-chart', - resize: true, - colors: ["#3c8dbc", "#f56954", "#00a65a"], - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ], - hideHover: 'auto' - }); - - //Fix for charts under tabs - $('.box ul.nav a').on('shown.bs.tab', function () { - area.redraw(); - donut.redraw(); - line.redraw(); - }); - - /* The todo list plugin */ - $(".todo-list").todolist({ - onCheck: function (ele) { - window.console.log("The element has been checked"); - return ele; - }, - onUncheck: function (ele) { - window.console.log("The element has been unchecked"); - return ele; - } - }); - -}); diff --git a/app/static/adminlte2/dist/js/pages/dashboard2.js b/app/static/adminlte2/dist/js/pages/dashboard2.js deleted file mode 100644 index cc67785..0000000 --- a/app/static/adminlte2/dist/js/pages/dashboard2.js +++ /dev/null @@ -1,274 +0,0 @@ -$(function () { - - 'use strict'; - - /* ChartJS - * ------- - * Here we will create a few charts using ChartJS - */ - - //----------------------- - //- MONTHLY SALES CHART - - //----------------------- - - // Get context with jQuery - using jQuery's .get() method. - var salesChartCanvas = $("#salesChart").get(0).getContext("2d"); - // This will get the first returned node in the jQuery collection. - var salesChart = new Chart(salesChartCanvas); - - var salesChartData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "Electronics", - fillColor: "rgb(210, 214, 222)", - strokeColor: "rgb(210, 214, 222)", - pointColor: "rgb(210, 214, 222)", - pointStrokeColor: "#c1c7d1", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgb(220,220,220)", - data: [65, 59, 80, 81, 56, 55, 40] - }, - { - label: "Digital Goods", - fillColor: "rgba(60,141,188,0.9)", - strokeColor: "rgba(60,141,188,0.8)", - pointColor: "#3b8bba", - pointStrokeColor: "rgba(60,141,188,1)", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(60,141,188,1)", - data: [28, 48, 40, 19, 86, 27, 90] - } - ] - }; - - var salesChartOptions = { - //Boolean - If we should show the scale at all - showScale: true, - //Boolean - Whether grid lines are shown across the chart - scaleShowGridLines: false, - //String - Colour of the grid lines - scaleGridLineColor: "rgba(0,0,0,.05)", - //Number - Width of the grid lines - scaleGridLineWidth: 1, - //Boolean - Whether to show horizontal lines (except X axis) - scaleShowHorizontalLines: true, - //Boolean - Whether to show vertical lines (except Y axis) - scaleShowVerticalLines: true, - //Boolean - Whether the line is curved between points - bezierCurve: true, - //Number - Tension of the bezier curve between points - bezierCurveTension: 0.3, - //Boolean - Whether to show a dot for each point - pointDot: false, - //Number - Radius of each point dot in pixels - pointDotRadius: 4, - //Number - Pixel width of point dot stroke - pointDotStrokeWidth: 1, - //Number - amount extra to add to the radius to cater for hit detection outside the drawn point - pointHitDetectionRadius: 20, - //Boolean - Whether to show a stroke for datasets - datasetStroke: true, - //Number - Pixel width of dataset stroke - datasetStrokeWidth: 2, - //Boolean - Whether to fill the dataset with a color - datasetFill: true, - //String - A legend template - legendTemplate: "
        -legend\"><% for (var i=0; i
      • \"><%=datasets[i].label%>
      • <%}%>
      ", - //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: true, - //Boolean - whether to make the chart responsive to window resizing - responsive: true - }; - - //Create the line chart - salesChart.Line(salesChartData, salesChartOptions); - - //--------------------------- - //- END MONTHLY SALES CHART - - //--------------------------- - - //------------- - //- PIE CHART - - //------------- - // Get context with jQuery - using jQuery's .get() method. - var pieChartCanvas = $("#pieChart").get(0).getContext("2d"); - var pieChart = new Chart(pieChartCanvas); - var PieData = [ - { - value: 700, - color: "#f56954", - highlight: "#f56954", - label: "Chrome" - }, - { - value: 500, - color: "#00a65a", - highlight: "#00a65a", - label: "IE" - }, - { - value: 400, - color: "#f39c12", - highlight: "#f39c12", - label: "FireFox" - }, - { - value: 600, - color: "#00c0ef", - highlight: "#00c0ef", - label: "Safari" - }, - { - value: 300, - color: "#3c8dbc", - highlight: "#3c8dbc", - label: "Opera" - }, - { - value: 100, - color: "#d2d6de", - highlight: "#d2d6de", - label: "Navigator" - } - ]; - var pieOptions = { - //Boolean - Whether we should show a stroke on each segment - segmentShowStroke: true, - //String - The colour of each segment stroke - segmentStrokeColor: "#fff", - //Number - The width of each segment stroke - segmentStrokeWidth: 1, - //Number - The percentage of the chart that we cut out of the middle - percentageInnerCutout: 50, // This is 0 for Pie charts - //Number - Amount of animation steps - animationSteps: 100, - //String - Animation easing effect - animationEasing: "easeOutBounce", - //Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - //Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false, - //Boolean - whether to make the chart responsive to window resizing - responsive: true, - // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: false, - //String - A legend template - legendTemplate: "
        -legend\"><% for (var i=0; i
      • \"><%if(segments[i].label){%><%=segments[i].label%><%}%>
      • <%}%>
      ", - //String - A tooltip template - tooltipTemplate: "<%=value %> <%=label%> users" - }; - //Create pie or douhnut chart - // You can switch between pie and douhnut using the method below. - pieChart.Doughnut(PieData, pieOptions); - //----------------- - //- END PIE CHART - - //----------------- - - /* jVector Maps - * ------------ - * Create a world map with markers - */ - $('#world-map-markers').vectorMap({ - map: 'world_mill_en', - normalizeFunction: 'polynomial', - hoverOpacity: 0.7, - hoverColor: false, - backgroundColor: 'transparent', - regionStyle: { - initial: { - fill: 'rgba(210, 214, 222, 1)', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - }, - hover: { - "fill-opacity": 0.7, - cursor: 'pointer' - }, - selected: { - fill: 'yellow' - }, - selectedHover: {} - }, - markerStyle: { - initial: { - fill: '#00a65a', - stroke: '#111' - } - }, - markers: [ - {latLng: [41.90, 12.45], name: 'Vatican City'}, - {latLng: [43.73, 7.41], name: 'Monaco'}, - {latLng: [-0.52, 166.93], name: 'Nauru'}, - {latLng: [-8.51, 179.21], name: 'Tuvalu'}, - {latLng: [43.93, 12.46], name: 'San Marino'}, - {latLng: [47.14, 9.52], name: 'Liechtenstein'}, - {latLng: [7.11, 171.06], name: 'Marshall Islands'}, - {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'}, - {latLng: [3.2, 73.22], name: 'Maldives'}, - {latLng: [35.88, 14.5], name: 'Malta'}, - {latLng: [12.05, -61.75], name: 'Grenada'}, - {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'}, - {latLng: [13.16, -59.55], name: 'Barbados'}, - {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'}, - {latLng: [-4.61, 55.45], name: 'Seychelles'}, - {latLng: [7.35, 134.46], name: 'Palau'}, - {latLng: [42.5, 1.51], name: 'Andorra'}, - {latLng: [14.01, -60.98], name: 'Saint Lucia'}, - {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'}, - {latLng: [1.3, 103.8], name: 'Singapore'}, - {latLng: [1.46, 173.03], name: 'Kiribati'}, - {latLng: [-21.13, -175.2], name: 'Tonga'}, - {latLng: [15.3, -61.38], name: 'Dominica'}, - {latLng: [-20.2, 57.5], name: 'Mauritius'}, - {latLng: [26.02, 50.55], name: 'Bahrain'}, - {latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'} - ] - }); - - /* SPARKLINE CHARTS - * ---------------- - * Create a inline charts with spark line - */ - - //----------------- - //- SPARKLINE BAR - - //----------------- - $('.sparkbar').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'bar', - height: $this.data('height') ? $this.data('height') : '30', - barColor: $this.data('color') - }); - }); - - //----------------- - //- SPARKLINE PIE - - //----------------- - $('.sparkpie').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'pie', - height: $this.data('height') ? $this.data('height') : '90', - sliceColors: $this.data('color') - }); - }); - - //------------------ - //- SPARKLINE LINE - - //------------------ - $('.sparkline').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'line', - height: $this.data('height') ? $this.data('height') : '90', - width: '100%', - lineColor: $this.data('linecolor'), - fillColor: $this.data('fillcolor'), - spotColor: $this.data('spotcolor') - }); - }); -}); diff --git a/app/static/adminlte2/plugins/bootstrap-slider/bootstrap-slider.js b/app/static/adminlte2/plugins/bootstrap-slider/bootstrap-slider.js deleted file mode 100644 index 3a0e464..0000000 --- a/app/static/adminlte2/plugins/bootstrap-slider/bootstrap-slider.js +++ /dev/null @@ -1,1576 +0,0 @@ -/*! ========================================================= - * bootstrap-slider.js - * - * Maintainers: - * Kyle Kemp - * - Twitter: @seiyria - * - Github: seiyria - * Rohit Kalkur - * - Twitter: @Rovolutionary - * - Github: rovolution - * - * ========================================================= - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - - -/** - * Bridget makes jQuery widgets - * v1.0.1 - * MIT license - */ - -(function(root, factory) { - if(typeof define === "function" && define.amd) { - define(["jquery"], factory); - } - else if(typeof module === "object" && module.exports) { - var jQuery; - try { - jQuery = require("jquery"); - } - catch (err) { - jQuery = null; - } - module.exports = factory(jQuery); - } - else { - root.Slider = factory(root.jQuery); - } -}(this, function($) { - // Reference to Slider constructor - var Slider; - - - (function( $ ) { - - 'use strict'; - - // -------------------------- utils -------------------------- // - - var slice = Array.prototype.slice; - - function noop() {} - - // -------------------------- definition -------------------------- // - - function defineBridget( $ ) { - - // bail if no jQuery - if ( !$ ) { - return; - } - - // -------------------------- addOptionMethod -------------------------- // - - /** - * adds option method -> $().plugin('option', {...}) - * @param {Function} PluginClass - constructor class - */ - function addOptionMethod( PluginClass ) { - // don't overwrite original option method - if ( PluginClass.prototype.option ) { - return; - } - - // option setter - PluginClass.prototype.option = function( opts ) { - // bail out if not an object - if ( !$.isPlainObject( opts ) ){ - return; - } - this.options = $.extend( true, this.options, opts ); - }; - } - - - // -------------------------- plugin bridge -------------------------- // - - // helper function for logging errors - // $.error breaks jQuery chaining - var logError = typeof console === 'undefined' ? noop : - function( message ) { - console.error( message ); - }; - - /** - * jQuery plugin bridge, access methods like $elem.plugin('method') - * @param {String} namespace - plugin name - * @param {Function} PluginClass - constructor class - */ - function bridge( namespace, PluginClass ) { - // add to jQuery fn namespace - $.fn[ namespace ] = function( options ) { - if ( typeof options === 'string' ) { - // call plugin method when first argument is a string - // get arguments for method - var args = slice.call( arguments, 1 ); - - for ( var i=0, len = this.length; i < len; i++ ) { - var elem = this[i]; - var instance = $.data( elem, namespace ); - if ( !instance ) { - logError( "cannot call methods on " + namespace + " prior to initialization; " + - "attempted to call '" + options + "'" ); - continue; - } - if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) { - logError( "no such method '" + options + "' for " + namespace + " instance" ); - continue; - } - - // trigger method with arguments - var returnValue = instance[ options ].apply( instance, args); - - // break look and return first value if provided - if ( returnValue !== undefined && returnValue !== instance) { - return returnValue; - } - } - // return this if no return value - return this; - } else { - var objects = this.map( function() { - var instance = $.data( this, namespace ); - if ( instance ) { - // apply options & init - instance.option( options ); - instance._init(); - } else { - // initialize new instance - instance = new PluginClass( this, options ); - $.data( this, namespace, instance ); - } - return $(this); - }); - - if(!objects || objects.length > 1) { - return objects; - } else { - return objects[0]; - } - } - }; - - } - - // -------------------------- bridget -------------------------- // - - /** - * converts a Prototypical class into a proper jQuery plugin - * the class must have a ._init method - * @param {String} namespace - plugin name, used in $().pluginName - * @param {Function} PluginClass - constructor class - */ - $.bridget = function( namespace, PluginClass ) { - addOptionMethod( PluginClass ); - bridge( namespace, PluginClass ); - }; - - return $.bridget; - - } - - // get jquery from browser global - defineBridget( $ ); - - })( $ ); - - - /************************************************* - - BOOTSTRAP-SLIDER SOURCE CODE - - **************************************************/ - - (function($) { - - var ErrorMsgs = { - formatInvalidInputErrorMsg : function(input) { - return "Invalid input value '" + input + "' passed in"; - }, - callingContextNotSliderInstance : "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" - }; - - var SliderScale = { - linear: { - toValue: function(percentage) { - var rawValue = percentage/100 * (this.options.max - this.options.min); - if (this.options.ticks_positions.length > 0) { - var minv, maxv, minp, maxp = 0; - for (var i = 0; i < this.options.ticks_positions.length; i++) { - if (percentage <= this.options.ticks_positions[i]) { - minv = (i > 0) ? this.options.ticks[i-1] : 0; - minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; - maxv = this.options.ticks[i]; - maxp = this.options.ticks_positions[i]; - - break; - } - } - if (i > 0) { - var partialPercentage = (percentage - minp) / (maxp - minp); - rawValue = minv + partialPercentage * (maxv - minv); - } - } - - var value = this.options.min + Math.round(rawValue / this.options.step) * this.options.step; - if (value < this.options.min) { - return this.options.min; - } else if (value > this.options.max) { - return this.options.max; - } else { - return value; - } - }, - toPercentage: function(value) { - if (this.options.max === this.options.min) { - return 0; - } - - if (this.options.ticks_positions.length > 0) { - var minv, maxv, minp, maxp = 0; - for (var i = 0; i < this.options.ticks.length; i++) { - if (value <= this.options.ticks[i]) { - minv = (i > 0) ? this.options.ticks[i-1] : 0; - minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; - maxv = this.options.ticks[i]; - maxp = this.options.ticks_positions[i]; - - break; - } - } - if (i > 0) { - var partialPercentage = (value - minv) / (maxv - minv); - return minp + partialPercentage * (maxp - minp); - } - } - - return 100 * (value - this.options.min) / (this.options.max - this.options.min); - } - }, - - logarithmic: { - /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */ - toValue: function(percentage) { - var min = (this.options.min === 0) ? 0 : Math.log(this.options.min); - var max = Math.log(this.options.max); - var value = Math.exp(min + (max - min) * percentage / 100); - value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step; - /* Rounding to the nearest step could exceed the min or - * max, so clip to those values. */ - if (value < this.options.min) { - return this.options.min; - } else if (value > this.options.max) { - return this.options.max; - } else { - return value; - } - }, - toPercentage: function(value) { - if (this.options.max === this.options.min) { - return 0; - } else { - var max = Math.log(this.options.max); - var min = this.options.min === 0 ? 0 : Math.log(this.options.min); - var v = value === 0 ? 0 : Math.log(value); - return 100 * (v - min) / (max - min); - } - } - } - }; - - - /************************************************* - - CONSTRUCTOR - - **************************************************/ - Slider = function(element, options) { - createNewSlider.call(this, element, options); - return this; - }; - - function createNewSlider(element, options) { - - /* - The internal state object is used to store data about the current 'state' of slider. - - This includes values such as the `value`, `enabled`, etc... - */ - this._state = { - value: null, - enabled: null, - offset: null, - size: null, - percentage: null, - inDrag: false, - over: false - }; - - - if(typeof element === "string") { - this.element = document.querySelector(element); - } else if(element instanceof HTMLElement) { - this.element = element; - } - - /************************************************* - - Process Options - - **************************************************/ - options = options ? options : {}; - var optionTypes = Object.keys(this.defaultOptions); - - for(var i = 0; i < optionTypes.length; i++) { - var optName = optionTypes[i]; - - // First check if an option was passed in via the constructor - var val = options[optName]; - // If no data attrib, then check data atrributes - val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName); - // Finally, if nothing was specified, use the defaults - val = (val !== null) ? val : this.defaultOptions[optName]; - - // Set all options on the instance of the Slider - if(!this.options) { - this.options = {}; - } - this.options[optName] = val; - } - - /* - Validate `tooltip_position` against 'orientation` - - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation` - -- default for "vertical" -> "right" - -- default for "horizontal" -> "left" - */ - if(this.options.orientation === "vertical" && (this.options.tooltip_position === "top" || this.options.tooltip_position === "bottom")) { - - this.options.tooltip_position = "right"; - - } - else if(this.options.orientation === "horizontal" && (this.options.tooltip_position === "left" || this.options.tooltip_position === "right")) { - - this.options.tooltip_position = "top"; - - } - - function getDataAttrib(element, optName) { - var dataName = "data-slider-" + optName.replace(/_/g, '-'); - var dataValString = element.getAttribute(dataName); - - try { - return JSON.parse(dataValString); - } - catch(err) { - return dataValString; - } - } - - /************************************************* - - Create Markup - - **************************************************/ - - var origWidth = this.element.style.width; - var updateSlider = false; - var parent = this.element.parentNode; - var sliderTrackSelection; - var sliderTrackLow, sliderTrackHigh; - var sliderMinHandle; - var sliderMaxHandle; - - if (this.sliderElem) { - updateSlider = true; - } else { - /* Create elements needed for slider */ - this.sliderElem = document.createElement("div"); - this.sliderElem.className = "slider"; - - /* Create slider track elements */ - var sliderTrack = document.createElement("div"); - sliderTrack.className = "slider-track"; - - sliderTrackLow = document.createElement("div"); - sliderTrackLow.className = "slider-track-low"; - - sliderTrackSelection = document.createElement("div"); - sliderTrackSelection.className = "slider-selection"; - - sliderTrackHigh = document.createElement("div"); - sliderTrackHigh.className = "slider-track-high"; - - sliderMinHandle = document.createElement("div"); - sliderMinHandle.className = "slider-handle min-slider-handle"; - sliderMinHandle.setAttribute('role', 'slider'); - sliderMinHandle.setAttribute('aria-valuemin', this.options.min); - sliderMinHandle.setAttribute('aria-valuemax', this.options.max); - - sliderMaxHandle = document.createElement("div"); - sliderMaxHandle.className = "slider-handle max-slider-handle"; - sliderMaxHandle.setAttribute('role', 'slider'); - sliderMaxHandle.setAttribute('aria-valuemin', this.options.min); - sliderMaxHandle.setAttribute('aria-valuemax', this.options.max); - - sliderTrack.appendChild(sliderTrackLow); - sliderTrack.appendChild(sliderTrackSelection); - sliderTrack.appendChild(sliderTrackHigh); - - /* Add aria-labelledby to handle's */ - var isLabelledbyArray = Array.isArray(this.options.labelledby); - if (isLabelledbyArray && this.options.labelledby[0]) { - sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]); - } - if (isLabelledbyArray && this.options.labelledby[1]) { - sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]); - } - if (!isLabelledbyArray && this.options.labelledby) { - sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby); - sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby); - } - - /* Create ticks */ - this.ticks = []; - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - for (i = 0; i < this.options.ticks.length; i++) { - var tick = document.createElement('div'); - tick.className = 'slider-tick'; - - this.ticks.push(tick); - sliderTrack.appendChild(tick); - } - - sliderTrackSelection.className += " tick-slider-selection"; - } - - sliderTrack.appendChild(sliderMinHandle); - sliderTrack.appendChild(sliderMaxHandle); - - this.tickLabels = []; - if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) { - this.tickLabelContainer = document.createElement('div'); - this.tickLabelContainer.className = 'slider-tick-label-container'; - - for (i = 0; i < this.options.ticks_labels.length; i++) { - var label = document.createElement('div'); - var noTickPositionsSpecified = this.options.ticks_positions.length === 0; - var tickLabelsIndex = (this.options.reversed && noTickPositionsSpecified) ? (this.options.ticks_labels.length - (i + 1)) : i; - label.className = 'slider-tick-label'; - label.innerHTML = this.options.ticks_labels[tickLabelsIndex]; - - this.tickLabels.push(label); - this.tickLabelContainer.appendChild(label); - } - } - - - var createAndAppendTooltipSubElements = function(tooltipElem) { - var arrow = document.createElement("div"); - arrow.className = "tooltip-arrow"; - - var inner = document.createElement("div"); - inner.className = "tooltip-inner"; - - tooltipElem.appendChild(arrow); - tooltipElem.appendChild(inner); - - }; - - /* Create tooltip elements */ - var sliderTooltip = document.createElement("div"); - sliderTooltip.className = "tooltip tooltip-main"; - sliderTooltip.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltip); - - var sliderTooltipMin = document.createElement("div"); - sliderTooltipMin.className = "tooltip tooltip-min"; - sliderTooltipMin.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltipMin); - - var sliderTooltipMax = document.createElement("div"); - sliderTooltipMax.className = "tooltip tooltip-max"; - sliderTooltipMax.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltipMax); - - - /* Append components to sliderElem */ - this.sliderElem.appendChild(sliderTrack); - this.sliderElem.appendChild(sliderTooltip); - this.sliderElem.appendChild(sliderTooltipMin); - this.sliderElem.appendChild(sliderTooltipMax); - - if (this.tickLabelContainer) { - this.sliderElem.appendChild(this.tickLabelContainer); - } - - /* Append slider element to parent container, right before the original element */ - parent.insertBefore(this.sliderElem, this.element); - - /* Hide original element */ - this.element.style.display = "none"; - } - /* If JQuery exists, cache JQ references */ - if($) { - this.$element = $(this.element); - this.$sliderElem = $(this.sliderElem); - } - - /************************************************* - - Setup - - **************************************************/ - this.eventToCallbackMap = {}; - this.sliderElem.id = this.options.id; - - this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch); - - this.tooltip = this.sliderElem.querySelector('.tooltip-main'); - this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); - - this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); - this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); - - this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); - this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner'); - - if (SliderScale[this.options.scale]) { - this.options.scale = SliderScale[this.options.scale]; - } - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.sliderElem, 'slider-horizontal'); - this._removeClass(this.sliderElem, 'slider-vertical'); - this._removeClass(this.tooltip, 'hide'); - this._removeClass(this.tooltip_min, 'hide'); - this._removeClass(this.tooltip_max, 'hide'); - - // Undo existing inline styles for track - ["left", "top", "width", "height"].forEach(function(prop) { - this._removeProperty(this.trackLow, prop); - this._removeProperty(this.trackSelection, prop); - this._removeProperty(this.trackHigh, prop); - }, this); - - // Undo inline styles on handles - [this.handle1, this.handle2].forEach(function(handle) { - this._removeProperty(handle, 'left'); - this._removeProperty(handle, 'top'); - }, this); - - // Undo inline styles and classes on tooltips - [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) { - this._removeProperty(tooltip, 'left'); - this._removeProperty(tooltip, 'top'); - this._removeProperty(tooltip, 'margin-left'); - this._removeProperty(tooltip, 'margin-top'); - - this._removeClass(tooltip, 'right'); - this._removeClass(tooltip, 'top'); - }, this); - } - - if(this.options.orientation === 'vertical') { - this._addClass(this.sliderElem,'slider-vertical'); - this.stylePos = 'top'; - this.mousePos = 'pageY'; - this.sizePos = 'offsetHeight'; - } else { - this._addClass(this.sliderElem, 'slider-horizontal'); - this.sliderElem.style.width = origWidth; - this.options.orientation = 'horizontal'; - this.stylePos = 'left'; - this.mousePos = 'pageX'; - this.sizePos = 'offsetWidth'; - - } - this._setTooltipPosition(); - /* In case ticks are specified, overwrite the min and max bounds */ - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - this.options.max = Math.max.apply(Math, this.options.ticks); - this.options.min = Math.min.apply(Math, this.options.ticks); - } - - if (Array.isArray(this.options.value)) { - this.options.range = true; - this._state.value = this.options.value; - } - else if (this.options.range) { - // User wants a range, but value is not an array - this._state.value = [this.options.value, this.options.max]; - } - else { - this._state.value = this.options.value; - } - - this.trackLow = sliderTrackLow || this.trackLow; - this.trackSelection = sliderTrackSelection || this.trackSelection; - this.trackHigh = sliderTrackHigh || this.trackHigh; - - if (this.options.selection === 'none') { - this._addClass(this.trackLow, 'hide'); - this._addClass(this.trackSelection, 'hide'); - this._addClass(this.trackHigh, 'hide'); - } - - this.handle1 = sliderMinHandle || this.handle1; - this.handle2 = sliderMaxHandle || this.handle2; - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.handle1, 'round triangle'); - this._removeClass(this.handle2, 'round triangle hide'); - - for (i = 0; i < this.ticks.length; i++) { - this._removeClass(this.ticks[i], 'round triangle hide'); - } - } - - var availableHandleModifiers = ['round', 'triangle', 'custom']; - var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; - if (isValidHandleType) { - this._addClass(this.handle1, this.options.handle); - this._addClass(this.handle2, this.options.handle); - - for (i = 0; i < this.ticks.length; i++) { - this._addClass(this.ticks[i], this.options.handle); - } - } - - this._state.offset = this._offset(this.sliderElem); - this._state.size = this.sliderElem[this.sizePos]; - this.setValue(this._state.value); - - /****************************************** - - Bind Event Listeners - - ******************************************/ - - // Bind keyboard handlers - this.handle1Keydown = this._keydown.bind(this, 0); - this.handle1.addEventListener("keydown", this.handle1Keydown, false); - - this.handle2Keydown = this._keydown.bind(this, 1); - this.handle2.addEventListener("keydown", this.handle2Keydown, false); - - this.mousedown = this._mousedown.bind(this); - if (this.touchCapable) { - // Bind touch handlers - this.sliderElem.addEventListener("touchstart", this.mousedown, false); - } - this.sliderElem.addEventListener("mousedown", this.mousedown, false); - - - // Bind tooltip-related handlers - if(this.options.tooltip === 'hide') { - this._addClass(this.tooltip, 'hide'); - this._addClass(this.tooltip_min, 'hide'); - this._addClass(this.tooltip_max, 'hide'); - } - else if(this.options.tooltip === 'always') { - this._showTooltip(); - this._alwaysShowTooltip = true; - } - else { - this.showTooltip = this._showTooltip.bind(this); - this.hideTooltip = this._hideTooltip.bind(this); - - this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); - this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); - - this.handle1.addEventListener("focus", this.showTooltip, false); - this.handle1.addEventListener("blur", this.hideTooltip, false); - - this.handle2.addEventListener("focus", this.showTooltip, false); - this.handle2.addEventListener("blur", this.hideTooltip, false); - } - - if(this.options.enabled) { - this.enable(); - } else { - this.disable(); - } - } - - - - /************************************************* - - INSTANCE PROPERTIES/METHODS - - - Any methods bound to the prototype are considered - part of the plugin's `public` interface - - **************************************************/ - Slider.prototype = { - _init: function() {}, // NOTE: Must exist to support bridget - - constructor: Slider, - - defaultOptions: { - id: "", - min: 0, - max: 10, - step: 1, - precision: 0, - orientation: 'horizontal', - value: 5, - range: false, - selection: 'before', - tooltip: 'show', - tooltip_split: false, - handle: 'round', - reversed: false, - enabled: true, - formatter: function(val) { - if (Array.isArray(val)) { - return val[0] + " : " + val[1]; - } else { - return val; - } - }, - natural_arrow_keys: false, - ticks: [], - ticks_positions: [], - ticks_labels: [], - ticks_snap_bounds: 0, - scale: 'linear', - focus: false, - tooltip_position: null, - labelledby: null - }, - - getElement: function() { - return this.sliderElem; - }, - - getValue: function() { - if (this.options.range) { - return this._state.value; - } - else { - return this._state.value[0]; - } - }, - - setValue: function(val, triggerSlideEvent, triggerChangeEvent) { - if (!val) { - val = 0; - } - var oldValue = this.getValue(); - this._state.value = this._validateInputValue(val); - var applyPrecision = this._applyPrecision.bind(this); - - if (this.options.range) { - this._state.value[0] = applyPrecision(this._state.value[0]); - this._state.value[1] = applyPrecision(this._state.value[1]); - - this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0])); - this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1])); - } - else { - this._state.value = applyPrecision(this._state.value); - this._state.value = [ Math.max(this.options.min, Math.min(this.options.max, this._state.value))]; - this._addClass(this.handle2, 'hide'); - if (this.options.selection === 'after') { - this._state.value[1] = this.options.max; - } else { - this._state.value[1] = this.options.min; - } - } - - if (this.options.max > this.options.min) { - this._state.percentage = [ - this._toPercentage(this._state.value[0]), - this._toPercentage(this._state.value[1]), - this.options.step * 100 / (this.options.max - this.options.min) - ]; - } else { - this._state.percentage = [0, 0, 100]; - } - - this._layout(); - var newValue = this.options.range ? this._state.value : this._state.value[0]; - - if(triggerSlideEvent === true) { - this._trigger('slide', newValue); - } - if( (oldValue !== newValue) && (triggerChangeEvent === true) ) { - this._trigger('change', { - oldValue: oldValue, - newValue: newValue - }); - } - this._setDataVal(newValue); - - return this; - }, - - destroy: function(){ - // Remove event handlers on slider elements - this._removeSliderEventHandlers(); - - // Remove the slider from the DOM - this.sliderElem.parentNode.removeChild(this.sliderElem); - /* Show original element */ - this.element.style.display = ""; - - // Clear out custom event bindings - this._cleanUpEventCallbacksMap(); - - // Remove data values - this.element.removeAttribute("data"); - - // Remove JQuery handlers/data - if($) { - this._unbindJQueryEventHandlers(); - this.$element.removeData('slider'); - } - }, - - disable: function() { - this._state.enabled = false; - this.handle1.removeAttribute("tabindex"); - this.handle2.removeAttribute("tabindex"); - this._addClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideDisabled'); - - return this; - }, - - enable: function() { - this._state.enabled = true; - this.handle1.setAttribute("tabindex", 0); - this.handle2.setAttribute("tabindex", 0); - this._removeClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideEnabled'); - - return this; - }, - - toggle: function() { - if(this._state.enabled) { - this.disable(); - } else { - this.enable(); - } - return this; - }, - - isEnabled: function() { - return this._state.enabled; - }, - - on: function(evt, callback) { - this._bindNonQueryEventHandler(evt, callback); - return this; - }, - - off: function(evt, callback) { - if($) { - this.$element.off(evt, callback); - this.$sliderElem.off(evt, callback); - } else { - this._unbindNonQueryEventHandler(evt, callback); - } - }, - - getAttribute: function(attribute) { - if(attribute) { - return this.options[attribute]; - } else { - return this.options; - } - }, - - setAttribute: function(attribute, value) { - this.options[attribute] = value; - return this; - }, - - refresh: function() { - this._removeSliderEventHandlers(); - createNewSlider.call(this, this.element, this.options); - if($) { - // Bind new instance of slider to the element - $.data(this.element, 'slider', this); - } - return this; - }, - - relayout: function() { - this._layout(); - return this; - }, - - /******************************+ - - HELPERS - - - Any method that is not part of the public interface. - - Place it underneath this comment block and write its signature like so: - - _fnName : function() {...} - - ********************************/ - _removeSliderEventHandlers: function() { - // Remove keydown event listeners - this.handle1.removeEventListener("keydown", this.handle1Keydown, false); - this.handle2.removeEventListener("keydown", this.handle2Keydown, false); - - if (this.showTooltip) { - this.handle1.removeEventListener("focus", this.showTooltip, false); - this.handle2.removeEventListener("focus", this.showTooltip, false); - } - if (this.hideTooltip) { - this.handle1.removeEventListener("blur", this.hideTooltip, false); - this.handle2.removeEventListener("blur", this.hideTooltip, false); - } - - // Remove event listeners from sliderElem - if (this.showTooltip) { - this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); - } - if (this.hideTooltip) { - this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); - } - this.sliderElem.removeEventListener("touchstart", this.mousedown, false); - this.sliderElem.removeEventListener("mousedown", this.mousedown, false); - }, - _bindNonQueryEventHandler: function(evt, callback) { - if(this.eventToCallbackMap[evt] === undefined) { - this.eventToCallbackMap[evt] = []; - } - this.eventToCallbackMap[evt].push(callback); - }, - _unbindNonQueryEventHandler: function(evt, callback) { - var callbacks = this.eventToCallbackMap[evt]; - if(callbacks !== undefined) { - for (var i = 0; i < callbacks.length; i++) { - if (callbacks[i] === callback) { - callbacks.splice(i, 1); - break; - } - } - } - }, - _cleanUpEventCallbacksMap: function() { - var eventNames = Object.keys(this.eventToCallbackMap); - for(var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - this.eventToCallbackMap[eventName] = null; - } - }, - _showTooltip: function() { - if (this.options.tooltip_split === false ){ - this._addClass(this.tooltip, 'in'); - this.tooltip_min.style.display = 'none'; - this.tooltip_max.style.display = 'none'; - } else { - this._addClass(this.tooltip_min, 'in'); - this._addClass(this.tooltip_max, 'in'); - this.tooltip.style.display = 'none'; - } - this._state.over = true; - }, - _hideTooltip: function() { - if (this._state.inDrag === false && this.alwaysShowTooltip !== true) { - this._removeClass(this.tooltip, 'in'); - this._removeClass(this.tooltip_min, 'in'); - this._removeClass(this.tooltip_max, 'in'); - } - this._state.over = false; - }, - _layout: function() { - var positionPercentages; - - if(this.options.reversed) { - positionPercentages = [ 100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]]; - } - else { - positionPercentages = [ this._state.percentage[0], this._state.percentage[1] ]; - } - - this.handle1.style[this.stylePos] = positionPercentages[0]+'%'; - this.handle1.setAttribute('aria-valuenow', this._state.value[0]); - - this.handle2.style[this.stylePos] = positionPercentages[1]+'%'; - this.handle2.setAttribute('aria-valuenow', this._state.value[1]); - - /* Position ticks and labels */ - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - - var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width'; - var styleMargin = this.options.orientation === 'vertical' ? 'marginTop' : 'marginLeft'; - var labelSize = this._state.size / (this.options.ticks.length - 1); - - if (this.tickLabelContainer) { - var extraMargin = 0; - if (this.options.ticks_positions.length === 0) { - if (this.options.orientation !== 'vertical') { - this.tickLabelContainer.style[styleMargin] = -labelSize/2 + 'px'; - } - - extraMargin = this.tickLabelContainer.offsetHeight; - } else { - /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */ - for (i = 0 ; i < this.tickLabelContainer.childNodes.length; i++) { - if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) { - extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight; - } - } - } - if (this.options.orientation === 'horizontal') { - this.sliderElem.style.marginBottom = extraMargin + 'px'; - } - } - for (var i = 0; i < this.options.ticks.length; i++) { - - var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]); - - if (this.options.reversed) { - percentage = 100 - percentage; - } - - this.ticks[i].style[this.stylePos] = percentage + '%'; - - /* Set class labels to denote whether ticks are in the selection */ - this._removeClass(this.ticks[i], 'in-selection'); - if (!this.options.range) { - if (this.options.selection === 'after' && percentage >= positionPercentages[0]){ - this._addClass(this.ticks[i], 'in-selection'); - } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { - this._addClass(this.ticks[i], 'in-selection'); - } - } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { - this._addClass(this.ticks[i], 'in-selection'); - } - - if (this.tickLabels[i]) { - this.tickLabels[i].style[styleSize] = labelSize + 'px'; - - if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) { - this.tickLabels[i].style.position = 'absolute'; - this.tickLabels[i].style[this.stylePos] = percentage + '%'; - this.tickLabels[i].style[styleMargin] = -labelSize/2 + 'px'; - } else if (this.options.orientation === 'vertical') { - this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + 'px'; - this.tickLabelContainer.style['marginTop'] = this.sliderElem.offsetWidth / 2 * -1 + 'px'; - } - } - } - } - - var formattedTooltipVal; - - if (this.options.range) { - formattedTooltipVal = this.options.formatter(this._state.value); - this._setText(this.tooltipInner, formattedTooltipVal); - this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - var innerTooltipMinText = this.options.formatter(this._state.value[0]); - this._setText(this.tooltipInner_min, innerTooltipMinText); - - var innerTooltipMaxText = this.options.formatter(this._state.value[1]); - this._setText(this.tooltipInner_max, innerTooltipMaxText); - - this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px'); - } - - this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px'); - } - } else { - formattedTooltipVal = this.options.formatter(this._state.value[0]); - this._setText(this.tooltipInner, formattedTooltipVal); - - this.tooltip.style[this.stylePos] = positionPercentages[0] + '%'; - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - } - - if (this.options.orientation === 'vertical') { - this.trackLow.style.top = '0'; - this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - - this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - - this.trackHigh.style.bottom = '0'; - this.trackHigh.style.height = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; - } - else { - this.trackLow.style.left = '0'; - this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - - this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - - this.trackHigh.style.right = '0'; - this.trackHigh.style.width = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; - - var offset_min = this.tooltip_min.getBoundingClientRect(); - var offset_max = this.tooltip_max.getBoundingClientRect(); - - if (offset_min.right > offset_max.left) { - this._removeClass(this.tooltip_max, 'top'); - this._addClass(this.tooltip_max, 'bottom'); - this.tooltip_max.style.top = 18 + 'px'; - } else { - this._removeClass(this.tooltip_max, 'bottom'); - this._addClass(this.tooltip_max, 'top'); - this.tooltip_max.style.top = this.tooltip_min.style.top; - } - } - }, - _removeProperty: function(element, prop) { - if (element.style.removeProperty) { - element.style.removeProperty(prop); - } else { - element.style.removeAttribute(prop); - } - }, - _mousedown: function(ev) { - if(!this._state.enabled) { - return false; - } - - this._state.offset = this._offset(this.sliderElem); - this._state.size = this.sliderElem[this.sizePos]; - - var percentage = this._getPercentage(ev); - - if (this.options.range) { - var diff1 = Math.abs(this._state.percentage[0] - percentage); - var diff2 = Math.abs(this._state.percentage[1] - percentage); - this._state.dragged = (diff1 < diff2) ? 0 : 1; - } else { - this._state.dragged = 0; - } - - this._state.percentage[this._state.dragged] = percentage; - this._layout(); - - if (this.touchCapable) { - document.removeEventListener("touchmove", this.mousemove, false); - document.removeEventListener("touchend", this.mouseup, false); - } - - if(this.mousemove){ - document.removeEventListener("mousemove", this.mousemove, false); - } - if(this.mouseup){ - document.removeEventListener("mouseup", this.mouseup, false); - } - - this.mousemove = this._mousemove.bind(this); - this.mouseup = this._mouseup.bind(this); - - if (this.touchCapable) { - // Touch: Bind touch events: - document.addEventListener("touchmove", this.mousemove, false); - document.addEventListener("touchend", this.mouseup, false); - } - // Bind mouse events: - document.addEventListener("mousemove", this.mousemove, false); - document.addEventListener("mouseup", this.mouseup, false); - - this._state.inDrag = true; - var newValue = this._calculateValue(); - - this._trigger('slideStart', newValue); - - this._setDataVal(newValue); - this.setValue(newValue, false, true); - - this._pauseEvent(ev); - - if (this.options.focus) { - this._triggerFocusOnHandle(this._state.dragged); - } - - return true; - }, - _triggerFocusOnHandle: function(handleIdx) { - if(handleIdx === 0) { - this.handle1.focus(); - } - if(handleIdx === 1) { - this.handle2.focus(); - } - }, - _keydown: function(handleIdx, ev) { - if(!this._state.enabled) { - return false; - } - - var dir; - switch (ev.keyCode) { - case 37: // left - case 40: // down - dir = -1; - break; - case 39: // right - case 38: // up - dir = 1; - break; - } - if (!dir) { - return; - } - - // use natural arrow keys instead of from min to max - if (this.options.natural_arrow_keys) { - var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed); - var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed); - - if (ifVerticalAndNotReversed || ifHorizontalAndReversed) { - dir = -dir; - } - } - - var val = this._state.value[handleIdx] + dir * this.options.step; - if (this.options.range) { - val = [ (!handleIdx) ? val : this._state.value[0], - ( handleIdx) ? val : this._state.value[1]]; - } - - this._trigger('slideStart', val); - this._setDataVal(val); - this.setValue(val, true, true); - - this._setDataVal(val); - this._trigger('slideStop', val); - this._layout(); - - this._pauseEvent(ev); - - return false; - }, - _pauseEvent: function(ev) { - if(ev.stopPropagation) { - ev.stopPropagation(); - } - if(ev.preventDefault) { - ev.preventDefault(); - } - ev.cancelBubble=true; - ev.returnValue=false; - }, - _mousemove: function(ev) { - if(!this._state.enabled) { - return false; - } - - var percentage = this._getPercentage(ev); - this._adjustPercentageForRangeSliders(percentage); - this._state.percentage[this._state.dragged] = percentage; - this._layout(); - - var val = this._calculateValue(true); - this.setValue(val, true, true); - - return false; - }, - _adjustPercentageForRangeSliders: function(percentage) { - if (this.options.range) { - var precision = this._getNumDigitsAfterDecimalPlace(percentage); - precision = precision ? precision - 1 : 0; - var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision); - if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) { - this._state.percentage[0] = this._state.percentage[1]; - this._state.dragged = 1; - } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) { - this._state.percentage[1] = this._state.percentage[0]; - this._state.dragged = 0; - } - } - }, - _mouseup: function() { - if(!this._state.enabled) { - return false; - } - if (this.touchCapable) { - // Touch: Unbind touch event handlers: - document.removeEventListener("touchmove", this.mousemove, false); - document.removeEventListener("touchend", this.mouseup, false); - } - // Unbind mouse event handlers: - document.removeEventListener("mousemove", this.mousemove, false); - document.removeEventListener("mouseup", this.mouseup, false); - - this._state.inDrag = false; - if (this._state.over === false) { - this._hideTooltip(); - } - var val = this._calculateValue(true); - - this._layout(); - this._setDataVal(val); - this._trigger('slideStop', val); - - return false; - }, - _calculateValue: function(snapToClosestTick) { - var val; - if (this.options.range) { - val = [this.options.min,this.options.max]; - if (this._state.percentage[0] !== 0){ - val[0] = this._toValue(this._state.percentage[0]); - val[0] = this._applyPrecision(val[0]); - } - if (this._state.percentage[1] !== 100){ - val[1] = this._toValue(this._state.percentage[1]); - val[1] = this._applyPrecision(val[1]); - } - } else { - val = this._toValue(this._state.percentage[0]); - val = parseFloat(val); - val = this._applyPrecision(val); - } - - if (snapToClosestTick) { - var min = [val, Infinity]; - for (var i = 0; i < this.options.ticks.length; i++) { - var diff = Math.abs(this.options.ticks[i] - val); - if (diff <= min[1]) { - min = [this.options.ticks[i], diff]; - } - } - if (min[1] <= this.options.ticks_snap_bounds) { - return min[0]; - } - } - - return val; - }, - _applyPrecision: function(val) { - var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step); - return this._applyToFixedAndParseFloat(val, precision); - }, - _getNumDigitsAfterDecimalPlace: function(num) { - var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); - if (!match) { return 0; } - return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); - }, - _applyToFixedAndParseFloat: function(num, toFixedInput) { - var truncatedNum = num.toFixed(toFixedInput); - return parseFloat(truncatedNum); - }, - /* - Credits to Mike Samuel for the following method! - Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number - */ - _getPercentage: function(ev) { - if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) { - ev = ev.touches[0]; - } - - var eventPosition = ev[this.mousePos]; - var sliderOffset = this._state.offset[this.stylePos]; - var distanceToSlide = eventPosition - sliderOffset; - // Calculate what percent of the length the slider handle has slid - var percentage = (distanceToSlide / this._state.size) * 100; - percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2]; - if (this.options.reversed) { - percentage = 100 - percentage; - } - - // Make sure the percent is within the bounds of the slider. - // 0% corresponds to the 'min' value of the slide - // 100% corresponds to the 'max' value of the slide - return Math.max(0, Math.min(100, percentage)); - }, - _validateInputValue: function(val) { - if (typeof val === 'number') { - return val; - } else if (Array.isArray(val)) { - this._validateArray(val); - return val; - } else { - throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) ); - } - }, - _validateArray: function(val) { - for(var i = 0; i < val.length; i++) { - var input = val[i]; - if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); } - } - }, - _setDataVal: function(val) { - this.element.setAttribute('data-value', val); - this.element.setAttribute('value', val); - this.element.value = val; - }, - _trigger: function(evt, val) { - val = (val || val === 0) ? val : undefined; - - var callbackFnArray = this.eventToCallbackMap[evt]; - if(callbackFnArray && callbackFnArray.length) { - for(var i = 0; i < callbackFnArray.length; i++) { - var callbackFn = callbackFnArray[i]; - callbackFn(val); - } - } - - /* If JQuery exists, trigger JQuery events */ - if($) { - this._triggerJQueryEvent(evt, val); - } - }, - _triggerJQueryEvent: function(evt, val) { - var eventData = { - type: evt, - value: val - }; - this.$element.trigger(eventData); - this.$sliderElem.trigger(eventData); - }, - _unbindJQueryEventHandlers: function() { - this.$element.off(); - this.$sliderElem.off(); - }, - _setText: function(element, text) { - if(typeof element.innerText !== "undefined") { - element.innerText = text; - } else if(typeof element.textContent !== "undefined") { - element.textContent = text; - } - }, - _removeClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - newClasses = newClasses.replace(regex, " "); - } - - element.className = newClasses.trim(); - }, - _addClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - var ifClassExists = regex.test(newClasses); - - if(!ifClassExists) { - newClasses += " " + classTag; - } - } - - element.className = newClasses.trim(); - }, - _offsetLeft: function(obj){ - return obj.getBoundingClientRect().left; - }, - _offsetTop: function(obj){ - var offsetTop = obj.offsetTop; - while((obj = obj.offsetParent) && !isNaN(obj.offsetTop)){ - offsetTop += obj.offsetTop; - } - return offsetTop; - }, - _offset: function (obj) { - return { - left: this._offsetLeft(obj), - top: this._offsetTop(obj) - }; - }, - _css: function(elementRef, styleName, value) { - if ($) { - $.style(elementRef, styleName, value); - } else { - var style = styleName.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function (all, letter) { - return letter.toUpperCase(); - }); - elementRef.style[style] = value; - } - }, - _toValue: function(percentage) { - return this.options.scale.toValue.apply(this, [percentage]); - }, - _toPercentage: function(value) { - return this.options.scale.toPercentage.apply(this, [value]); - }, - _setTooltipPosition: function(){ - var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max]; - if (this.options.orientation === 'vertical'){ - var tooltipPos = this.options.tooltip_position || 'right'; - var oppositeSide = (tooltipPos === 'left') ? 'right' : 'left'; - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, tooltipPos); - tooltip.style[oppositeSide] = '100%'; - }.bind(this)); - } else if(this.options.tooltip_position === 'bottom') { - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, 'bottom'); - tooltip.style.top = 22 + 'px'; - }.bind(this)); - } else { - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, 'top'); - tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; - }.bind(this)); - } - } - }; - - /********************************* - - Attach to global namespace - - *********************************/ - if($) { - var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider'; - $.bridget(namespace, Slider); - } - - })( $ ); - - return Slider; -})); diff --git a/app/static/adminlte2/plugins/bootstrap-slider/slider.css b/app/static/adminlte2/plugins/bootstrap-slider/slider.css deleted file mode 100644 index 3a64928..0000000 --- a/app/static/adminlte2/plugins/bootstrap-slider/slider.css +++ /dev/null @@ -1,282 +0,0 @@ -/*! - * Slider for Bootstrap - * - * Copyright 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.slider { - display: block; - vertical-align: middle; - position: relative; - -} -.slider.slider-horizontal { - width: 100%; - height: 20px; - margin-bottom: 20px; -} -.slider.slider-horizontal:last-of-type { - margin-bottom: 0; -} -.slider.slider-horizontal .slider-track { - height: 10px; - width: 100%; - margin-top: -5px; - top: 50%; - left: 0; -} -.slider.slider-horizontal .slider-selection, -.slider.slider-horizontal .slider-track-low, -.slider.slider-horizontal .slider-track-high { - height: 100%; - top: 0; - bottom: 0; -} -.slider.slider-horizontal .slider-tick, -.slider.slider-horizontal .slider-handle { - margin-left: -10px; - margin-top: -5px; -} -.slider.slider-horizontal .slider-tick.triangle, -.slider.slider-horizontal .slider-handle.triangle { - border-width: 0 10px 10px 10px; - width: 0; - height: 0; - border-bottom-color: #0480be; - margin-top: 0; -} -.slider.slider-horizontal .slider-tick-label-container { - white-space: nowrap; - margin-top: 20px; -} -.slider.slider-horizontal .slider-tick-label-container .slider-tick-label { - padding-top: 4px; - display: inline-block; - text-align: center; -} -.slider.slider-vertical { - height: 230px; - width: 20px; - margin-right: 20px; - display: inline-block; -} -.slider.slider-vertical:last-of-type { - margin-right: 0; -} -.slider.slider-vertical .slider-track { - width: 10px; - height: 100%; - margin-left: -5px; - left: 50%; - top: 0; -} -.slider.slider-vertical .slider-selection { - width: 100%; - left: 0; - top: 0; - bottom: 0; -} -.slider.slider-vertical .slider-track-low, -.slider.slider-vertical .slider-track-high { - width: 100%; - left: 0; - right: 0; -} -.slider.slider-vertical .slider-tick, -.slider.slider-vertical .slider-handle { - margin-left: -5px; - margin-top: -10px; -} -.slider.slider-vertical .slider-tick.triangle, -.slider.slider-vertical .slider-handle.triangle { - border-width: 10px 0 10px 10px; - width: 1px; - height: 1px; - border-left-color: #0480be; - margin-left: 0; -} -.slider.slider-vertical .slider-tick-label-container { - white-space: nowrap; -} -.slider.slider-vertical .slider-tick-label-container .slider-tick-label { - padding-left: 4px; -} -.slider.slider-disabled .slider-handle { - background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); - background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); - background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0); -} -.slider.slider-disabled .slider-track { - background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); - background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); - background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0); - cursor: not-allowed; -} -.slider input { - display: none; -} -.slider .tooltip.top { - margin-top: -36px; -} -.slider .tooltip-inner { - white-space: nowrap; -} -.slider .hide { - display: none; -} -.slider-track { - position: absolute; - cursor: pointer; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-selection { - position: absolute; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-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-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-selection.tick-slider-selection { - background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); -} -.slider-track-low, -.slider-track-high { - position: absolute; - background: transparent; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 4px; -} -.slider-handle { - position: absolute; - width: 20px; - height: 20px; - background-color: #444; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - opacity: 1; - border: 0px solid transparent; -} -.slider-handle.round { - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; -} -.slider-handle.triangle { - background: transparent none; -} -.slider-handle.custom { - background: transparent none; -} -.slider-handle.custom::before { - line-height: 20px; - font-size: 20px; - content: '\2605'; - color: #726204; -} -.slider-tick { - position: absolute; - width: 20px; - height: 20px; - background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); - background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); - -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-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - filter: none; - opacity: 0.8; - border: 0px solid transparent; -} -.slider-tick.round { - border-radius: 50%; -} -.slider-tick.triangle { - background: transparent none; -} -.slider-tick.custom { - background: transparent none; -} -.slider-tick.custom::before { - line-height: 20px; - font-size: 20px; - content: '\2605'; - color: #726204; -} -.slider-tick.in-selection { - background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); - opacity: 1; -} -.slider-disabled .slider-selection { - opacity: 0.5; -} - -#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; -} \ No newline at end of file diff --git a/app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js b/app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js deleted file mode 100644 index acccf91..0000000 --- a/app/static/adminlte2/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js +++ /dev/null @@ -1,14975 +0,0 @@ -// TODO: in future try to replace most inline compability checks with polyfills for code readability - -// element.textContent polyfill. -// Unsupporting browsers: IE8 - -if (Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(Element.prototype, "textContent") && !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) { - (function() { - var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText"); - Object.defineProperty(Element.prototype, "textContent", - { - get: function() { - return innerText.get.call(this); - }, - set: function(s) { - return innerText.set.call(this, s); - } - } - ); - })(); -} - -// isArray polyfill for ie8 -if(!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -};/** - * @license wysihtml5x v0.4.15 - * https://github.com/Edicy/wysihtml5 - * - * Author: Christopher Blum (https://github.com/tiff) - * Secondary author of extended features: Oliver Pulges (https://github.com/pulges) - * - * Copyright (C) 2012 XING AG - * Licensed under the MIT license (MIT) - * - */ -var wysihtml5 = { - version: "0.4.15", - - // namespaces - commands: {}, - dom: {}, - quirks: {}, - toolbar: {}, - lang: {}, - selection: {}, - views: {}, - - INVISIBLE_SPACE: "\uFEFF", - - EMPTY_FUNCTION: function() {}, - - ELEMENT_NODE: 1, - TEXT_NODE: 3, - - BACKSPACE_KEY: 8, - ENTER_KEY: 13, - ESCAPE_KEY: 27, - SPACE_KEY: 32, - DELETE_KEY: 46 -}; -;/** - * Rangy, a cross-browser JavaScript range and selection library - * http://code.google.com/p/rangy/ - * - * Copyright 2014, Tim Down - * Licensed under the MIT license. - * Version: 1.3alpha.20140804 - * Build date: 4 August 2014 - */ - -(function(factory, global) { - if (typeof define == "function" && define.amd) { - // AMD. Register as an anonymous module. - define(factory); -/* - TODO: look into this properly. - - } else if (typeof exports == "object") { - // Node/CommonJS style for Browserify - module.exports = factory; -*/ - } else { - // No AMD or CommonJS support so we place Rangy in a global variable - global.rangy = factory(); - } -})(function() { - - var OBJECT = "object", FUNCTION = "function", UNDEFINED = "undefined"; - - // Minimal set of properties required for DOM Level 2 Range compliance. Comparison constants such as START_TO_START - // are omitted because ranges in KHTML do not have them but otherwise work perfectly well. See issue 113. - var domRangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", - "commonAncestorContainer"]; - - // Minimal set of methods required for DOM Level 2 Range compliance - var domRangeMethods = ["setStart", "setStartBefore", "setStartAfter", "setEnd", "setEndBefore", - "setEndAfter", "collapse", "selectNode", "selectNodeContents", "compareBoundaryPoints", "deleteContents", - "extractContents", "cloneContents", "insertNode", "surroundContents", "cloneRange", "toString", "detach"]; - - var textRangeProperties = ["boundingHeight", "boundingLeft", "boundingTop", "boundingWidth", "htmlText", "text"]; - - // Subset of TextRange's full set of methods that we're interested in - var textRangeMethods = ["collapse", "compareEndPoints", "duplicate", "moveToElementText", "parentElement", "select", - "setEndPoint", "getBoundingClientRect"]; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Trio of functions taken from Peter Michaux's article: - // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting - function isHostMethod(o, p) { - var t = typeof o[p]; - return t == FUNCTION || (!!(t == OBJECT && o[p])) || t == "unknown"; - } - - function isHostObject(o, p) { - return !!(typeof o[p] == OBJECT && o[p]); - } - - function isHostProperty(o, p) { - return typeof o[p] != UNDEFINED; - } - - // Creates a convenience function to save verbose repeated calls to tests functions - function createMultiplePropertyTest(testFunc) { - return function(o, props) { - var i = props.length; - while (i--) { - if (!testFunc(o, props[i])) { - return false; - } - } - return true; - }; - } - - // Next trio of functions are a convenience to save verbose repeated calls to previous two functions - var areHostMethods = createMultiplePropertyTest(isHostMethod); - var areHostObjects = createMultiplePropertyTest(isHostObject); - var areHostProperties = createMultiplePropertyTest(isHostProperty); - - function isTextRange(range) { - return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties); - } - - function getBody(doc) { - return isHostObject(doc, "body") ? doc.body : doc.getElementsByTagName("body")[0]; - } - - var modules = {}; - - var api = { - version: "1.3alpha.20140804", - initialized: false, - supported: true, - - util: { - isHostMethod: isHostMethod, - isHostObject: isHostObject, - isHostProperty: isHostProperty, - areHostMethods: areHostMethods, - areHostObjects: areHostObjects, - areHostProperties: areHostProperties, - isTextRange: isTextRange, - getBody: getBody - }, - - features: {}, - - modules: modules, - config: { - alertOnFail: true, - alertOnWarn: false, - preferTextRange: false, - autoInitialize: (typeof rangyAutoInitialize == UNDEFINED) ? true : rangyAutoInitialize - } - }; - - function consoleLog(msg) { - if (isHostObject(window, "console") && isHostMethod(window.console, "log")) { - window.console.log(msg); - } - } - - function alertOrLog(msg, shouldAlert) { - if (shouldAlert) { - window.alert(msg); - } else { - consoleLog(msg); - } - } - - function fail(reason) { - api.initialized = true; - api.supported = false; - alertOrLog("Rangy is not supported on this page in your browser. Reason: " + reason, api.config.alertOnFail); - } - - api.fail = fail; - - function warn(msg) { - alertOrLog("Rangy warning: " + msg, api.config.alertOnWarn); - } - - api.warn = warn; - - // Add utility extend() method - if ({}.hasOwnProperty) { - api.util.extend = function(obj, props, deep) { - var o, p; - for (var i in props) { - if (props.hasOwnProperty(i)) { - o = obj[i]; - p = props[i]; - if (deep && o !== null && typeof o == "object" && p !== null && typeof p == "object") { - api.util.extend(o, p, true); - } - obj[i] = p; - } - } - // Special case for toString, which does not show up in for...in loops in IE <= 8 - if (props.hasOwnProperty("toString")) { - obj.toString = props.toString; - } - return obj; - }; - } else { - fail("hasOwnProperty not supported"); - } - - // Test whether Array.prototype.slice can be relied on for NodeLists and use an alternative toArray() if not - (function() { - var el = document.createElement("div"); - el.appendChild(document.createElement("span")); - var slice = [].slice; - var toArray; - try { - if (slice.call(el.childNodes, 0)[0].nodeType == 1) { - toArray = function(arrayLike) { - return slice.call(arrayLike, 0); - }; - } - } catch (e) {} - - if (!toArray) { - toArray = function(arrayLike) { - var arr = []; - for (var i = 0, len = arrayLike.length; i < len; ++i) { - arr[i] = arrayLike[i]; - } - return arr; - }; - } - - api.util.toArray = toArray; - })(); - - - // Very simple event handler wrapper function that doesn't attempt to solve issues such as "this" handling or - // normalization of event properties - var addListener; - if (isHostMethod(document, "addEventListener")) { - addListener = function(obj, eventType, listener) { - obj.addEventListener(eventType, listener, false); - }; - } else if (isHostMethod(document, "attachEvent")) { - addListener = function(obj, eventType, listener) { - obj.attachEvent("on" + eventType, listener); - }; - } else { - fail("Document does not have required addEventListener or attachEvent method"); - } - - api.util.addListener = addListener; - - var initListeners = []; - - function getErrorDesc(ex) { - return ex.message || ex.description || String(ex); - } - - // Initialization - function init() { - if (api.initialized) { - return; - } - var testRange; - var implementsDomRange = false, implementsTextRange = false; - - // First, perform basic feature tests - - if (isHostMethod(document, "createRange")) { - testRange = document.createRange(); - if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) { - implementsDomRange = true; - } - } - - var body = getBody(document); - if (!body || body.nodeName.toLowerCase() != "body") { - fail("No body element found"); - return; - } - - if (body && isHostMethod(body, "createTextRange")) { - testRange = body.createTextRange(); - if (isTextRange(testRange)) { - implementsTextRange = true; - } - } - - if (!implementsDomRange && !implementsTextRange) { - fail("Neither Range nor TextRange are available"); - return; - } - - api.initialized = true; - api.features = { - implementsDomRange: implementsDomRange, - implementsTextRange: implementsTextRange - }; - - // Initialize modules - var module, errorMessage; - for (var moduleName in modules) { - if ( (module = modules[moduleName]) instanceof Module ) { - module.init(module, api); - } - } - - // Call init listeners - for (var i = 0, len = initListeners.length; i < len; ++i) { - try { - initListeners[i](api); - } catch (ex) { - errorMessage = "Rangy init listener threw an exception. Continuing. Detail: " + getErrorDesc(ex); - consoleLog(errorMessage); - } - } - } - - // Allow external scripts to initialize this library in case it's loaded after the document has loaded - api.init = init; - - // Execute listener immediately if already initialized - api.addInitListener = function(listener) { - if (api.initialized) { - listener(api); - } else { - initListeners.push(listener); - } - }; - - var shimListeners = []; - - api.addShimListener = function(listener) { - shimListeners.push(listener); - }; - - function shim(win) { - win = win || window; - init(); - - // Notify listeners - for (var i = 0, len = shimListeners.length; i < len; ++i) { - shimListeners[i](win); - } - } - - api.shim = api.createMissingNativeApi = shim; - - function Module(name, dependencies, initializer) { - this.name = name; - this.dependencies = dependencies; - this.initialized = false; - this.supported = false; - this.initializer = initializer; - } - - Module.prototype = { - init: function() { - var requiredModuleNames = this.dependencies || []; - for (var i = 0, len = requiredModuleNames.length, requiredModule, moduleName; i < len; ++i) { - moduleName = requiredModuleNames[i]; - - requiredModule = modules[moduleName]; - if (!requiredModule || !(requiredModule instanceof Module)) { - throw new Error("required module '" + moduleName + "' not found"); - } - - requiredModule.init(); - - if (!requiredModule.supported) { - throw new Error("required module '" + moduleName + "' not supported"); - } - } - - // Now run initializer - this.initializer(this); - }, - - fail: function(reason) { - this.initialized = true; - this.supported = false; - throw new Error("Module '" + this.name + "' failed to load: " + reason); - }, - - warn: function(msg) { - api.warn("Module " + this.name + ": " + msg); - }, - - deprecationNotice: function(deprecated, replacement) { - api.warn("DEPRECATED: " + deprecated + " in module " + this.name + "is deprecated. Please use " + - replacement + " instead"); - }, - - createError: function(msg) { - return new Error("Error in Rangy " + this.name + " module: " + msg); - } - }; - - function createModule(isCore, name, dependencies, initFunc) { - var newModule = new Module(name, dependencies, function(module) { - if (!module.initialized) { - module.initialized = true; - try { - initFunc(api, module); - module.supported = true; - } catch (ex) { - var errorMessage = "Module '" + name + "' failed to load: " + getErrorDesc(ex); - consoleLog(errorMessage); - } - } - }); - modules[name] = newModule; - } - - api.createModule = function(name) { - // Allow 2 or 3 arguments (second argument is an optional array of dependencies) - var initFunc, dependencies; - if (arguments.length == 2) { - initFunc = arguments[1]; - dependencies = []; - } else { - initFunc = arguments[2]; - dependencies = arguments[1]; - } - - var module = createModule(false, name, dependencies, initFunc); - - // Initialize the module immediately if the core is already initialized - if (api.initialized) { - module.init(); - } - }; - - api.createCoreModule = function(name, dependencies, initFunc) { - createModule(true, name, dependencies, initFunc); - }; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Ensure rangy.rangePrototype and rangy.selectionPrototype are available immediately - - function RangePrototype() {} - api.RangePrototype = RangePrototype; - api.rangePrototype = new RangePrototype(); - - function SelectionPrototype() {} - api.selectionPrototype = new SelectionPrototype(); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Wait for document to load before running tests - - var docReady = false; - - var loadHandler = function(e) { - if (!docReady) { - docReady = true; - if (!api.initialized && api.config.autoInitialize) { - init(); - } - } - }; - - // Test whether we have window and document objects that we will need - if (typeof window == UNDEFINED) { - fail("No window found"); - return; - } - if (typeof document == UNDEFINED) { - fail("No document found"); - return; - } - - if (isHostMethod(document, "addEventListener")) { - document.addEventListener("DOMContentLoaded", loadHandler, false); - } - - // Add a fallback in case the DOMContentLoaded event isn't supported - addListener(window, "load", loadHandler); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // DOM utility methods used by Rangy - api.createCoreModule("DomUtil", [], function(api, module) { - var UNDEF = "undefined"; - var util = api.util; - - // Perform feature tests - if (!util.areHostMethods(document, ["createDocumentFragment", "createElement", "createTextNode"])) { - module.fail("document missing a Node creation method"); - } - - if (!util.isHostMethod(document, "getElementsByTagName")) { - module.fail("document missing getElementsByTagName method"); - } - - var el = document.createElement("div"); - if (!util.areHostMethods(el, ["insertBefore", "appendChild", "cloneNode"] || - !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]))) { - module.fail("Incomplete Element implementation"); - } - - // innerHTML is required for Range's createContextualFragment method - if (!util.isHostProperty(el, "innerHTML")) { - module.fail("Element is missing innerHTML property"); - } - - var textNode = document.createTextNode("test"); - if (!util.areHostMethods(textNode, ["splitText", "deleteData", "insertData", "appendData", "cloneNode"] || - !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]) || - !util.areHostProperties(textNode, ["data"]))) { - module.fail("Incomplete Text Node implementation"); - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been - // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that - // contains just the document as a single element and the value searched for is the document. - var arrayContains = /*Array.prototype.indexOf ? - function(arr, val) { - return arr.indexOf(val) > -1; - }:*/ - - function(arr, val) { - var i = arr.length; - while (i--) { - if (arr[i] === val) { - return true; - } - } - return false; - }; - - // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI - function isHtmlNamespace(node) { - var ns; - return typeof node.namespaceURI == UNDEF || ((ns = node.namespaceURI) === null || ns == "http://www.w3.org/1999/xhtml"); - } - - function parentElement(node) { - var parent = node.parentNode; - return (parent.nodeType == 1) ? parent : null; - } - - function getNodeIndex(node) { - var i = 0; - while( (node = node.previousSibling) ) { - ++i; - } - return i; - } - - function getNodeLength(node) { - switch (node.nodeType) { - case 7: - case 10: - return 0; - case 3: - case 8: - return node.length; - default: - return node.childNodes.length; - } - } - - function getCommonAncestor(node1, node2) { - var ancestors = [], n; - for (n = node1; n; n = n.parentNode) { - ancestors.push(n); - } - - for (n = node2; n; n = n.parentNode) { - if (arrayContains(ancestors, n)) { - return n; - } - } - - return null; - } - - function isAncestorOf(ancestor, descendant, selfIsAncestor) { - var n = selfIsAncestor ? descendant : descendant.parentNode; - while (n) { - if (n === ancestor) { - return true; - } else { - n = n.parentNode; - } - } - return false; - } - - function isOrIsAncestorOf(ancestor, descendant) { - return isAncestorOf(ancestor, descendant, true); - } - - function getClosestAncestorIn(node, ancestor, selfIsAncestor) { - var p, n = selfIsAncestor ? node : node.parentNode; - while (n) { - p = n.parentNode; - if (p === ancestor) { - return n; - } - n = p; - } - return null; - } - - function isCharacterDataNode(node) { - var t = node.nodeType; - return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment - } - - function isTextOrCommentNode(node) { - if (!node) { - return false; - } - var t = node.nodeType; - return t == 3 || t == 8 ; // Text or Comment - } - - function insertAfter(node, precedingNode) { - var nextNode = precedingNode.nextSibling, parent = precedingNode.parentNode; - if (nextNode) { - parent.insertBefore(node, nextNode); - } else { - parent.appendChild(node); - } - return node; - } - - // Note that we cannot use splitText() because it is bugridden in IE 9. - function splitDataNode(node, index, positionsToPreserve) { - var newNode = node.cloneNode(false); - newNode.deleteData(0, index); - node.deleteData(index, node.length - index); - insertAfter(newNode, node); - - // Preserve positions - if (positionsToPreserve) { - for (var i = 0, position; position = positionsToPreserve[i++]; ) { - // Handle case where position was inside the portion of node after the split point - if (position.node == node && position.offset > index) { - position.node = newNode; - position.offset -= index; - } - // Handle the case where the position is a node offset within node's parent - else if (position.node == node.parentNode && position.offset > getNodeIndex(node)) { - ++position.offset; - } - } - } - return newNode; - } - - function getDocument(node) { - if (node.nodeType == 9) { - return node; - } else if (typeof node.ownerDocument != UNDEF) { - return node.ownerDocument; - } else if (typeof node.document != UNDEF) { - return node.document; - } else if (node.parentNode) { - return getDocument(node.parentNode); - } else { - throw module.createError("getDocument: no document found for node"); - } - } - - function getWindow(node) { - var doc = getDocument(node); - if (typeof doc.defaultView != UNDEF) { - return doc.defaultView; - } else if (typeof doc.parentWindow != UNDEF) { - return doc.parentWindow; - } else { - throw module.createError("Cannot get a window object for node"); - } - } - - function getIframeDocument(iframeEl) { - if (typeof iframeEl.contentDocument != UNDEF) { - return iframeEl.contentDocument; - } else if (typeof iframeEl.contentWindow != UNDEF) { - return iframeEl.contentWindow.document; - } else { - throw module.createError("getIframeDocument: No Document object found for iframe element"); - } - } - - function getIframeWindow(iframeEl) { - if (typeof iframeEl.contentWindow != UNDEF) { - return iframeEl.contentWindow; - } else if (typeof iframeEl.contentDocument != UNDEF) { - return iframeEl.contentDocument.defaultView; - } else { - throw module.createError("getIframeWindow: No Window object found for iframe element"); - } - } - - // This looks bad. Is it worth it? - function isWindow(obj) { - return obj && util.isHostMethod(obj, "setTimeout") && util.isHostObject(obj, "document"); - } - - function getContentDocument(obj, module, methodName) { - var doc; - - if (!obj) { - doc = document; - } - - // Test if a DOM node has been passed and obtain a document object for it if so - else if (util.isHostProperty(obj, "nodeType")) { - doc = (obj.nodeType == 1 && obj.tagName.toLowerCase() == "iframe") ? - getIframeDocument(obj) : getDocument(obj); - } - - // Test if the doc parameter appears to be a Window object - else if (isWindow(obj)) { - doc = obj.document; - } - - if (!doc) { - throw module.createError(methodName + "(): Parameter must be a Window object or DOM node"); - } - - return doc; - } - - function getRootContainer(node) { - var parent; - while ( (parent = node.parentNode) ) { - node = parent; - } - return node; - } - - function comparePoints(nodeA, offsetA, nodeB, offsetB) { - // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing - var nodeC, root, childA, childB, n; - if (nodeA == nodeB) { - // Case 1: nodes are the same - return offsetA === offsetB ? 0 : (offsetA < offsetB) ? -1 : 1; - } else if ( (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) ) { - // Case 2: node C (container B or an ancestor) is a child node of A - return offsetA <= getNodeIndex(nodeC) ? -1 : 1; - } else if ( (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) ) { - // Case 3: node C (container A or an ancestor) is a child node of B - return getNodeIndex(nodeC) < offsetB ? -1 : 1; - } else { - root = getCommonAncestor(nodeA, nodeB); - if (!root) { - throw new Error("comparePoints error: nodes have no common ancestor"); - } - - // Case 4: containers are siblings or descendants of siblings - childA = (nodeA === root) ? root : getClosestAncestorIn(nodeA, root, true); - childB = (nodeB === root) ? root : getClosestAncestorIn(nodeB, root, true); - - if (childA === childB) { - // This shouldn't be possible - throw module.createError("comparePoints got to case 4 and childA and childB are the same!"); - } else { - n = root.firstChild; - while (n) { - if (n === childA) { - return -1; - } else if (n === childB) { - return 1; - } - n = n.nextSibling; - } - } - } - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Test for IE's crash (IE 6/7) or exception (IE >= 8) when a reference to garbage-collected text node is queried - var crashyTextNodes = false; - - function isBrokenNode(node) { - var n; - try { - n = node.parentNode; - return false; - } catch (e) { - return true; - } - } - - (function() { - var el = document.createElement("b"); - el.innerHTML = "1"; - var textNode = el.firstChild; - el.innerHTML = "
      "; - crashyTextNodes = isBrokenNode(textNode); - - api.features.crashyTextNodes = crashyTextNodes; - })(); - - /*----------------------------------------------------------------------------------------------------------------*/ - - function inspectNode(node) { - if (!node) { - return "[No node]"; - } - if (crashyTextNodes && isBrokenNode(node)) { - return "[Broken node]"; - } - if (isCharacterDataNode(node)) { - return '"' + node.data + '"'; - } - if (node.nodeType == 1) { - var idAttr = node.id ? ' id="' + node.id + '"' : ""; - return "<" + node.nodeName + idAttr + ">[index:" + getNodeIndex(node) + ",length:" + node.childNodes.length + "][" + (node.innerHTML || "[innerHTML not supported]").slice(0, 25) + "]"; - } - return node.nodeName; - } - - function fragmentFromNodeChildren(node) { - var fragment = getDocument(node).createDocumentFragment(), child; - while ( (child = node.firstChild) ) { - fragment.appendChild(child); - } - return fragment; - } - - var getComputedStyleProperty; - if (typeof window.getComputedStyle != UNDEF) { - getComputedStyleProperty = function(el, propName) { - return getWindow(el).getComputedStyle(el, null)[propName]; - }; - } else if (typeof document.documentElement.currentStyle != UNDEF) { - getComputedStyleProperty = function(el, propName) { - return el.currentStyle[propName]; - }; - } else { - module.fail("No means of obtaining computed style properties found"); - } - - function NodeIterator(root) { - this.root = root; - this._next = root; - } - - NodeIterator.prototype = { - _current: null, - - hasNext: function() { - return !!this._next; - }, - - next: function() { - var n = this._current = this._next; - var child, next; - if (this._current) { - child = n.firstChild; - if (child) { - this._next = child; - } else { - next = null; - while ((n !== this.root) && !(next = n.nextSibling)) { - n = n.parentNode; - } - this._next = next; - } - } - return this._current; - }, - - detach: function() { - this._current = this._next = this.root = null; - } - }; - - function createIterator(root) { - return new NodeIterator(root); - } - - function DomPosition(node, offset) { - this.node = node; - this.offset = offset; - } - - DomPosition.prototype = { - equals: function(pos) { - return !!pos && this.node === pos.node && this.offset == pos.offset; - }, - - inspect: function() { - return "[DomPosition(" + inspectNode(this.node) + ":" + this.offset + ")]"; - }, - - toString: function() { - return this.inspect(); - } - }; - - function DOMException(codeName) { - this.code = this[codeName]; - this.codeName = codeName; - this.message = "DOMException: " + this.codeName; - } - - DOMException.prototype = { - INDEX_SIZE_ERR: 1, - HIERARCHY_REQUEST_ERR: 3, - WRONG_DOCUMENT_ERR: 4, - NO_MODIFICATION_ALLOWED_ERR: 7, - NOT_FOUND_ERR: 8, - NOT_SUPPORTED_ERR: 9, - INVALID_STATE_ERR: 11, - INVALID_NODE_TYPE_ERR: 24 - }; - - DOMException.prototype.toString = function() { - return this.message; - }; - - api.dom = { - arrayContains: arrayContains, - isHtmlNamespace: isHtmlNamespace, - parentElement: parentElement, - getNodeIndex: getNodeIndex, - getNodeLength: getNodeLength, - getCommonAncestor: getCommonAncestor, - isAncestorOf: isAncestorOf, - isOrIsAncestorOf: isOrIsAncestorOf, - getClosestAncestorIn: getClosestAncestorIn, - isCharacterDataNode: isCharacterDataNode, - isTextOrCommentNode: isTextOrCommentNode, - insertAfter: insertAfter, - splitDataNode: splitDataNode, - getDocument: getDocument, - getWindow: getWindow, - getIframeWindow: getIframeWindow, - getIframeDocument: getIframeDocument, - getBody: util.getBody, - isWindow: isWindow, - getContentDocument: getContentDocument, - getRootContainer: getRootContainer, - comparePoints: comparePoints, - isBrokenNode: isBrokenNode, - inspectNode: inspectNode, - getComputedStyleProperty: getComputedStyleProperty, - fragmentFromNodeChildren: fragmentFromNodeChildren, - createIterator: createIterator, - DomPosition: DomPosition - }; - - api.DOMException = DOMException; - }); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Pure JavaScript implementation of DOM Range - api.createCoreModule("DomRange", ["DomUtil"], function(api, module) { - var dom = api.dom; - var util = api.util; - var DomPosition = dom.DomPosition; - var DOMException = api.DOMException; - - var isCharacterDataNode = dom.isCharacterDataNode; - var getNodeIndex = dom.getNodeIndex; - var isOrIsAncestorOf = dom.isOrIsAncestorOf; - var getDocument = dom.getDocument; - var comparePoints = dom.comparePoints; - var splitDataNode = dom.splitDataNode; - var getClosestAncestorIn = dom.getClosestAncestorIn; - var getNodeLength = dom.getNodeLength; - var arrayContains = dom.arrayContains; - var getRootContainer = dom.getRootContainer; - var crashyTextNodes = api.features.crashyTextNodes; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Utility functions - - function isNonTextPartiallySelected(node, range) { - return (node.nodeType != 3) && - (isOrIsAncestorOf(node, range.startContainer) || isOrIsAncestorOf(node, range.endContainer)); - } - - function getRangeDocument(range) { - return range.document || getDocument(range.startContainer); - } - - function getBoundaryBeforeNode(node) { - return new DomPosition(node.parentNode, getNodeIndex(node)); - } - - function getBoundaryAfterNode(node) { - return new DomPosition(node.parentNode, getNodeIndex(node) + 1); - } - - function insertNodeAtPosition(node, n, o) { - var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node; - if (isCharacterDataNode(n)) { - if (o == n.length) { - dom.insertAfter(node, n); - } else { - n.parentNode.insertBefore(node, o == 0 ? n : splitDataNode(n, o)); - } - } else if (o >= n.childNodes.length) { - n.appendChild(node); - } else { - n.insertBefore(node, n.childNodes[o]); - } - return firstNodeInserted; - } - - function rangesIntersect(rangeA, rangeB, touchingIsIntersecting) { - assertRangeValid(rangeA); - assertRangeValid(rangeB); - - if (getRangeDocument(rangeB) != getRangeDocument(rangeA)) { - throw new DOMException("WRONG_DOCUMENT_ERR"); - } - - var startComparison = comparePoints(rangeA.startContainer, rangeA.startOffset, rangeB.endContainer, rangeB.endOffset), - endComparison = comparePoints(rangeA.endContainer, rangeA.endOffset, rangeB.startContainer, rangeB.startOffset); - - return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; - } - - function cloneSubtree(iterator) { - var partiallySelected; - for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { - partiallySelected = iterator.isPartiallySelectedSubtree(); - node = node.cloneNode(!partiallySelected); - if (partiallySelected) { - subIterator = iterator.getSubtreeIterator(); - node.appendChild(cloneSubtree(subIterator)); - subIterator.detach(); - } - - if (node.nodeType == 10) { // DocumentType - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - frag.appendChild(node); - } - return frag; - } - - function iterateSubtree(rangeIterator, func, iteratorState) { - var it, n; - iteratorState = iteratorState || { stop: false }; - for (var node, subRangeIterator; node = rangeIterator.next(); ) { - if (rangeIterator.isPartiallySelectedSubtree()) { - if (func(node) === false) { - iteratorState.stop = true; - return; - } else { - // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of - // the node selected by the Range. - subRangeIterator = rangeIterator.getSubtreeIterator(); - iterateSubtree(subRangeIterator, func, iteratorState); - subRangeIterator.detach(); - if (iteratorState.stop) { - return; - } - } - } else { - // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its - // descendants - it = dom.createIterator(node); - while ( (n = it.next()) ) { - if (func(n) === false) { - iteratorState.stop = true; - return; - } - } - } - } - } - - function deleteSubtree(iterator) { - var subIterator; - while (iterator.next()) { - if (iterator.isPartiallySelectedSubtree()) { - subIterator = iterator.getSubtreeIterator(); - deleteSubtree(subIterator); - subIterator.detach(); - } else { - iterator.remove(); - } - } - } - - function extractSubtree(iterator) { - for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { - - if (iterator.isPartiallySelectedSubtree()) { - node = node.cloneNode(false); - subIterator = iterator.getSubtreeIterator(); - node.appendChild(extractSubtree(subIterator)); - subIterator.detach(); - } else { - iterator.remove(); - } - if (node.nodeType == 10) { // DocumentType - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - frag.appendChild(node); - } - return frag; - } - - function getNodesInRange(range, nodeTypes, filter) { - var filterNodeTypes = !!(nodeTypes && nodeTypes.length), regex; - var filterExists = !!filter; - if (filterNodeTypes) { - regex = new RegExp("^(" + nodeTypes.join("|") + ")$"); - } - - var nodes = []; - iterateSubtree(new RangeIterator(range, false), function(node) { - if (filterNodeTypes && !regex.test(node.nodeType)) { - return; - } - if (filterExists && !filter(node)) { - return; - } - // Don't include a boundary container if it is a character data node and the range does not contain any - // of its character data. See issue 190. - var sc = range.startContainer; - if (node == sc && isCharacterDataNode(sc) && range.startOffset == sc.length) { - return; - } - - var ec = range.endContainer; - if (node == ec && isCharacterDataNode(ec) && range.endOffset == 0) { - return; - } - - nodes.push(node); - }); - return nodes; - } - - function inspect(range) { - var name = (typeof range.getName == "undefined") ? "Range" : range.getName(); - return "[" + name + "(" + dom.inspectNode(range.startContainer) + ":" + range.startOffset + ", " + - dom.inspectNode(range.endContainer) + ":" + range.endOffset + ")]"; - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange) - - function RangeIterator(range, clonePartiallySelectedTextNodes) { - this.range = range; - this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes; - - - if (!range.collapsed) { - this.sc = range.startContainer; - this.so = range.startOffset; - this.ec = range.endContainer; - this.eo = range.endOffset; - var root = range.commonAncestorContainer; - - if (this.sc === this.ec && isCharacterDataNode(this.sc)) { - this.isSingleCharacterDataNode = true; - this._first = this._last = this._next = this.sc; - } else { - this._first = this._next = (this.sc === root && !isCharacterDataNode(this.sc)) ? - this.sc.childNodes[this.so] : getClosestAncestorIn(this.sc, root, true); - this._last = (this.ec === root && !isCharacterDataNode(this.ec)) ? - this.ec.childNodes[this.eo - 1] : getClosestAncestorIn(this.ec, root, true); - } - } - } - - RangeIterator.prototype = { - _current: null, - _next: null, - _first: null, - _last: null, - isSingleCharacterDataNode: false, - - reset: function() { - this._current = null; - this._next = this._first; - }, - - hasNext: function() { - return !!this._next; - }, - - next: function() { - // Move to next node - var current = this._current = this._next; - if (current) { - this._next = (current !== this._last) ? current.nextSibling : null; - - // Check for partially selected text nodes - if (isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) { - if (current === this.ec) { - (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo); - } - if (this._current === this.sc) { - (current = current.cloneNode(true)).deleteData(0, this.so); - } - } - } - - return current; - }, - - remove: function() { - var current = this._current, start, end; - - if (isCharacterDataNode(current) && (current === this.sc || current === this.ec)) { - start = (current === this.sc) ? this.so : 0; - end = (current === this.ec) ? this.eo : current.length; - if (start != end) { - current.deleteData(start, end - start); - } - } else { - if (current.parentNode) { - current.parentNode.removeChild(current); - } else { - } - } - }, - - // Checks if the current node is partially selected - isPartiallySelectedSubtree: function() { - var current = this._current; - return isNonTextPartiallySelected(current, this.range); - }, - - getSubtreeIterator: function() { - var subRange; - if (this.isSingleCharacterDataNode) { - subRange = this.range.cloneRange(); - subRange.collapse(false); - } else { - subRange = new Range(getRangeDocument(this.range)); - var current = this._current; - var startContainer = current, startOffset = 0, endContainer = current, endOffset = getNodeLength(current); - - if (isOrIsAncestorOf(current, this.sc)) { - startContainer = this.sc; - startOffset = this.so; - } - if (isOrIsAncestorOf(current, this.ec)) { - endContainer = this.ec; - endOffset = this.eo; - } - - updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset); - } - return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes); - }, - - detach: function() { - this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null; - } - }; - - /*----------------------------------------------------------------------------------------------------------------*/ - - var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10]; - var rootContainerNodeTypes = [2, 9, 11]; - var readonlyNodeTypes = [5, 6, 10, 12]; - var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11]; - var surroundNodeTypes = [1, 3, 4, 5, 7, 8]; - - function createAncestorFinder(nodeTypes) { - return function(node, selfIsAncestor) { - var t, n = selfIsAncestor ? node : node.parentNode; - while (n) { - t = n.nodeType; - if (arrayContains(nodeTypes, t)) { - return n; - } - n = n.parentNode; - } - return null; - }; - } - - var getDocumentOrFragmentContainer = createAncestorFinder( [9, 11] ); - var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes); - var getDocTypeNotationEntityAncestor = createAncestorFinder( [6, 10, 12] ); - - function assertNoDocTypeNotationEntityAncestor(node, allowSelf) { - if (getDocTypeNotationEntityAncestor(node, allowSelf)) { - throw new DOMException("INVALID_NODE_TYPE_ERR"); - } - } - - function assertValidNodeType(node, invalidTypes) { - if (!arrayContains(invalidTypes, node.nodeType)) { - throw new DOMException("INVALID_NODE_TYPE_ERR"); - } - } - - function assertValidOffset(node, offset) { - if (offset < 0 || offset > (isCharacterDataNode(node) ? node.length : node.childNodes.length)) { - throw new DOMException("INDEX_SIZE_ERR"); - } - } - - function assertSameDocumentOrFragment(node1, node2) { - if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) { - throw new DOMException("WRONG_DOCUMENT_ERR"); - } - } - - function assertNodeNotReadOnly(node) { - if (getReadonlyAncestor(node, true)) { - throw new DOMException("NO_MODIFICATION_ALLOWED_ERR"); - } - } - - function assertNode(node, codeName) { - if (!node) { - throw new DOMException(codeName); - } - } - - function isOrphan(node) { - return (crashyTextNodes && dom.isBrokenNode(node)) || - !arrayContains(rootContainerNodeTypes, node.nodeType) && !getDocumentOrFragmentContainer(node, true); - } - - function isValidOffset(node, offset) { - return offset <= (isCharacterDataNode(node) ? node.length : node.childNodes.length); - } - - function isRangeValid(range) { - return (!!range.startContainer && !!range.endContainer && - !isOrphan(range.startContainer) && - !isOrphan(range.endContainer) && - isValidOffset(range.startContainer, range.startOffset) && - isValidOffset(range.endContainer, range.endOffset)); - } - - function assertRangeValid(range) { - if (!isRangeValid(range)) { - throw new Error("Range error: Range is no longer valid after DOM mutation (" + range.inspect() + ")"); - } - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Test the browser's innerHTML support to decide how to implement createContextualFragment - var styleEl = document.createElement("style"); - var htmlParsingConforms = false; - try { - styleEl.innerHTML = "x"; - htmlParsingConforms = (styleEl.firstChild.nodeType == 3); // Opera incorrectly creates an element node - } catch (e) { - // IE 6 and 7 throw - } - - api.features.htmlParsingConforms = htmlParsingConforms; - - var createContextualFragment = htmlParsingConforms ? - - // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See - // discussion and base code for this implementation at issue 67. - // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface - // Thanks to Aleks Williams. - function(fragmentStr) { - // "Let node the context object's start's node." - var node = this.startContainer; - var doc = getDocument(node); - - // "If the context object's start's node is null, raise an INVALID_STATE_ERR - // exception and abort these steps." - if (!node) { - throw new DOMException("INVALID_STATE_ERR"); - } - - // "Let element be as follows, depending on node's interface:" - // Document, Document Fragment: null - var el = null; - - // "Element: node" - if (node.nodeType == 1) { - el = node; - - // "Text, Comment: node's parentElement" - } else if (isCharacterDataNode(node)) { - el = dom.parentElement(node); - } - - // "If either element is null or element's ownerDocument is an HTML document - // and element's local name is "html" and element's namespace is the HTML - // namespace" - if (el === null || ( - el.nodeName == "HTML" && - dom.isHtmlNamespace(getDocument(el).documentElement) && - dom.isHtmlNamespace(el) - )) { - - // "let element be a new Element with "body" as its local name and the HTML - // namespace as its namespace."" - el = doc.createElement("body"); - } else { - el = el.cloneNode(false); - } - - // "If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm." - // "If the node's document is an XML document: Invoke the XML fragment parsing algorithm." - // "In either case, the algorithm must be invoked with fragment as the input - // and element as the context element." - el.innerHTML = fragmentStr; - - // "If this raises an exception, then abort these steps. Otherwise, let new - // children be the nodes returned." - - // "Let fragment be a new DocumentFragment." - // "Append all new children to fragment." - // "Return fragment." - return dom.fragmentFromNodeChildren(el); - } : - - // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that - // previous versions of Rangy used (with the exception of using a body element rather than a div) - function(fragmentStr) { - var doc = getRangeDocument(this); - var el = doc.createElement("body"); - el.innerHTML = fragmentStr; - - return dom.fragmentFromNodeChildren(el); - }; - - function splitRangeBoundaries(range, positionsToPreserve) { - assertRangeValid(range); - - var sc = range.startContainer, so = range.startOffset, ec = range.endContainer, eo = range.endOffset; - var startEndSame = (sc === ec); - - if (isCharacterDataNode(ec) && eo > 0 && eo < ec.length) { - splitDataNode(ec, eo, positionsToPreserve); - } - - if (isCharacterDataNode(sc) && so > 0 && so < sc.length) { - sc = splitDataNode(sc, so, positionsToPreserve); - if (startEndSame) { - eo -= so; - ec = sc; - } else if (ec == sc.parentNode && eo >= getNodeIndex(sc)) { - eo++; - } - so = 0; - } - range.setStartAndEnd(sc, so, ec, eo); - } - - function rangeToHtml(range) { - assertRangeValid(range); - var container = range.commonAncestorContainer.parentNode.cloneNode(false); - container.appendChild( range.cloneContents() ); - return container.innerHTML; - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - var rangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", - "commonAncestorContainer"]; - - var s2s = 0, s2e = 1, e2e = 2, e2s = 3; - var n_b = 0, n_a = 1, n_b_a = 2, n_i = 3; - - util.extend(api.rangePrototype, { - compareBoundaryPoints: function(how, range) { - assertRangeValid(this); - assertSameDocumentOrFragment(this.startContainer, range.startContainer); - - var nodeA, offsetA, nodeB, offsetB; - var prefixA = (how == e2s || how == s2s) ? "start" : "end"; - var prefixB = (how == s2e || how == s2s) ? "start" : "end"; - nodeA = this[prefixA + "Container"]; - offsetA = this[prefixA + "Offset"]; - nodeB = range[prefixB + "Container"]; - offsetB = range[prefixB + "Offset"]; - return comparePoints(nodeA, offsetA, nodeB, offsetB); - }, - - insertNode: function(node) { - assertRangeValid(this); - assertValidNodeType(node, insertableNodeTypes); - assertNodeNotReadOnly(this.startContainer); - - if (isOrIsAncestorOf(node, this.startContainer)) { - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - - // No check for whether the container of the start of the Range is of a type that does not allow - // children of the type of node: the browser's DOM implementation should do this for us when we attempt - // to add the node - - var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset); - this.setStartBefore(firstNodeInserted); - }, - - cloneContents: function() { - assertRangeValid(this); - - var clone, frag; - if (this.collapsed) { - return getRangeDocument(this).createDocumentFragment(); - } else { - if (this.startContainer === this.endContainer && isCharacterDataNode(this.startContainer)) { - clone = this.startContainer.cloneNode(true); - clone.data = clone.data.slice(this.startOffset, this.endOffset); - frag = getRangeDocument(this).createDocumentFragment(); - frag.appendChild(clone); - return frag; - } else { - var iterator = new RangeIterator(this, true); - clone = cloneSubtree(iterator); - iterator.detach(); - } - return clone; - } - }, - - canSurroundContents: function() { - assertRangeValid(this); - assertNodeNotReadOnly(this.startContainer); - assertNodeNotReadOnly(this.endContainer); - - // Check if the contents can be surrounded. Specifically, this means whether the range partially selects - // no non-text nodes. - var iterator = new RangeIterator(this, true); - var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) || - (iterator._last && isNonTextPartiallySelected(iterator._last, this))); - iterator.detach(); - return !boundariesInvalid; - }, - - surroundContents: function(node) { - assertValidNodeType(node, surroundNodeTypes); - - if (!this.canSurroundContents()) { - throw new DOMException("INVALID_STATE_ERR"); - } - - // Extract the contents - var content = this.extractContents(); - - // Clear the children of the node - if (node.hasChildNodes()) { - while (node.lastChild) { - node.removeChild(node.lastChild); - } - } - - // Insert the new node and add the extracted contents - insertNodeAtPosition(node, this.startContainer, this.startOffset); - node.appendChild(content); - - this.selectNode(node); - }, - - cloneRange: function() { - assertRangeValid(this); - var range = new Range(getRangeDocument(this)); - var i = rangeProperties.length, prop; - while (i--) { - prop = rangeProperties[i]; - range[prop] = this[prop]; - } - return range; - }, - - toString: function() { - assertRangeValid(this); - var sc = this.startContainer; - if (sc === this.endContainer && isCharacterDataNode(sc)) { - return (sc.nodeType == 3 || sc.nodeType == 4) ? sc.data.slice(this.startOffset, this.endOffset) : ""; - } else { - var textParts = [], iterator = new RangeIterator(this, true); - iterateSubtree(iterator, function(node) { - // Accept only text or CDATA nodes, not comments - if (node.nodeType == 3 || node.nodeType == 4) { - textParts.push(node.data); - } - }); - iterator.detach(); - return textParts.join(""); - } - }, - - // The methods below are all non-standard. The following batch were introduced by Mozilla but have since - // been removed from Mozilla. - - compareNode: function(node) { - assertRangeValid(this); - - var parent = node.parentNode; - var nodeIndex = getNodeIndex(node); - - if (!parent) { - throw new DOMException("NOT_FOUND_ERR"); - } - - var startComparison = this.comparePoint(parent, nodeIndex), - endComparison = this.comparePoint(parent, nodeIndex + 1); - - if (startComparison < 0) { // Node starts before - return (endComparison > 0) ? n_b_a : n_b; - } else { - return (endComparison > 0) ? n_a : n_i; - } - }, - - comparePoint: function(node, offset) { - assertRangeValid(this); - assertNode(node, "HIERARCHY_REQUEST_ERR"); - assertSameDocumentOrFragment(node, this.startContainer); - - if (comparePoints(node, offset, this.startContainer, this.startOffset) < 0) { - return -1; - } else if (comparePoints(node, offset, this.endContainer, this.endOffset) > 0) { - return 1; - } - return 0; - }, - - createContextualFragment: createContextualFragment, - - toHtml: function() { - return rangeToHtml(this); - }, - - // touchingIsIntersecting determines whether this method considers a node that borders a range intersects - // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default) - intersectsNode: function(node, touchingIsIntersecting) { - assertRangeValid(this); - assertNode(node, "NOT_FOUND_ERR"); - if (getDocument(node) !== getRangeDocument(this)) { - return false; - } - - var parent = node.parentNode, offset = getNodeIndex(node); - assertNode(parent, "NOT_FOUND_ERR"); - - var startComparison = comparePoints(parent, offset, this.endContainer, this.endOffset), - endComparison = comparePoints(parent, offset + 1, this.startContainer, this.startOffset); - - return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; - }, - - isPointInRange: function(node, offset) { - assertRangeValid(this); - assertNode(node, "HIERARCHY_REQUEST_ERR"); - assertSameDocumentOrFragment(node, this.startContainer); - - return (comparePoints(node, offset, this.startContainer, this.startOffset) >= 0) && - (comparePoints(node, offset, this.endContainer, this.endOffset) <= 0); - }, - - // The methods below are non-standard and invented by me. - - // Sharing a boundary start-to-end or end-to-start does not count as intersection. - intersectsRange: function(range) { - return rangesIntersect(this, range, false); - }, - - // Sharing a boundary start-to-end or end-to-start does count as intersection. - intersectsOrTouchesRange: function(range) { - return rangesIntersect(this, range, true); - }, - - intersection: function(range) { - if (this.intersectsRange(range)) { - var startComparison = comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset), - endComparison = comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset); - - var intersectionRange = this.cloneRange(); - if (startComparison == -1) { - intersectionRange.setStart(range.startContainer, range.startOffset); - } - if (endComparison == 1) { - intersectionRange.setEnd(range.endContainer, range.endOffset); - } - return intersectionRange; - } - return null; - }, - - union: function(range) { - if (this.intersectsOrTouchesRange(range)) { - var unionRange = this.cloneRange(); - if (comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) { - unionRange.setStart(range.startContainer, range.startOffset); - } - if (comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) { - unionRange.setEnd(range.endContainer, range.endOffset); - } - return unionRange; - } else { - throw new DOMException("Ranges do not intersect"); - } - }, - - containsNode: function(node, allowPartial) { - if (allowPartial) { - return this.intersectsNode(node, false); - } else { - return this.compareNode(node) == n_i; - } - }, - - containsNodeContents: function(node) { - return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, getNodeLength(node)) <= 0; - }, - - containsRange: function(range) { - var intersection = this.intersection(range); - return intersection !== null && range.equals(intersection); - }, - - containsNodeText: function(node) { - var nodeRange = this.cloneRange(); - nodeRange.selectNode(node); - var textNodes = nodeRange.getNodes([3]); - if (textNodes.length > 0) { - nodeRange.setStart(textNodes[0], 0); - var lastTextNode = textNodes.pop(); - nodeRange.setEnd(lastTextNode, lastTextNode.length); - return this.containsRange(nodeRange); - } else { - return this.containsNodeContents(node); - } - }, - - getNodes: function(nodeTypes, filter) { - assertRangeValid(this); - return getNodesInRange(this, nodeTypes, filter); - }, - - getDocument: function() { - return getRangeDocument(this); - }, - - collapseBefore: function(node) { - this.setEndBefore(node); - this.collapse(false); - }, - - collapseAfter: function(node) { - this.setStartAfter(node); - this.collapse(true); - }, - - getBookmark: function(containerNode) { - var doc = getRangeDocument(this); - var preSelectionRange = api.createRange(doc); - containerNode = containerNode || dom.getBody(doc); - preSelectionRange.selectNodeContents(containerNode); - var range = this.intersection(preSelectionRange); - var start = 0, end = 0; - if (range) { - preSelectionRange.setEnd(range.startContainer, range.startOffset); - start = preSelectionRange.toString().length; - end = start + range.toString().length; - } - - return { - start: start, - end: end, - containerNode: containerNode - }; - }, - - moveToBookmark: function(bookmark) { - var containerNode = bookmark.containerNode; - var charIndex = 0; - this.setStart(containerNode, 0); - this.collapse(true); - var nodeStack = [containerNode], node, foundStart = false, stop = false; - var nextCharIndex, i, childNodes; - - while (!stop && (node = nodeStack.pop())) { - if (node.nodeType == 3) { - nextCharIndex = charIndex + node.length; - if (!foundStart && bookmark.start >= charIndex && bookmark.start <= nextCharIndex) { - this.setStart(node, bookmark.start - charIndex); - foundStart = true; - } - if (foundStart && bookmark.end >= charIndex && bookmark.end <= nextCharIndex) { - this.setEnd(node, bookmark.end - charIndex); - stop = true; - } - charIndex = nextCharIndex; - } else { - childNodes = node.childNodes; - i = childNodes.length; - while (i--) { - nodeStack.push(childNodes[i]); - } - } - } - }, - - getName: function() { - return "DomRange"; - }, - - equals: function(range) { - return Range.rangesEqual(this, range); - }, - - isValid: function() { - return isRangeValid(this); - }, - - inspect: function() { - return inspect(this); - }, - - detach: function() { - // In DOM4, detach() is now a no-op. - } - }); - - function copyComparisonConstantsToObject(obj) { - obj.START_TO_START = s2s; - obj.START_TO_END = s2e; - obj.END_TO_END = e2e; - obj.END_TO_START = e2s; - - obj.NODE_BEFORE = n_b; - obj.NODE_AFTER = n_a; - obj.NODE_BEFORE_AND_AFTER = n_b_a; - obj.NODE_INSIDE = n_i; - } - - function copyComparisonConstants(constructor) { - copyComparisonConstantsToObject(constructor); - copyComparisonConstantsToObject(constructor.prototype); - } - - function createRangeContentRemover(remover, boundaryUpdater) { - return function() { - assertRangeValid(this); - - var sc = this.startContainer, so = this.startOffset, root = this.commonAncestorContainer; - - var iterator = new RangeIterator(this, true); - - // Work out where to position the range after content removal - var node, boundary; - if (sc !== root) { - node = getClosestAncestorIn(sc, root, true); - boundary = getBoundaryAfterNode(node); - sc = boundary.node; - so = boundary.offset; - } - - // Check none of the range is read-only - iterateSubtree(iterator, assertNodeNotReadOnly); - - iterator.reset(); - - // Remove the content - var returnValue = remover(iterator); - iterator.detach(); - - // Move to the new position - boundaryUpdater(this, sc, so, sc, so); - - return returnValue; - }; - } - - function createPrototypeRange(constructor, boundaryUpdater) { - function createBeforeAfterNodeSetter(isBefore, isStart) { - return function(node) { - assertValidNodeType(node, beforeAfterNodeTypes); - assertValidNodeType(getRootContainer(node), rootContainerNodeTypes); - - var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node); - (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset); - }; - } - - function setRangeStart(range, node, offset) { - var ec = range.endContainer, eo = range.endOffset; - if (node !== range.startContainer || offset !== range.startOffset) { - // Check the root containers of the range and the new boundary, and also check whether the new boundary - // is after the current end. In either case, collapse the range to the new position - if (getRootContainer(node) != getRootContainer(ec) || comparePoints(node, offset, ec, eo) == 1) { - ec = node; - eo = offset; - } - boundaryUpdater(range, node, offset, ec, eo); - } - } - - function setRangeEnd(range, node, offset) { - var sc = range.startContainer, so = range.startOffset; - if (node !== range.endContainer || offset !== range.endOffset) { - // Check the root containers of the range and the new boundary, and also check whether the new boundary - // is after the current end. In either case, collapse the range to the new position - if (getRootContainer(node) != getRootContainer(sc) || comparePoints(node, offset, sc, so) == -1) { - sc = node; - so = offset; - } - boundaryUpdater(range, sc, so, node, offset); - } - } - - // Set up inheritance - var F = function() {}; - F.prototype = api.rangePrototype; - constructor.prototype = new F(); - - util.extend(constructor.prototype, { - setStart: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - - setRangeStart(this, node, offset); - }, - - setEnd: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - - setRangeEnd(this, node, offset); - }, - - /** - * Convenience method to set a range's start and end boundaries. Overloaded as follows: - * - Two parameters (node, offset) creates a collapsed range at that position - * - Three parameters (node, startOffset, endOffset) creates a range contained with node starting at - * startOffset and ending at endOffset - * - Four parameters (startNode, startOffset, endNode, endOffset) creates a range starting at startOffset in - * startNode and ending at endOffset in endNode - */ - setStartAndEnd: function() { - var args = arguments; - var sc = args[0], so = args[1], ec = sc, eo = so; - - switch (args.length) { - case 3: - eo = args[2]; - break; - case 4: - ec = args[2]; - eo = args[3]; - break; - } - - boundaryUpdater(this, sc, so, ec, eo); - }, - - setBoundary: function(node, offset, isStart) { - this["set" + (isStart ? "Start" : "End")](node, offset); - }, - - setStartBefore: createBeforeAfterNodeSetter(true, true), - setStartAfter: createBeforeAfterNodeSetter(false, true), - setEndBefore: createBeforeAfterNodeSetter(true, false), - setEndAfter: createBeforeAfterNodeSetter(false, false), - - collapse: function(isStart) { - assertRangeValid(this); - if (isStart) { - boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset); - } else { - boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset); - } - }, - - selectNodeContents: function(node) { - assertNoDocTypeNotationEntityAncestor(node, true); - - boundaryUpdater(this, node, 0, node, getNodeLength(node)); - }, - - selectNode: function(node) { - assertNoDocTypeNotationEntityAncestor(node, false); - assertValidNodeType(node, beforeAfterNodeTypes); - - var start = getBoundaryBeforeNode(node), end = getBoundaryAfterNode(node); - boundaryUpdater(this, start.node, start.offset, end.node, end.offset); - }, - - extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater), - - deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater), - - canSurroundContents: function() { - assertRangeValid(this); - assertNodeNotReadOnly(this.startContainer); - assertNodeNotReadOnly(this.endContainer); - - // Check if the contents can be surrounded. Specifically, this means whether the range partially selects - // no non-text nodes. - var iterator = new RangeIterator(this, true); - var boundariesInvalid = (iterator._first && isNonTextPartiallySelected(iterator._first, this) || - (iterator._last && isNonTextPartiallySelected(iterator._last, this))); - iterator.detach(); - return !boundariesInvalid; - }, - - splitBoundaries: function() { - splitRangeBoundaries(this); - }, - - splitBoundariesPreservingPositions: function(positionsToPreserve) { - splitRangeBoundaries(this, positionsToPreserve); - }, - - normalizeBoundaries: function() { - assertRangeValid(this); - - var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset; - - var mergeForward = function(node) { - var sibling = node.nextSibling; - if (sibling && sibling.nodeType == node.nodeType) { - ec = node; - eo = node.length; - node.appendData(sibling.data); - sibling.parentNode.removeChild(sibling); - } - }; - - var mergeBackward = function(node) { - var sibling = node.previousSibling; - if (sibling && sibling.nodeType == node.nodeType) { - sc = node; - var nodeLength = node.length; - so = sibling.length; - node.insertData(0, sibling.data); - sibling.parentNode.removeChild(sibling); - if (sc == ec) { - eo += so; - ec = sc; - } else if (ec == node.parentNode) { - var nodeIndex = getNodeIndex(node); - if (eo == nodeIndex) { - ec = node; - eo = nodeLength; - } else if (eo > nodeIndex) { - eo--; - } - } - } - }; - - var normalizeStart = true; - - if (isCharacterDataNode(ec)) { - if (ec.length == eo) { - mergeForward(ec); - } - } else { - if (eo > 0) { - var endNode = ec.childNodes[eo - 1]; - if (endNode && isCharacterDataNode(endNode)) { - mergeForward(endNode); - } - } - normalizeStart = !this.collapsed; - } - - if (normalizeStart) { - if (isCharacterDataNode(sc)) { - if (so == 0) { - mergeBackward(sc); - } - } else { - if (so < sc.childNodes.length) { - var startNode = sc.childNodes[so]; - if (startNode && isCharacterDataNode(startNode)) { - mergeBackward(startNode); - } - } - } - } else { - sc = ec; - so = eo; - } - - boundaryUpdater(this, sc, so, ec, eo); - }, - - collapseToPoint: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - this.setStartAndEnd(node, offset); - } - }); - - copyComparisonConstants(constructor); - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Updates commonAncestorContainer and collapsed after boundary change - function updateCollapsedAndCommonAncestor(range) { - range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); - range.commonAncestorContainer = range.collapsed ? - range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer); - } - - function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) { - range.startContainer = startContainer; - range.startOffset = startOffset; - range.endContainer = endContainer; - range.endOffset = endOffset; - range.document = dom.getDocument(startContainer); - - updateCollapsedAndCommonAncestor(range); - } - - function Range(doc) { - this.startContainer = doc; - this.startOffset = 0; - this.endContainer = doc; - this.endOffset = 0; - this.document = doc; - updateCollapsedAndCommonAncestor(this); - } - - createPrototypeRange(Range, updateBoundaries); - - util.extend(Range, { - rangeProperties: rangeProperties, - RangeIterator: RangeIterator, - copyComparisonConstants: copyComparisonConstants, - createPrototypeRange: createPrototypeRange, - inspect: inspect, - toHtml: rangeToHtml, - getRangeDocument: getRangeDocument, - rangesEqual: function(r1, r2) { - return r1.startContainer === r2.startContainer && - r1.startOffset === r2.startOffset && - r1.endContainer === r2.endContainer && - r1.endOffset === r2.endOffset; - } - }); - - api.DomRange = Range; - }); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Wrappers for the browser's native DOM Range and/or TextRange implementation - api.createCoreModule("WrappedRange", ["DomRange"], function(api, module) { - var WrappedRange, WrappedTextRange; - var dom = api.dom; - var util = api.util; - var DomPosition = dom.DomPosition; - var DomRange = api.DomRange; - var getBody = dom.getBody; - var getContentDocument = dom.getContentDocument; - var isCharacterDataNode = dom.isCharacterDataNode; - - - /*----------------------------------------------------------------------------------------------------------------*/ - - if (api.features.implementsDomRange) { - // This is a wrapper around the browser's native DOM Range. It has two aims: - // - Provide workarounds for specific browser bugs - // - provide convenient extensions, which are inherited from Rangy's DomRange - - (function() { - var rangeProto; - var rangeProperties = DomRange.rangeProperties; - - function updateRangeProperties(range) { - var i = rangeProperties.length, prop; - while (i--) { - prop = rangeProperties[i]; - range[prop] = range.nativeRange[prop]; - } - // Fix for broken collapsed property in IE 9. - range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); - } - - function updateNativeRange(range, startContainer, startOffset, endContainer, endOffset) { - var startMoved = (range.startContainer !== startContainer || range.startOffset != startOffset); - var endMoved = (range.endContainer !== endContainer || range.endOffset != endOffset); - var nativeRangeDifferent = !range.equals(range.nativeRange); - - // Always set both boundaries for the benefit of IE9 (see issue 35) - if (startMoved || endMoved || nativeRangeDifferent) { - range.setEnd(endContainer, endOffset); - range.setStart(startContainer, startOffset); - } - } - - var createBeforeAfterNodeSetter; - - WrappedRange = function(range) { - if (!range) { - throw module.createError("WrappedRange: Range must be specified"); - } - this.nativeRange = range; - updateRangeProperties(this); - }; - - DomRange.createPrototypeRange(WrappedRange, updateNativeRange); - - rangeProto = WrappedRange.prototype; - - rangeProto.selectNode = function(node) { - this.nativeRange.selectNode(node); - updateRangeProperties(this); - }; - - rangeProto.cloneContents = function() { - return this.nativeRange.cloneContents(); - }; - - // Due to a long-standing Firefox bug that I have not been able to find a reliable way to detect, - // insertNode() is never delegated to the native range. - - rangeProto.surroundContents = function(node) { - this.nativeRange.surroundContents(node); - updateRangeProperties(this); - }; - - rangeProto.collapse = function(isStart) { - this.nativeRange.collapse(isStart); - updateRangeProperties(this); - }; - - rangeProto.cloneRange = function() { - return new WrappedRange(this.nativeRange.cloneRange()); - }; - - rangeProto.refresh = function() { - updateRangeProperties(this); - }; - - rangeProto.toString = function() { - return this.nativeRange.toString(); - }; - - // Create test range and node for feature detection - - var testTextNode = document.createTextNode("test"); - getBody(document).appendChild(testTextNode); - var range = document.createRange(); - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and - // correct for it - - range.setStart(testTextNode, 0); - range.setEnd(testTextNode, 0); - - try { - range.setStart(testTextNode, 1); - - rangeProto.setStart = function(node, offset) { - this.nativeRange.setStart(node, offset); - updateRangeProperties(this); - }; - - rangeProto.setEnd = function(node, offset) { - this.nativeRange.setEnd(node, offset); - updateRangeProperties(this); - }; - - createBeforeAfterNodeSetter = function(name) { - return function(node) { - this.nativeRange[name](node); - updateRangeProperties(this); - }; - }; - - } catch(ex) { - - rangeProto.setStart = function(node, offset) { - try { - this.nativeRange.setStart(node, offset); - } catch (ex) { - this.nativeRange.setEnd(node, offset); - this.nativeRange.setStart(node, offset); - } - updateRangeProperties(this); - }; - - rangeProto.setEnd = function(node, offset) { - try { - this.nativeRange.setEnd(node, offset); - } catch (ex) { - this.nativeRange.setStart(node, offset); - this.nativeRange.setEnd(node, offset); - } - updateRangeProperties(this); - }; - - createBeforeAfterNodeSetter = function(name, oppositeName) { - return function(node) { - try { - this.nativeRange[name](node); - } catch (ex) { - this.nativeRange[oppositeName](node); - this.nativeRange[name](node); - } - updateRangeProperties(this); - }; - }; - } - - rangeProto.setStartBefore = createBeforeAfterNodeSetter("setStartBefore", "setEndBefore"); - rangeProto.setStartAfter = createBeforeAfterNodeSetter("setStartAfter", "setEndAfter"); - rangeProto.setEndBefore = createBeforeAfterNodeSetter("setEndBefore", "setStartBefore"); - rangeProto.setEndAfter = createBeforeAfterNodeSetter("setEndAfter", "setStartAfter"); - - /*--------------------------------------------------------------------------------------------------------*/ - - // Always use DOM4-compliant selectNodeContents implementation: it's simpler and less code than testing - // whether the native implementation can be trusted - rangeProto.selectNodeContents = function(node) { - this.setStartAndEnd(node, 0, dom.getNodeLength(node)); - }; - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for and correct WebKit bug that has the behaviour of compareBoundaryPoints round the wrong way for - // constants START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738 - - range.selectNodeContents(testTextNode); - range.setEnd(testTextNode, 3); - - var range2 = document.createRange(); - range2.selectNodeContents(testTextNode); - range2.setEnd(testTextNode, 4); - range2.setStart(testTextNode, 2); - - if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 && - range.compareBoundaryPoints(range.END_TO_START, range2) == 1) { - // This is the wrong way round, so correct for it - - rangeProto.compareBoundaryPoints = function(type, range) { - range = range.nativeRange || range; - if (type == range.START_TO_END) { - type = range.END_TO_START; - } else if (type == range.END_TO_START) { - type = range.START_TO_END; - } - return this.nativeRange.compareBoundaryPoints(type, range); - }; - } else { - rangeProto.compareBoundaryPoints = function(type, range) { - return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range); - }; - } - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for IE 9 deleteContents() and extractContents() bug and correct it. See issue 107. - - var el = document.createElement("div"); - el.innerHTML = "123"; - var textNode = el.firstChild; - var body = getBody(document); - body.appendChild(el); - - range.setStart(textNode, 1); - range.setEnd(textNode, 2); - range.deleteContents(); - - if (textNode.data == "13") { - // Behaviour is correct per DOM4 Range so wrap the browser's implementation of deleteContents() and - // extractContents() - rangeProto.deleteContents = function() { - this.nativeRange.deleteContents(); - updateRangeProperties(this); - }; - - rangeProto.extractContents = function() { - var frag = this.nativeRange.extractContents(); - updateRangeProperties(this); - return frag; - }; - } else { - } - - body.removeChild(el); - body = null; - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for existence of createContextualFragment and delegate to it if it exists - if (util.isHostMethod(range, "createContextualFragment")) { - rangeProto.createContextualFragment = function(fragmentStr) { - return this.nativeRange.createContextualFragment(fragmentStr); - }; - } - - /*--------------------------------------------------------------------------------------------------------*/ - - // Clean up - getBody(document).removeChild(testTextNode); - - rangeProto.getName = function() { - return "WrappedRange"; - }; - - api.WrappedRange = WrappedRange; - - api.createNativeRange = function(doc) { - doc = getContentDocument(doc, module, "createNativeRange"); - return doc.createRange(); - }; - })(); - } - - if (api.features.implementsTextRange) { - /* - This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement() - method. For example, in the following (where pipes denote the selection boundaries): - -
      • | a
      • b |
      - - var range = document.selection.createRange(); - alert(range.parentElement().id); // Should alert "ul" but alerts "b" - - This method returns the common ancestor node of the following: - - the parentElement() of the textRange - - the parentElement() of the textRange after calling collapse(true) - - the parentElement() of the textRange after calling collapse(false) - */ - var getTextRangeContainerElement = function(textRange) { - var parentEl = textRange.parentElement(); - var range = textRange.duplicate(); - range.collapse(true); - var startEl = range.parentElement(); - range = textRange.duplicate(); - range.collapse(false); - var endEl = range.parentElement(); - var startEndContainer = (startEl == endEl) ? startEl : dom.getCommonAncestor(startEl, endEl); - - return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer); - }; - - var textRangeIsCollapsed = function(textRange) { - return textRange.compareEndPoints("StartToEnd", textRange) == 0; - }; - - // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started - // out as an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/) - // but has grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange - // bugs, handling for inputs and images, plus optimizations. - var getTextRangeBoundaryPosition = function(textRange, wholeRangeContainerElement, isStart, isCollapsed, startInfo) { - var workingRange = textRange.duplicate(); - workingRange.collapse(isStart); - var containerElement = workingRange.parentElement(); - - // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so - // check for that - if (!dom.isOrIsAncestorOf(wholeRangeContainerElement, containerElement)) { - containerElement = wholeRangeContainerElement; - } - - - // Deal with nodes that cannot "contain rich HTML markup". In practice, this means form inputs, images and - // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx - if (!containerElement.canHaveHTML) { - var pos = new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement)); - return { - boundaryPosition: pos, - nodeInfo: { - nodeIndex: pos.offset, - containerElement: pos.node - } - }; - } - - var workingNode = dom.getDocument(containerElement).createElement("span"); - - // Workaround for HTML5 Shiv's insane violation of document.createElement(). See Rangy issue 104 and HTML5 - // Shiv issue 64: https://github.com/aFarkas/html5shiv/issues/64 - if (workingNode.parentNode) { - workingNode.parentNode.removeChild(workingNode); - } - - var comparison, workingComparisonType = isStart ? "StartToStart" : "StartToEnd"; - var previousNode, nextNode, boundaryPosition, boundaryNode; - var start = (startInfo && startInfo.containerElement == containerElement) ? startInfo.nodeIndex : 0; - var childNodeCount = containerElement.childNodes.length; - var end = childNodeCount; - - // Check end first. Code within the loop assumes that the endth child node of the container is definitely - // after the range boundary. - var nodeIndex = end; - - while (true) { - if (nodeIndex == childNodeCount) { - containerElement.appendChild(workingNode); - } else { - containerElement.insertBefore(workingNode, containerElement.childNodes[nodeIndex]); - } - workingRange.moveToElementText(workingNode); - comparison = workingRange.compareEndPoints(workingComparisonType, textRange); - if (comparison == 0 || start == end) { - break; - } else if (comparison == -1) { - if (end == start + 1) { - // We know the endth child node is after the range boundary, so we must be done. - break; - } else { - start = nodeIndex; - } - } else { - end = (end == start + 1) ? start : nodeIndex; - } - nodeIndex = Math.floor((start + end) / 2); - containerElement.removeChild(workingNode); - } - - - // We've now reached or gone past the boundary of the text range we're interested in - // so have identified the node we want - boundaryNode = workingNode.nextSibling; - - if (comparison == -1 && boundaryNode && isCharacterDataNode(boundaryNode)) { - // This is a character data node (text, comment, cdata). The working range is collapsed at the start of - // the node containing the text range's boundary, so we move the end of the working range to the - // boundary point and measure the length of its text to get the boundary's offset within the node. - workingRange.setEndPoint(isStart ? "EndToStart" : "EndToEnd", textRange); - - var offset; - - if (/[\r\n]/.test(boundaryNode.data)) { - /* - For the particular case of a boundary within a text node containing rendered line breaks (within a -
       element, for example), we need a slightly complicated approach to get the boundary's offset in
      -                        IE. The facts:
      -                        
      -                        - Each line break is represented as \r in the text node's data/nodeValue properties
      -                        - Each line break is represented as \r\n in the TextRange's 'text' property
      -                        - The 'text' property of the TextRange does not contain trailing line breaks
      -                        
      -                        To get round the problem presented by the final fact above, we can use the fact that TextRange's
      -                        moveStart() and moveEnd() methods return the actual number of characters moved, which is not
      -                        necessarily the same as the number of characters it was instructed to move. The simplest approach is
      -                        to use this to store the characters moved when moving both the start and end of the range to the
      -                        start of the document body and subtracting the start offset from the end offset (the
      -                        "move-negative-gazillion" method). However, this is extremely slow when the document is large and
      -                        the range is near the end of it. Clearly doing the mirror image (i.e. moving the range boundaries to
      -                        the end of the document) has the same problem.
      -                        
      -                        Another approach that works is to use moveStart() to move the start boundary of the range up to the
      -                        end boundary one character at a time and incrementing a counter with the value returned by the
      -                        moveStart() call. However, the check for whether the start boundary has reached the end boundary is
      -                        expensive, so this method is slow (although unlike "move-negative-gazillion" is largely unaffected
      -                        by the location of the range within the document).
      -                        
      -                        The approach used below is a hybrid of the two methods above. It uses the fact that a string
      -                        containing the TextRange's 'text' property with each \r\n converted to a single \r character cannot
      -                        be longer than the text of the TextRange, so the start of the range is moved that length initially
      -                        and then a character at a time to make up for any trailing line breaks not contained in the 'text'
      -                        property. This has good performance in most situations compared to the previous two methods.
      -                        */
      -                        var tempRange = workingRange.duplicate();
      -                        var rangeLength = tempRange.text.replace(/\r\n/g, "\r").length;
      -
      -                        offset = tempRange.moveStart("character", rangeLength);
      -                        while ( (comparison = tempRange.compareEndPoints("StartToEnd", tempRange)) == -1) {
      -                            offset++;
      -                            tempRange.moveStart("character", 1);
      -                        }
      -                    } else {
      -                        offset = workingRange.text.length;
      -                    }
      -                    boundaryPosition = new DomPosition(boundaryNode, offset);
      -                } else {
      -
      -                    // If the boundary immediately follows a character data node and this is the end boundary, we should favour
      -                    // a position within that, and likewise for a start boundary preceding a character data node
      -                    previousNode = (isCollapsed || !isStart) && workingNode.previousSibling;
      -                    nextNode = (isCollapsed || isStart) && workingNode.nextSibling;
      -                    if (nextNode && isCharacterDataNode(nextNode)) {
      -                        boundaryPosition = new DomPosition(nextNode, 0);
      -                    } else if (previousNode && isCharacterDataNode(previousNode)) {
      -                        boundaryPosition = new DomPosition(previousNode, previousNode.data.length);
      -                    } else {
      -                        boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode));
      -                    }
      -                }
      -
      -                // Clean up
      -                workingNode.parentNode.removeChild(workingNode);
      -
      -                return {
      -                    boundaryPosition: boundaryPosition,
      -                    nodeInfo: {
      -                        nodeIndex: nodeIndex,
      -                        containerElement: containerElement
      -                    }
      -                };
      -            };
      -
      -            // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that
      -            // node. This function started out as an optimized version of code found in Tim Cameron Ryan's IERange
      -            // (http://code.google.com/p/ierange/)
      -            var createBoundaryTextRange = function(boundaryPosition, isStart) {
      -                var boundaryNode, boundaryParent, boundaryOffset = boundaryPosition.offset;
      -                var doc = dom.getDocument(boundaryPosition.node);
      -                var workingNode, childNodes, workingRange = getBody(doc).createTextRange();
      -                var nodeIsDataNode = isCharacterDataNode(boundaryPosition.node);
      -
      -                if (nodeIsDataNode) {
      -                    boundaryNode = boundaryPosition.node;
      -                    boundaryParent = boundaryNode.parentNode;
      -                } else {
      -                    childNodes = boundaryPosition.node.childNodes;
      -                    boundaryNode = (boundaryOffset < childNodes.length) ? childNodes[boundaryOffset] : null;
      -                    boundaryParent = boundaryPosition.node;
      -                }
      -
      -                // Position the range immediately before the node containing the boundary
      -                workingNode = doc.createElement("span");
      -
      -                // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within
      -                // the element rather than immediately before or after it
      -                workingNode.innerHTML = "&#feff;";
      -
      -                // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report
      -                // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12
      -                if (boundaryNode) {
      -                    boundaryParent.insertBefore(workingNode, boundaryNode);
      -                } else {
      -                    boundaryParent.appendChild(workingNode);
      -                }
      -
      -                workingRange.moveToElementText(workingNode);
      -                workingRange.collapse(!isStart);
      -
      -                // Clean up
      -                boundaryParent.removeChild(workingNode);
      -
      -                // Move the working range to the text offset, if required
      -                if (nodeIsDataNode) {
      -                    workingRange[isStart ? "moveStart" : "moveEnd"]("character", boundaryOffset);
      -                }
      -
      -                return workingRange;
      -            };
      -
      -            /*------------------------------------------------------------------------------------------------------------*/
      -
      -            // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a
      -            // prototype
      -
      -            WrappedTextRange = function(textRange) {
      -                this.textRange = textRange;
      -                this.refresh();
      -            };
      -
      -            WrappedTextRange.prototype = new DomRange(document);
      -
      -            WrappedTextRange.prototype.refresh = function() {
      -                var start, end, startBoundary;
      -
      -                // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that.
      -                var rangeContainerElement = getTextRangeContainerElement(this.textRange);
      -
      -                if (textRangeIsCollapsed(this.textRange)) {
      -                    end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true,
      -                        true).boundaryPosition;
      -                } else {
      -                    startBoundary = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false);
      -                    start = startBoundary.boundaryPosition;
      -
      -                    // An optimization used here is that if the start and end boundaries have the same parent element, the
      -                    // search scope for the end boundary can be limited to exclude the portion of the element that precedes
      -                    // the start boundary
      -                    end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false,
      -                        startBoundary.nodeInfo).boundaryPosition;
      -                }
      -
      -                this.setStart(start.node, start.offset);
      -                this.setEnd(end.node, end.offset);
      -            };
      -
      -            WrappedTextRange.prototype.getName = function() {
      -                return "WrappedTextRange";
      -            };
      -
      -            DomRange.copyComparisonConstants(WrappedTextRange);
      -
      -            var rangeToTextRange = function(range) {
      -                if (range.collapsed) {
      -                    return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);
      -                } else {
      -                    var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);
      -                    var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false);
      -                    var textRange = getBody( DomRange.getRangeDocument(range) ).createTextRange();
      -                    textRange.setEndPoint("StartToStart", startRange);
      -                    textRange.setEndPoint("EndToEnd", endRange);
      -                    return textRange;
      -                }
      -            };
      -
      -            WrappedTextRange.rangeToTextRange = rangeToTextRange;
      -
      -            WrappedTextRange.prototype.toTextRange = function() {
      -                return rangeToTextRange(this);
      -            };
      -
      -            api.WrappedTextRange = WrappedTextRange;
      -
      -            // IE 9 and above have both implementations and Rangy makes both available. The next few lines sets which
      -            // implementation to use by default.
      -            if (!api.features.implementsDomRange || api.config.preferTextRange) {
      -                // Add WrappedTextRange as the Range property of the global object to allow expression like Range.END_TO_END to work
      -                var globalObj = (function() { return this; })();
      -                if (typeof globalObj.Range == "undefined") {
      -                    globalObj.Range = WrappedTextRange;
      -                }
      -
      -                api.createNativeRange = function(doc) {
      -                    doc = getContentDocument(doc, module, "createNativeRange");
      -                    return getBody(doc).createTextRange();
      -                };
      -
      -                api.WrappedRange = WrappedTextRange;
      -            }
      -        }
      -
      -        api.createRange = function(doc) {
      -            doc = getContentDocument(doc, module, "createRange");
      -            return new api.WrappedRange(api.createNativeRange(doc));
      -        };
      -
      -        api.createRangyRange = function(doc) {
      -            doc = getContentDocument(doc, module, "createRangyRange");
      -            return new DomRange(doc);
      -        };
      -
      -        api.createIframeRange = function(iframeEl) {
      -            module.deprecationNotice("createIframeRange()", "createRange(iframeEl)");
      -            return api.createRange(iframeEl);
      -        };
      -
      -        api.createIframeRangyRange = function(iframeEl) {
      -            module.deprecationNotice("createIframeRangyRange()", "createRangyRange(iframeEl)");
      -            return api.createRangyRange(iframeEl);
      -        };
      -
      -        api.addShimListener(function(win) {
      -            var doc = win.document;
      -            if (typeof doc.createRange == "undefined") {
      -                doc.createRange = function() {
      -                    return api.createRange(doc);
      -                };
      -            }
      -            doc = win = null;
      -        });
      -    });
      -
      -    /*----------------------------------------------------------------------------------------------------------------*/
      -
      -    // This module creates a selection object wrapper that conforms as closely as possible to the Selection specification
      -    // in the HTML Editing spec (http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections)
      -    api.createCoreModule("WrappedSelection", ["DomRange", "WrappedRange"], function(api, module) {
      -        api.config.checkSelectionRanges = true;
      -
      -        var BOOLEAN = "boolean";
      -        var NUMBER = "number";
      -        var dom = api.dom;
      -        var util = api.util;
      -        var isHostMethod = util.isHostMethod;
      -        var DomRange = api.DomRange;
      -        var WrappedRange = api.WrappedRange;
      -        var DOMException = api.DOMException;
      -        var DomPosition = dom.DomPosition;
      -        var getNativeSelection;
      -        var selectionIsCollapsed;
      -        var features = api.features;
      -        var CONTROL = "Control";
      -        var getDocument = dom.getDocument;
      -        var getBody = dom.getBody;
      -        var rangesEqual = DomRange.rangesEqual;
      -
      -
      -        // Utility function to support direction parameters in the API that may be a string ("backward" or "forward") or a
      -        // Boolean (true for backwards).
      -        function isDirectionBackward(dir) {
      -            return (typeof dir == "string") ? /^backward(s)?$/i.test(dir) : !!dir;
      -        }
      -
      -        function getWindow(win, methodName) {
      -            if (!win) {
      -                return window;
      -            } else if (dom.isWindow(win)) {
      -                return win;
      -            } else if (win instanceof WrappedSelection) {
      -                return win.win;
      -            } else {
      -                var doc = dom.getContentDocument(win, module, methodName);
      -                return dom.getWindow(doc);
      -            }
      -        }
      -
      -        function getWinSelection(winParam) {
      -            return getWindow(winParam, "getWinSelection").getSelection();
      -        }
      -
      -        function getDocSelection(winParam) {
      -            return getWindow(winParam, "getDocSelection").document.selection;
      -        }
      -        
      -        function winSelectionIsBackward(sel) {
      -            var backward = false;
      -            if (sel.anchorNode) {
      -                backward = (dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1);
      -            }
      -            return backward;
      -        }
      -
      -        // Test for the Range/TextRange and Selection features required
      -        // Test for ability to retrieve selection
      -        var implementsWinGetSelection = isHostMethod(window, "getSelection"),
      -            implementsDocSelection = util.isHostObject(document, "selection");
      -
      -        features.implementsWinGetSelection = implementsWinGetSelection;
      -        features.implementsDocSelection = implementsDocSelection;
      -
      -        var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange);
      -
      -        if (useDocumentSelection) {
      -            getNativeSelection = getDocSelection;
      -            api.isSelectionValid = function(winParam) {
      -                var doc = getWindow(winParam, "isSelectionValid").document, nativeSel = doc.selection;
      -
      -                // Check whether the selection TextRange is actually contained within the correct document
      -                return (nativeSel.type != "None" || getDocument(nativeSel.createRange().parentElement()) == doc);
      -            };
      -        } else if (implementsWinGetSelection) {
      -            getNativeSelection = getWinSelection;
      -            api.isSelectionValid = function() {
      -                return true;
      -            };
      -        } else {
      -            module.fail("Neither document.selection or window.getSelection() detected.");
      -        }
      -
      -        api.getNativeSelection = getNativeSelection;
      -
      -        var testSelection = getNativeSelection();
      -        var testRange = api.createNativeRange(document);
      -        var body = getBody(document);
      -
      -        // Obtaining a range from a selection
      -        var selectionHasAnchorAndFocus = util.areHostProperties(testSelection,
      -            ["anchorNode", "focusNode", "anchorOffset", "focusOffset"]);
      -
      -        features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus;
      -
      -        // Test for existence of native selection extend() method
      -        var selectionHasExtend = isHostMethod(testSelection, "extend");
      -        features.selectionHasExtend = selectionHasExtend;
      -        
      -        // Test if rangeCount exists
      -        var selectionHasRangeCount = (typeof testSelection.rangeCount == NUMBER);
      -        features.selectionHasRangeCount = selectionHasRangeCount;
      -
      -        var selectionSupportsMultipleRanges = false;
      -        var collapsedNonEditableSelectionsSupported = true;
      -
      -        var addRangeBackwardToNative = selectionHasExtend ?
      -            function(nativeSelection, range) {
      -                var doc = DomRange.getRangeDocument(range);
      -                var endRange = api.createRange(doc);
      -                endRange.collapseToPoint(range.endContainer, range.endOffset);
      -                nativeSelection.addRange(getNativeRange(endRange));
      -                nativeSelection.extend(range.startContainer, range.startOffset);
      -            } : null;
      -
      -        if (util.areHostMethods(testSelection, ["addRange", "getRangeAt", "removeAllRanges"]) &&
      -                typeof testSelection.rangeCount == NUMBER && features.implementsDomRange) {
      -
      -            (function() {
      -                // Previously an iframe was used but this caused problems in some circumstances in IE, so tests are
      -                // performed on the current document's selection. See issue 109.
      -
      -                // Note also that if a selection previously existed, it is wiped by these tests. This should usually be fine
      -                // because initialization usually happens when the document loads, but could be a problem for a script that
      -                // loads and initializes Rangy later. If anyone complains, code could be added to save and restore the
      -                // selection.
      -                var sel = window.getSelection();
      -                if (sel) {
      -                    // Store the current selection
      -                    var originalSelectionRangeCount = sel.rangeCount;
      -                    var selectionHasMultipleRanges = (originalSelectionRangeCount > 1);
      -                    var originalSelectionRanges = [];
      -                    var originalSelectionBackward = winSelectionIsBackward(sel); 
      -                    for (var i = 0; i < originalSelectionRangeCount; ++i) {
      -                        originalSelectionRanges[i] = sel.getRangeAt(i);
      -                    }
      -                    
      -                    // Create some test elements
      -                    var body = getBody(document);
      -                    var testEl = body.appendChild( document.createElement("div") );
      -                    testEl.contentEditable = "false";
      -                    var textNode = testEl.appendChild( document.createTextNode("\u00a0\u00a0\u00a0") );
      -
      -                    // Test whether the native selection will allow a collapsed selection within a non-editable element
      -                    var r1 = document.createRange();
      -
      -                    r1.setStart(textNode, 1);
      -                    r1.collapse(true);
      -                    sel.addRange(r1);
      -                    collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1);
      -                    sel.removeAllRanges();
      -
      -                    // Test whether the native selection is capable of supporting multiple ranges.
      -                    if (!selectionHasMultipleRanges) {
      -                        // Doing the original feature test here in Chrome 36 (and presumably later versions) prints a
      -                        // console error of "Discontiguous selection is not supported." that cannot be suppressed. There's
      -                        // nothing we can do about this while retaining the feature test so we have to resort to a browser
      -                        // sniff. I'm not happy about it. See
      -                        // https://code.google.com/p/chromium/issues/detail?id=399791
      -                        var chromeMatch = window.navigator.appVersion.match(/Chrome\/(.*?) /);
      -                        if (chromeMatch && parseInt(chromeMatch[1]) >= 36) {
      -                            selectionSupportsMultipleRanges = false;
      -                        } else {
      -                            var r2 = r1.cloneRange();
      -                            r1.setStart(textNode, 0);
      -                            r2.setEnd(textNode, 3);
      -                            r2.setStart(textNode, 2);
      -                            sel.addRange(r1);
      -                            sel.addRange(r2);
      -                            selectionSupportsMultipleRanges = (sel.rangeCount == 2);
      -                        }
      -                    }
      -
      -                    // Clean up
      -                    body.removeChild(testEl);
      -                    sel.removeAllRanges();
      -
      -                    for (i = 0; i < originalSelectionRangeCount; ++i) {
      -                        if (i == 0 && originalSelectionBackward) {
      -                            if (addRangeBackwardToNative) {
      -                                addRangeBackwardToNative(sel, originalSelectionRanges[i]);
      -                            } else {
      -                                api.warn("Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend");
      -                                sel.addRange(originalSelectionRanges[i]);
      -                            }
      -                        } else {
      -                            sel.addRange(originalSelectionRanges[i]);
      -                        }
      -                    }
      -                }
      -            })();
      -        }
      -
      -        features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges;
      -        features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported;
      -
      -        // ControlRanges
      -        var implementsControlRange = false, testControlRange;
      -
      -        if (body && isHostMethod(body, "createControlRange")) {
      -            testControlRange = body.createControlRange();
      -            if (util.areHostProperties(testControlRange, ["item", "add"])) {
      -                implementsControlRange = true;
      -            }
      -        }
      -        features.implementsControlRange = implementsControlRange;
      -
      -        // Selection collapsedness
      -        if (selectionHasAnchorAndFocus) {
      -            selectionIsCollapsed = function(sel) {
      -                return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset;
      -            };
      -        } else {
      -            selectionIsCollapsed = function(sel) {
      -                return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false;
      -            };
      -        }
      -
      -        function updateAnchorAndFocusFromRange(sel, range, backward) {
      -            var anchorPrefix = backward ? "end" : "start", focusPrefix = backward ? "start" : "end";
      -            sel.anchorNode = range[anchorPrefix + "Container"];
      -            sel.anchorOffset = range[anchorPrefix + "Offset"];
      -            sel.focusNode = range[focusPrefix + "Container"];
      -            sel.focusOffset = range[focusPrefix + "Offset"];
      -        }
      -
      -        function updateAnchorAndFocusFromNativeSelection(sel) {
      -            var nativeSel = sel.nativeSelection;
      -            sel.anchorNode = nativeSel.anchorNode;
      -            sel.anchorOffset = nativeSel.anchorOffset;
      -            sel.focusNode = nativeSel.focusNode;
      -            sel.focusOffset = nativeSel.focusOffset;
      -        }
      -
      -        function updateEmptySelection(sel) {
      -            sel.anchorNode = sel.focusNode = null;
      -            sel.anchorOffset = sel.focusOffset = 0;
      -            sel.rangeCount = 0;
      -            sel.isCollapsed = true;
      -            sel._ranges.length = 0;
      -        }
      -
      -        function getNativeRange(range) {
      -            var nativeRange;
      -            if (range instanceof DomRange) {
      -                nativeRange = api.createNativeRange(range.getDocument());
      -                nativeRange.setEnd(range.endContainer, range.endOffset);
      -                nativeRange.setStart(range.startContainer, range.startOffset);
      -            } else if (range instanceof WrappedRange) {
      -                nativeRange = range.nativeRange;
      -            } else if (features.implementsDomRange && (range instanceof dom.getWindow(range.startContainer).Range)) {
      -                nativeRange = range;
      -            }
      -            return nativeRange;
      -        }
      -
      -        function rangeContainsSingleElement(rangeNodes) {
      -            if (!rangeNodes.length || rangeNodes[0].nodeType != 1) {
      -                return false;
      -            }
      -            for (var i = 1, len = rangeNodes.length; i < len; ++i) {
      -                if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        }
      -
      -        function getSingleElementFromRange(range) {
      -            var nodes = range.getNodes();
      -            if (!rangeContainsSingleElement(nodes)) {
      -                throw module.createError("getSingleElementFromRange: range " + range.inspect() + " did not consist of a single element");
      -            }
      -            return nodes[0];
      -        }
      -
      -        // Simple, quick test which only needs to distinguish between a TextRange and a ControlRange
      -        function isTextRange(range) {
      -            return !!range && typeof range.text != "undefined";
      -        }
      -
      -        function updateFromTextRange(sel, range) {
      -            // Create a Range from the selected TextRange
      -            var wrappedRange = new WrappedRange(range);
      -            sel._ranges = [wrappedRange];
      -
      -            updateAnchorAndFocusFromRange(sel, wrappedRange, false);
      -            sel.rangeCount = 1;
      -            sel.isCollapsed = wrappedRange.collapsed;
      -        }
      -
      -        function updateControlSelection(sel) {
      -            // Update the wrapped selection based on what's now in the native selection
      -            sel._ranges.length = 0;
      -            if (sel.docSelection.type == "None") {
      -                updateEmptySelection(sel);
      -            } else {
      -                var controlRange = sel.docSelection.createRange();
      -                if (isTextRange(controlRange)) {
      -                    // This case (where the selection type is "Control" and calling createRange() on the selection returns
      -                    // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected
      -                    // ControlRange have been removed from the ControlRange and removed from the document.
      -                    updateFromTextRange(sel, controlRange);
      -                } else {
      -                    sel.rangeCount = controlRange.length;
      -                    var range, doc = getDocument(controlRange.item(0));
      -                    for (var i = 0; i < sel.rangeCount; ++i) {
      -                        range = api.createRange(doc);
      -                        range.selectNode(controlRange.item(i));
      -                        sel._ranges.push(range);
      -                    }
      -                    sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed;
      -                    updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false);
      -                }
      -            }
      -        }
      -
      -        function addRangeToControlSelection(sel, range) {
      -            var controlRange = sel.docSelection.createRange();
      -            var rangeElement = getSingleElementFromRange(range);
      -
      -            // Create a new ControlRange containing all the elements in the selected ControlRange plus the element
      -            // contained by the supplied range
      -            var doc = getDocument(controlRange.item(0));
      -            var newControlRange = getBody(doc).createControlRange();
      -            for (var i = 0, len = controlRange.length; i < len; ++i) {
      -                newControlRange.add(controlRange.item(i));
      -            }
      -            try {
      -                newControlRange.add(rangeElement);
      -            } catch (ex) {
      -                throw module.createError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)");
      -            }
      -            newControlRange.select();
      -
      -            // Update the wrapped selection based on what's now in the native selection
      -            updateControlSelection(sel);
      -        }
      -
      -        var getSelectionRangeAt;
      -
      -        if (isHostMethod(testSelection, "getRangeAt")) {
      -            // try/catch is present because getRangeAt() must have thrown an error in some browser and some situation.
      -            // Unfortunately, I didn't write a comment about the specifics and am now scared to take it out. Let that be a
      -            // lesson to us all, especially me.
      -            getSelectionRangeAt = function(sel, index) {
      -                try {
      -                    return sel.getRangeAt(index);
      -                } catch (ex) {
      -                    return null;
      -                }
      -            };
      -        } else if (selectionHasAnchorAndFocus) {
      -            getSelectionRangeAt = function(sel) {
      -                var doc = getDocument(sel.anchorNode);
      -                var range = api.createRange(doc);
      -                range.setStartAndEnd(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset);
      -
      -                // Handle the case when the selection was selected backwards (from the end to the start in the
      -                // document)
      -                if (range.collapsed !== this.isCollapsed) {
      -                    range.setStartAndEnd(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset);
      -                }
      -
      -                return range;
      -            };
      -        }
      -
      -        function WrappedSelection(selection, docSelection, win) {
      -            this.nativeSelection = selection;
      -            this.docSelection = docSelection;
      -            this._ranges = [];
      -            this.win = win;
      -            this.refresh();
      -        }
      -
      -        WrappedSelection.prototype = api.selectionPrototype;
      -
      -        function deleteProperties(sel) {
      -            sel.win = sel.anchorNode = sel.focusNode = sel._ranges = null;
      -            sel.rangeCount = sel.anchorOffset = sel.focusOffset = 0;
      -            sel.detached = true;
      -        }
      -
      -        var cachedRangySelections = [];
      -
      -        function actOnCachedSelection(win, action) {
      -            var i = cachedRangySelections.length, cached, sel;
      -            while (i--) {
      -                cached = cachedRangySelections[i];
      -                sel = cached.selection;
      -                if (action == "deleteAll") {
      -                    deleteProperties(sel);
      -                } else if (cached.win == win) {
      -                    if (action == "delete") {
      -                        cachedRangySelections.splice(i, 1);
      -                        return true;
      -                    } else {
      -                        return sel;
      -                    }
      -                }
      -            }
      -            if (action == "deleteAll") {
      -                cachedRangySelections.length = 0;
      -            }
      -            return null;
      -        }
      -
      -        var getSelection = function(win) {
      -            // Check if the parameter is a Rangy Selection object
      -            if (win && win instanceof WrappedSelection) {
      -                win.refresh();
      -                return win;
      -            }
      -
      -            win = getWindow(win, "getNativeSelection");
      -
      -            var sel = actOnCachedSelection(win);
      -            var nativeSel = getNativeSelection(win), docSel = implementsDocSelection ? getDocSelection(win) : null;
      -            if (sel) {
      -                sel.nativeSelection = nativeSel;
      -                sel.docSelection = docSel;
      -                sel.refresh();
      -            } else {
      -                sel = new WrappedSelection(nativeSel, docSel, win);
      -                cachedRangySelections.push( { win: win, selection: sel } );
      -            }
      -            return sel;
      -        };
      -
      -        api.getSelection = getSelection;
      -
      -        api.getIframeSelection = function(iframeEl) {
      -            module.deprecationNotice("getIframeSelection()", "getSelection(iframeEl)");
      -            return api.getSelection(dom.getIframeWindow(iframeEl));
      -        };
      -
      -        var selProto = WrappedSelection.prototype;
      -
      -        function createControlSelection(sel, ranges) {
      -            // Ensure that the selection becomes of type "Control"
      -            var doc = getDocument(ranges[0].startContainer);
      -            var controlRange = getBody(doc).createControlRange();
      -            for (var i = 0, el, len = ranges.length; i < len; ++i) {
      -                el = getSingleElementFromRange(ranges[i]);
      -                try {
      -                    controlRange.add(el);
      -                } catch (ex) {
      -                    throw module.createError("setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)");
      -                }
      -            }
      -            controlRange.select();
      -
      -            // Update the wrapped selection based on what's now in the native selection
      -            updateControlSelection(sel);
      -        }
      -
      -        // Selecting a range
      -        if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, ["removeAllRanges", "addRange"])) {
      -            selProto.removeAllRanges = function() {
      -                this.nativeSelection.removeAllRanges();
      -                updateEmptySelection(this);
      -            };
      -
      -            var addRangeBackward = function(sel, range) {
      -                addRangeBackwardToNative(sel.nativeSelection, range);
      -                sel.refresh();
      -            };
      -
      -            if (selectionHasRangeCount) {
      -                selProto.addRange = function(range, direction) {
      -                    if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {
      -                        addRangeToControlSelection(this, range);
      -                    } else {
      -                        if (isDirectionBackward(direction) && selectionHasExtend) {
      -                            addRangeBackward(this, range);
      -                        } else {
      -                            var previousRangeCount;
      -                            if (selectionSupportsMultipleRanges) {
      -                                previousRangeCount = this.rangeCount;
      -                            } else {
      -                                this.removeAllRanges();
      -                                previousRangeCount = 0;
      -                            }
      -                            // Clone the native range so that changing the selected range does not affect the selection.
      -                            // This is contrary to the spec but is the only way to achieve consistency between browsers. See
      -                            // issue 80.
      -                            this.nativeSelection.addRange(getNativeRange(range).cloneRange());
      -
      -                            // Check whether adding the range was successful
      -                            this.rangeCount = this.nativeSelection.rangeCount;
      -
      -                            if (this.rangeCount == previousRangeCount + 1) {
      -                                // The range was added successfully
      -
      -                                // Check whether the range that we added to the selection is reflected in the last range extracted from
      -                                // the selection
      -                                if (api.config.checkSelectionRanges) {
      -                                    var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1);
      -                                    if (nativeRange && !rangesEqual(nativeRange, range)) {
      -                                        // Happens in WebKit with, for example, a selection placed at the start of a text node
      -                                        range = new WrappedRange(nativeRange);
      -                                    }
      -                                }
      -                                this._ranges[this.rangeCount - 1] = range;
      -                                updateAnchorAndFocusFromRange(this, range, selectionIsBackward(this.nativeSelection));
      -                                this.isCollapsed = selectionIsCollapsed(this);
      -                            } else {
      -                                // The range was not added successfully. The simplest thing is to refresh
      -                                this.refresh();
      -                            }
      -                        }
      -                    }
      -                };
      -            } else {
      -                selProto.addRange = function(range, direction) {
      -                    if (isDirectionBackward(direction) && selectionHasExtend) {
      -                        addRangeBackward(this, range);
      -                    } else {
      -                        this.nativeSelection.addRange(getNativeRange(range));
      -                        this.refresh();
      -                    }
      -                };
      -            }
      -
      -            selProto.setRanges = function(ranges) {
      -                if (implementsControlRange && implementsDocSelection && ranges.length > 1) {
      -                    createControlSelection(this, ranges);
      -                } else {
      -                    this.removeAllRanges();
      -                    for (var i = 0, len = ranges.length; i < len; ++i) {
      -                        this.addRange(ranges[i]);
      -                    }
      -                }
      -            };
      -        } else if (isHostMethod(testSelection, "empty") && isHostMethod(testRange, "select") &&
      -                   implementsControlRange && useDocumentSelection) {
      -
      -            selProto.removeAllRanges = function() {
      -                // Added try/catch as fix for issue #21
      -                try {
      -                    this.docSelection.empty();
      -
      -                    // Check for empty() not working (issue #24)
      -                    if (this.docSelection.type != "None") {
      -                        // Work around failure to empty a control selection by instead selecting a TextRange and then
      -                        // calling empty()
      -                        var doc;
      -                        if (this.anchorNode) {
      -                            doc = getDocument(this.anchorNode);
      -                        } else if (this.docSelection.type == CONTROL) {
      -                            var controlRange = this.docSelection.createRange();
      -                            if (controlRange.length) {
      -                                doc = getDocument( controlRange.item(0) );
      -                            }
      -                        }
      -                        if (doc) {
      -                            var textRange = getBody(doc).createTextRange();
      -                            textRange.select();
      -                            this.docSelection.empty();
      -                        }
      -                    }
      -                } catch(ex) {}
      -                updateEmptySelection(this);
      -            };
      -
      -            selProto.addRange = function(range) {
      -                if (this.docSelection.type == CONTROL) {
      -                    addRangeToControlSelection(this, range);
      -                } else {
      -                    api.WrappedTextRange.rangeToTextRange(range).select();
      -                    this._ranges[0] = range;
      -                    this.rangeCount = 1;
      -                    this.isCollapsed = this._ranges[0].collapsed;
      -                    updateAnchorAndFocusFromRange(this, range, false);
      -                }
      -            };
      -
      -            selProto.setRanges = function(ranges) {
      -                this.removeAllRanges();
      -                var rangeCount = ranges.length;
      -                if (rangeCount > 1) {
      -                    createControlSelection(this, ranges);
      -                } else if (rangeCount) {
      -                    this.addRange(ranges[0]);
      -                }
      -            };
      -        } else {
      -            module.fail("No means of selecting a Range or TextRange was found");
      -            return false;
      -        }
      -
      -        selProto.getRangeAt = function(index) {
      -            if (index < 0 || index >= this.rangeCount) {
      -                throw new DOMException("INDEX_SIZE_ERR");
      -            } else {
      -                // Clone the range to preserve selection-range independence. See issue 80.
      -                return this._ranges[index].cloneRange();
      -            }
      -        };
      -
      -        var refreshSelection;
      -
      -        if (useDocumentSelection) {
      -            refreshSelection = function(sel) {
      -                var range;
      -                if (api.isSelectionValid(sel.win)) {
      -                    range = sel.docSelection.createRange();
      -                } else {
      -                    range = getBody(sel.win.document).createTextRange();
      -                    range.collapse(true);
      -                }
      -
      -                if (sel.docSelection.type == CONTROL) {
      -                    updateControlSelection(sel);
      -                } else if (isTextRange(range)) {
      -                    updateFromTextRange(sel, range);
      -                } else {
      -                    updateEmptySelection(sel);
      -                }
      -            };
      -        } else if (isHostMethod(testSelection, "getRangeAt") && typeof testSelection.rangeCount == NUMBER) {
      -            refreshSelection = function(sel) {
      -                if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) {
      -                    updateControlSelection(sel);
      -                } else {
      -                    sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount;
      -                    if (sel.rangeCount) {
      -                        for (var i = 0, len = sel.rangeCount; i < len; ++i) {
      -                            sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i));
      -                        }
      -                        updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackward(sel.nativeSelection));
      -                        sel.isCollapsed = selectionIsCollapsed(sel);
      -                    } else {
      -                        updateEmptySelection(sel);
      -                    }
      -                }
      -            };
      -        } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && features.implementsDomRange) {
      -            refreshSelection = function(sel) {
      -                var range, nativeSel = sel.nativeSelection;
      -                if (nativeSel.anchorNode) {
      -                    range = getSelectionRangeAt(nativeSel, 0);
      -                    sel._ranges = [range];
      -                    sel.rangeCount = 1;
      -                    updateAnchorAndFocusFromNativeSelection(sel);
      -                    sel.isCollapsed = selectionIsCollapsed(sel);
      -                } else {
      -                    updateEmptySelection(sel);
      -                }
      -            };
      -        } else {
      -            module.fail("No means of obtaining a Range or TextRange from the user's selection was found");
      -            return false;
      -        }
      -
      -        selProto.refresh = function(checkForChanges) {
      -            var oldRanges = checkForChanges ? this._ranges.slice(0) : null;
      -            var oldAnchorNode = this.anchorNode, oldAnchorOffset = this.anchorOffset;
      -
      -            refreshSelection(this);
      -            if (checkForChanges) {
      -                // Check the range count first
      -                var i = oldRanges.length;
      -                if (i != this._ranges.length) {
      -                    return true;
      -                }
      -
      -                // Now check the direction. Checking the anchor position is the same is enough since we're checking all the
      -                // ranges after this
      -                if (this.anchorNode != oldAnchorNode || this.anchorOffset != oldAnchorOffset) {
      -                    return true;
      -                }
      -
      -                // Finally, compare each range in turn
      -                while (i--) {
      -                    if (!rangesEqual(oldRanges[i], this._ranges[i])) {
      -                        return true;
      -                    }
      -                }
      -                return false;
      -            }
      -        };
      -
      -        // Removal of a single range
      -        var removeRangeManually = function(sel, range) {
      -            var ranges = sel.getAllRanges();
      -            sel.removeAllRanges();
      -            for (var i = 0, len = ranges.length; i < len; ++i) {
      -                if (!rangesEqual(range, ranges[i])) {
      -                    sel.addRange(ranges[i]);
      -                }
      -            }
      -            if (!sel.rangeCount) {
      -                updateEmptySelection(sel);
      -            }
      -        };
      -
      -        if (implementsControlRange && implementsDocSelection) {
      -            selProto.removeRange = function(range) {
      -                if (this.docSelection.type == CONTROL) {
      -                    var controlRange = this.docSelection.createRange();
      -                    var rangeElement = getSingleElementFromRange(range);
      -
      -                    // Create a new ControlRange containing all the elements in the selected ControlRange minus the
      -                    // element contained by the supplied range
      -                    var doc = getDocument(controlRange.item(0));
      -                    var newControlRange = getBody(doc).createControlRange();
      -                    var el, removed = false;
      -                    for (var i = 0, len = controlRange.length; i < len; ++i) {
      -                        el = controlRange.item(i);
      -                        if (el !== rangeElement || removed) {
      -                            newControlRange.add(controlRange.item(i));
      -                        } else {
      -                            removed = true;
      -                        }
      -                    }
      -                    newControlRange.select();
      -
      -                    // Update the wrapped selection based on what's now in the native selection
      -                    updateControlSelection(this);
      -                } else {
      -                    removeRangeManually(this, range);
      -                }
      -            };
      -        } else {
      -            selProto.removeRange = function(range) {
      -                removeRangeManually(this, range);
      -            };
      -        }
      -
      -        // Detecting if a selection is backward
      -        var selectionIsBackward;
      -        if (!useDocumentSelection && selectionHasAnchorAndFocus && features.implementsDomRange) {
      -            selectionIsBackward = winSelectionIsBackward;
      -
      -            selProto.isBackward = function() {
      -                return selectionIsBackward(this);
      -            };
      -        } else {
      -            selectionIsBackward = selProto.isBackward = function() {
      -                return false;
      -            };
      -        }
      -
      -        // Create an alias for backwards compatibility. From 1.3, everything is "backward" rather than "backwards"
      -        selProto.isBackwards = selProto.isBackward;
      -
      -        // Selection stringifier
      -        // This is conformant to the old HTML5 selections draft spec but differs from WebKit and Mozilla's implementation.
      -        // The current spec does not yet define this method.
      -        selProto.toString = function() {
      -            var rangeTexts = [];
      -            for (var i = 0, len = this.rangeCount; i < len; ++i) {
      -                rangeTexts[i] = "" + this._ranges[i];
      -            }
      -            return rangeTexts.join("");
      -        };
      -
      -        function assertNodeInSameDocument(sel, node) {
      -            if (sel.win.document != getDocument(node)) {
      -                throw new DOMException("WRONG_DOCUMENT_ERR");
      -            }
      -        }
      -
      -        // No current browser conforms fully to the spec for this method, so Rangy's own method is always used
      -        selProto.collapse = function(node, offset) {
      -            assertNodeInSameDocument(this, node);
      -            var range = api.createRange(node);
      -            range.collapseToPoint(node, offset);
      -            this.setSingleRange(range);
      -            this.isCollapsed = true;
      -        };
      -
      -        selProto.collapseToStart = function() {
      -            if (this.rangeCount) {
      -                var range = this._ranges[0];
      -                this.collapse(range.startContainer, range.startOffset);
      -            } else {
      -                throw new DOMException("INVALID_STATE_ERR");
      -            }
      -        };
      -
      -        selProto.collapseToEnd = function() {
      -            if (this.rangeCount) {
      -                var range = this._ranges[this.rangeCount - 1];
      -                this.collapse(range.endContainer, range.endOffset);
      -            } else {
      -                throw new DOMException("INVALID_STATE_ERR");
      -            }
      -        };
      -
      -        // The spec is very specific on how selectAllChildren should be implemented so the native implementation is
      -        // never used by Rangy.
      -        selProto.selectAllChildren = function(node) {
      -            assertNodeInSameDocument(this, node);
      -            var range = api.createRange(node);
      -            range.selectNodeContents(node);
      -            this.setSingleRange(range);
      -        };
      -
      -        selProto.deleteFromDocument = function() {
      -            // Sepcial behaviour required for IE's control selections
      -            if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {
      -                var controlRange = this.docSelection.createRange();
      -                var element;
      -                while (controlRange.length) {
      -                    element = controlRange.item(0);
      -                    controlRange.remove(element);
      -                    element.parentNode.removeChild(element);
      -                }
      -                this.refresh();
      -            } else if (this.rangeCount) {
      -                var ranges = this.getAllRanges();
      -                if (ranges.length) {
      -                    this.removeAllRanges();
      -                    for (var i = 0, len = ranges.length; i < len; ++i) {
      -                        ranges[i].deleteContents();
      -                    }
      -                    // The spec says nothing about what the selection should contain after calling deleteContents on each
      -                    // range. Firefox moves the selection to where the final selected range was, so we emulate that
      -                    this.addRange(ranges[len - 1]);
      -                }
      -            }
      -        };
      -
      -        // The following are non-standard extensions
      -        selProto.eachRange = function(func, returnValue) {
      -            for (var i = 0, len = this._ranges.length; i < len; ++i) {
      -                if ( func( this.getRangeAt(i) ) ) {
      -                    return returnValue;
      -                }
      -            }
      -        };
      -
      -        selProto.getAllRanges = function() {
      -            var ranges = [];
      -            this.eachRange(function(range) {
      -                ranges.push(range);
      -            });
      -            return ranges;
      -        };
      -
      -        selProto.setSingleRange = function(range, direction) {
      -            this.removeAllRanges();
      -            this.addRange(range, direction);
      -        };
      -
      -        selProto.callMethodOnEachRange = function(methodName, params) {
      -            var results = [];
      -            this.eachRange( function(range) {
      -                results.push( range[methodName].apply(range, params) );
      -            } );
      -            return results;
      -        };
      -        
      -        function createStartOrEndSetter(isStart) {
      -            return function(node, offset) {
      -                var range;
      -                if (this.rangeCount) {
      -                    range = this.getRangeAt(0);
      -                    range["set" + (isStart ? "Start" : "End")](node, offset);
      -                } else {
      -                    range = api.createRange(this.win.document);
      -                    range.setStartAndEnd(node, offset);
      -                }
      -                this.setSingleRange(range, this.isBackward());
      -            };
      -        }
      -
      -        selProto.setStart = createStartOrEndSetter(true);
      -        selProto.setEnd = createStartOrEndSetter(false);
      -        
      -        // Add select() method to Range prototype. Any existing selection will be removed.
      -        api.rangePrototype.select = function(direction) {
      -            getSelection( this.getDocument() ).setSingleRange(this, direction);
      -        };
      -
      -        selProto.changeEachRange = function(func) {
      -            var ranges = [];
      -            var backward = this.isBackward();
      -
      -            this.eachRange(function(range) {
      -                func(range);
      -                ranges.push(range);
      -            });
      -
      -            this.removeAllRanges();
      -            if (backward && ranges.length == 1) {
      -                this.addRange(ranges[0], "backward");
      -            } else {
      -                this.setRanges(ranges);
      -            }
      -        };
      -
      -        selProto.containsNode = function(node, allowPartial) {
      -            return this.eachRange( function(range) {
      -                return range.containsNode(node, allowPartial);
      -            }, true ) || false;
      -        };
      -
      -        selProto.getBookmark = function(containerNode) {
      -            return {
      -                backward: this.isBackward(),
      -                rangeBookmarks: this.callMethodOnEachRange("getBookmark", [containerNode])
      -            };
      -        };
      -
      -        selProto.moveToBookmark = function(bookmark) {
      -            var selRanges = [];
      -            for (var i = 0, rangeBookmark, range; rangeBookmark = bookmark.rangeBookmarks[i++]; ) {
      -                range = api.createRange(this.win);
      -                range.moveToBookmark(rangeBookmark);
      -                selRanges.push(range);
      -            }
      -            if (bookmark.backward) {
      -                this.setSingleRange(selRanges[0], "backward");
      -            } else {
      -                this.setRanges(selRanges);
      -            }
      -        };
      -
      -        selProto.toHtml = function() {
      -            var rangeHtmls = [];
      -            this.eachRange(function(range) {
      -                rangeHtmls.push( DomRange.toHtml(range) );
      -            });
      -            return rangeHtmls.join("");
      -        };
      -
      -        if (features.implementsTextRange) {
      -            selProto.getNativeTextRange = function() {
      -                var sel, textRange;
      -                if ( (sel = this.docSelection) ) {
      -                    var range = sel.createRange();
      -                    if (isTextRange(range)) {
      -                        return range;
      -                    } else {
      -                        throw module.createError("getNativeTextRange: selection is a control selection"); 
      -                    }
      -                } else if (this.rangeCount > 0) {
      -                    return api.WrappedTextRange.rangeToTextRange( this.getRangeAt(0) );
      -                } else {
      -                    throw module.createError("getNativeTextRange: selection contains no range");
      -                }
      -            };
      -        }
      -
      -        function inspect(sel) {
      -            var rangeInspects = [];
      -            var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset);
      -            var focus = new DomPosition(sel.focusNode, sel.focusOffset);
      -            var name = (typeof sel.getName == "function") ? sel.getName() : "Selection";
      -
      -            if (typeof sel.rangeCount != "undefined") {
      -                for (var i = 0, len = sel.rangeCount; i < len; ++i) {
      -                    rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i));
      -                }
      -            }
      -            return "[" + name + "(Ranges: " + rangeInspects.join(", ") +
      -                    ")(anchor: " + anchor.inspect() + ", focus: " + focus.inspect() + "]";
      -        }
      -
      -        selProto.getName = function() {
      -            return "WrappedSelection";
      -        };
      -
      -        selProto.inspect = function() {
      -            return inspect(this);
      -        };
      -
      -        selProto.detach = function() {
      -            actOnCachedSelection(this.win, "delete");
      -            deleteProperties(this);
      -        };
      -
      -        WrappedSelection.detachAll = function() {
      -            actOnCachedSelection(null, "deleteAll");
      -        };
      -
      -        WrappedSelection.inspect = inspect;
      -        WrappedSelection.isDirectionBackward = isDirectionBackward;
      -
      -        api.Selection = WrappedSelection;
      -
      -        api.selectionPrototype = selProto;
      -
      -        api.addShimListener(function(win) {
      -            if (typeof win.getSelection == "undefined") {
      -                win.getSelection = function() {
      -                    return getSelection(win);
      -                };
      -            }
      -            win = null;
      -        });
      -    });
      -    
      -
      -    /*----------------------------------------------------------------------------------------------------------------*/
      -
      -    return api;
      -}, this);;/**
      - * Selection save and restore module for Rangy.
      - * Saves and restores user selections using marker invisible elements in the DOM.
      - *
      - * Part of Rangy, a cross-browser JavaScript range and selection library
      - * http://code.google.com/p/rangy/
      - *
      - * Depends on Rangy core.
      - *
      - * Copyright 2014, Tim Down
      - * Licensed under the MIT license.
      - * Version: 1.3alpha.20140804
      - * Build date: 4 August 2014
      - */
      -(function(factory, global) {
      -    if (typeof define == "function" && define.amd) {
      -        // AMD. Register as an anonymous module with a dependency on Rangy.
      -        define(["rangy"], factory);
      -        /*
      -         } else if (typeof exports == "object") {
      -         // Node/CommonJS style for Browserify
      -         module.exports = factory;
      -         */
      -    } else {
      -        // No AMD or CommonJS support so we use the rangy global variable
      -        factory(global.rangy);
      -    }
      -})(function(rangy) {
      -    rangy.createModule("SaveRestore", ["WrappedRange"], function(api, module) {
      -        var dom = api.dom;
      -
      -        var markerTextChar = "\ufeff";
      -
      -        function gEBI(id, doc) {
      -            return (doc || document).getElementById(id);
      -        }
      -
      -        function insertRangeBoundaryMarker(range, atStart) {
      -            var markerId = "selectionBoundary_" + (+new Date()) + "_" + ("" + Math.random()).slice(2);
      -            var markerEl;
      -            var doc = dom.getDocument(range.startContainer);
      -
      -            // Clone the Range and collapse to the appropriate boundary point
      -            var boundaryRange = range.cloneRange();
      -            boundaryRange.collapse(atStart);
      -
      -            // Create the marker element containing a single invisible character using DOM methods and insert it
      -            markerEl = doc.createElement("span");
      -            markerEl.id = markerId;
      -            markerEl.style.lineHeight = "0";
      -            markerEl.style.display = "none";
      -            markerEl.className = "rangySelectionBoundary";
      -            markerEl.appendChild(doc.createTextNode(markerTextChar));
      -
      -            boundaryRange.insertNode(markerEl);
      -            return markerEl;
      -        }
      -
      -        function setRangeBoundary(doc, range, markerId, atStart) {
      -            var markerEl = gEBI(markerId, doc);
      -            if (markerEl) {
      -                range[atStart ? "setStartBefore" : "setEndBefore"](markerEl);
      -                markerEl.parentNode.removeChild(markerEl);
      -            } else {
      -                module.warn("Marker element has been removed. Cannot restore selection.");
      -            }
      -        }
      -
      -        function compareRanges(r1, r2) {
      -            return r2.compareBoundaryPoints(r1.START_TO_START, r1);
      -        }
      -
      -        function saveRange(range, backward) {
      -            var startEl, endEl, doc = api.DomRange.getRangeDocument(range), text = range.toString();
      -
      -            if (range.collapsed) {
      -                endEl = insertRangeBoundaryMarker(range, false);
      -                return {
      -                    document: doc,
      -                    markerId: endEl.id,
      -                    collapsed: true
      -                };
      -            } else {
      -                endEl = insertRangeBoundaryMarker(range, false);
      -                startEl = insertRangeBoundaryMarker(range, true);
      -
      -                return {
      -                    document: doc,
      -                    startMarkerId: startEl.id,
      -                    endMarkerId: endEl.id,
      -                    collapsed: false,
      -                    backward: backward,
      -                    toString: function() {
      -                        return "original text: '" + text + "', new text: '" + range.toString() + "'";
      -                    }
      -                };
      -            }
      -        }
      -
      -        function restoreRange(rangeInfo, normalize) {
      -            var doc = rangeInfo.document;
      -            if (typeof normalize == "undefined") {
      -                normalize = true;
      -            }
      -            var range = api.createRange(doc);
      -            if (rangeInfo.collapsed) {
      -                var markerEl = gEBI(rangeInfo.markerId, doc);
      -                if (markerEl) {
      -                    markerEl.style.display = "inline";
      -                    var previousNode = markerEl.previousSibling;
      -
      -                    // Workaround for issue 17
      -                    if (previousNode && previousNode.nodeType == 3) {
      -                        markerEl.parentNode.removeChild(markerEl);
      -                        range.collapseToPoint(previousNode, previousNode.length);
      -                    } else {
      -                        range.collapseBefore(markerEl);
      -                        markerEl.parentNode.removeChild(markerEl);
      -                    }
      -                } else {
      -                    module.warn("Marker element has been removed. Cannot restore selection.");
      -                }
      -            } else {
      -                setRangeBoundary(doc, range, rangeInfo.startMarkerId, true);
      -                setRangeBoundary(doc, range, rangeInfo.endMarkerId, false);
      -            }
      -
      -            if (normalize) {
      -                range.normalizeBoundaries();
      -            }
      -
      -            return range;
      -        }
      -
      -        function saveRanges(ranges, backward) {
      -            var rangeInfos = [], range, doc;
      -
      -            // Order the ranges by position within the DOM, latest first, cloning the array to leave the original untouched
      -            ranges = ranges.slice(0);
      -            ranges.sort(compareRanges);
      -
      -            for (var i = 0, len = ranges.length; i < len; ++i) {
      -                rangeInfos[i] = saveRange(ranges[i], backward);
      -            }
      -
      -            // Now that all the markers are in place and DOM manipulation over, adjust each range's boundaries to lie
      -            // between its markers
      -            for (i = len - 1; i >= 0; --i) {
      -                range = ranges[i];
      -                doc = api.DomRange.getRangeDocument(range);
      -                if (range.collapsed) {
      -                    range.collapseAfter(gEBI(rangeInfos[i].markerId, doc));
      -                } else {
      -                    range.setEndBefore(gEBI(rangeInfos[i].endMarkerId, doc));
      -                    range.setStartAfter(gEBI(rangeInfos[i].startMarkerId, doc));
      -                }
      -            }
      -
      -            return rangeInfos;
      -        }
      -
      -        function saveSelection(win) {
      -            if (!api.isSelectionValid(win)) {
      -                module.warn("Cannot save selection. This usually happens when the selection is collapsed and the selection document has lost focus.");
      -                return null;
      -            }
      -            var sel = api.getSelection(win);
      -            var ranges = sel.getAllRanges();
      -            var backward = (ranges.length == 1 && sel.isBackward());
      -
      -            var rangeInfos = saveRanges(ranges, backward);
      -
      -            // Ensure current selection is unaffected
      -            if (backward) {
      -                sel.setSingleRange(ranges[0], "backward");
      -            } else {
      -                sel.setRanges(ranges);
      -            }
      -
      -            return {
      -                win: win,
      -                rangeInfos: rangeInfos,
      -                restored: false
      -            };
      -        }
      -
      -        function restoreRanges(rangeInfos) {
      -            var ranges = [];
      -
      -            // Ranges are in reverse order of appearance in the DOM. We want to restore earliest first to avoid
      -            // normalization affecting previously restored ranges.
      -            var rangeCount = rangeInfos.length;
      -
      -            for (var i = rangeCount - 1; i >= 0; i--) {
      -                ranges[i] = restoreRange(rangeInfos[i], true);
      -            }
      -
      -            return ranges;
      -        }
      -
      -        function restoreSelection(savedSelection, preserveDirection) {
      -            if (!savedSelection.restored) {
      -                var rangeInfos = savedSelection.rangeInfos;
      -                var sel = api.getSelection(savedSelection.win);
      -                var ranges = restoreRanges(rangeInfos), rangeCount = rangeInfos.length;
      -
      -                if (rangeCount == 1 && preserveDirection && api.features.selectionHasExtend && rangeInfos[0].backward) {
      -                    sel.removeAllRanges();
      -                    sel.addRange(ranges[0], true);
      -                } else {
      -                    sel.setRanges(ranges);
      -                }
      -
      -                savedSelection.restored = true;
      -            }
      -        }
      -
      -        function removeMarkerElement(doc, markerId) {
      -            var markerEl = gEBI(markerId, doc);
      -            if (markerEl) {
      -                markerEl.parentNode.removeChild(markerEl);
      -            }
      -        }
      -
      -        function removeMarkers(savedSelection) {
      -            var rangeInfos = savedSelection.rangeInfos;
      -            for (var i = 0, len = rangeInfos.length, rangeInfo; i < len; ++i) {
      -                rangeInfo = rangeInfos[i];
      -                if (rangeInfo.collapsed) {
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.markerId);
      -                } else {
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.startMarkerId);
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.endMarkerId);
      -                }
      -            }
      -        }
      -
      -        api.util.extend(api, {
      -            saveRange: saveRange,
      -            restoreRange: restoreRange,
      -            saveRanges: saveRanges,
      -            restoreRanges: restoreRanges,
      -            saveSelection: saveSelection,
      -            restoreSelection: restoreSelection,
      -            removeMarkerElement: removeMarkerElement,
      -            removeMarkers: removeMarkers
      -        });
      -    });
      -    
      -}, this);;/*
      -	Base.js, version 1.1a
      -	Copyright 2006-2010, Dean Edwards
      -	License: http://www.opensource.org/licenses/mit-license.php
      -*/
      -
      -var Base = function() {
      -	// dummy
      -};
      -
      -Base.extend = function(_instance, _static) { // subclass
      -	var extend = Base.prototype.extend;
      -	
      -	// build the prototype
      -	Base._prototyping = true;
      -	var proto = new this;
      -	extend.call(proto, _instance);
      -  proto.base = function() {
      -    // call this method from any other method to invoke that method's ancestor
      -  };
      -	delete Base._prototyping;
      -	
      -	// create the wrapper for the constructor function
      -	//var constructor = proto.constructor.valueOf(); //-dean
      -	var constructor = proto.constructor;
      -	var klass = proto.constructor = function() {
      -		if (!Base._prototyping) {
      -			if (this._constructing || this.constructor == klass) { // instantiation
      -				this._constructing = true;
      -				constructor.apply(this, arguments);
      -				delete this._constructing;
      -			} else if (arguments[0] != null) { // casting
      -				return (arguments[0].extend || extend).call(arguments[0], proto);
      -			}
      -		}
      -	};
      -	
      -	// build the class interface
      -	klass.ancestor = this;
      -	klass.extend = this.extend;
      -	klass.forEach = this.forEach;
      -	klass.implement = this.implement;
      -	klass.prototype = proto;
      -	klass.toString = this.toString;
      -	klass.valueOf = function(type) {
      -		//return (type == "object") ? klass : constructor; //-dean
      -		return (type == "object") ? klass : constructor.valueOf();
      -	};
      -	extend.call(klass, _static);
      -	// class initialisation
      -	if (typeof klass.init == "function") klass.init();
      -	return klass;
      -};
      -
      -Base.prototype = {	
      -	extend: function(source, value) {
      -		if (arguments.length > 1) { // extending with a name/value pair
      -			var ancestor = this[source];
      -			if (ancestor && (typeof value == "function") && // overriding a method?
      -				// the valueOf() comparison is to avoid circular references
      -				(!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) &&
      -				/\bbase\b/.test(value)) {
      -				// get the underlying method
      -				var method = value.valueOf();
      -				// override
      -				value = function() {
      -					var previous = this.base || Base.prototype.base;
      -					this.base = ancestor;
      -					var returnValue = method.apply(this, arguments);
      -					this.base = previous;
      -					return returnValue;
      -				};
      -				// point to the underlying method
      -				value.valueOf = function(type) {
      -					return (type == "object") ? value : method;
      -				};
      -				value.toString = Base.toString;
      -			}
      -			this[source] = value;
      -		} else if (source) { // extending with an object literal
      -			var extend = Base.prototype.extend;
      -			// if this object has a customised extend method then use it
      -			if (!Base._prototyping && typeof this != "function") {
      -				extend = this.extend || extend;
      -			}
      -			var proto = {toSource: null};
      -			// do the "toString" and other methods manually
      -			var hidden = ["constructor", "toString", "valueOf"];
      -			// if we are prototyping then include the constructor
      -			var i = Base._prototyping ? 0 : 1;
      -			while (key = hidden[i++]) {
      -				if (source[key] != proto[key]) {
      -					extend.call(this, key, source[key]);
      -
      -				}
      -			}
      -			// copy each of the source object's properties to this object
      -			for (var key in source) {
      -				if (!proto[key]) extend.call(this, key, source[key]);
      -			}
      -		}
      -		return this;
      -	}
      -};
      -
      -// initialise
      -Base = Base.extend({
      -	constructor: function() {
      -		this.extend(arguments[0]);
      -	}
      -}, {
      -	ancestor: Object,
      -	version: "1.1",
      -	
      -	forEach: function(object, block, context) {
      -		for (var key in object) {
      -			if (this.prototype[key] === undefined) {
      -				block.call(context, object[key], key, object);
      -			}
      -		}
      -	},
      -		
      -	implement: function() {
      -		for (var i = 0; i < arguments.length; i++) {
      -			if (typeof arguments[i] == "function") {
      -				// if it's a function, call it
      -				arguments[i](this.prototype);
      -			} else {
      -				// add the interface using the extend method
      -				this.prototype.extend(arguments[i]);
      -			}
      -		}
      -		return this;
      -	},
      -	
      -	toString: function() {
      -		return String(this.valueOf());
      -	}
      -});;/**
      - * Detect browser support for specific features
      - */
      -wysihtml5.browser = (function() {
      -  var userAgent   = navigator.userAgent,
      -      testElement = document.createElement("div"),
      -      // Browser sniffing is unfortunately needed since some behaviors are impossible to feature detect
      -      isGecko     = userAgent.indexOf("Gecko")        !== -1 && userAgent.indexOf("KHTML") === -1,
      -      isWebKit    = userAgent.indexOf("AppleWebKit/") !== -1,
      -      isChrome    = userAgent.indexOf("Chrome/")      !== -1,
      -      isOpera     = userAgent.indexOf("Opera/")       !== -1;
      -
      -  function iosVersion(userAgent) {
      -    return +((/ipad|iphone|ipod/.test(userAgent) && userAgent.match(/ os (\d+).+? like mac os x/)) || [undefined, 0])[1];
      -  }
      -
      -  function androidVersion(userAgent) {
      -    return +(userAgent.match(/android (\d+)/) || [undefined, 0])[1];
      -  }
      -
      -  function isIE(version, equation) {
      -    var rv = -1,
      -        re;
      -
      -    if (navigator.appName == 'Microsoft Internet Explorer') {
      -      re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      -    } else if (navigator.appName == 'Netscape') {
      -      re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
      -    }
      -
      -    if (re && re.exec(navigator.userAgent) != null) {
      -      rv = parseFloat(RegExp.$1);
      -    }
      -
      -    if (rv === -1) { return false; }
      -    if (!version) { return true; }
      -    if (!equation) { return version === rv; }
      -    if (equation === "<") { return version < rv; }
      -    if (equation === ">") { return version > rv; }
      -    if (equation === "<=") { return version <= rv; }
      -    if (equation === ">=") { return version >= rv; }
      -  }
      -
      -  return {
      -    // Static variable needed, publicly accessible, to be able override it in unit tests
      -    USER_AGENT: userAgent,
      -
      -    /**
      -     * Exclude browsers that are not capable of displaying and handling
      -     * contentEditable as desired:
      -     *    - iPhone, iPad (tested iOS 4.2.2) and Android (tested 2.2) refuse to make contentEditables focusable
      -     *    - IE < 8 create invalid markup and crash randomly from time to time
      -     *
      -     * @return {Boolean}
      -     */
      -    supported: function() {
      -      var userAgent                   = this.USER_AGENT.toLowerCase(),
      -          // Essential for making html elements editable
      -          hasContentEditableSupport   = "contentEditable" in testElement,
      -          // Following methods are needed in order to interact with the contentEditable area
      -          hasEditingApiSupport        = document.execCommand && document.queryCommandSupported && document.queryCommandState,
      -          // document selector apis are only supported by IE 8+, Safari 4+, Chrome and Firefox 3.5+
      -          hasQuerySelectorSupport     = document.querySelector && document.querySelectorAll,
      -          // contentEditable is unusable in mobile browsers (tested iOS 4.2.2, Android 2.2, Opera Mobile, WebOS 3.05)
      -          isIncompatibleMobileBrowser = (this.isIos() && iosVersion(userAgent) < 5) || (this.isAndroid() && androidVersion(userAgent) < 4) || userAgent.indexOf("opera mobi") !== -1 || userAgent.indexOf("hpwos/") !== -1;
      -      return hasContentEditableSupport
      -        && hasEditingApiSupport
      -        && hasQuerySelectorSupport
      -        && !isIncompatibleMobileBrowser;
      -    },
      -
      -    isTouchDevice: function() {
      -      return this.supportsEvent("touchmove");
      -    },
      -
      -    isIos: function() {
      -      return (/ipad|iphone|ipod/i).test(this.USER_AGENT);
      -    },
      -
      -    isAndroid: function() {
      -      return this.USER_AGENT.indexOf("Android") !== -1;
      -    },
      -
      -    /**
      -     * Whether the browser supports sandboxed iframes
      -     * Currently only IE 6+ offers such feature