提交 dcb16294 编写于 作者: F fuyw 提交者: Bo Zhou

Fuyw (#131)

* Add parl monitor.

* Add clustermonitor.py

* Fix thread safety bug.

* Fix js bugs.

* Fix End of Files.

* fix cluster_test bug

* yapf error

* fix bugs in tests/job_center_test.py

* fix bugs in tests/job_center_test.py

* add test_cluster_monitor.py

* add worker.exit in test_cluster_monitor.py
上级 b29c45a6
include parl/remote/static/logo.png
recursive-include parl/remote/templates *.html
recursive-include parl/remote/static/css *.css
recursive-include parl/remote/static/js *.js
...@@ -13,7 +13,10 @@ ...@@ -13,7 +13,10 @@
# limitations under the License. # limitations under the License.
import cloudpickle import cloudpickle
import datetime
import os import os
import socket
import sys
import threading import threading
import zmq import zmq
from parl.utils import to_str, to_byte, get_ip_address, logger from parl.utils import to_str, to_byte, get_ip_address, logger
...@@ -33,6 +36,8 @@ class Client(object): ...@@ -33,6 +36,8 @@ class Client(object):
the master node. the master node.
pyfiles (bytes): A serialized dictionary containing the code of python pyfiles (bytes): A serialized dictionary containing the code of python
files in local working directory. files in local working directory.
executable_path (str): File path of the executable python script.
start_time (time): A timestamp to record the start time of the program.
""" """
...@@ -47,9 +52,23 @@ class Client(object): ...@@ -47,9 +52,23 @@ class Client(object):
self.master_is_alive = True self.master_is_alive = True
self.client_is_alive = True self.client_is_alive = True
self.executable_path = self.get_executable_path()
self.actor_num = 0
self._create_sockets(master_address) self._create_sockets(master_address)
self.pyfiles = self.read_local_files() self.pyfiles = self.read_local_files()
def get_executable_path(self):
"""Return current executable path."""
mod = sys.modules['__main__']
if hasattr(mod, '__file__'):
executable_path = os.path.abspath(mod.__file__)
else:
executable_path = os.getcwd()
executable_path = executable_path[:executable_path.rfind('/')]
return executable_path
def read_local_files(self): def read_local_files(self):
"""Read local python code and store them in a dictionary, which will """Read local python code and store them in a dictionary, which will
then be sent to the job. then be sent to the job.
...@@ -78,7 +97,7 @@ class Client(object): ...@@ -78,7 +97,7 @@ class Client(object):
self.submit_job_socket.setsockopt( self.submit_job_socket.setsockopt(
zmq.RCVTIMEO, remote_constants.HEARTBEAT_TIMEOUT_S * 1000) zmq.RCVTIMEO, remote_constants.HEARTBEAT_TIMEOUT_S * 1000)
self.submit_job_socket.connect("tcp://{}".format(master_address)) self.submit_job_socket.connect("tcp://{}".format(master_address))
self.start_time = time.time()
thread = threading.Thread(target=self._reply_heartbeat) thread = threading.Thread(target=self._reply_heartbeat)
thread.setDaemon(True) thread.setDaemon(True)
thread.start() thread.start()
...@@ -88,7 +107,8 @@ class Client(object): ...@@ -88,7 +107,8 @@ class Client(object):
try: try:
self.submit_job_socket.send_multipart([ self.submit_job_socket.send_multipart([
remote_constants.CLIENT_CONNECT_TAG, remote_constants.CLIENT_CONNECT_TAG,
to_byte(self.heartbeat_master_address) to_byte(self.heartbeat_master_address),
to_byte(socket.gethostname())
]) ])
_ = self.submit_job_socket.recv_multipart() _ = self.submit_job_socket.recv_multipart()
except zmq.error.Again as e: except zmq.error.Again as e:
...@@ -115,7 +135,14 @@ class Client(object): ...@@ -115,7 +135,14 @@ class Client(object):
while self.client_is_alive and self.master_is_alive: while self.client_is_alive and self.master_is_alive:
try: try:
message = socket.recv_multipart() message = socket.recv_multipart()
socket.send_multipart([remote_constants.HEARTBEAT_TAG]) elapsed_time = datetime.timedelta(
seconds=int(time.time() - self.start_time))
socket.send_multipart([
remote_constants.HEARTBEAT_TAG,
to_byte(self.executable_path),
to_byte(str(self.actor_num)),
to_byte(str(elapsed_time))
])
except zmq.error.Again as e: except zmq.error.Again as e:
logger.warning("[Client] Cannot connect to the master." logger.warning("[Client] Cannot connect to the master."
...@@ -169,6 +196,7 @@ class Client(object): ...@@ -169,6 +196,7 @@ class Client(object):
except zmq.error.Again as e: except zmq.error.Again as e:
job_is_alive = False job_is_alive = False
self.actor_num -= 1
except zmq.error.ZMQError as e: except zmq.error.ZMQError as e:
break break
...@@ -207,6 +235,7 @@ class Client(object): ...@@ -207,6 +235,7 @@ class Client(object):
check_result = self._check_and_monitor_job( check_result = self._check_and_monitor_job(
job_heartbeat_address, ping_heartbeat_address) job_heartbeat_address, ping_heartbeat_address)
if check_result: if check_result:
self.actor_num += 1
return job_address return job_address
# no vacant CPU resources, cannot submit a new job # no vacant CPU resources, cannot submit a new job
......
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# 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.
import cloudpickle
import threading
from collections import defaultdict, deque
from parl.utils import to_str
class ClusterMonitor(object):
"""The client monitor watches the cluster status.
Attributes:
status (dict): A dict to store workers status and clients status.
"""
def __init__(self):
self.status = {
'workers': defaultdict(dict),
'clients': defaultdict(dict)
}
self.lock = threading.Lock()
def add_worker_status(self, worker_address, hostname):
"""Record worker status when it is connected to the cluster.
Args:
worker_address (str): worker ip address
hostname (str): worker hostname
"""
self.lock.acquire()
worker_status = self.status['workers'][worker_address]
worker_status['load_value'] = deque(maxlen=10)
worker_status['load_time'] = deque(maxlen=10)
worker_status['hostname'] = hostname
self.lock.release()
def update_client_status(self, client_status, client_address,
client_hostname):
"""Update client status with message send from client heartbeat.
Args:
client_status (tuple): client status information
(file_path, actor_num, elapsed_time).
client_address (str): client ip address.
client_hostname (str): client hostname.
"""
self.lock.acquire()
self.status['clients'][client_address] = {
'client_address': client_hostname,
'file_path': to_str(client_status[1]),
'actor_num': int(to_str(client_status[2])),
'time': to_str(client_status[3])
}
self.lock.release()
def update_worker_status(self, update_status, worker_address, vacant_cpus,
total_cpus):
"""Update a worker status.
Args:
update_status (tuple): master status information (vacant_memory, used_memory, load_time, load_value).
worker_address (str): worker ip address.
vacant_cpus (int): vacant cpu number.
total_cpus (int): total cpu number.
"""
self.lock.acquire()
worker_status = self.status['workers'][worker_address]
worker_status['vacant_memory'] = float(to_str(update_status[1]))
worker_status['used_memory'] = float(to_str(update_status[2]))
worker_status['load_time'].append(to_str(update_status[3]))
worker_status['load_value'].append(float(update_status[4]))
worker_status['vacant_cpus'] = vacant_cpus
worker_status['used_cpus'] = total_cpus - vacant_cpus
self.lock.release()
def drop_worker_status(self, worker_address):
"""Drop worker status when it exits.
Args:
worker_address (str): IP address of the exited worker.
"""
self.lock.acquire()
self.status['workers'].pop(worker_address)
self.lock.release()
def drop_cluster_status(self, client_address):
"""Drop cluster status when it exits.
Args:
cluster_address (str): IP address of the exited client.
"""
self.lock.acquire()
self.status['clients'].pop(client_address)
self.lock.release()
def get_status(self):
"""Return a cloudpickled status."""
self.lock.acquire()
status = cloudpickle.dumps(self.status)
self.lock.release()
return status
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import threading import threading
from collections import defaultdict
class JobCenter(object): class JobCenter(object):
...@@ -20,12 +21,19 @@ class JobCenter(object): ...@@ -20,12 +21,19 @@ class JobCenter(object):
Attributes: Attributes:
job_pool (set): A set to store the job address of vacant cpu. job_pool (set): A set to store the job address of vacant cpu.
worker_dict (dict): A dict to store connected workers. worker_dict (dict): A dict to store connected workers.
worker_hostname (dict): A dict to record worker hostname.
worker_vacant_jobs (dict): Record how many vacant jobs does each
worker has.
master_ip (str): IP address of the master node.
""" """
def __init__(self): def __init__(self, master_ip):
self.job_pool = dict() self.job_pool = dict()
self.worker_dict = {} self.worker_dict = {}
self.worker_hostname = defaultdict(int)
self.worker_vacant_jobs = {}
self.lock = threading.Lock() self.lock = threading.Lock()
self.master_ip = master_ip
@property @property
def cpu_num(self): def cpu_num(self):
...@@ -38,7 +46,7 @@ class JobCenter(object): ...@@ -38,7 +46,7 @@ class JobCenter(object):
return len(self.worker_dict) return len(self.worker_dict)
def add_worker(self, worker): def add_worker(self, worker):
"""A new worker connects. """When a new worker connects, add its hostname to worker_hostname.
Args: Args:
worker (InitializedWorker): New worker with initialized jobs. worker (InitializedWorker): New worker with initialized jobs.
...@@ -47,13 +55,26 @@ class JobCenter(object): ...@@ -47,13 +55,26 @@ class JobCenter(object):
self.worker_dict[worker.worker_address] = worker self.worker_dict[worker.worker_address] = worker
for job in worker.initialized_jobs: for job in worker.initialized_jobs:
self.job_pool[job.job_address] = job self.job_pool[job.job_address] = job
self.worker_vacant_jobs[worker.worker_address] = len(
worker.initialized_jobs)
if self.master_ip and worker.worker_address.split(
':')[0] == self.master_ip:
self.worker_hostname[worker.worker_address] = "Master"
self.master_ip = None
else:
self.worker_hostname[worker.hostname] += 1
self.worker_hostname[worker.worker_address] = "{}:{}".format(
worker.hostname, self.worker_hostname[worker.hostname])
self.lock.release() self.lock.release()
def drop_worker(self, worker_address): def drop_worker(self, worker_address):
"""Remove jobs from job_pool when a worker dies. """Remove jobs from job_pool when a worker dies.
Args: Args:
worker (start): Old worker to be removed from the cluster. worker_address (str): the worker_address of a worker to be
removed from the job center.
""" """
self.lock.acquire() self.lock.acquire()
worker = self.worker_dict[worker_address] worker = self.worker_dict[worker_address]
...@@ -61,11 +82,12 @@ class JobCenter(object): ...@@ -61,11 +82,12 @@ class JobCenter(object):
if job.job_address in self.job_pool: if job.job_address in self.job_pool:
self.job_pool.pop(job.job_address) self.job_pool.pop(job.job_address)
self.worker_dict.pop(worker_address) self.worker_dict.pop(worker_address)
self.worker_vacant_jobs.pop(worker_address)
self.lock.release() self.lock.release()
def request_job(self): def request_job(self):
"""Return a job_address when the client submits a job. """Return a job_address when the client submits a job.
If there is no vacant CPU in the cluster, this will return None. If there is no vacant CPU in the cluster, this will return None.
Return: Return:
...@@ -75,6 +97,8 @@ class JobCenter(object): ...@@ -75,6 +97,8 @@ class JobCenter(object):
job = None job = None
if len(self.job_pool): if len(self.job_pool):
job_address, job = self.job_pool.popitem() job_address, job = self.job_pool.popitem()
self.worker_vacant_jobs[job.worker_address] -= 1
assert self.worker_vacant_jobs[job.worker_address] >= 0
self.lock.release() self.lock.release()
return job return job
...@@ -101,12 +125,30 @@ class JobCenter(object): ...@@ -101,12 +125,30 @@ class JobCenter(object):
if killed_job_address in self.job_pool: if killed_job_address in self.job_pool:
self.job_pool.pop(killed_job_address) self.job_pool.pop(killed_job_address)
to_del_idx = None to_del_idx = None
for i, job in enumerate( for i, job in enumerate(
self.worker_dict[worker_address].initialized_jobs): self.worker_dict[worker_address].initialized_jobs):
if job.job_address == killed_job_address: if job.job_address == killed_job_address:
to_del_idx = i to_del_idx = i
break break
del self.worker_dict[worker_address].initialized_jobs[to_del_idx] del self.worker_dict[worker_address].initialized_jobs[to_del_idx]
self.worker_dict[worker_address].initialized_jobs.append(new_job) self.worker_dict[worker_address].initialized_jobs.append(new_job)
if killed_job_address not in self.job_pool:
self.worker_vacant_jobs[worker_address] += 1
self.lock.release() self.lock.release()
def get_vacant_cpu(self, worker_address):
"""Return vacant cpu number of a worker."""
return self.worker_vacant_jobs[worker_address]
def get_total_cpu(self, worker_address):
"""Return total cpu number of a worker."""
return len(self.worker_dict[worker_address].initialized_jobs)
def get_hostname(self, worker_address):
"""Return the hostname of a worker."""
return self.worker_hostname[worker_address]
...@@ -17,10 +17,11 @@ import pickle ...@@ -17,10 +17,11 @@ import pickle
import threading import threading
import time import time
import zmq import zmq
from collections import deque, defaultdict
from parl.utils import to_str, to_byte, logger from parl.utils import to_str, to_byte, logger, get_ip_address
from parl.remote import remote_constants from parl.remote import remote_constants
from parl.remote.job_center import JobCenter from parl.remote.job_center import JobCenter
from parl.remote.cluster_monitor import ClusterMonitor
import cloudpickle import cloudpickle
import time import time
...@@ -46,8 +47,11 @@ class Master(object): ...@@ -46,8 +47,11 @@ class Master(object):
client_socket (zmq.Context.socket): A socket that receives submitted client_socket (zmq.Context.socket): A socket that receives submitted
job from the client, and later sends job from the client, and later sends
job_address back to the client. job_address back to the client.
master_ip(str): The ip address of the master node.
cpu_num(int): The number of available CPUs in the cluster. cpu_num(int): The number of available CPUs in the cluster.
worker_num(int): The number of workers connected to this cluster. worker_num(int): The number of workers connected to this cluster.
cluster_monitor(dict): A dict to record worker status and client status.
client_hostname(dict): A dict to store hostname for each client address.
Args: Args:
port: The ip port that the master node binds to. port: The ip port that the master node binds to.
...@@ -57,16 +61,21 @@ class Master(object): ...@@ -57,16 +61,21 @@ class Master(object):
logger.set_dir(os.path.expanduser('~/.parl_data/master/')) logger.set_dir(os.path.expanduser('~/.parl_data/master/'))
self.ctx = zmq.Context() self.ctx = zmq.Context()
self.master_ip = get_ip_address()
self.client_socket = self.ctx.socket(zmq.REP) self.client_socket = self.ctx.socket(zmq.REP)
self.client_socket.bind("tcp://*:{}".format(port)) self.client_socket.bind("tcp://*:{}".format(port))
self.client_socket.linger = 0 self.client_socket.linger = 0
self.port = port self.port = port
self.job_center = JobCenter() self.job_center = JobCenter(self.master_ip)
self.cluster_monitor = ClusterMonitor()
self.master_is_alive = True self.master_is_alive = True
self.client_hostname = defaultdict(int)
def _get_status(self):
return self.cluster_monitor.get_status()
def _create_worker_monitor(self, worker_heartbeat_address, worker_address): def _create_worker_monitor(self, worker_address):
"""When a new worker connects to the master, a socket is created to """When a new worker connects to the master, a socket is created to
send heartbeat signals to the worker. send heartbeat signals to the worker.
""" """
...@@ -74,17 +83,22 @@ class Master(object): ...@@ -74,17 +83,22 @@ class Master(object):
worker_heartbeat_socket.linger = 0 worker_heartbeat_socket.linger = 0
worker_heartbeat_socket.setsockopt( worker_heartbeat_socket.setsockopt(
zmq.RCVTIMEO, remote_constants.HEARTBEAT_TIMEOUT_S * 1000) zmq.RCVTIMEO, remote_constants.HEARTBEAT_TIMEOUT_S * 1000)
worker_heartbeat_socket.connect("tcp://" + worker_heartbeat_address) worker_heartbeat_socket.connect("tcp://" + worker_address)
connected = True connected = True
while connected and self.master_is_alive: while connected and self.master_is_alive:
try: try:
worker_heartbeat_socket.send_multipart( worker_heartbeat_socket.send_multipart(
[remote_constants.HEARTBEAT_TAG]) [remote_constants.HEARTBEAT_TAG])
_ = worker_heartbeat_socket.recv_multipart() worker_status = worker_heartbeat_socket.recv_multipart()
vacant_cpus = self.job_center.get_vacant_cpu(worker_address)
total_cpus = self.job_center.get_total_cpu(worker_address)
self.cluster_monitor.update_worker_status(
worker_status, worker_address, vacant_cpus, total_cpus)
time.sleep(remote_constants.HEARTBEAT_INTERVAL_S) time.sleep(remote_constants.HEARTBEAT_INTERVAL_S)
except zmq.error.Again as e: except zmq.error.Again as e:
self.job_center.drop_worker(worker_address) self.job_center.drop_worker(worker_address)
self.cluster_monitor.drop_worker_status(worker_address)
logger.warning("\n[Master] Cannot connect to the worker " + logger.warning("\n[Master] Cannot connect to the worker " +
"{}. ".format(worker_address) + "{}. ".format(worker_address) +
"Worker_pool will drop this worker.") "Worker_pool will drop this worker.")
...@@ -112,9 +126,16 @@ class Master(object): ...@@ -112,9 +126,16 @@ class Master(object):
try: try:
client_heartbeat_socket.send_multipart( client_heartbeat_socket.send_multipart(
[remote_constants.HEARTBEAT_TAG]) [remote_constants.HEARTBEAT_TAG])
_ = client_heartbeat_socket.recv_multipart() client_status = client_heartbeat_socket.recv_multipart()
self.cluster_monitor.update_client_status(
client_status, client_heartbeat_address,
self.client_hostname[client_heartbeat_address])
except zmq.error.Again as e: except zmq.error.Again as e:
client_is_alive = False client_is_alive = False
self.cluster_monitor.drop_cluster_status(
client_heartbeat_address)
logger.warning("[Master] cannot connect to the client " + logger.warning("[Master] cannot connect to the client " +
"{}. ".format(client_heartbeat_address) + "{}. ".format(client_heartbeat_address) +
"Please check if it is still alive.") "Please check if it is still alive.")
...@@ -152,19 +173,25 @@ class Master(object): ...@@ -152,19 +173,25 @@ class Master(object):
if tag == remote_constants.WORKER_CONNECT_TAG: if tag == remote_constants.WORKER_CONNECT_TAG:
self.client_socket.send_multipart([remote_constants.NORMAL_TAG]) self.client_socket.send_multipart([remote_constants.NORMAL_TAG])
elif tag == remote_constants.MONITOR_TAG:
status = self._get_status()
self.client_socket.send_multipart(
[remote_constants.NORMAL_TAG, status])
elif tag == remote_constants.WORKER_INITIALIZED_TAG: elif tag == remote_constants.WORKER_INITIALIZED_TAG:
initialized_worker = cloudpickle.loads(message[1]) initialized_worker = cloudpickle.loads(message[1])
worker_address = initialized_worker.worker_address
self.job_center.add_worker(initialized_worker) self.job_center.add_worker(initialized_worker)
logger.info("A new worker {} is added, ".format(initialized_worker. hostname = self.job_center.get_hostname(worker_address)
worker_address) + self.cluster_monitor.add_worker_status(worker_address, hostname)
logger.info("A new worker {} is added, ".format(worker_address) +
"the cluster has {} CPUs.\n".format(self.cpu_num)) "the cluster has {} CPUs.\n".format(self.cpu_num))
# a thread for sending heartbeat signals to `worker.address` # a thread for sending heartbeat signals to `worker.address`
thread = threading.Thread( thread = threading.Thread(
target=self._create_worker_monitor, target=self._create_worker_monitor,
args=(initialized_worker.master_heartbeat_address, args=(initialized_worker.worker_address, ))
initialized_worker.worker_address))
thread.start() thread.start()
self.client_socket.send_multipart([remote_constants.NORMAL_TAG]) self.client_socket.send_multipart([remote_constants.NORMAL_TAG])
...@@ -172,6 +199,8 @@ class Master(object): ...@@ -172,6 +199,8 @@ class Master(object):
# a client connects to the master # a client connects to the master
elif tag == remote_constants.CLIENT_CONNECT_TAG: elif tag == remote_constants.CLIENT_CONNECT_TAG:
client_heartbeat_address = to_str(message[1]) client_heartbeat_address = to_str(message[1])
client_hostname = to_str(message[2])
self.client_hostname[client_heartbeat_address] = client_hostname
logger.info( logger.info(
"Client {} is connected.".format(client_heartbeat_address)) "Client {} is connected.".format(client_heartbeat_address))
...@@ -192,7 +221,7 @@ class Master(object): ...@@ -192,7 +221,7 @@ class Master(object):
remote_constants.NORMAL_TAG, remote_constants.NORMAL_TAG,
to_byte(job.job_address), to_byte(job.job_address),
to_byte(job.client_heartbeat_address), to_byte(job.client_heartbeat_address),
to_byte(job.ping_heartbeat_address) to_byte(job.ping_heartbeat_address),
]) ])
self._print_workers() self._print_workers()
else: else:
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
class InitializedJob(object): class InitializedJob(object):
def __init__(self, job_address, worker_heartbeat_address, def __init__(self, job_address, worker_heartbeat_address,
client_heartbeat_address, ping_heartbeat_address, client_heartbeat_address, ping_heartbeat_address,
...@@ -20,7 +22,7 @@ class InitializedJob(object): ...@@ -20,7 +22,7 @@ class InitializedJob(object):
job_address(str): Job address to which the new task connect. job_address(str): Job address to which the new task connect.
worker_heartbeat_address(str): Optional. The address to which the worker sends heartbeat signals. worker_heartbeat_address(str): Optional. The address to which the worker sends heartbeat signals.
client_heartbeat_address(str): Address to which the client sends heartbeat signals. client_heartbeat_address(str): Address to which the client sends heartbeat signals.
ping_heartbeat_address(str): the server address to which the client sends ping signals. ping_heartbeat_address(str): the server address to which the client sends ping signals.
The signal is used to check if the job is alive. The signal is used to check if the job is alive.
worker_address(str): Worker's server address that receive command from the master. worker_address(str): Worker's server address that receive command from the master.
pid(int): Optional. Process id of the job. pid(int): Optional. Process id of the job.
...@@ -36,8 +38,8 @@ class InitializedJob(object): ...@@ -36,8 +38,8 @@ class InitializedJob(object):
class InitializedWorker(object): class InitializedWorker(object):
def __init__(self, worker_address, master_heartbeat_address, def __init__(self, master_heartbeat_address, initialized_jobs, cpu_num,
initialized_jobs, cpu_num): hostname):
""" """
Args: Args:
worker_address(str): Worker server address that receives commands from the master. worker_address(str): Worker server address that receives commands from the master.
...@@ -45,7 +47,7 @@ class InitializedWorker(object): ...@@ -45,7 +47,7 @@ class InitializedWorker(object):
initialized_jobs(list): A list of ``InitializedJob`` containing the information for initialized jobs. initialized_jobs(list): A list of ``InitializedJob`` containing the information for initialized jobs.
cpu_num(int): The number of CPUs used in this worker. cpu_num(int): The number of CPUs used in this worker.
""" """
self.worker_address = worker_address self.worker_address = master_heartbeat_address
self.master_heartbeat_address = master_heartbeat_address
self.initialized_jobs = initialized_jobs self.initialized_jobs = initialized_jobs
self.cpu_num = cpu_num self.cpu_num = cpu_num
self.hostname = hostname
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# 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.
import argparse
import pickle
import random
import time
import zmq
import threading
from flask import Flask, render_template, jsonify
app = Flask(__name__)
@app.route('/')
@app.route('/workers')
def worker():
return render_template('workers.html')
@app.route('/clients')
def clients():
return render_template('clients.html')
class ClusterMonitor(object):
"""A monitor which requests the cluster status every 10 seconds.
"""
def __init__(self, master_address):
ctx = zmq.Context()
self.socket = ctx.socket(zmq.REQ)
self.socket.setsockopt(zmq.RCVTIMEO, 10000)
self.socket.connect('tcp://{}'.format(master_address))
self.data = None
thread = threading.Thread(target=self.run)
thread.setDaemon(True)
thread.start()
def run(self):
master_is_alive = True
while master_is_alive:
try:
self.socket.send_multipart([b'[MONITOR]'])
msg = self.socket.recv_multipart()
status = pickle.loads(msg[1])
data = {'workers': [], 'clients': []}
master_idx = None
for idx, worker in enumerate(status['workers'].values()):
worker['load_time'] = list(worker['load_time'])
worker['load_value'] = list(worker['load_value'])
if worker['hostname'] == 'Master':
master_idx = idx
data['workers'].append(worker)
if master_idx != 0 and master_idx is not None:
master_worker = data['workers'].pop(master_idx)
data['workers'] = [master_worker] + data['workers']
data['clients'] = list(status['clients'].values())
self.data = data
time.sleep(10)
except zmq.error.Again as e:
master_is_alive = False
self.socket.close(0)
def get_data(self):
assert self.data is not None
return self.data
@app.route('/cluster')
def cluster():
data = CLUSTER_MONITOR.get_data()
return jsonify(data)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--monitor_port', default=1234, type=int)
parser.add_argument('--address', default='localhost:1234', type=str)
args = parser.parse_args()
CLUSTER_MONITOR = ClusterMonitor(args.address)
app.run(host="0.0.0.0", port=args.monitor_port)
...@@ -16,6 +16,7 @@ CPU_TAG = b'[CPU]' ...@@ -16,6 +16,7 @@ CPU_TAG = b'[CPU]'
CONNECT_TAG = b'[CONNECT]' CONNECT_TAG = b'[CONNECT]'
HEARTBEAT_TAG = b'[HEARTBEAT]' HEARTBEAT_TAG = b'[HEARTBEAT]'
KILLJOB_TAG = b'[KILLJOB]' KILLJOB_TAG = b'[KILLJOB]'
MONITOR_TAG = b'[MONITOR]'
WORKER_CONNECT_TAG = b'[WORKER_CONNECT]' WORKER_CONNECT_TAG = b'[WORKER_CONNECT]'
WORKER_INITIALIZED_TAG = b'[WORKER_INITIALIZED]' WORKER_INITIALIZED_TAG = b'[WORKER_INITIALIZED]'
......
...@@ -13,14 +13,18 @@ ...@@ -13,14 +13,18 @@
# limitations under the License. # limitations under the License.
import click import click
import socket
import locale import locale
import sys import sys
import random
import os import os
import multiprocessing
import subprocess import subprocess
import threading import threading
import warnings import warnings
import zmq
from multiprocessing import Process from multiprocessing import Process
from parl.utils import logger from parl.utils import get_ip_address
# A flag to mark if parl is started from a command line # A flag to mark if parl is started from a command line
os.environ['XPARL'] = 'True' os.environ['XPARL'] = 'True'
...@@ -34,13 +38,20 @@ if sys.version_info.major == 3: ...@@ -34,13 +38,20 @@ if sys.version_info.major == 3:
warnings.simplefilter("ignore", ResourceWarning) warnings.simplefilter("ignore", ResourceWarning)
def get_free_tcp_port():
tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp.bind(('', 0))
addr, port = tcp.getsockname()
tcp.close()
return port
def is_port_available(port): def is_port_available(port):
""" Check if a port is used. """ Check if a port is used.
True if the port is available for connection. True if the port is available for connection.
""" """
port = int(port) port = int(port)
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
available = sock.connect_ex(('localhost', port)) available = sock.connect_ex(('localhost', port))
sock.close() sock.close()
...@@ -48,7 +59,6 @@ def is_port_available(port): ...@@ -48,7 +59,6 @@ def is_port_available(port):
def is_master_started(address): def is_master_started(address):
import zmq
ctx = zmq.Context() ctx = zmq.Context()
socket = ctx.socket(zmq.REQ) socket = ctx.socket(zmq.REQ)
socket.linger = 0 socket.linger = 0
...@@ -80,12 +90,12 @@ def start_master(port, cpu_num): ...@@ -80,12 +90,12 @@ def start_master(port, cpu_num):
if not is_port_available(port): if not is_port_available(port):
raise Exception( raise Exception(
"The master address localhost:{} already in use.".format(port)) "The master address localhost:{} already in use.".format(port))
cpu_num = str(cpu_num) if cpu_num else '' cpu_num = cpu_num if cpu_num else multiprocessing.cpu_count()
start_file = __file__.replace('scripts.pyc', 'start.py') start_file = __file__.replace('scripts.pyc', 'start.py')
start_file = start_file.replace('scripts.py', 'start.py') start_file = start_file.replace('scripts.py', 'start.py')
command = [sys.executable, start_file, "--name", "master", "--port", port] command = [sys.executable, start_file, "--name", "master", "--port", port]
p = subprocess.Popen(command)
p = subprocess.Popen(command)
command = [ command = [
sys.executable, start_file, "--name", "worker", "--address", sys.executable, start_file, "--name", "worker", "--address",
"localhost:" + str(port), "--cpu_num", "localhost:" + str(port), "--cpu_num",
...@@ -94,8 +104,37 @@ def start_master(port, cpu_num): ...@@ -94,8 +104,37 @@ def start_master(port, cpu_num):
# Redirect the output to DEVNULL to solve the warning log. # Redirect the output to DEVNULL to solve the warning log.
FNULL = open(os.devnull, 'w') FNULL = open(os.devnull, 'w')
p = subprocess.Popen(command, stdout=FNULL, stderr=subprocess.STDOUT) p = subprocess.Popen(command, stdout=FNULL, stderr=subprocess.STDOUT)
monitor_port = get_free_tcp_port()
command = [
sys.executable, '{}/monitor.py'.format(__file__[:__file__.rfind('/')]),
"--monitor_port",
str(monitor_port), "--address", "localhost:" + str(port)
]
p = subprocess.Popen(command, stdout=FNULL, stderr=subprocess.STDOUT)
FNULL.close() FNULL.close()
cluster_info = """
# The Parl cluster is started at localhost:{}.
# A local worker with {} CPUs is connected to the cluster.
## If you want to check cluster status, visit:
http://{}:{}.
## If you want to add more CPU resources, call:
xparl connect --address localhost:{}
## If you want to shutdown the cluster, call:
xparl stop""".format(port, cpu_num, get_ip_address(), monitor_port,
port)
click.echo(cluster_info)
@click.command("connect", short_help="Start a worker node.") @click.command("connect", short_help="Start a worker node.")
@click.option( @click.option(
...@@ -125,6 +164,8 @@ def stop(): ...@@ -125,6 +164,8 @@ def stop():
subprocess.call([command], shell=True) subprocess.call([command], shell=True)
command = ("pkill -f remote/job.py") command = ("pkill -f remote/job.py")
subprocess.call([command], shell=True) subprocess.call([command], shell=True)
command = ("pkill -f remote/monitor.py")
subprocess.call([command], shell=True)
cli.add_command(start_worker) cli.add_command(start_worker)
......
/*!
* Bootstrap v4.3.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
}
*,
::after,
::before {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: transparent;
}
article,
aside,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[data-original-title],
abbr[title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
dl,
ol,
ul {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ol ul,
ul ol,
ul ul {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus,
a:not([href]):not([tabindex]):hover {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
code,
kbd,
pre,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
"Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: center;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
select {
word-wrap: normal;
}
[type="button"],
[type="reset"],
[type="submit"],
button {
-webkit-appearance: button;
}
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled),
button:not(:disabled) {
cursor: pointer;
}
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner,
button::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="datetime-local"],
input[type="month"],
input[type="time"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
.h1,
.h2,
.h3,
.h4,
.h5,
.h6,
h1,
h2,
h3,
h4,
h5,
h6 {
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
.h1,
h1 {
font-size: 2.5rem;
}
.h2,
h2 {
font-size: 2rem;
}
.h3,
h3 {
font-size: 1.75rem;
}
.h4,
h4 {
font-size: 1.5rem;
}
.h5,
h5 {
font-size: 1.25rem;
}
.h6,
h6 {
font-size: 1rem;
}
.lead {
font-size: 1.25rem;
font-weight: 300;
}
.display-1 {
font-size: 6rem;
font-weight: 300;
line-height: 1.2;
}
.display-2 {
font-size: 5.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-3 {
font-size: 4.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-4 {
font-size: 3.5rem;
font-weight: 300;
line-height: 1.2;
}
hr {
margin-top: 1rem;
margin-bottom: 1rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
.small,
small {
font-size: 80%;
font-weight: 400;
}
.mark,
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
}
.list-inline-item {
display: inline-block;
}
.list-inline-item:not(:last-child) {
margin-right: 0.5rem;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
.blockquote {
margin-bottom: 1rem;
font-size: 1.25rem;
}
.blockquote-footer {
display: block;
font-size: 80%;
color: #6c757d;
}
.blockquote-footer::before {
content: "\2014\00A0";
}
.img-fluid {
max-width: 100%;
height: auto;
}
.img-thumbnail {
padding: 0.25rem;
background-color: #fff;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
max-width: 100%;
height: auto;
}
.figure {
display: inline-block;
}
.figure-img {
margin-bottom: 0.5rem;
line-height: 1;
}
.figure-caption {
font-size: 90%;
color: #6c757d;
}
code {
font-size: 87.5%;
color: #e83e8c;
word-break: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 87.5%;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: 700;
}
pre {
display: block;
font-size: 87.5%;
color: #212529;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
.no-gutters {
margin-right: 0;
margin-left: 0;
}
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
.col,
.col-1,
.col-10,
.col-11,
.col-12,
.col-2,
.col-3,
.col-4,
.col-5,
.col-6,
.col-7,
.col-8,
.col-9,
.col-auto,
.col-lg,
.col-lg-1,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-lg-auto,
.col-md,
.col-md-1,
.col-md-10,
.col-md-11,
.col-md-12,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-md-auto,
.col-sm,
.col-sm-1,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-sm-auto,
.col-xl,
.col-xl-1,
.col-xl-10,
.col-xl-11,
.col-xl-12,
.col-xl-2,
.col-xl-3,
.col-xl-4,
.col-xl-5,
.col-xl-6,
.col-xl-7,
.col-xl-8,
.col-xl-9,
.col-xl-auto {
position: relative;
width: 100%;
padding-right: 10px;
padding-left: 10px;
}
.col {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-first {
-ms-flex-order: -1;
order: -1;
}
.order-last {
-ms-flex-order: 13;
order: 13;
}
.order-0 {
-ms-flex-order: 0;
order: 0;
}
.order-1 {
-ms-flex-order: 1;
order: 1;
}
.order-2 {
-ms-flex-order: 2;
order: 2;
}
.order-3 {
-ms-flex-order: 3;
order: 3;
}
.order-4 {
-ms-flex-order: 4;
order: 4;
}
.order-5 {
-ms-flex-order: 5;
order: 5;
}
.order-6 {
-ms-flex-order: 6;
order: 6;
}
.order-7 {
-ms-flex-order: 7;
order: 7;
}
.order-8 {
-ms-flex-order: 8;
order: 8;
}
.order-9 {
-ms-flex-order: 9;
order: 9;
}
.order-10 {
-ms-flex-order: 10;
order: 10;
}
.order-11 {
-ms-flex-order: 11;
order: 11;
}
.order-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-1 {
margin-left: 8.333333%;
}
.offset-2 {
margin-left: 16.666667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.333333%;
}
.offset-5 {
margin-left: 41.666667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.333333%;
}
.offset-8 {
margin-left: 66.666667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.333333%;
}
.offset-11 {
margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-sm-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-sm-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-sm-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-sm-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-sm-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-sm-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-sm-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-sm-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-sm-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-sm-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-sm-first {
-ms-flex-order: -1;
order: -1;
}
.order-sm-last {
-ms-flex-order: 13;
order: 13;
}
.order-sm-0 {
-ms-flex-order: 0;
order: 0;
}
.order-sm-1 {
-ms-flex-order: 1;
order: 1;
}
.order-sm-2 {
-ms-flex-order: 2;
order: 2;
}
.order-sm-3 {
-ms-flex-order: 3;
order: 3;
}
.order-sm-4 {
-ms-flex-order: 4;
order: 4;
}
.order-sm-5 {
-ms-flex-order: 5;
order: 5;
}
.order-sm-6 {
-ms-flex-order: 6;
order: 6;
}
.order-sm-7 {
-ms-flex-order: 7;
order: 7;
}
.order-sm-8 {
-ms-flex-order: 8;
order: 8;
}
.order-sm-9 {
-ms-flex-order: 9;
order: 9;
}
.order-sm-10 {
-ms-flex-order: 10;
order: 10;
}
.order-sm-11 {
-ms-flex-order: 11;
order: 11;
}
.order-sm-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-sm-0 {
margin-left: 0;
}
.offset-sm-1 {
margin-left: 8.333333%;
}
.offset-sm-2 {
margin-left: 16.666667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.333333%;
}
.offset-sm-5 {
margin-left: 41.666667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.333333%;
}
.offset-sm-8 {
margin-left: 66.666667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.333333%;
}
.offset-sm-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
.col-md {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-md-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-md-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-md-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-md-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-md-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-md-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-md-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-md-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-md-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-md-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-md-first {
-ms-flex-order: -1;
order: -1;
}
.order-md-last {
-ms-flex-order: 13;
order: 13;
}
.order-md-0 {
-ms-flex-order: 0;
order: 0;
}
.order-md-1 {
-ms-flex-order: 1;
order: 1;
}
.order-md-2 {
-ms-flex-order: 2;
order: 2;
}
.order-md-3 {
-ms-flex-order: 3;
order: 3;
}
.order-md-4 {
-ms-flex-order: 4;
order: 4;
}
.order-md-5 {
-ms-flex-order: 5;
order: 5;
}
.order-md-6 {
-ms-flex-order: 6;
order: 6;
}
.order-md-7 {
-ms-flex-order: 7;
order: 7;
}
.order-md-8 {
-ms-flex-order: 8;
order: 8;
}
.order-md-9 {
-ms-flex-order: 9;
order: 9;
}
.order-md-10 {
-ms-flex-order: 10;
order: 10;
}
.order-md-11 {
-ms-flex-order: 11;
order: 11;
}
.order-md-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-md-0 {
margin-left: 0;
}
.offset-md-1 {
margin-left: 8.333333%;
}
.offset-md-2 {
margin-left: 16.666667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.333333%;
}
.offset-md-5 {
margin-left: 41.666667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.333333%;
}
.offset-md-8 {
margin-left: 66.666667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.333333%;
}
.offset-md-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
.col-lg {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-lg-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-lg-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-lg-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-lg-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-lg-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-lg-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-lg-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-lg-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-lg-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-lg-first {
-ms-flex-order: -1;
order: -1;
}
.order-lg-last {
-ms-flex-order: 13;
order: 13;
}
.order-lg-0 {
-ms-flex-order: 0;
order: 0;
}
.order-lg-1 {
-ms-flex-order: 1;
order: 1;
}
.order-lg-2 {
-ms-flex-order: 2;
order: 2;
}
.order-lg-3 {
-ms-flex-order: 3;
order: 3;
}
.order-lg-4 {
-ms-flex-order: 4;
order: 4;
}
.order-lg-5 {
-ms-flex-order: 5;
order: 5;
}
.order-lg-6 {
-ms-flex-order: 6;
order: 6;
}
.order-lg-7 {
-ms-flex-order: 7;
order: 7;
}
.order-lg-8 {
-ms-flex-order: 8;
order: 8;
}
.order-lg-9 {
-ms-flex-order: 9;
order: 9;
}
.order-lg-10 {
-ms-flex-order: 10;
order: 10;
}
.order-lg-11 {
-ms-flex-order: 11;
order: 11;
}
.order-lg-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-lg-0 {
margin-left: 0;
}
.offset-lg-1 {
margin-left: 8.333333%;
}
.offset-lg-2 {
margin-left: 16.666667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.333333%;
}
.offset-lg-5 {
margin-left: 41.666667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.333333%;
}
.offset-lg-8 {
margin-left: 66.666667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.333333%;
}
.offset-lg-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-xl-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-xl-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-xl-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-xl-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-xl-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-xl-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-xl-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-xl-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-xl-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-xl-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-xl-first {
-ms-flex-order: -1;
order: -1;
}
.order-xl-last {
-ms-flex-order: 13;
order: 13;
}
.order-xl-0 {
-ms-flex-order: 0;
order: 0;
}
.order-xl-1 {
-ms-flex-order: 1;
order: 1;
}
.order-xl-2 {
-ms-flex-order: 2;
order: 2;
}
.order-xl-3 {
-ms-flex-order: 3;
order: 3;
}
.order-xl-4 {
-ms-flex-order: 4;
order: 4;
}
.order-xl-5 {
-ms-flex-order: 5;
order: 5;
}
.order-xl-6 {
-ms-flex-order: 6;
order: 6;
}
.order-xl-7 {
-ms-flex-order: 7;
order: 7;
}
.order-xl-8 {
-ms-flex-order: 8;
order: 8;
}
.order-xl-9 {
-ms-flex-order: 9;
order: 9;
}
.order-xl-10 {
-ms-flex-order: 10;
order: 10;
}
.order-xl-11 {
-ms-flex-order: 11;
order: 11;
}
.order-xl-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-xl-0 {
margin-left: 0;
}
.offset-xl-1 {
margin-left: 8.333333%;
}
.offset-xl-2 {
margin-left: 16.666667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.333333%;
}
.offset-xl-5 {
margin-left: 41.666667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.333333%;
}
.offset-xl-8 {
margin-left: 66.666667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.333333%;
}
.offset-xl-11 {
margin-left: 91.666667%;
}
}
.table {
width: 100%;
margin-bottom: 1rem;
color: #212529;
}
.table td,
.table th {
padding: 0.75rem;
text-align: center;
vertical-align: top;
border-top: 1px solid #dee2e6;
}
.table thead th {
vertical-align: bottom;
border-bottom: 2px solid #dee2e6;
}
.table tbody + tbody {
border-top: 2px solid #dee2e6;
}
.table-sm td,
.table-sm th {
padding: 0.3rem;
}
.table-bordered {
border: 1px solid #dee2e6;
}
.table-bordered td,
.table-bordered th {
border: 1px solid #dee2e6;
}
.table-bordered thead td,
.table-bordered thead th {
border-bottom-width: 2px;
}
.table-borderless tbody + tbody,
.table-borderless td,
.table-borderless th,
.table-borderless thead th {
border: 0;
}
.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(0, 0, 0, 0.05);
}
.table-hover tbody tr:hover {
color: #212529;
background-color: rgba(0, 0, 0, 0.075);
}
.table-primary,
.table-primary > td,
.table-primary > th {
background-color: #b8daff;
}
.table-primary tbody + tbody,
.table-primary td,
.table-primary th,
.table-primary thead th {
border-color: #7abaff;
}
.table-hover .table-primary:hover {
background-color: #9fcdff;
}
.table-hover .table-primary:hover > td,
.table-hover .table-primary:hover > th {
background-color: #9fcdff;
}
.table-secondary,
.table-secondary > td,
.table-secondary > th {
background-color: #d6d8db;
}
.table-secondary tbody + tbody,
.table-secondary td,
.table-secondary th,
.table-secondary thead th {
border-color: #b3b7bb;
}
.table-hover .table-secondary:hover {
background-color: #c8cbcf;
}
.table-hover .table-secondary:hover > td,
.table-hover .table-secondary:hover > th {
background-color: #c8cbcf;
}
.table-success,
.table-success > td,
.table-success > th {
background-color: #c3e6cb;
}
.table-success tbody + tbody,
.table-success td,
.table-success th,
.table-success thead th {
border-color: #8fd19e;
}
.table-hover .table-success:hover {
background-color: #b1dfbb;
}
.table-hover .table-success:hover > td,
.table-hover .table-success:hover > th {
background-color: #b1dfbb;
}
.table-info,
.table-info > td,
.table-info > th {
background-color: #bee5eb;
}
.table-info tbody + tbody,
.table-info td,
.table-info th,
.table-info thead th {
border-color: #86cfda;
}
.table-hover .table-info:hover {
background-color: #abdde5;
}
.table-hover .table-info:hover > td,
.table-hover .table-info:hover > th {
background-color: #abdde5;
}
.table-warning,
.table-warning > td,
.table-warning > th {
background-color: #ffeeba;
}
.table-warning tbody + tbody,
.table-warning td,
.table-warning th,
.table-warning thead th {
border-color: #ffdf7e;
}
.table-hover .table-warning:hover {
background-color: #ffe8a1;
}
.table-hover .table-warning:hover > td,
.table-hover .table-warning:hover > th {
background-color: #ffe8a1;
}
.table-danger,
.table-danger > td,
.table-danger > th {
background-color: #f5c6cb;
}
.table-danger tbody + tbody,
.table-danger td,
.table-danger th,
.table-danger thead th {
border-color: #ed969e;
}
.table-hover .table-danger:hover {
background-color: #f1b0b7;
}
.table-hover .table-danger:hover > td,
.table-hover .table-danger:hover > th {
background-color: #f1b0b7;
}
.table-light,
.table-light > td,
.table-light > th {
background-color: #fdfdfe;
}
.table-light tbody + tbody,
.table-light td,
.table-light th,
.table-light thead th {
border-color: #fbfcfc;
}
.table-hover .table-light:hover {
background-color: #ececf6;
}
.table-hover .table-light:hover > td,
.table-hover .table-light:hover > th {
background-color: #ececf6;
}
.table-dark,
.table-dark > td,
.table-dark > th {
background-color: #c6c8ca;
}
.table-dark tbody + tbody,
.table-dark td,
.table-dark th,
.table-dark thead th {
border-color: #95999c;
}
.table-hover .table-dark:hover {
background-color: #b9bbbe;
}
.table-hover .table-dark:hover > td,
.table-hover .table-dark:hover > th {
background-color: #b9bbbe;
}
.table-active,
.table-active > td,
.table-active > th {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover > td,
.table-hover .table-active:hover > th {
background-color: rgba(0, 0, 0, 0.075);
}
.table .thead-dark th {
color: #fff;
background-color: #343a40;
border-color: #454d55;
}
.table .thead-light th {
color: #495057;
background-color: #e9ecef;
border-color: #dee2e6;
}
.table-dark {
color: #fff;
background-color: #343a40;
}
.table-dark td,
.table-dark th,
.table-dark thead th {
border-color: #454d55;
}
.table-dark.table-bordered {
border: 0;
}
.table-dark.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
.table-dark.table-hover tbody tr:hover {
color: #fff;
background-color: rgba(255, 255, 255, 0.075);
}
@media (max-width: 575.98px) {
.table-responsive-sm {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-sm > .table-bordered {
border: 0;
}
}
@media (max-width: 767.98px) {
.table-responsive-md {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-md > .table-bordered {
border: 0;
}
}
@media (max-width: 991.98px) {
.table-responsive-lg {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-lg > .table-bordered {
border: 0;
}
}
@media (max-width: 1199.98px) {
.table-responsive-xl {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-xl > .table-bordered {
border: 0;
}
}
.table-responsive {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive > .table-bordered {
border: 0;
}
.form-control {
display: block;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control:focus {
color: #495057;
background-color: #fff;
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.form-control::-webkit-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::-moz-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::-ms-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:disabled,
.form-control[readonly] {
background-color: #e9ecef;
opacity: 1;
}
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.form-control-file,
.form-control-range {
display: block;
width: 100%;
}
.col-form-label {
padding-top: calc(0.375rem + 1px);
padding-bottom: calc(0.375rem + 1px);
margin-bottom: 0;
font-size: inherit;
line-height: 1.5;
}
.col-form-label-lg {
padding-top: calc(0.5rem + 1px);
padding-bottom: calc(0.5rem + 1px);
font-size: 1.25rem;
line-height: 1.5;
}
.col-form-label-sm {
padding-top: calc(0.25rem + 1px);
padding-bottom: calc(0.25rem + 1px);
font-size: 0.875rem;
line-height: 1.5;
}
.form-control-plaintext {
display: block;
width: 100%;
padding-top: 0.375rem;
padding-bottom: 0.375rem;
margin-bottom: 0;
line-height: 1.5;
color: #212529;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-control-plaintext.form-control-lg,
.form-control-plaintext.form-control-sm {
padding-right: 0;
padding-left: 0;
}
.form-control-sm {
height: calc(1.5em + 0.5rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.form-control-lg {
height: calc(1.5em + 1rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
select.form-control[multiple],
select.form-control[size] {
height: auto;
}
textarea.form-control {
height: auto;
}
.form-group {
margin-bottom: 1rem;
}
.form-text {
display: block;
margin-top: 0.25rem;
}
.form-row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
padding-right: 5px;
padding-left: 5px;
}
.form-check {
position: relative;
display: block;
padding-left: 1.25rem;
}
.form-check-input {
position: absolute;
margin-top: 0.3rem;
margin-left: -1.25rem;
}
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
.form-check-label {
margin-bottom: 0;
}
.form-check-inline {
display: -ms-inline-flexbox;
display: inline-flex;
-ms-flex-align: center;
align-items: center;
padding-left: 0;
margin-right: 0.75rem;
}
.form-check-inline .form-check-input {
position: static;
margin-top: 0;
margin-right: 0.3125rem;
margin-left: 0;
}
.valid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #28a745;
}
.valid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: 0.1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #fff;
background-color: rgba(40, 167, 69, 0.9);
border-radius: 0.25rem;
}
.form-control.is-valid,
.was-validated .form-control:valid {
border-color: #28a745;
padding-right: calc(1.5em + 0.75rem);
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: center right calc(0.375em + 0.1875rem);
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-valid:focus,
.was-validated .form-control:valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.form-control.is-valid ~ .valid-feedback,
.form-control.is-valid ~ .valid-tooltip,
.was-validated .form-control:valid ~ .valid-feedback,
.was-validated .form-control:valid ~ .valid-tooltip {
display: block;
}
.was-validated textarea.form-control:valid,
textarea.form-control.is-valid {
padding-right: calc(1.5em + 0.75rem);
background-position: top calc(0.375em + 0.1875rem) right
calc(0.375em + 0.1875rem);
}
.custom-select.is-valid,
.was-validated .custom-select:valid {
border-color: #28a745;
padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
no-repeat right 0.75rem center/8px 10px,
url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e")
#fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem)
calc(0.75em + 0.375rem);
}
.custom-select.is-valid:focus,
.was-validated .custom-select:valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.custom-select.is-valid ~ .valid-feedback,
.custom-select.is-valid ~ .valid-tooltip,
.was-validated .custom-select:valid ~ .valid-feedback,
.was-validated .custom-select:valid ~ .valid-tooltip {
display: block;
}
.form-control-file.is-valid ~ .valid-feedback,
.form-control-file.is-valid ~ .valid-tooltip,
.was-validated .form-control-file:valid ~ .valid-feedback,
.was-validated .form-control-file:valid ~ .valid-tooltip {
display: block;
}
.form-check-input.is-valid ~ .form-check-label,
.was-validated .form-check-input:valid ~ .form-check-label {
color: #28a745;
}
.form-check-input.is-valid ~ .valid-feedback,
.form-check-input.is-valid ~ .valid-tooltip,
.was-validated .form-check-input:valid ~ .valid-feedback,
.was-validated .form-check-input:valid ~ .valid-tooltip {
display: block;
}
.custom-control-input.is-valid ~ .custom-control-label,
.was-validated .custom-control-input:valid ~ .custom-control-label {
color: #28a745;
}
.custom-control-input.is-valid ~ .custom-control-label::before,
.was-validated .custom-control-input:valid ~ .custom-control-label::before {
border-color: #28a745;
}
.custom-control-input.is-valid ~ .valid-feedback,
.custom-control-input.is-valid ~ .valid-tooltip,
.was-validated .custom-control-input:valid ~ .valid-feedback,
.was-validated .custom-control-input:valid ~ .valid-tooltip {
display: block;
}
.custom-control-input.is-valid:checked ~ .custom-control-label::before,
.was-validated
.custom-control-input:valid:checked
~ .custom-control-label::before {
border-color: #34ce57;
background-color: #34ce57;
}
.custom-control-input.is-valid:focus ~ .custom-control-label::before,
.was-validated
.custom-control-input:valid:focus
~ .custom-control-label::before {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.custom-control-input.is-valid:focus:not(:checked)
~ .custom-control-label::before,
.was-validated
.custom-control-input:valid:focus:not(:checked)
~ .custom-control-label::before {
border-color: #28a745;
}
.custom-file-input.is-valid ~ .custom-file-label,
.was-validated .custom-file-input:valid ~ .custom-file-label {
border-color: #28a745;
}
.custom-file-input.is-valid ~ .valid-feedback,
.custom-file-input.is-valid ~ .valid-tooltip,
.was-validated .custom-file-input:valid ~ .valid-feedback,
.was-validated .custom-file-input:valid ~ .valid-tooltip {
display: block;
}
.custom-file-input.is-valid:focus ~ .custom-file-label,
.was-validated .custom-file-input:valid:focus ~ .custom-file-label {
border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.invalid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #dc3545;
}
.invalid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: 0.1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #fff;
background-color: rgba(220, 53, 69, 0.9);
border-radius: 0.25rem;
}
.form-control.is-invalid,
.was-validated .form-control:invalid {
border-color: #dc3545;
padding-right: calc(1.5em + 0.75rem);
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
background-repeat: no-repeat;
background-position: center right calc(0.375em + 0.1875rem);
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.was-validated .form-control:invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.form-control.is-invalid ~ .invalid-feedback,
.form-control.is-invalid ~ .invalid-tooltip,
.was-validated .form-control:invalid ~ .invalid-feedback,
.was-validated .form-control:invalid ~ .invalid-tooltip {
display: block;
}
.was-validated textarea.form-control:invalid,
textarea.form-control.is-invalid {
padding-right: calc(1.5em + 0.75rem);
background-position: top calc(0.375em + 0.1875rem) right
calc(0.375em + 0.1875rem);
}
.custom-select.is-invalid,
.was-validated .custom-select:invalid {
border-color: #dc3545;
padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
no-repeat right 0.75rem center/8px 10px,
url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E")
#fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem)
calc(0.75em + 0.375rem);
}
.custom-select.is-invalid:focus,
.was-validated .custom-select:invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.custom-select.is-invalid ~ .invalid-feedback,
.custom-select.is-invalid ~ .invalid-tooltip,
.was-validated .custom-select:invalid ~ .invalid-feedback,
.was-validated .custom-select:invalid ~ .invalid-tooltip {
display: block;
}
.form-control-file.is-invalid ~ .invalid-feedback,
.form-control-file.is-invalid ~ .invalid-tooltip,
.was-validated .form-control-file:invalid ~ .invalid-feedback,
.was-validated .form-control-file:invalid ~ .invalid-tooltip {
display: block;
}
.form-check-input.is-invalid ~ .form-check-label,
.was-validated .form-check-input:invalid ~ .form-check-label {
color: #dc3545;
}
.form-check-input.is-invalid ~ .invalid-feedback,
.form-check-input.is-invalid ~ .invalid-tooltip,
.was-validated .form-check-input:invalid ~ .invalid-feedback,
.was-validated .form-check-input:invalid ~ .invalid-tooltip {
display: block;
}
.custom-control-input.is-invalid ~ .custom-control-label,
.was-validated .custom-control-input:invalid ~ .custom-control-label {
color: #dc3545;
}
.custom-control-input.is-invalid ~ .custom-control-label::before,
.was-validated .custom-control-input:invalid ~ .custom-control-label::before {
border-color: #dc3545;
}
.custom-control-input.is-invalid ~ .invalid-feedback,
.custom-control-input.is-invalid ~ .invalid-tooltip,
.was-validated .custom-control-input:invalid ~ .invalid-feedback,
.was-validated .custom-control-input:invalid ~ .invalid-tooltip {
display: block;
}
.custom-control-input.is-invalid:checked ~ .custom-control-label::before,
.was-validated
.custom-control-input:invalid:checked
~ .custom-control-label::before {
border-color: #e4606d;
background-color: #e4606d;
}
.custom-control-input.is-invalid:focus ~ .custom-control-label::before,
.was-validated
.custom-control-input:invalid:focus
~ .custom-control-label::before {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.custom-control-input.is-invalid:focus:not(:checked)
~ .custom-control-label::before,
.was-validated
.custom-control-input:invalid:focus:not(:checked)
~ .custom-control-label::before {
border-color: #dc3545;
}
.custom-file-input.is-invalid ~ .custom-file-label,
.was-validated .custom-file-input:invalid ~ .custom-file-label {
border-color: #dc3545;
}
.custom-file-input.is-invalid ~ .invalid-feedback,
.custom-file-input.is-invalid ~ .invalid-tooltip,
.was-validated .custom-file-input:invalid ~ .invalid-feedback,
.was-validated .custom-file-input:invalid ~ .invalid-tooltip {
display: block;
}
.custom-file-input.is-invalid:focus ~ .custom-file-label,
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label {
border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.form-inline {
display: -ms-flexbox;
display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-ms-flex-align: center;
align-items: center;
}
.form-inline .form-check {
width: 100%;
}
@media (min-width: 576px) {
.form-inline label {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
margin-bottom: 0;
}
.form-inline .form-group {
display: -ms-flexbox;
display: flex;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-ms-flex-align: center;
align-items: center;
margin-bottom: 0;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-plaintext {
display: inline-block;
}
.form-inline .custom-select,
.form-inline .input-group {
width: auto;
}
.form-inline .form-check {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
width: auto;
padding-left: 0;
}
.form-inline .form-check-input {
position: relative;
-ms-flex-negative: 0;
flex-shrink: 0;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
}
.form-inline .custom-control {
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
}
.form-inline .custom-control-label {
margin-bottom: 0;
}
}
.btn {
display: inline-block;
font-weight: 400;
color: #212529;
text-align: center;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: transparent;
border: 1px solid transparent;
padding: 0.375rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
}
.btn:hover {
color: #212529;
text-decoration: none;
}
.btn.focus,
.btn:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.btn.disabled,
.btn:disabled {
opacity: 0.65;
}
a.btn.disabled,
fieldset:disabled a.btn {
pointer-events: none;
}
.btn-primary {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:hover {
color: #fff;
background-color: #0069d9;
border-color: #0062cc;
}
.btn-primary.focus,
.btn-primary:focus {
box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
}
.btn-primary.disabled,
.btn-primary:disabled {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active,
.show > .btn-primary.dropdown-toggle {
color: #fff;
background-color: #0062cc;
border-color: #005cbf;
}
.btn-primary:not(:disabled):not(.disabled).active:focus,
.btn-primary:not(:disabled):not(.disabled):active:focus,
.show > .btn-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
.btn-secondary.focus,
.btn-secondary:focus {
box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
}
.btn-secondary.disabled,
.btn-secondary:disabled {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:not(:disabled):not(.disabled).active,
.btn-secondary:not(:disabled):not(.disabled):active,
.show > .btn-secondary.dropdown-toggle {
color: #fff;
background-color: #545b62;
border-color: #4e555b;
}
.btn-secondary:not(:disabled):not(.disabled).active:focus,
.btn-secondary:not(:disabled):not(.disabled):active:focus,
.show > .btn-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
}
.btn-success {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success.focus,
.btn-success:focus {
box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
}
.btn-success.disabled,
.btn-success:disabled {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:not(:disabled):not(.disabled).active,
.btn-success:not(:disabled):not(.disabled):active,
.show > .btn-success.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success:not(:disabled):not(.disabled).active:focus,
.btn-success:not(:disabled):not(.disabled):active:focus,
.show > .btn-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
}
.btn-info {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:hover {
color: #fff;
background-color: #138496;
border-color: #117a8b;
}
.btn-info.focus,
.btn-info:focus {
box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
}
.btn-info.disabled,
.btn-info:disabled {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:not(:disabled):not(.disabled).active,
.btn-info:not(:disabled):not(.disabled):active,
.show > .btn-info.dropdown-toggle {
color: #fff;
background-color: #117a8b;
border-color: #10707f;
}
.btn-info:not(:disabled):not(.disabled).active:focus,
.btn-info:not(:disabled):not(.disabled):active:focus,
.show > .btn-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
}
.btn-warning {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:hover {
color: #212529;
background-color: #e0a800;
border-color: #d39e00;
}
.btn-warning.focus,
.btn-warning:focus {
box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
}
.btn-warning.disabled,
.btn-warning:disabled {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:not(:disabled):not(.disabled).active,
.btn-warning:not(:disabled):not(.disabled):active,
.show > .btn-warning.dropdown-toggle {
color: #212529;
background-color: #d39e00;
border-color: #c69500;
}
.btn-warning:not(:disabled):not(.disabled).active:focus,
.btn-warning:not(:disabled):not(.disabled):active:focus,
.show > .btn-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
}
.btn-danger {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:hover {
color: #fff;
background-color: #c82333;
border-color: #bd2130;
}
.btn-danger.focus,
.btn-danger:focus {
box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
}
.btn-danger.disabled,
.btn-danger:disabled {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:not(:disabled):not(.disabled).active,
.btn-danger:not(:disabled):not(.disabled):active,
.show > .btn-danger.dropdown-toggle {
color: #fff;
background-color: #bd2130;
border-color: #b21f2d;
}
.btn-danger:not(:disabled):not(.disabled).active:focus,
.btn-danger:not(:disabled):not(.disabled):active:focus,
.show > .btn-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
}
.btn-light {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:hover {
color: #212529;
background-color: #e2e6ea;
border-color: #dae0e5;
}
.btn-light.focus,
.btn-light:focus {
box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
}
.btn-light.disabled,
.btn-light:disabled {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:not(:disabled):not(.disabled).active,
.btn-light:not(:disabled):not(.disabled):active,
.show > .btn-light.dropdown-toggle {
color: #212529;
background-color: #dae0e5;
border-color: #d3d9df;
}
.btn-light:not(:disabled):not(.disabled).active:focus,
.btn-light:not(:disabled):not(.disabled):active:focus,
.show > .btn-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
}
.btn-dark {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:hover {
color: #fff;
background-color: #23272b;
border-color: #1d2124;
}
.btn-dark.focus,
.btn-dark:focus {
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
}
.btn-dark.disabled,
.btn-dark:disabled {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:not(:disabled):not(.disabled).active,
.btn-dark:not(:disabled):not(.disabled):active,
.show > .btn-dark.dropdown-toggle {
color: #fff;
background-color: #1d2124;
border-color: #171a1d;
}
.btn-dark:not(:disabled):not(.disabled).active:focus,
.btn-dark:not(:disabled):not(.disabled):active:focus,
.show > .btn-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
}
.btn-outline-primary {
color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:hover {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary.focus,
.btn-outline-primary:focus {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-outline-primary.disabled,
.btn-outline-primary:disabled {
color: #007bff;
background-color: transparent;
}
.btn-outline-primary:not(:disabled):not(.disabled).active,
.btn-outline-primary:not(:disabled):not(.disabled):active,
.show > .btn-outline-primary.dropdown-toggle {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:not(:disabled):not(.disabled).active:focus,
.btn-outline-primary:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-outline-secondary {
color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:hover {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary.focus,
.btn-outline-secondary:focus {
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-secondary.disabled,
.btn-outline-secondary:disabled {
color: #6c757d;
background-color: transparent;
}
.btn-outline-secondary:not(:disabled):not(.disabled).active,
.btn-outline-secondary:not(:disabled):not(.disabled):active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-success {
color: #28a745;
border-color: #28a745;
}
.btn-outline-success:hover {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success.focus,
.btn-outline-success:focus {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-outline-success.disabled,
.btn-outline-success:disabled {
color: #28a745;
background-color: transparent;
}
.btn-outline-success:not(:disabled):not(.disabled).active,
.btn-outline-success:not(:disabled):not(.disabled):active,
.show > .btn-outline-success.dropdown-toggle {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:not(:disabled):not(.disabled).active:focus,
.btn-outline-success:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-outline-info {
color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:hover {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info.focus,
.btn-outline-info:focus {
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-outline-info.disabled,
.btn-outline-info:disabled {
color: #17a2b8;
background-color: transparent;
}
.btn-outline-info:not(:disabled):not(.disabled).active,
.btn-outline-info:not(:disabled):not(.disabled):active,
.show > .btn-outline-info.dropdown-toggle {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:not(:disabled):not(.disabled).active:focus,
.btn-outline-info:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-outline-warning {
color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:hover {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning.focus,
.btn-outline-warning:focus {
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-outline-warning.disabled,
.btn-outline-warning:disabled {
color: #ffc107;
background-color: transparent;
}
.btn-outline-warning:not(:disabled):not(.disabled).active,
.btn-outline-warning:not(:disabled):not(.disabled):active,
.show > .btn-outline-warning.dropdown-toggle {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:not(:disabled):not(.disabled).active:focus,
.btn-outline-warning:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-outline-danger {
color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:hover {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger.focus,
.btn-outline-danger:focus {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-outline-danger.disabled,
.btn-outline-danger:disabled {
color: #dc3545;
background-color: transparent;
}
.btn-outline-danger:not(:disabled):not(.disabled).active,
.btn-outline-danger:not(:disabled):not(.disabled):active,
.show > .btn-outline-danger.dropdown-toggle {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:not(:disabled):not(.disabled).active:focus,
.btn-outline-danger:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-outline-light {
color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:hover {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light.focus,
.btn-outline-light:focus {
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-outline-light.disabled,
.btn-outline-light:disabled {
color: #f8f9fa;
background-color: transparent;
}
.btn-outline-light:not(:disabled):not(.disabled).active,
.btn-outline-light:not(:disabled):not(.disabled):active,
.show > .btn-outline-light.dropdown-toggle {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:not(:disabled):not(.disabled).active:focus,
.btn-outline-light:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-outline-dark {
color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:hover {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark.focus,
.btn-outline-dark:focus {
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-outline-dark.disabled,
.btn-outline-dark:disabled {
color: #343a40;
background-color: transparent;
}
.btn-outline-dark:not(:disabled):not(.disabled).active,
.btn-outline-dark:not(:disabled):not(.disabled):active,
.show > .btn-outline-dark.dropdown-toggle {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:not(:disabled):not(.disabled).active:focus,
.btn-outline-dark:not(:disabled):not(.disabled):active:focus,
.show > .btn-outline-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-link {
font-weight: 400;
color: #007bff;
text-decoration: none;
}
.btn-link:hover {
color: #0056b3;
text-decoration: underline;
}
.btn-link.focus,
.btn-link:focus {
text-decoration: underline;
box-shadow: none;
}
.btn-link.disabled,
.btn-link:disabled {
color: #6c757d;
pointer-events: none;
}
.btn-group-lg > .btn,
.btn-lg {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.btn-group-sm > .btn,
.btn-sm {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 0.5rem;
}
input[type="button"].btn-block,
input[type="reset"].btn-block,
input[type="submit"].btn-block {
width: 100%;
}
.fade {
transition: opacity 0.15s linear;
}
@media (prefers-reduced-motion: reduce) {
.fade {
transition: none;
}
}
.fade:not(.show) {
opacity: 0;
}
.collapse:not(.show) {
display: none;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
transition: height 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
.collapsing {
transition: none;
}
}
.dropdown,
.dropleft,
.dropright,
.dropup {
position: relative;
}
.dropdown-toggle {
white-space: nowrap;
}
.dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
border-bottom: 0;
border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
margin-left: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 10rem;
padding: 0.5rem 0;
margin: 0.125rem 0 0;
font-size: 1rem;
color: #212529;
text-align: left;
list-style: none;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 0.25rem;
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
@media (min-width: 576px) {
.dropdown-menu-sm-left {
right: auto;
left: 0;
}
.dropdown-menu-sm-right {
right: 0;
left: auto;
}
}
@media (min-width: 768px) {
.dropdown-menu-md-left {
right: auto;
left: 0;
}
.dropdown-menu-md-right {
right: 0;
left: auto;
}
}
@media (min-width: 992px) {
.dropdown-menu-lg-left {
right: auto;
left: 0;
}
.dropdown-menu-lg-right {
right: 0;
left: auto;
}
}
@media (min-width: 1200px) {
.dropdown-menu-xl-left {
right: auto;
left: 0;
}
.dropdown-menu-xl-right {
right: 0;
left: auto;
}
}
.dropup .dropdown-menu {
top: auto;
bottom: 100%;
margin-top: 0;
margin-bottom: 0.125rem;
}
.dropup .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0;
border-right: 0.3em solid transparent;
border-bottom: 0.3em solid;
border-left: 0.3em solid transparent;
}
.dropup .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-menu {
top: 0;
right: auto;
left: 100%;
margin-top: 0;
margin-left: 0.125rem;
}
.dropright .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-right: 0;
border-bottom: 0.3em solid transparent;
border-left: 0.3em solid;
}
.dropright .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-toggle::after {
vertical-align: 0;
}
.dropleft .dropdown-menu {
top: 0;
right: 100%;
left: auto;
margin-top: 0;
margin-right: 0.125rem;
}
.dropleft .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
}
.dropleft .dropdown-toggle::after {
display: none;
}
.dropleft .dropdown-toggle::before {
display: inline-block;
margin-right: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-right: 0.3em solid;
border-bottom: 0.3em solid transparent;
}
.dropleft .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropleft .dropdown-toggle::before {
vertical-align: 0;
}
.dropdown-menu[x-placement^="bottom"],
.dropdown-menu[x-placement^="left"],
.dropdown-menu[x-placement^="right"],
.dropdown-menu[x-placement^="top"] {
right: auto;
bottom: auto;
}
.dropdown-divider {
height: 0;
margin: 0.5rem 0;
overflow: hidden;
border-top: 1px solid #e9ecef;
}
.dropdown-item {
display: block;
width: 100%;
padding: 0.25rem 1.5rem;
clear: both;
font-weight: 400;
color: #212529;
text-align: inherit;
white-space: nowrap;
background-color: transparent;
border: 0;
}
.dropdown-item:focus,
.dropdown-item:hover {
color: #16181b;
text-decoration: none;
background-color: #f8f9fa;
}
.dropdown-item.active,
.dropdown-item:active {
color: #fff;
text-decoration: none;
background-color: #007bff;
}
.dropdown-item.disabled,
.dropdown-item:disabled {
color: #6c757d;
pointer-events: none;
background-color: transparent;
}
.dropdown-menu.show {
display: block;
}
.dropdown-header {
display: block;
padding: 0.5rem 1.5rem;
margin-bottom: 0;
font-size: 0.875rem;
color: #6c757d;
white-space: nowrap;
}
.dropdown-item-text {
display: block;
padding: 0.25rem 1.5rem;
color: #212529;
}
.btn-group,
.btn-group-vertical {
position: relative;
display: -ms-inline-flexbox;
display: inline-flex;
vertical-align: middle;
}
.btn-group-vertical > .btn,
.btn-group > .btn {
position: relative;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.btn-group-vertical > .btn:hover,
.btn-group > .btn:hover {
z-index: 1;
}
.btn-group-vertical > .btn.active,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn:focus,
.btn-group > .btn.active,
.btn-group > .btn:active,
.btn-group > .btn:focus {
z-index: 1;
}
.btn-toolbar {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.btn-toolbar .input-group {
width: auto;
}
.btn-group > .btn-group:not(:first-child),
.btn-group > .btn:not(:first-child) {
margin-left: -1px;
}
.btn-group > .btn-group:not(:last-child) > .btn,
.btn-group > .btn:not(:last-child):not(.dropdown-toggle) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn-group:not(:first-child) > .btn,
.btn-group > .btn:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.dropdown-toggle-split {
padding-right: 0.5625rem;
padding-left: 0.5625rem;
}
.dropdown-toggle-split::after,
.dropright .dropdown-toggle-split::after,
.dropup .dropdown-toggle-split::after {
margin-left: 0;
}
.dropleft .dropdown-toggle-split::before {
margin-right: 0;
}
.btn-group-sm > .btn + .dropdown-toggle-split,
.btn-sm + .dropdown-toggle-split {
padding-right: 0.375rem;
padding-left: 0.375rem;
}
.btn-group-lg > .btn + .dropdown-toggle-split,
.btn-lg + .dropdown-toggle-split {
padding-right: 0.75rem;
padding-left: 0.75rem;
}
.btn-group-vertical {
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-align: start;
align-items: flex-start;
-ms-flex-pack: center;
justify-content: center;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group {
width: 100%;
}
.btn-group-vertical > .btn-group:not(:first-child),
.btn-group-vertical > .btn:not(:first-child) {
margin-top: -1px;
}
.btn-group-vertical > .btn-group:not(:last-child) > .btn,
.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:not(:first-child) > .btn,
.btn-group-vertical > .btn:not(:first-child) {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.btn-group-toggle > .btn,
.btn-group-toggle > .btn-group > .btn {
margin-bottom: 0;
}
.btn-group-toggle > .btn input[type="checkbox"],
.btn-group-toggle > .btn input[type="radio"],
.btn-group-toggle > .btn-group > .btn input[type="checkbox"],
.btn-group-toggle > .btn-group > .btn input[type="radio"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-align: stretch;
align-items: stretch;
width: 100%;
}
.input-group > .custom-file,
.input-group > .custom-select,
.input-group > .form-control,
.input-group > .form-control-plaintext {
position: relative;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 1%;
margin-bottom: 0;
}
.input-group > .custom-file + .custom-file,
.input-group > .custom-file + .custom-select,
.input-group > .custom-file + .form-control,
.input-group > .custom-select + .custom-file,
.input-group > .custom-select + .custom-select,
.input-group > .custom-select + .form-control,
.input-group > .form-control + .custom-file,
.input-group > .form-control + .custom-select,
.input-group > .form-control + .form-control,
.input-group > .form-control-plaintext + .custom-file,
.input-group > .form-control-plaintext + .custom-select,
.input-group > .form-control-plaintext + .form-control {
margin-left: -1px;
}
.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label,
.input-group > .custom-select:focus,
.input-group > .form-control:focus {
z-index: 3;
}
.input-group > .custom-file .custom-file-input:focus {
z-index: 4;
}
.input-group > .custom-select:not(:last-child),
.input-group > .form-control:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .custom-select:not(:first-child),
.input-group > .form-control:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group > .custom-file {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
}
.input-group > .custom-file:not(:last-child) .custom-file-label,
.input-group > .custom-file:not(:last-child) .custom-file-label::after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .custom-file:not(:first-child) .custom-file-label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group-append,
.input-group-prepend {
display: -ms-flexbox;
display: flex;
}
.input-group-append .btn,
.input-group-prepend .btn {
position: relative;
z-index: 2;
}
.input-group-append .btn:focus,
.input-group-prepend .btn:focus {
z-index: 3;
}
.input-group-append .btn + .btn,
.input-group-append .btn + .input-group-text,
.input-group-append .input-group-text + .btn,
.input-group-append .input-group-text + .input-group-text,
.input-group-prepend .btn + .btn,
.input-group-prepend .btn + .input-group-text,
.input-group-prepend .input-group-text + .btn,
.input-group-prepend .input-group-text + .input-group-text {
margin-left: -1px;
}
.input-group-prepend {
margin-right: -1px;
}
.input-group-append {
margin-left: -1px;
}
.input-group-text {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
padding: 0.375rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
text-align: center;
white-space: nowrap;
background-color: #e9ecef;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.input-group-text input[type="checkbox"],
.input-group-text input[type="radio"] {
margin-top: 0;
}
.input-group-lg > .custom-select,
.input-group-lg > .form-control:not(textarea) {
height: calc(1.5em + 1rem + 2px);
}
.input-group-lg > .custom-select,
.input-group-lg > .form-control,
.input-group-lg > .input-group-append > .btn,
.input-group-lg > .input-group-append > .input-group-text,
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-prepend > .input-group-text {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.input-group-sm > .custom-select,
.input-group-sm > .form-control:not(textarea) {
height: calc(1.5em + 0.5rem + 2px);
}
.input-group-sm > .custom-select,
.input-group-sm > .form-control,
.input-group-sm > .input-group-append > .btn,
.input-group-sm > .input-group-append > .input-group-text,
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-prepend > .input-group-text {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.input-group-lg > .custom-select,
.input-group-sm > .custom-select {
padding-right: 1.75rem;
}
.input-group
> .input-group-append:last-child
> .btn:not(:last-child):not(.dropdown-toggle),
.input-group
> .input-group-append:last-child
> .input-group-text:not(:last-child),
.input-group > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text,
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .input-group-append > .btn,
.input-group > .input-group-append > .input-group-text,
.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
.input-group
> .input-group-prepend:first-child
> .input-group-text:not(:first-child),
.input-group > .input-group-prepend:not(:first-child) > .btn,
.input-group > .input-group-prepend:not(:first-child) > .input-group-text {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.custom-control {
position: relative;
display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
}
.custom-control-inline {
display: -ms-inline-flexbox;
display: inline-flex;
margin-right: 1rem;
}
.custom-control-input {
position: absolute;
z-index: -1;
opacity: 0;
}
.custom-control-input:checked ~ .custom-control-label::before {
color: #fff;
border-color: #007bff;
background-color: #007bff;
}
.custom-control-input:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
border-color: #80bdff;
}
.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
color: #fff;
background-color: #b3d7ff;
border-color: #b3d7ff;
}
.custom-control-input:disabled ~ .custom-control-label {
color: #6c757d;
}
.custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
.custom-control-label {
position: relative;
margin-bottom: 0;
vertical-align: top;
}
.custom-control-label::before {
position: absolute;
top: 0.25rem;
left: -1.5rem;
display: block;
width: 1rem;
height: 1rem;
pointer-events: none;
content: "";
background-color: #fff;
border: #adb5bd solid 1px;
}
.custom-control-label::after {
position: absolute;
top: 0.25rem;
left: -1.5rem;
display: block;
width: 1rem;
height: 1rem;
content: "";
background: no-repeat 50%/50% 50%;
}
.custom-checkbox .custom-control-label::before {
border-radius: 0.25rem;
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
}
.custom-checkbox
.custom-control-input:indeterminate
~ .custom-control-label::before {
border-color: #007bff;
background-color: #007bff;
}
.custom-checkbox
.custom-control-input:indeterminate
~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
}
.custom-checkbox
.custom-control-input:disabled:checked
~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-checkbox
.custom-control-input:disabled:indeterminate
~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-radio .custom-control-label::before {
border-radius: 50%;
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}
.custom-radio
.custom-control-input:disabled:checked
~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-switch {
padding-left: 2.25rem;
}
.custom-switch .custom-control-label::before {
left: -2.25rem;
width: 1.75rem;
pointer-events: all;
border-radius: 0.5rem;
}
.custom-switch .custom-control-label::after {
top: calc(0.25rem + 2px);
left: calc(-2.25rem + 2px);
width: calc(1rem - 4px);
height: calc(1rem - 4px);
background-color: #adb5bd;
border-radius: 0.5rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,
-webkit-transform 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.custom-switch .custom-control-label::after {
transition: none;
}
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
background-color: #fff;
-webkit-transform: translateX(0.75rem);
transform: translateX(0.75rem);
}
.custom-switch
.custom-control-input:disabled:checked
~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-select {
display: inline-block;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
vertical-align: middle;
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
no-repeat right 0.75rem center/8px 10px;
background-color: #fff;
border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.custom-select:focus {
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-select:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.custom-select[multiple],
.custom-select[size]:not([size="1"]) {
height: auto;
padding-right: 0.75rem;
background-image: none;
}
.custom-select:disabled {
color: #6c757d;
background-color: #e9ecef;
}
.custom-select::-ms-expand {
display: none;
}
.custom-select-sm {
height: calc(1.5em + 0.5rem + 2px);
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
font-size: 0.875rem;
}
.custom-select-lg {
height: calc(1.5em + 1rem + 2px);
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 1rem;
font-size: 1.25rem;
}
.custom-file {
position: relative;
display: inline-block;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
margin-bottom: 0;
}
.custom-file-input {
position: relative;
z-index: 2;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
margin: 0;
opacity: 0;
}
.custom-file-input:focus ~ .custom-file-label {
border-color: #80bdff;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-file-input:disabled ~ .custom-file-label {
background-color: #e9ecef;
}
.custom-file-input:lang(en) ~ .custom-file-label::after {
content: "Browse";
}
.custom-file-input ~ .custom-file-label[data-browse]::after {
content: attr(data-browse);
}
.custom-file-label {
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 1;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
background-color: #fff;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.custom-file-label::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: 3;
display: block;
height: calc(1.5em + 0.75rem);
padding: 0.375rem 0.75rem;
line-height: 1.5;
color: #495057;
content: "Browse";
background-color: #e9ecef;
border-left: inherit;
border-radius: 0 0.25rem 0.25rem 0;
}
.custom-range {
width: 100%;
height: calc(1rem + 0.4rem);
padding: 0;
background-color: transparent;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.custom-range:focus {
outline: 0;
}
.custom-range:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range:focus::-moz-range-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range:focus::-ms-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range::-moz-focus-outer {
border: 0;
}
.custom-range::-webkit-slider-thumb {
width: 1rem;
height: 1rem;
margin-top: -0.25rem;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out;
-webkit-appearance: none;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-webkit-slider-thumb {
transition: none;
}
}
.custom-range::-webkit-slider-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-webkit-slider-runnable-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: #dee2e6;
border-color: transparent;
border-radius: 1rem;
}
.custom-range::-moz-range-thumb {
width: 1rem;
height: 1rem;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out;
-moz-appearance: none;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-moz-range-thumb {
transition: none;
}
}
.custom-range::-moz-range-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-moz-range-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: #dee2e6;
border-color: transparent;
border-radius: 1rem;
}
.custom-range::-ms-thumb {
width: 1rem;
height: 1rem;
margin-top: 0;
margin-right: 0.2rem;
margin-left: 0.2rem;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-ms-thumb {
transition: none;
}
}
.custom-range::-ms-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-ms-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: transparent;
border-color: transparent;
border-width: 0.5rem;
}
.custom-range::-ms-fill-lower {
background-color: #dee2e6;
border-radius: 1rem;
}
.custom-range::-ms-fill-upper {
margin-right: 15px;
background-color: #dee2e6;
border-radius: 1rem;
}
.custom-range:disabled::-webkit-slider-thumb {
background-color: #adb5bd;
}
.custom-range:disabled::-webkit-slider-runnable-track {
cursor: default;
}
.custom-range:disabled::-moz-range-thumb {
background-color: #adb5bd;
}
.custom-range:disabled::-moz-range-track {
cursor: default;
}
.custom-range:disabled::-ms-thumb {
background-color: #adb5bd;
}
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: none;
}
}
.nav {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: 0.5rem 1rem;
}
.nav-link:focus,
.nav-link:hover {
text-decoration: none;
}
.nav-link.disabled {
color: #6c757d;
pointer-events: none;
cursor: default;
}
.nav-tabs {
border-bottom: 1px solid #dee2e6;
}
.nav-tabs .nav-item {
margin-bottom: -1px;
/* text-align: left; */
}
.nav-tabs .nav-link {
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.nav-tabs .nav-link:focus,
.nav-tabs .nav-link:hover {
border-color: #e9ecef #e9ecef #dee2e6;
}
.nav-tabs .nav-link.disabled {
color: #6c757d;
background-color: transparent;
border-color: transparent;
}
.nav-tabs .nav-item.show .nav-link,
.nav-tabs .nav-link.active {
color: #495057;
background-color: #fff;
border-color: #dee2e6 #dee2e6 #fff;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.nav-pills .nav-link {
border-radius: 0.25rem;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
color: #fff;
background-color: #007bff;
}
.nav-fill .nav-item {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
text-align: center;
}
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
text-align: center;
}
.tab-content > .tab-pane {
display: none;
}
.tab-content > .active {
display: block;
}
.navbar {
position: relative;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: justify;
justify-content: space-between;
padding: 0.5rem 1rem;
}
.navbar > .container,
.navbar > .container-fluid {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: justify;
justify-content: space-between;
}
.navbar-brand {
display: inline-block;
padding-top: 0.3125rem;
padding-bottom: 0.3125rem;
margin-right: 1rem;
font-size: 1.25rem;
line-height: inherit;
white-space: nowrap;
}
.navbar-brand:focus,
.navbar-brand:hover {
text-decoration: none;
}
.navbar-nav {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.navbar-nav .nav-link {
padding-right: 0;
padding-left: 0;
}
.navbar-nav .dropdown-menu {
position: static;
float: none;
}
.navbar-text {
display: inline-block;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.navbar-collapse {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-align: center;
align-items: center;
}
.navbar-toggler {
padding: 0.25rem 0.75rem;
font-size: 1.25rem;
line-height: 1;
background-color: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.navbar-toggler:focus,
.navbar-toggler:hover {
text-decoration: none;
}
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
}
@media (max-width: 575.98px) {
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 576px) {
.navbar-expand-sm {
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-sm .navbar-nav {
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-sm .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-sm .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-sm .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-sm .navbar-toggler {
display: none;
}
}
@media (max-width: 767.98px) {
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 768px) {
.navbar-expand-md {
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-md .navbar-nav {
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-md .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-md .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-md .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-md .navbar-toggler {
display: none;
}
}
@media (max-width: 991.98px) {
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 992px) {
.navbar-expand-lg {
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-lg .navbar-nav {
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-lg .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-lg .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-lg .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-lg .navbar-toggler {
display: none;
}
}
@media (max-width: 1199.98px) {
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 1200px) {
.navbar-expand-xl {
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-xl .navbar-nav {
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-xl .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-xl .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-xl .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-xl .navbar-toggler {
display: none;
}
}
.navbar-expand {
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand > .container,
.navbar-expand > .container-fluid {
padding-right: 0;
padding-left: 0;
}
.navbar-expand .navbar-nav {
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand > .container,
.navbar-expand > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand .navbar-toggler {
display: none;
}
.navbar-light .navbar-brand {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-brand:focus,
.navbar-light .navbar-brand:hover {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-nav .nav-link {
color: rgba(0, 0, 0, 0.5);
}
.navbar-light .navbar-nav .nav-link:focus,
.navbar-light .navbar-nav .nav-link:hover {
color: rgba(0, 0, 0, 0.7);
}
.navbar-light .navbar-nav .nav-link.disabled {
color: rgba(0, 0, 0, 0.3);
}
.navbar-light .navbar-nav .active > .nav-link,
.navbar-light .navbar-nav .nav-link.active,
.navbar-light .navbar-nav .nav-link.show,
.navbar-light .navbar-nav .show > .nav-link {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-toggler {
color: rgba(0, 0, 0, 0.5);
border-color: rgba(0, 0, 0, 0.1);
}
.navbar-light .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-light .navbar-text {
color: rgba(0, 0, 0, 0.5);
}
.navbar-light .navbar-text a {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-text a:focus,
.navbar-light .navbar-text a:hover {
color: rgba(0, 0, 0, 0.9);
}
.navbar-dark .navbar-brand {
color: #fff;
}
.navbar-dark .navbar-brand:focus,
.navbar-dark .navbar-brand:hover {
color: #fff;
}
.navbar-dark .navbar-nav .nav-link {
color: rgba(255, 255, 255, 0.5);
}
.navbar-dark .navbar-nav .nav-link:focus,
.navbar-dark .navbar-nav .nav-link:hover {
color: rgba(255, 255, 255, 0.75);
}
.navbar-dark .navbar-nav .nav-link.disabled {
color: rgba(255, 255, 255, 0.25);
}
.navbar-dark .navbar-nav .active > .nav-link,
.navbar-dark .navbar-nav .nav-link.active,
.navbar-dark .navbar-nav .nav-link.show,
.navbar-dark .navbar-nav .show > .nav-link {
color: #fff;
}
.navbar-dark .navbar-toggler {
color: rgba(255, 255, 255, 0.5);
border-color: rgba(255, 255, 255, 0.1);
}
.navbar-dark .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-dark .navbar-text {
color: rgba(255, 255, 255, 0.5);
}
.navbar-dark .navbar-text a {
color: #fff;
}
.navbar-dark .navbar-text a:focus,
.navbar-dark .navbar-text a:hover {
color: #fff;
}
.card {
position: relative;
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
background-clip: border-box;
border: 0px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card > hr {
margin-right: 0;
margin-left: 0;
}
.card > .list-group:first-child .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.card > .list-group:last-child .list-group-item:last-child {
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.card-body {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
padding: 0.25rem;
margin-top: 0.5rem;
}
.card-title {
margin-bottom: 0.75rem;
}
.card-subtitle {
margin-top: -0.375rem;
margin-bottom: 0;
}
.card-text:last-child {
margin-bottom: 0;
}
.card-link:hover {
text-decoration: none;
}
.card-link + .card-link {
margin-left: 1.25rem;
}
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
background-color: rgba(0, 0, 0, 0.03);
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.card-header:first-child {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
.card-header + .list-group .list-group-item:first-child {
border-top: 0;
}
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
border-top: 1px solid rgba(0, 0, 0, 0.125);
}
.card-footer:last-child {
border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
}
.card-header-tabs {
margin-right: -0.625rem;
margin-bottom: -0.75rem;
margin-left: -0.625rem;
border-bottom: 0;
}
.card-header-pills {
margin-right: -0.625rem;
margin-left: -0.625rem;
}
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1.25rem;
}
.card-img {
width: 100%;
border-radius: calc(0.25rem - 1px);
}
.card-img-top {
width: 100%;
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.card-img-bottom {
width: 100%;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
.card-deck {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
}
.card-deck .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-deck {
-ms-flex-flow: row wrap;
flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
display: -ms-flexbox;
display: flex;
-ms-flex: 1 0 0%;
flex: 1 0 0%;
-ms-flex-direction: column;
flex-direction: column;
margin-right: 15px;
margin-bottom: 0;
margin-left: 15px;
}
}
.card-group {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
}
.card-group > .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-group {
-ms-flex-flow: row wrap;
flex-flow: row wrap;
}
.card-group > .card {
-ms-flex: 1 0 0%;
flex: 1 0 0%;
margin-bottom: 0;
}
.card-group > .card + .card {
margin-left: 0;
border-left: 0;
}
.card-group > .card:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-header,
.card-group > .card:not(:last-child) .card-img-top {
border-top-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-footer,
.card-group > .card:not(:last-child) .card-img-bottom {
border-bottom-right-radius: 0;
}
.card-group > .card:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-header,
.card-group > .card:not(:first-child) .card-img-top {
border-top-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-footer,
.card-group > .card:not(:first-child) .card-img-bottom {
border-bottom-left-radius: 0;
}
}
.card-columns .card {
margin-bottom: 0.75rem;
}
@media (min-width: 576px) {
.card-columns {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 1.25rem;
-moz-column-gap: 1.25rem;
column-gap: 1.25rem;
orphans: 1;
widows: 1;
}
.card-columns .card {
display: inline-block;
width: 100%;
}
}
.accordion > .card {
overflow: hidden;
}
.accordion > .card:not(:first-of-type) .card-header:first-child {
border-radius: 0;
}
.accordion > .card:not(:first-of-type):not(:last-of-type) {
border-bottom: 0;
border-radius: 0;
}
.accordion > .card:first-of-type {
border-bottom: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.accordion > .card:last-of-type {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.accordion > .card .card-header {
margin-bottom: -1px;
}
.breadcrumb {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding: 0.75rem 1rem;
margin-bottom: 1rem;
list-style: none;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.breadcrumb-item + .breadcrumb-item {
padding-left: 0.5rem;
}
.breadcrumb-item + .breadcrumb-item::before {
display: inline-block;
padding-right: 0.5rem;
color: #6c757d;
content: "/";
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: underline;
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: none;
}
.breadcrumb-item.active {
color: #6c757d;
}
.pagination {
display: -ms-flexbox;
display: flex;
padding-left: 0;
list-style: none;
border-radius: 0.25rem;
}
.page-link {
position: relative;
display: block;
padding: 0.5rem 0.75rem;
margin-left: -1px;
line-height: 1.25;
color: #007bff;
background-color: #fff;
border: 1px solid #dee2e6;
}
.page-link:hover {
z-index: 2;
color: #0056b3;
text-decoration: none;
background-color: #e9ecef;
border-color: #dee2e6;
}
.page-link:focus {
z-index: 2;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.page-item:last-child .page-link {
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
}
.page-item.active .page-link {
z-index: 1;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.page-item.disabled .page-link {
color: #6c757d;
pointer-events: none;
cursor: auto;
background-color: #fff;
border-color: #dee2e6;
}
.pagination-lg .page-link {
padding: 0.75rem 1.5rem;
font-size: 1.25rem;
line-height: 1.5;
}
.pagination-lg .page-item:first-child .page-link {
border-top-left-radius: 0.3rem;
border-bottom-left-radius: 0.3rem;
}
.pagination-lg .page-item:last-child .page-link {
border-top-right-radius: 0.3rem;
border-bottom-right-radius: 0.3rem;
}
.pagination-sm .page-link {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
}
.pagination-sm .page-item:first-child .page-link {
border-top-left-radius: 0.2rem;
border-bottom-left-radius: 0.2rem;
}
.pagination-sm .page-item:last-child .page-link {
border-top-right-radius: 0.2rem;
border-bottom-right-radius: 0.2rem;
}
.badge {
display: inline-block;
padding: 0.25em 0.4em;
font-size: 75%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.badge {
transition: none;
}
}
a.badge:focus,
a.badge:hover {
text-decoration: none;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.badge-pill {
padding-right: 0.6em;
padding-left: 0.6em;
border-radius: 10rem;
}
.badge-primary {
color: #fff;
background-color: #007bff;
}
a.badge-primary:focus,
a.badge-primary:hover {
color: #fff;
background-color: #0062cc;
}
a.badge-primary.focus,
a.badge-primary:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.badge-secondary {
color: #fff;
background-color: #6c757d;
}
a.badge-secondary:focus,
a.badge-secondary:hover {
color: #fff;
background-color: #545b62;
}
a.badge-secondary.focus,
a.badge-secondary:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.badge-success {
color: #fff;
background-color: #28a745;
}
a.badge-success:focus,
a.badge-success:hover {
color: #fff;
background-color: #1e7e34;
}
a.badge-success.focus,
a.badge-success:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.badge-info {
color: #fff;
background-color: #17a2b8;
}
a.badge-info:focus,
a.badge-info:hover {
color: #fff;
background-color: #117a8b;
}
a.badge-info.focus,
a.badge-info:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.badge-warning {
color: #212529;
background-color: #ffc107;
}
a.badge-warning:focus,
a.badge-warning:hover {
color: #212529;
background-color: #d39e00;
}
a.badge-warning.focus,
a.badge-warning:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.badge-danger {
color: #fff;
background-color: #dc3545;
}
a.badge-danger:focus,
a.badge-danger:hover {
color: #fff;
background-color: #bd2130;
}
a.badge-danger.focus,
a.badge-danger:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.badge-light {
color: #212529;
background-color: #f8f9fa;
}
a.badge-light:focus,
a.badge-light:hover {
color: #212529;
background-color: #dae0e5;
}
a.badge-light.focus,
a.badge-light:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.badge-dark {
color: #fff;
background-color: #343a40;
}
a.badge-dark:focus,
a.badge-dark:hover {
color: #fff;
background-color: #1d2124;
}
a.badge-dark.focus,
a.badge-dark:focus {
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.jumbotron {
padding: 2rem 1rem;
margin-bottom: 2rem;
background-color: #e9ecef;
border-radius: 0.3rem;
}
@media (min-width: 576px) {
.jumbotron {
padding: 4rem 2rem;
}
}
.jumbotron-fluid {
padding-right: 0;
padding-left: 0;
border-radius: 0;
}
.alert {
position: relative;
padding: 0.75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.alert-heading {
color: inherit;
}
.alert-link {
font-weight: 700;
}
.alert-dismissible {
padding-right: 4rem;
}
.alert-dismissible .close {
position: absolute;
top: 0;
right: 0;
padding: 0.75rem 1.25rem;
color: inherit;
}
.alert-primary {
color: #004085;
background-color: #cce5ff;
border-color: #b8daff;
}
.alert-primary hr {
border-top-color: #9fcdff;
}
.alert-primary .alert-link {
color: #002752;
}
.alert-secondary {
color: #383d41;
background-color: #e2e3e5;
border-color: #d6d8db;
}
.alert-secondary hr {
border-top-color: #c8cbcf;
}
.alert-secondary .alert-link {
color: #202326;
}
.alert-success {
color: #155724;
background-color: #d4edda;
border-color: #c3e6cb;
}
.alert-success hr {
border-top-color: #b1dfbb;
}
.alert-success .alert-link {
color: #0b2e13;
}
.alert-info {
color: #0c5460;
background-color: #d1ecf1;
border-color: #bee5eb;
}
.alert-info hr {
border-top-color: #abdde5;
}
.alert-info .alert-link {
color: #062c33;
}
.alert-warning {
color: #856404;
background-color: #fff3cd;
border-color: #ffeeba;
}
.alert-warning hr {
border-top-color: #ffe8a1;
}
.alert-warning .alert-link {
color: #533f03;
}
.alert-danger {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.alert-danger hr {
border-top-color: #f1b0b7;
}
.alert-danger .alert-link {
color: #491217;
}
.alert-light {
color: #818182;
background-color: #fefefe;
border-color: #fdfdfe;
}
.alert-light hr {
border-top-color: #ececf6;
}
.alert-light .alert-link {
color: #686868;
}
.alert-dark {
color: #1b1e21;
background-color: #d6d8d9;
border-color: #c6c8ca;
}
.alert-dark hr {
border-top-color: #b9bbbe;
}
.alert-dark .alert-link {
color: #040505;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
.progress {
display: -ms-flexbox;
display: flex;
height: 1rem;
overflow: hidden;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.progress-bar {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
color: #fff;
text-align: center;
white-space: nowrap;
background-color: #007bff;
transition: width 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar {
transition: none;
}
}
.progress-bar-striped {
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
);
background-size: 1rem 1rem;
}
.progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite;
animation: progress-bar-stripes 1s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar-animated {
-webkit-animation: none;
animation: none;
}
}
.media {
display: -ms-flexbox;
display: flex;
-ms-flex-align: start;
align-items: flex-start;
}
.media-body {
-ms-flex: 1;
flex: 1;
}
.list-group {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
}
.list-group-item-action {
width: 100%;
color: #495057;
text-align: inherit;
}
.list-group-item-action:focus,
.list-group-item-action:hover {
z-index: 1;
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
}
.list-group-item-action:active {
color: #212529;
background-color: #e9ecef;
}
.list-group-item {
position: relative;
display: block;
padding: 0.75rem 1.25rem;
margin-bottom: -1px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.125);
}
.list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.list-group-item:last-child {
margin-bottom: 0;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.list-group-item.disabled,
.list-group-item:disabled {
color: #6c757d;
pointer-events: none;
background-color: #fff;
}
.list-group-item.active {
z-index: 2;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.list-group-horizontal {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal .list-group-item {
margin-right: -1px;
margin-bottom: 0;
}
.list-group-horizontal .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal .list-group-item:last-child {
margin-right: 0;
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
@media (min-width: 576px) {
.list-group-horizontal-sm {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-sm .list-group-item {
margin-right: -1px;
margin-bottom: 0;
}
.list-group-horizontal-sm .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-sm .list-group-item:last-child {
margin-right: 0;
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
}
@media (min-width: 768px) {
.list-group-horizontal-md {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-md .list-group-item {
margin-right: -1px;
margin-bottom: 0;
}
.list-group-horizontal-md .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-md .list-group-item:last-child {
margin-right: 0;
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
}
@media (min-width: 992px) {
.list-group-horizontal-lg {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-lg .list-group-item {
margin-right: -1px;
margin-bottom: 0;
}
.list-group-horizontal-lg .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-lg .list-group-item:last-child {
margin-right: 0;
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
}
@media (min-width: 1200px) {
.list-group-horizontal-xl {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-xl .list-group-item {
margin-right: -1px;
margin-bottom: 0;
}
.list-group-horizontal-xl .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-xl .list-group-item:last-child {
margin-right: 0;
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
}
.list-group-flush .list-group-item {
border-right: 0;
border-left: 0;
border-radius: 0;
}
.list-group-flush .list-group-item:last-child {
margin-bottom: -1px;
}
.list-group-flush:first-child .list-group-item:first-child {
border-top: 0;
}
.list-group-flush:last-child .list-group-item:last-child {
margin-bottom: 0;
border-bottom: 0;
}
.list-group-item-primary {
color: #004085;
background-color: #b8daff;
}
.list-group-item-primary.list-group-item-action:focus,
.list-group-item-primary.list-group-item-action:hover {
color: #004085;
background-color: #9fcdff;
}
.list-group-item-primary.list-group-item-action.active {
color: #fff;
background-color: #004085;
border-color: #004085;
}
.list-group-item-secondary {
color: #383d41;
background-color: #d6d8db;
}
.list-group-item-secondary.list-group-item-action:focus,
.list-group-item-secondary.list-group-item-action:hover {
color: #383d41;
background-color: #c8cbcf;
}
.list-group-item-secondary.list-group-item-action.active {
color: #fff;
background-color: #383d41;
border-color: #383d41;
}
.list-group-item-success {
color: #155724;
background-color: #c3e6cb;
}
.list-group-item-success.list-group-item-action:focus,
.list-group-item-success.list-group-item-action:hover {
color: #155724;
background-color: #b1dfbb;
}
.list-group-item-success.list-group-item-action.active {
color: #fff;
background-color: #155724;
border-color: #155724;
}
.list-group-item-info {
color: #0c5460;
background-color: #bee5eb;
}
.list-group-item-info.list-group-item-action:focus,
.list-group-item-info.list-group-item-action:hover {
color: #0c5460;
background-color: #abdde5;
}
.list-group-item-info.list-group-item-action.active {
color: #fff;
background-color: #0c5460;
border-color: #0c5460;
}
.list-group-item-warning {
color: #856404;
background-color: #ffeeba;
}
.list-group-item-warning.list-group-item-action:focus,
.list-group-item-warning.list-group-item-action:hover {
color: #856404;
background-color: #ffe8a1;
}
.list-group-item-warning.list-group-item-action.active {
color: #fff;
background-color: #856404;
border-color: #856404;
}
.list-group-item-danger {
color: #721c24;
background-color: #f5c6cb;
}
.list-group-item-danger.list-group-item-action:focus,
.list-group-item-danger.list-group-item-action:hover {
color: #721c24;
background-color: #f1b0b7;
}
.list-group-item-danger.list-group-item-action.active {
color: #fff;
background-color: #721c24;
border-color: #721c24;
}
.list-group-item-light {
color: #818182;
background-color: #fdfdfe;
}
.list-group-item-light.list-group-item-action:focus,
.list-group-item-light.list-group-item-action:hover {
color: #818182;
background-color: #ececf6;
}
.list-group-item-light.list-group-item-action.active {
color: #fff;
background-color: #818182;
border-color: #818182;
}
.list-group-item-dark {
color: #1b1e21;
background-color: #c6c8ca;
}
.list-group-item-dark.list-group-item-action:focus,
.list-group-item-dark.list-group-item-action:hover {
color: #1b1e21;
background-color: #b9bbbe;
}
.list-group-item-dark.list-group-item-action.active {
color: #fff;
background-color: #1b1e21;
border-color: #1b1e21;
}
.close {
float: right;
font-size: 1.5rem;
font-weight: 700;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
opacity: 0.5;
}
.close:hover {
color: #000;
text-decoration: none;
}
.close:not(:disabled):not(.disabled):focus,
.close:not(:disabled):not(.disabled):hover {
opacity: 0.75;
}
button.close {
padding: 0;
background-color: transparent;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
a.close.disabled {
pointer-events: none;
}
.toast {
max-width: 350px;
overflow: hidden;
font-size: 0.875rem;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
opacity: 0;
border-radius: 0.25rem;
}
.toast:not(:last-child) {
margin-bottom: 0.75rem;
}
.toast.showing {
opacity: 1;
}
.toast.show {
display: block;
opacity: 1;
}
.toast.hide {
display: none;
}
.toast-header {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
padding: 0.25rem 0.75rem;
color: #6c757d;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.toast-body {
padding: 0.75rem;
}
.modal-open {
overflow: hidden;
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal {
position: fixed;
top: 0;
left: 0;
z-index: 1050;
display: none;
width: 100%;
height: 100%;
overflow: hidden;
outline: 0;
}
.modal-dialog {
position: relative;
width: auto;
margin: 0.5rem;
pointer-events: none;
}
.modal.fade .modal-dialog {
transition: -webkit-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
-webkit-transform: translate(0, -50px);
transform: translate(0, -50px);
}
@media (prefers-reduced-motion: reduce) {
.modal.fade .modal-dialog {
transition: none;
}
}
.modal.show .modal-dialog {
-webkit-transform: none;
transform: none;
}
.modal-dialog-scrollable {
display: -ms-flexbox;
display: flex;
max-height: calc(100% - 1rem);
}
.modal-dialog-scrollable .modal-content {
max-height: calc(100vh - 1rem);
overflow: hidden;
}
.modal-dialog-scrollable .modal-footer,
.modal-dialog-scrollable .modal-header {
-ms-flex-negative: 0;
flex-shrink: 0;
}
.modal-dialog-scrollable .modal-body {
overflow-y: auto;
}
.modal-dialog-centered {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
min-height: calc(100% - 1rem);
}
.modal-dialog-centered::before {
display: block;
height: calc(100vh - 1rem);
content: "";
}
.modal-dialog-centered.modal-dialog-scrollable {
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
height: 100%;
}
.modal-dialog-centered.modal-dialog-scrollable .modal-content {
max-height: none;
}
.modal-dialog-centered.modal-dialog-scrollable::before {
content: none;
}
.modal-content {
position: relative;
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
width: 100%;
pointer-events: auto;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 0.3rem;
outline: 0;
}
.modal-backdrop {
position: fixed;
top: 0;
left: 0;
z-index: 1040;
width: 100vw;
height: 100vh;
background-color: #000;
}
.modal-backdrop.fade {
opacity: 0;
}
.modal-backdrop.show {
opacity: 0.5;
}
.modal-header {
display: -ms-flexbox;
display: flex;
-ms-flex-align: start;
align-items: flex-start;
-ms-flex-pack: justify;
justify-content: space-between;
padding: 1rem 1rem;
border-bottom: 1px solid #dee2e6;
border-top-left-radius: 0.3rem;
border-top-right-radius: 0.3rem;
}
.modal-header .close {
padding: 1rem 1rem;
margin: -1rem -1rem -1rem auto;
}
.modal-title {
margin-bottom: 0;
line-height: 1.5;
}
.modal-body {
position: relative;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
padding: 1rem;
}
.modal-footer {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: end;
justify-content: flex-end;
padding: 1rem;
border-top: 1px solid #dee2e6;
border-bottom-right-radius: 0.3rem;
border-bottom-left-radius: 0.3rem;
}
.modal-footer > :not(:first-child) {
margin-left: 0.25rem;
}
.modal-footer > :not(:last-child) {
margin-right: 0.25rem;
}
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
@media (min-width: 576px) {
.modal-dialog {
max-width: 500px;
margin: 1.75rem auto;
}
.modal-dialog-scrollable {
max-height: calc(100% - 3.5rem);
}
.modal-dialog-scrollable .modal-content {
max-height: calc(100vh - 3.5rem);
}
.modal-dialog-centered {
min-height: calc(100% - 3.5rem);
}
.modal-dialog-centered::before {
height: calc(100vh - 3.5rem);
}
.modal-sm {
max-width: 300px;
}
}
@media (min-width: 992px) {
.modal-lg,
.modal-xl {
max-width: 800px;
}
}
@media (min-width: 1200px) {
.modal-xl {
max-width: 1140px;
}
}
.tooltip {
position: absolute;
z-index: 1070;
display: block;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-break: normal;
word-spacing: normal;
white-space: normal;
line-break: auto;
font-size: 0.875rem;
word-wrap: break-word;
opacity: 0;
}
.tooltip.show {
opacity: 0.9;
}
.tooltip .arrow {
position: absolute;
display: block;
width: 0.8rem;
height: 0.4rem;
}
.tooltip .arrow::before {
position: absolute;
content: "";
border-color: transparent;
border-style: solid;
}
.bs-tooltip-auto[x-placement^="top"],
.bs-tooltip-top {
padding: 0.4rem 0;
}
.bs-tooltip-auto[x-placement^="top"] .arrow,
.bs-tooltip-top .arrow {
bottom: 0;
}
.bs-tooltip-auto[x-placement^="top"] .arrow::before,
.bs-tooltip-top .arrow::before {
top: 0;
border-width: 0.4rem 0.4rem 0;
border-top-color: #000;
}
.bs-tooltip-auto[x-placement^="right"],
.bs-tooltip-right {
padding: 0 0.4rem;
}
.bs-tooltip-auto[x-placement^="right"] .arrow,
.bs-tooltip-right .arrow {
left: 0;
width: 0.4rem;
height: 0.8rem;
}
.bs-tooltip-auto[x-placement^="right"] .arrow::before,
.bs-tooltip-right .arrow::before {
right: 0;
border-width: 0.4rem 0.4rem 0.4rem 0;
border-right-color: #000;
}
.bs-tooltip-auto[x-placement^="bottom"],
.bs-tooltip-bottom {
padding: 0.4rem 0;
}
.bs-tooltip-auto[x-placement^="bottom"] .arrow,
.bs-tooltip-bottom .arrow {
top: 0;
}
.bs-tooltip-auto[x-placement^="bottom"] .arrow::before,
.bs-tooltip-bottom .arrow::before {
bottom: 0;
border-width: 0 0.4rem 0.4rem;
border-bottom-color: #000;
}
.bs-tooltip-auto[x-placement^="left"],
.bs-tooltip-left {
padding: 0 0.4rem;
}
.bs-tooltip-auto[x-placement^="left"] .arrow,
.bs-tooltip-left .arrow {
right: 0;
width: 0.4rem;
height: 0.8rem;
}
.bs-tooltip-auto[x-placement^="left"] .arrow::before,
.bs-tooltip-left .arrow::before {
left: 0;
border-width: 0.4rem 0 0.4rem 0.4rem;
border-left-color: #000;
}
.tooltip-inner {
max-width: 200px;
padding: 0.25rem 0.5rem;
color: #fff;
text-align: center;
background-color: #000;
border-radius: 0.25rem;
}
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: block;
max-width: 276px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-break: normal;
word-spacing: normal;
white-space: normal;
line-break: auto;
font-size: 0.875rem;
word-wrap: break-word;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 0.3rem;
}
.popover .arrow {
position: absolute;
display: block;
width: 1rem;
height: 0.5rem;
margin: 0 0.3rem;
}
.popover .arrow::after,
.popover .arrow::before {
position: absolute;
display: block;
content: "";
border-color: transparent;
border-style: solid;
}
.bs-popover-auto[x-placement^="top"],
.bs-popover-top {
margin-bottom: 0.5rem;
}
.bs-popover-auto[x-placement^="top"] > .arrow,
.bs-popover-top > .arrow {
bottom: calc((0.5rem + 1px) * -1);
}
.bs-popover-auto[x-placement^="top"] > .arrow::before,
.bs-popover-top > .arrow::before {
bottom: 0;
border-width: 0.5rem 0.5rem 0;
border-top-color: rgba(0, 0, 0, 0.25);
}
.bs-popover-auto[x-placement^="top"] > .arrow::after,
.bs-popover-top > .arrow::after {
bottom: 1px;
border-width: 0.5rem 0.5rem 0;
border-top-color: #fff;
}
.bs-popover-auto[x-placement^="right"],
.bs-popover-right {
margin-left: 0.5rem;
}
.bs-popover-auto[x-placement^="right"] > .arrow,
.bs-popover-right > .arrow {
left: calc((0.5rem + 1px) * -1);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
.bs-popover-auto[x-placement^="right"] > .arrow::before,
.bs-popover-right > .arrow::before {
left: 0;
border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: rgba(0, 0, 0, 0.25);
}
.bs-popover-auto[x-placement^="right"] > .arrow::after,
.bs-popover-right > .arrow::after {
left: 1px;
border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: #fff;
}
.bs-popover-auto[x-placement^="bottom"],
.bs-popover-bottom {
margin-top: 0.5rem;
}
.bs-popover-auto[x-placement^="bottom"] > .arrow,
.bs-popover-bottom > .arrow {
top: calc((0.5rem + 1px) * -1);
}
.bs-popover-auto[x-placement^="bottom"] > .arrow::before,
.bs-popover-bottom > .arrow::before {
top: 0;
border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: rgba(0, 0, 0, 0.25);
}
.bs-popover-auto[x-placement^="bottom"] > .arrow::after,
.bs-popover-bottom > .arrow::after {
top: 1px;
border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: #fff;
}
.bs-popover-auto[x-placement^="bottom"] .popover-header::before,
.bs-popover-bottom .popover-header::before {
position: absolute;
top: 0;
left: 50%;
display: block;
width: 1rem;
margin-left: -0.5rem;
content: "";
border-bottom: 1px solid #f7f7f7;
}
.bs-popover-auto[x-placement^="left"],
.bs-popover-left {
margin-right: 0.5rem;
}
.bs-popover-auto[x-placement^="left"] > .arrow,
.bs-popover-left > .arrow {
right: calc((0.5rem + 1px) * -1);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
.bs-popover-auto[x-placement^="left"] > .arrow::before,
.bs-popover-left > .arrow::before {
right: 0;
border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: rgba(0, 0, 0, 0.25);
}
.bs-popover-auto[x-placement^="left"] > .arrow::after,
.bs-popover-left > .arrow::after {
right: 1px;
border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: #fff;
}
.popover-header {
padding: 0.5rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-top-left-radius: calc(0.3rem - 1px);
border-top-right-radius: calc(0.3rem - 1px);
}
.popover-header:empty {
display: none;
}
.popover-body {
padding: 0.5rem 0.75rem;
color: #212529;
}
.carousel {
position: relative;
}
.carousel.pointer-event {
-ms-touch-action: pan-y;
touch-action: pan-y;
}
.carousel-inner {
position: relative;
width: 100%;
overflow: hidden;
}
.carousel-inner::after {
display: block;
clear: both;
content: "";
}
.carousel-item {
position: relative;
display: none;
float: left;
width: 100%;
margin-right: -100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transition: -webkit-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.carousel-item {
transition: none;
}
}
.carousel-item-next,
.carousel-item-prev,
.carousel-item.active {
display: block;
}
.active.carousel-item-right,
.carousel-item-next:not(.carousel-item-left) {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.active.carousel-item-left,
.carousel-item-prev:not(.carousel-item-right) {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.carousel-fade .carousel-item {
opacity: 0;
transition-property: opacity;
-webkit-transform: none;
transform: none;
}
.carousel-fade .carousel-item-next.carousel-item-left,
.carousel-fade .carousel-item-prev.carousel-item-right,
.carousel-fade .carousel-item.active {
z-index: 1;
opacity: 1;
}
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
z-index: 0;
opacity: 0;
transition: 0s 0.6s opacity;
}
@media (prefers-reduced-motion: reduce) {
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
transition: none;
}
}
.carousel-control-next,
.carousel-control-prev {
position: absolute;
top: 0;
bottom: 0;
z-index: 1;
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
width: 15%;
color: #fff;
text-align: center;
opacity: 0.5;
transition: opacity 0.15s ease;
}
@media (prefers-reduced-motion: reduce) {
.carousel-control-next,
.carousel-control-prev {
transition: none;
}
}
.carousel-control-next:focus,
.carousel-control-next:hover,
.carousel-control-prev:focus,
.carousel-control-prev:hover {
color: #fff;
text-decoration: none;
outline: 0;
opacity: 0.9;
}
.carousel-control-prev {
left: 0;
}
.carousel-control-next {
right: 0;
}
.carousel-control-next-icon,
.carousel-control-prev-icon {
display: inline-block;
width: 20px;
height: 20px;
background: no-repeat 50%/100% 100%;
}
.carousel-control-prev-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e");
}
.carousel-control-next-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e");
}
.carousel-indicators {
position: absolute;
right: 0;
bottom: 0;
left: 0;
z-index: 15;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: center;
justify-content: center;
padding-left: 0;
margin-right: 15%;
margin-left: 15%;
list-style: none;
}
.carousel-indicators li {
box-sizing: content-box;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
width: 30px;
height: 3px;
margin-right: 3px;
margin-left: 3px;
text-indent: -999px;
cursor: pointer;
background-color: #fff;
background-clip: padding-box;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
opacity: 0.5;
transition: opacity 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
.carousel-indicators li {
transition: none;
}
}
.carousel-indicators .active {
opacity: 1;
}
.carousel-caption {
position: absolute;
right: 15%;
bottom: 20px;
left: 15%;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
}
@-webkit-keyframes spinner-border {
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spinner-border {
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.spinner-border {
display: inline-block;
width: 2rem;
height: 2rem;
vertical-align: text-bottom;
border: 0.25em solid currentColor;
border-right-color: transparent;
border-radius: 50%;
-webkit-animation: spinner-border 0.75s linear infinite;
animation: spinner-border 0.75s linear infinite;
}
.spinner-border-sm {
width: 1rem;
height: 1rem;
border-width: 0.2em;
}
@-webkit-keyframes spinner-grow {
0% {
-webkit-transform: scale(0);
transform: scale(0);
}
50% {
opacity: 1;
}
}
@keyframes spinner-grow {
0% {
-webkit-transform: scale(0);
transform: scale(0);
}
50% {
opacity: 1;
}
}
.spinner-grow {
display: inline-block;
width: 2rem;
height: 2rem;
vertical-align: text-bottom;
background-color: currentColor;
border-radius: 50%;
opacity: 0;
-webkit-animation: spinner-grow 0.75s linear infinite;
animation: spinner-grow 0.75s linear infinite;
}
.spinner-grow-sm {
width: 1rem;
height: 1rem;
}
.align-baseline {
vertical-align: baseline !important;
}
.align-top {
vertical-align: top !important;
}
.align-middle {
vertical-align: middle !important;
}
.align-bottom {
vertical-align: bottom !important;
}
.align-text-bottom {
vertical-align: text-bottom !important;
}
.align-text-top {
vertical-align: text-top !important;
}
.bg-primary {
background-color: #007bff !important;
}
a.bg-primary:focus,
a.bg-primary:hover,
button.bg-primary:focus,
button.bg-primary:hover {
background-color: #0062cc !important;
}
.bg-secondary {
background-color: #6c757d !important;
}
a.bg-secondary:focus,
a.bg-secondary:hover,
button.bg-secondary:focus,
button.bg-secondary:hover {
background-color: #545b62 !important;
}
.bg-success {
background-color: #28a745 !important;
}
a.bg-success:focus,
a.bg-success:hover,
button.bg-success:focus,
button.bg-success:hover {
background-color: #1e7e34 !important;
}
.bg-info {
background-color: #17a2b8 !important;
}
a.bg-info:focus,
a.bg-info:hover,
button.bg-info:focus,
button.bg-info:hover {
background-color: #117a8b !important;
}
.bg-warning {
background-color: #ffc107 !important;
}
a.bg-warning:focus,
a.bg-warning:hover,
button.bg-warning:focus,
button.bg-warning:hover {
background-color: #d39e00 !important;
}
.bg-danger {
background-color: #dc3545 !important;
}
a.bg-danger:focus,
a.bg-danger:hover,
button.bg-danger:focus,
button.bg-danger:hover {
background-color: #bd2130 !important;
}
.bg-light {
background-color: #f8f9fa !important;
}
a.bg-light:focus,
a.bg-light:hover,
button.bg-light:focus,
button.bg-light:hover {
background-color: #dae0e5 !important;
}
.bg-dark {
background-color: #343a40 !important;
}
a.bg-dark:focus,
a.bg-dark:hover,
button.bg-dark:focus,
button.bg-dark:hover {
background-color: #1d2124 !important;
}
.bg-white {
background-color: #fff !important;
}
.bg-transparent {
background-color: transparent !important;
}
.border {
border: 1px solid #dee2e6 !important;
}
.border-top {
border-top: 1px solid #dee2e6 !important;
}
.border-right {
border-right: 1px solid #dee2e6 !important;
}
.border-bottom {
border-bottom: 1px solid #dee2e6 !important;
}
.border-left {
border-left: 1px solid #dee2e6 !important;
}
.border-0 {
border: 0 !important;
}
.border-top-0 {
border-top: 0 !important;
}
.border-right-0 {
border-right: 0 !important;
}
.border-bottom-0 {
border-bottom: 0 !important;
}
.border-left-0 {
border-left: 0 !important;
}
.border-primary {
border-color: #007bff !important;
}
.border-secondary {
border-color: #6c757d !important;
}
.border-success {
border-color: #28a745 !important;
}
.border-info {
border-color: #17a2b8 !important;
}
.border-warning {
border-color: #ffc107 !important;
}
.border-danger {
border-color: #dc3545 !important;
}
.border-light {
border-color: #f8f9fa !important;
}
.border-dark {
border-color: #343a40 !important;
}
.border-white {
border-color: #fff !important;
}
.rounded-sm {
border-radius: 0.2rem !important;
}
.rounded {
border-radius: 0.25rem !important;
}
.rounded-top {
border-top-left-radius: 0.25rem !important;
border-top-right-radius: 0.25rem !important;
}
.rounded-right {
border-top-right-radius: 0.25rem !important;
border-bottom-right-radius: 0.25rem !important;
}
.rounded-bottom {
border-bottom-right-radius: 0.25rem !important;
border-bottom-left-radius: 0.25rem !important;
}
.rounded-left {
border-top-left-radius: 0.25rem !important;
border-bottom-left-radius: 0.25rem !important;
}
.rounded-lg {
border-radius: 0.3rem !important;
}
.rounded-circle {
border-radius: 50% !important;
}
.rounded-pill {
border-radius: 50rem !important;
}
.rounded-0 {
border-radius: 0 !important;
}
.clearfix::after {
display: block;
clear: both;
content: "";
}
.d-none {
display: none !important;
}
.d-inline {
display: inline !important;
}
.d-inline-block {
display: inline-block !important;
}
.d-block {
display: block !important;
}
.d-table {
display: table !important;
}
.d-table-row {
display: table-row !important;
}
.d-table-cell {
display: table-cell !important;
}
.d-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
@media (min-width: 576px) {
.d-sm-none {
display: none !important;
}
.d-sm-inline {
display: inline !important;
}
.d-sm-inline-block {
display: inline-block !important;
}
.d-sm-block {
display: block !important;
}
.d-sm-table {
display: table !important;
}
.d-sm-table-row {
display: table-row !important;
}
.d-sm-table-cell {
display: table-cell !important;
}
.d-sm-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-sm-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
@media (min-width: 768px) {
.d-md-none {
display: none !important;
}
.d-md-inline {
display: inline !important;
}
.d-md-inline-block {
display: inline-block !important;
}
.d-md-block {
display: block !important;
}
.d-md-table {
display: table !important;
}
.d-md-table-row {
display: table-row !important;
}
.d-md-table-cell {
display: table-cell !important;
}
.d-md-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-md-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
@media (min-width: 992px) {
.d-lg-none {
display: none !important;
}
.d-lg-inline {
display: inline !important;
}
.d-lg-inline-block {
display: inline-block !important;
}
.d-lg-block {
display: block !important;
}
.d-lg-table {
display: table !important;
}
.d-lg-table-row {
display: table-row !important;
}
.d-lg-table-cell {
display: table-cell !important;
}
.d-lg-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-lg-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
@media (min-width: 1200px) {
.d-xl-none {
display: none !important;
}
.d-xl-inline {
display: inline !important;
}
.d-xl-inline-block {
display: inline-block !important;
}
.d-xl-block {
display: block !important;
}
.d-xl-table {
display: table !important;
}
.d-xl-table-row {
display: table-row !important;
}
.d-xl-table-cell {
display: table-cell !important;
}
.d-xl-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-xl-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
@media print {
.d-print-none {
display: none !important;
}
.d-print-inline {
display: inline !important;
}
.d-print-inline-block {
display: inline-block !important;
}
.d-print-block {
display: block !important;
}
.d-print-table {
display: table !important;
}
.d-print-table-row {
display: table-row !important;
}
.d-print-table-cell {
display: table-cell !important;
}
.d-print-flex {
display: -ms-flexbox !important;
display: flex !important;
}
.d-print-inline-flex {
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
.embed-responsive {
position: relative;
display: block;
width: 100%;
padding: 0;
overflow: hidden;
}
.embed-responsive::before {
display: block;
content: "";
}
.embed-responsive .embed-responsive-item,
.embed-responsive embed,
.embed-responsive iframe,
.embed-responsive object,
.embed-responsive video {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.embed-responsive-21by9::before {
padding-top: 42.857143%;
}
.embed-responsive-16by9::before {
padding-top: 56.25%;
}
.embed-responsive-4by3::before {
padding-top: 75%;
}
.embed-responsive-1by1::before {
padding-top: 100%;
}
.flex-row {
-ms-flex-direction: row !important;
flex-direction: row !important;
}
.flex-column {
-ms-flex-direction: column !important;
flex-direction: column !important;
}
.flex-row-reverse {
-ms-flex-direction: row-reverse !important;
flex-direction: row-reverse !important;
}
.flex-column-reverse {
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
.flex-wrap {
-ms-flex-wrap: wrap !important;
flex-wrap: wrap !important;
}
.flex-nowrap {
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
}
.flex-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
flex-wrap: wrap-reverse !important;
}
.flex-fill {
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
}
.flex-grow-0 {
-ms-flex-positive: 0 !important;
flex-grow: 0 !important;
}
.flex-grow-1 {
-ms-flex-positive: 1 !important;
flex-grow: 1 !important;
}
.flex-shrink-0 {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
.flex-shrink-1 {
-ms-flex-negative: 1 !important;
flex-shrink: 1 !important;
}
.justify-content-start {
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
.justify-content-end {
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
.justify-content-center {
-ms-flex-pack: center !important;
justify-content: center !important;
}
.justify-content-between {
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
.justify-content-around {
-ms-flex-pack: distribute !important;
justify-content: space-around !important;
}
.align-items-start {
-ms-flex-align: start !important;
align-items: flex-start !important;
}
.align-items-end {
-ms-flex-align: end !important;
align-items: flex-end !important;
}
.align-items-center {
-ms-flex-align: center !important;
align-items: center !important;
}
.align-items-baseline {
-ms-flex-align: baseline !important;
align-items: baseline !important;
}
.align-items-stretch {
-ms-flex-align: stretch !important;
align-items: stretch !important;
}
.align-content-start {
-ms-flex-line-pack: start !important;
align-content: flex-start !important;
}
.align-content-end {
-ms-flex-line-pack: end !important;
align-content: flex-end !important;
}
.align-content-center {
-ms-flex-line-pack: center !important;
align-content: center !important;
}
.align-content-between {
-ms-flex-line-pack: justify !important;
align-content: space-between !important;
}
.align-content-around {
-ms-flex-line-pack: distribute !important;
align-content: space-around !important;
}
.align-content-stretch {
-ms-flex-line-pack: stretch !important;
align-content: stretch !important;
}
.align-self-auto {
-ms-flex-item-align: auto !important;
align-self: auto !important;
}
.align-self-start {
-ms-flex-item-align: start !important;
align-self: flex-start !important;
}
.align-self-end {
-ms-flex-item-align: end !important;
align-self: flex-end !important;
}
.align-self-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.align-self-baseline {
-ms-flex-item-align: baseline !important;
align-self: baseline !important;
}
.align-self-stretch {
-ms-flex-item-align: stretch !important;
align-self: stretch !important;
}
@media (min-width: 576px) {
.flex-sm-row {
-ms-flex-direction: row !important;
flex-direction: row !important;
}
.flex-sm-column {
-ms-flex-direction: column !important;
flex-direction: column !important;
}
.flex-sm-row-reverse {
-ms-flex-direction: row-reverse !important;
flex-direction: row-reverse !important;
}
.flex-sm-column-reverse {
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
.flex-sm-wrap {
-ms-flex-wrap: wrap !important;
flex-wrap: wrap !important;
}
.flex-sm-nowrap {
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
}
.flex-sm-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
flex-wrap: wrap-reverse !important;
}
.flex-sm-fill {
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
}
.flex-sm-grow-0 {
-ms-flex-positive: 0 !important;
flex-grow: 0 !important;
}
.flex-sm-grow-1 {
-ms-flex-positive: 1 !important;
flex-grow: 1 !important;
}
.flex-sm-shrink-0 {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
.flex-sm-shrink-1 {
-ms-flex-negative: 1 !important;
flex-shrink: 1 !important;
}
.justify-content-sm-start {
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
.justify-content-sm-end {
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
.justify-content-sm-center {
-ms-flex-pack: center !important;
justify-content: center !important;
}
.justify-content-sm-between {
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
.justify-content-sm-around {
-ms-flex-pack: distribute !important;
justify-content: space-around !important;
}
.align-items-sm-start {
-ms-flex-align: start !important;
align-items: flex-start !important;
}
.align-items-sm-end {
-ms-flex-align: end !important;
align-items: flex-end !important;
}
.align-items-sm-center {
-ms-flex-align: center !important;
align-items: center !important;
}
.align-items-sm-baseline {
-ms-flex-align: baseline !important;
align-items: baseline !important;
}
.align-items-sm-stretch {
-ms-flex-align: stretch !important;
align-items: stretch !important;
}
.align-content-sm-start {
-ms-flex-line-pack: start !important;
align-content: flex-start !important;
}
.align-content-sm-end {
-ms-flex-line-pack: end !important;
align-content: flex-end !important;
}
.align-content-sm-center {
-ms-flex-line-pack: center !important;
align-content: center !important;
}
.align-content-sm-between {
-ms-flex-line-pack: justify !important;
align-content: space-between !important;
}
.align-content-sm-around {
-ms-flex-line-pack: distribute !important;
align-content: space-around !important;
}
.align-content-sm-stretch {
-ms-flex-line-pack: stretch !important;
align-content: stretch !important;
}
.align-self-sm-auto {
-ms-flex-item-align: auto !important;
align-self: auto !important;
}
.align-self-sm-start {
-ms-flex-item-align: start !important;
align-self: flex-start !important;
}
.align-self-sm-end {
-ms-flex-item-align: end !important;
align-self: flex-end !important;
}
.align-self-sm-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.align-self-sm-baseline {
-ms-flex-item-align: baseline !important;
align-self: baseline !important;
}
.align-self-sm-stretch {
-ms-flex-item-align: stretch !important;
align-self: stretch !important;
}
}
@media (min-width: 768px) {
.flex-md-row {
-ms-flex-direction: row !important;
flex-direction: row !important;
}
.flex-md-column {
-ms-flex-direction: column !important;
flex-direction: column !important;
}
.flex-md-row-reverse {
-ms-flex-direction: row-reverse !important;
flex-direction: row-reverse !important;
}
.flex-md-column-reverse {
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
.flex-md-wrap {
-ms-flex-wrap: wrap !important;
flex-wrap: wrap !important;
}
.flex-md-nowrap {
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
}
.flex-md-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
flex-wrap: wrap-reverse !important;
}
.flex-md-fill {
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
}
.flex-md-grow-0 {
-ms-flex-positive: 0 !important;
flex-grow: 0 !important;
}
.flex-md-grow-1 {
-ms-flex-positive: 1 !important;
flex-grow: 1 !important;
}
.flex-md-shrink-0 {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
.flex-md-shrink-1 {
-ms-flex-negative: 1 !important;
flex-shrink: 1 !important;
}
.justify-content-md-start {
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
.justify-content-md-end {
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
.justify-content-md-center {
-ms-flex-pack: center !important;
justify-content: center !important;
}
.justify-content-md-between {
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
.justify-content-md-around {
-ms-flex-pack: distribute !important;
justify-content: space-around !important;
}
.align-items-md-start {
-ms-flex-align: start !important;
align-items: flex-start !important;
}
.align-items-md-end {
-ms-flex-align: end !important;
align-items: flex-end !important;
}
.align-items-md-center {
-ms-flex-align: center !important;
align-items: center !important;
}
.align-items-md-baseline {
-ms-flex-align: baseline !important;
align-items: baseline !important;
}
.align-items-md-stretch {
-ms-flex-align: stretch !important;
align-items: stretch !important;
}
.align-content-md-start {
-ms-flex-line-pack: start !important;
align-content: flex-start !important;
}
.align-content-md-end {
-ms-flex-line-pack: end !important;
align-content: flex-end !important;
}
.align-content-md-center {
-ms-flex-line-pack: center !important;
align-content: center !important;
}
.align-content-md-between {
-ms-flex-line-pack: justify !important;
align-content: space-between !important;
}
.align-content-md-around {
-ms-flex-line-pack: distribute !important;
align-content: space-around !important;
}
.align-content-md-stretch {
-ms-flex-line-pack: stretch !important;
align-content: stretch !important;
}
.align-self-md-auto {
-ms-flex-item-align: auto !important;
align-self: auto !important;
}
.align-self-md-start {
-ms-flex-item-align: start !important;
align-self: flex-start !important;
}
.align-self-md-end {
-ms-flex-item-align: end !important;
align-self: flex-end !important;
}
.align-self-md-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.align-self-md-baseline {
-ms-flex-item-align: baseline !important;
align-self: baseline !important;
}
.align-self-md-stretch {
-ms-flex-item-align: stretch !important;
align-self: stretch !important;
}
}
@media (min-width: 992px) {
.flex-lg-row {
-ms-flex-direction: row !important;
flex-direction: row !important;
}
.flex-lg-column {
-ms-flex-direction: column !important;
flex-direction: column !important;
}
.flex-lg-row-reverse {
-ms-flex-direction: row-reverse !important;
flex-direction: row-reverse !important;
}
.flex-lg-column-reverse {
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
.flex-lg-wrap {
-ms-flex-wrap: wrap !important;
flex-wrap: wrap !important;
}
.flex-lg-nowrap {
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
}
.flex-lg-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
flex-wrap: wrap-reverse !important;
}
.flex-lg-fill {
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
}
.flex-lg-grow-0 {
-ms-flex-positive: 0 !important;
flex-grow: 0 !important;
}
.flex-lg-grow-1 {
-ms-flex-positive: 1 !important;
flex-grow: 1 !important;
}
.flex-lg-shrink-0 {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
.flex-lg-shrink-1 {
-ms-flex-negative: 1 !important;
flex-shrink: 1 !important;
}
.justify-content-lg-start {
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
.justify-content-lg-end {
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
.justify-content-lg-center {
-ms-flex-pack: center !important;
justify-content: center !important;
}
.justify-content-lg-between {
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
.justify-content-lg-around {
-ms-flex-pack: distribute !important;
justify-content: space-around !important;
}
.align-items-lg-start {
-ms-flex-align: start !important;
align-items: flex-start !important;
}
.align-items-lg-end {
-ms-flex-align: end !important;
align-items: flex-end !important;
}
.align-items-lg-center {
-ms-flex-align: center !important;
align-items: center !important;
}
.align-items-lg-baseline {
-ms-flex-align: baseline !important;
align-items: baseline !important;
}
.align-items-lg-stretch {
-ms-flex-align: stretch !important;
align-items: stretch !important;
}
.align-content-lg-start {
-ms-flex-line-pack: start !important;
align-content: flex-start !important;
}
.align-content-lg-end {
-ms-flex-line-pack: end !important;
align-content: flex-end !important;
}
.align-content-lg-center {
-ms-flex-line-pack: center !important;
align-content: center !important;
}
.align-content-lg-between {
-ms-flex-line-pack: justify !important;
align-content: space-between !important;
}
.align-content-lg-around {
-ms-flex-line-pack: distribute !important;
align-content: space-around !important;
}
.align-content-lg-stretch {
-ms-flex-line-pack: stretch !important;
align-content: stretch !important;
}
.align-self-lg-auto {
-ms-flex-item-align: auto !important;
align-self: auto !important;
}
.align-self-lg-start {
-ms-flex-item-align: start !important;
align-self: flex-start !important;
}
.align-self-lg-end {
-ms-flex-item-align: end !important;
align-self: flex-end !important;
}
.align-self-lg-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.align-self-lg-baseline {
-ms-flex-item-align: baseline !important;
align-self: baseline !important;
}
.align-self-lg-stretch {
-ms-flex-item-align: stretch !important;
align-self: stretch !important;
}
}
@media (min-width: 1200px) {
.flex-xl-row {
-ms-flex-direction: row !important;
flex-direction: row !important;
}
.flex-xl-column {
-ms-flex-direction: column !important;
flex-direction: column !important;
}
.flex-xl-row-reverse {
-ms-flex-direction: row-reverse !important;
flex-direction: row-reverse !important;
}
.flex-xl-column-reverse {
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
.flex-xl-wrap {
-ms-flex-wrap: wrap !important;
flex-wrap: wrap !important;
}
.flex-xl-nowrap {
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
}
.flex-xl-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
flex-wrap: wrap-reverse !important;
}
.flex-xl-fill {
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
}
.flex-xl-grow-0 {
-ms-flex-positive: 0 !important;
flex-grow: 0 !important;
}
.flex-xl-grow-1 {
-ms-flex-positive: 1 !important;
flex-grow: 1 !important;
}
.flex-xl-shrink-0 {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
.flex-xl-shrink-1 {
-ms-flex-negative: 1 !important;
flex-shrink: 1 !important;
}
.justify-content-xl-start {
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
.justify-content-xl-end {
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
.justify-content-xl-center {
-ms-flex-pack: center !important;
justify-content: center !important;
}
.justify-content-xl-between {
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
.justify-content-xl-around {
-ms-flex-pack: distribute !important;
justify-content: space-around !important;
}
.align-items-xl-start {
-ms-flex-align: start !important;
align-items: flex-start !important;
}
.align-items-xl-end {
-ms-flex-align: end !important;
align-items: flex-end !important;
}
.align-items-xl-center {
-ms-flex-align: center !important;
align-items: center !important;
}
.align-items-xl-baseline {
-ms-flex-align: baseline !important;
align-items: baseline !important;
}
.align-items-xl-stretch {
-ms-flex-align: stretch !important;
align-items: stretch !important;
}
.align-content-xl-start {
-ms-flex-line-pack: start !important;
align-content: flex-start !important;
}
.align-content-xl-end {
-ms-flex-line-pack: end !important;
align-content: flex-end !important;
}
.align-content-xl-center {
-ms-flex-line-pack: center !important;
align-content: center !important;
}
.align-content-xl-between {
-ms-flex-line-pack: justify !important;
align-content: space-between !important;
}
.align-content-xl-around {
-ms-flex-line-pack: distribute !important;
align-content: space-around !important;
}
.align-content-xl-stretch {
-ms-flex-line-pack: stretch !important;
align-content: stretch !important;
}
.align-self-xl-auto {
-ms-flex-item-align: auto !important;
align-self: auto !important;
}
.align-self-xl-start {
-ms-flex-item-align: start !important;
align-self: flex-start !important;
}
.align-self-xl-end {
-ms-flex-item-align: end !important;
align-self: flex-end !important;
}
.align-self-xl-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.align-self-xl-baseline {
-ms-flex-item-align: baseline !important;
align-self: baseline !important;
}
.align-self-xl-stretch {
-ms-flex-item-align: stretch !important;
align-self: stretch !important;
}
}
.float-left {
float: left !important;
}
.float-right {
float: right !important;
}
.float-none {
float: none !important;
}
@media (min-width: 576px) {
.float-sm-left {
float: left !important;
}
.float-sm-right {
float: right !important;
}
.float-sm-none {
float: none !important;
}
}
@media (min-width: 768px) {
.float-md-left {
float: left !important;
}
.float-md-right {
float: right !important;
}
.float-md-none {
float: none !important;
}
}
@media (min-width: 992px) {
.float-lg-left {
float: left !important;
}
.float-lg-right {
float: right !important;
}
.float-lg-none {
float: none !important;
}
}
@media (min-width: 1200px) {
.float-xl-left {
float: left !important;
}
.float-xl-right {
float: right !important;
}
.float-xl-none {
float: none !important;
}
}
.overflow-auto {
overflow: auto !important;
}
.overflow-hidden {
overflow: hidden !important;
}
.position-static {
position: static !important;
}
.position-relative {
position: relative !important;
}
.position-absolute {
position: absolute !important;
}
.position-fixed {
position: fixed !important;
}
.position-sticky {
position: -webkit-sticky !important;
position: sticky !important;
}
.fixed-top {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 1030;
}
.fixed-bottom {
position: fixed;
right: 0;
bottom: 0;
left: 0;
z-index: 1030;
}
@supports ((position: -webkit-sticky) or (position: sticky)) {
.sticky-top {
position: -webkit-sticky;
position: sticky;
top: 0;
z-index: 1020;
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
overflow: visible;
clip: auto;
white-space: normal;
}
.shadow-sm {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.shadow {
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}
.shadow-lg {
box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
}
.shadow-none {
box-shadow: none !important;
}
.w-25 {
width: 25% !important;
}
.w-50 {
width: 50% !important;
}
.w-75 {
width: 75% !important;
}
.w-100 {
width: 100% !important;
}
.w-auto {
width: auto !important;
}
.h-25 {
height: 25% !important;
}
.h-50 {
height: 50% !important;
}
.h-75 {
height: 75% !important;
}
.h-100 {
height: 100% !important;
}
.h-auto {
height: auto !important;
}
.mw-100 {
max-width: 100% !important;
}
.mh-100 {
max-height: 100% !important;
}
.min-vw-100 {
min-width: 100vw !important;
}
.min-vh-100 {
min-height: 100vh !important;
}
.vw-100 {
width: 100vw !important;
}
.vh-100 {
height: 100vh !important;
}
.stretched-link::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
pointer-events: auto;
content: "";
background-color: rgba(0, 0, 0, 0);
}
.m-0 {
margin: 0 !important;
}
.mt-0,
.my-0 {
margin-top: 0 !important;
}
.mr-0,
.mx-0 {
margin-right: 0 !important;
}
.mb-0,
.my-0 {
margin-bottom: 0 !important;
}
.ml-0,
.mx-0 {
margin-left: 0 !important;
}
.m-1 {
margin: 0.25rem !important;
}
.mt-1,
.my-1 {
margin-top: 0.25rem !important;
}
.mr-1,
.mx-1 {
margin-right: 0.25rem !important;
}
.mb-1,
.my-1 {
margin-bottom: 0.25rem !important;
}
.ml-1,
.mx-1 {
margin-left: 0.25rem !important;
}
.m-2 {
margin: 0.5rem !important;
}
.mt-2,
.my-2 {
margin-top: 0.5rem !important;
}
.mr-2,
.mx-2 {
margin-right: 0.5rem !important;
}
.mb-2,
.my-2 {
margin-bottom: 0.5rem !important;
}
.ml-2,
.mx-2 {
margin-left: 0.5rem !important;
}
.m-3 {
margin: 1rem !important;
}
.mt-3,
.my-3 {
margin-top: 1rem !important;
}
.mr-3,
.mx-3 {
margin-right: 1rem !important;
}
.mb-3,
.my-3 {
margin-bottom: 1rem !important;
}
.ml-3,
.mx-3 {
margin-left: 1rem !important;
}
.m-4 {
margin: 1.5rem !important;
}
.mt-4,
.my-4 {
margin-top: 1.5rem !important;
}
.mr-4,
.mx-4 {
margin-right: 1.5rem !important;
}
.mb-4,
.my-4 {
margin-bottom: 1.5rem !important;
}
.ml-4,
.mx-4 {
margin-left: 1.5rem !important;
}
.m-5 {
margin: 3rem !important;
}
.mt-5,
.my-5 {
margin-top: 3rem !important;
}
.mr-5,
.mx-5 {
margin-right: 3rem !important;
}
.mb-5,
.my-5 {
margin-bottom: 3rem !important;
}
.ml-5,
.mx-5 {
margin-left: 3rem !important;
}
.p-0 {
padding: 0 !important;
}
.pt-0,
.py-0 {
padding-top: 0 !important;
}
.pr-0,
.px-0 {
padding-right: 0 !important;
}
.pb-0,
.py-0 {
padding-bottom: 0 !important;
}
.pl-0,
.px-0 {
padding-left: 0 !important;
}
.p-1 {
padding: 0.25rem !important;
}
.pt-1,
.py-1 {
padding-top: 0.25rem !important;
}
.pr-1,
.px-1 {
padding-right: 0.25rem !important;
}
.pb-1,
.py-1 {
padding-bottom: 0.25rem !important;
}
.pl-1,
.px-1 {
padding-left: 0.25rem !important;
}
.p-2 {
padding: 0.5rem !important;
}
.pt-2,
.py-2 {
padding-top: 0.5rem !important;
}
.pr-2,
.px-2 {
padding-right: 0.5rem !important;
}
.pb-2,
.py-2 {
padding-bottom: 0.5rem !important;
}
.pl-2,
.px-2 {
padding-left: 0.5rem !important;
}
.p-3 {
padding: 1rem !important;
}
.pt-3,
.py-3 {
padding-top: 1rem !important;
}
.pr-3,
.px-3 {
padding-right: 1rem !important;
}
.pb-3,
.py-3 {
padding-bottom: 1rem !important;
}
.pl-3,
.px-3 {
padding-left: 1rem !important;
}
.p-4 {
padding: 1.5rem !important;
}
.pt-4,
.py-4 {
padding-top: 1.5rem !important;
}
.pr-4,
.px-4 {
padding-right: 1.5rem !important;
}
.pb-4,
.py-4 {
padding-bottom: 1.5rem !important;
}
.pl-4,
.px-4 {
padding-left: 1.5rem !important;
}
.p-5 {
padding: 3rem !important;
}
.pt-5,
.py-5 {
padding-top: 3rem !important;
}
.pr-5,
.px-5 {
padding-right: 3rem !important;
}
.pb-5,
.py-5 {
padding-bottom: 3rem !important;
}
.pl-5,
.px-5 {
padding-left: 3rem !important;
}
.m-n1 {
margin: -0.25rem !important;
}
.mt-n1,
.my-n1 {
margin-top: -0.25rem !important;
}
.mr-n1,
.mx-n1 {
margin-right: -0.25rem !important;
}
.mb-n1,
.my-n1 {
margin-bottom: -0.25rem !important;
}
.ml-n1,
.mx-n1 {
margin-left: -0.25rem !important;
}
.m-n2 {
margin: -0.5rem !important;
}
.mt-n2,
.my-n2 {
margin-top: -0.5rem !important;
}
.mr-n2,
.mx-n2 {
margin-right: -0.5rem !important;
}
.mb-n2,
.my-n2 {
margin-bottom: -0.5rem !important;
}
.ml-n2,
.mx-n2 {
margin-left: -0.5rem !important;
}
.m-n3 {
margin: -1rem !important;
}
.mt-n3,
.my-n3 {
margin-top: -1rem !important;
}
.mr-n3,
.mx-n3 {
margin-right: -1rem !important;
}
.mb-n3,
.my-n3 {
margin-bottom: -1rem !important;
}
.ml-n3,
.mx-n3 {
margin-left: -1rem !important;
}
.m-n4 {
margin: -1.5rem !important;
}
.mt-n4,
.my-n4 {
margin-top: -1.5rem !important;
}
.mr-n4,
.mx-n4 {
margin-right: -1.5rem !important;
}
.mb-n4,
.my-n4 {
margin-bottom: -1.5rem !important;
}
.ml-n4,
.mx-n4 {
margin-left: -1.5rem !important;
}
.m-n5 {
margin: -3rem !important;
}
.mt-n5,
.my-n5 {
margin-top: -3rem !important;
}
.mr-n5,
.mx-n5 {
margin-right: -3rem !important;
}
.mb-n5,
.my-n5 {
margin-bottom: -3rem !important;
}
.ml-n5,
.mx-n5 {
margin-left: -3rem !important;
}
.m-auto {
margin: auto !important;
}
.mt-auto,
.my-auto {
margin-top: auto !important;
}
.mr-auto,
.mx-auto {
margin-right: auto !important;
}
.mb-auto,
.my-auto {
margin-bottom: auto !important;
}
.ml-auto,
.mx-auto {
margin-left: auto !important;
}
@media (min-width: 576px) {
.m-sm-0 {
margin: 0 !important;
}
.mt-sm-0,
.my-sm-0 {
margin-top: 0 !important;
}
.mr-sm-0,
.mx-sm-0 {
margin-right: 0 !important;
}
.mb-sm-0,
.my-sm-0 {
margin-bottom: 0 !important;
}
.ml-sm-0,
.mx-sm-0 {
margin-left: 0 !important;
}
.m-sm-1 {
margin: 0.25rem !important;
}
.mt-sm-1,
.my-sm-1 {
margin-top: 0.25rem !important;
}
.mr-sm-1,
.mx-sm-1 {
margin-right: 0.25rem !important;
}
.mb-sm-1,
.my-sm-1 {
margin-bottom: 0.25rem !important;
}
.ml-sm-1,
.mx-sm-1 {
margin-left: 0.25rem !important;
}
.m-sm-2 {
margin: 0.5rem !important;
}
.mt-sm-2,
.my-sm-2 {
margin-top: 0.5rem !important;
}
.mr-sm-2,
.mx-sm-2 {
margin-right: 0.5rem !important;
}
.mb-sm-2,
.my-sm-2 {
margin-bottom: 0.5rem !important;
}
.ml-sm-2,
.mx-sm-2 {
margin-left: 0.5rem !important;
}
.m-sm-3 {
margin: 1rem !important;
}
.mt-sm-3,
.my-sm-3 {
margin-top: 1rem !important;
}
.mr-sm-3,
.mx-sm-3 {
margin-right: 1rem !important;
}
.mb-sm-3,
.my-sm-3 {
margin-bottom: 1rem !important;
}
.ml-sm-3,
.mx-sm-3 {
margin-left: 1rem !important;
}
.m-sm-4 {
margin: 1.5rem !important;
}
.mt-sm-4,
.my-sm-4 {
margin-top: 1.5rem !important;
}
.mr-sm-4,
.mx-sm-4 {
margin-right: 1.5rem !important;
}
.mb-sm-4,
.my-sm-4 {
margin-bottom: 1.5rem !important;
}
.ml-sm-4,
.mx-sm-4 {
margin-left: 1.5rem !important;
}
.m-sm-5 {
margin: 3rem !important;
}
.mt-sm-5,
.my-sm-5 {
margin-top: 3rem !important;
}
.mr-sm-5,
.mx-sm-5 {
margin-right: 3rem !important;
}
.mb-sm-5,
.my-sm-5 {
margin-bottom: 3rem !important;
}
.ml-sm-5,
.mx-sm-5 {
margin-left: 3rem !important;
}
.p-sm-0 {
padding: 0 !important;
}
.pt-sm-0,
.py-sm-0 {
padding-top: 0 !important;
}
.pr-sm-0,
.px-sm-0 {
padding-right: 0 !important;
}
.pb-sm-0,
.py-sm-0 {
padding-bottom: 0 !important;
}
.pl-sm-0,
.px-sm-0 {
padding-left: 0 !important;
}
.p-sm-1 {
padding: 0.25rem !important;
}
.pt-sm-1,
.py-sm-1 {
padding-top: 0.25rem !important;
}
.pr-sm-1,
.px-sm-1 {
padding-right: 0.25rem !important;
}
.pb-sm-1,
.py-sm-1 {
padding-bottom: 0.25rem !important;
}
.pl-sm-1,
.px-sm-1 {
padding-left: 0.25rem !important;
}
.p-sm-2 {
padding: 0.5rem !important;
}
.pt-sm-2,
.py-sm-2 {
padding-top: 0.5rem !important;
}
.pr-sm-2,
.px-sm-2 {
padding-right: 0.5rem !important;
}
.pb-sm-2,
.py-sm-2 {
padding-bottom: 0.5rem !important;
}
.pl-sm-2,
.px-sm-2 {
padding-left: 0.5rem !important;
}
.p-sm-3 {
padding: 1rem !important;
}
.pt-sm-3,
.py-sm-3 {
padding-top: 1rem !important;
}
.pr-sm-3,
.px-sm-3 {
padding-right: 1rem !important;
}
.pb-sm-3,
.py-sm-3 {
padding-bottom: 1rem !important;
}
.pl-sm-3,
.px-sm-3 {
padding-left: 1rem !important;
}
.p-sm-4 {
padding: 1.5rem !important;
}
.pt-sm-4,
.py-sm-4 {
padding-top: 1.5rem !important;
}
.pr-sm-4,
.px-sm-4 {
padding-right: 1.5rem !important;
}
.pb-sm-4,
.py-sm-4 {
padding-bottom: 1.5rem !important;
}
.pl-sm-4,
.px-sm-4 {
padding-left: 1.5rem !important;
}
.p-sm-5 {
padding: 3rem !important;
}
.pt-sm-5,
.py-sm-5 {
padding-top: 3rem !important;
}
.pr-sm-5,
.px-sm-5 {
padding-right: 3rem !important;
}
.pb-sm-5,
.py-sm-5 {
padding-bottom: 3rem !important;
}
.pl-sm-5,
.px-sm-5 {
padding-left: 3rem !important;
}
.m-sm-n1 {
margin: -0.25rem !important;
}
.mt-sm-n1,
.my-sm-n1 {
margin-top: -0.25rem !important;
}
.mr-sm-n1,
.mx-sm-n1 {
margin-right: -0.25rem !important;
}
.mb-sm-n1,
.my-sm-n1 {
margin-bottom: -0.25rem !important;
}
.ml-sm-n1,
.mx-sm-n1 {
margin-left: -0.25rem !important;
}
.m-sm-n2 {
margin: -0.5rem !important;
}
.mt-sm-n2,
.my-sm-n2 {
margin-top: -0.5rem !important;
}
.mr-sm-n2,
.mx-sm-n2 {
margin-right: -0.5rem !important;
}
.mb-sm-n2,
.my-sm-n2 {
margin-bottom: -0.5rem !important;
}
.ml-sm-n2,
.mx-sm-n2 {
margin-left: -0.5rem !important;
}
.m-sm-n3 {
margin: -1rem !important;
}
.mt-sm-n3,
.my-sm-n3 {
margin-top: -1rem !important;
}
.mr-sm-n3,
.mx-sm-n3 {
margin-right: -1rem !important;
}
.mb-sm-n3,
.my-sm-n3 {
margin-bottom: -1rem !important;
}
.ml-sm-n3,
.mx-sm-n3 {
margin-left: -1rem !important;
}
.m-sm-n4 {
margin: -1.5rem !important;
}
.mt-sm-n4,
.my-sm-n4 {
margin-top: -1.5rem !important;
}
.mr-sm-n4,
.mx-sm-n4 {
margin-right: -1.5rem !important;
}
.mb-sm-n4,
.my-sm-n4 {
margin-bottom: -1.5rem !important;
}
.ml-sm-n4,
.mx-sm-n4 {
margin-left: -1.5rem !important;
}
.m-sm-n5 {
margin: -3rem !important;
}
.mt-sm-n5,
.my-sm-n5 {
margin-top: -3rem !important;
}
.mr-sm-n5,
.mx-sm-n5 {
margin-right: -3rem !important;
}
.mb-sm-n5,
.my-sm-n5 {
margin-bottom: -3rem !important;
}
.ml-sm-n5,
.mx-sm-n5 {
margin-left: -3rem !important;
}
.m-sm-auto {
margin: auto !important;
}
.mt-sm-auto,
.my-sm-auto {
margin-top: auto !important;
}
.mr-sm-auto,
.mx-sm-auto {
margin-right: auto !important;
}
.mb-sm-auto,
.my-sm-auto {
margin-bottom: auto !important;
}
.ml-sm-auto,
.mx-sm-auto {
margin-left: auto !important;
}
}
@media (min-width: 768px) {
.m-md-0 {
margin: 0 !important;
}
.mt-md-0,
.my-md-0 {
margin-top: 0 !important;
}
.mr-md-0,
.mx-md-0 {
margin-right: 0 !important;
}
.mb-md-0,
.my-md-0 {
margin-bottom: 0 !important;
}
.ml-md-0,
.mx-md-0 {
margin-left: 0 !important;
}
.m-md-1 {
margin: 0.25rem !important;
}
.mt-md-1,
.my-md-1 {
margin-top: 0.25rem !important;
}
.mr-md-1,
.mx-md-1 {
margin-right: 0.25rem !important;
}
.mb-md-1,
.my-md-1 {
margin-bottom: 0.25rem !important;
}
.ml-md-1,
.mx-md-1 {
margin-left: 0.25rem !important;
}
.m-md-2 {
margin: 0.5rem !important;
}
.mt-md-2,
.my-md-2 {
margin-top: 0.5rem !important;
}
.mr-md-2,
.mx-md-2 {
margin-right: 0.5rem !important;
}
.mb-md-2,
.my-md-2 {
margin-bottom: 0.5rem !important;
}
.ml-md-2,
.mx-md-2 {
margin-left: 0.5rem !important;
}
.m-md-3 {
margin: 1rem !important;
}
.mt-md-3,
.my-md-3 {
margin-top: 1rem !important;
}
.mr-md-3,
.mx-md-3 {
margin-right: 1rem !important;
}
.mb-md-3,
.my-md-3 {
margin-bottom: 1rem !important;
}
.ml-md-3,
.mx-md-3 {
margin-left: 1rem !important;
}
.m-md-4 {
margin: 1.5rem !important;
}
.mt-md-4,
.my-md-4 {
margin-top: 1.5rem !important;
}
.mr-md-4,
.mx-md-4 {
margin-right: 1.5rem !important;
}
.mb-md-4,
.my-md-4 {
margin-bottom: 1.5rem !important;
}
.ml-md-4,
.mx-md-4 {
margin-left: 1.5rem !important;
}
.m-md-5 {
margin: 3rem !important;
}
.mt-md-5,
.my-md-5 {
margin-top: 3rem !important;
}
.mr-md-5,
.mx-md-5 {
margin-right: 3rem !important;
}
.mb-md-5,
.my-md-5 {
margin-bottom: 3rem !important;
}
.ml-md-5,
.mx-md-5 {
margin-left: 3rem !important;
}
.p-md-0 {
padding: 0 !important;
}
.pt-md-0,
.py-md-0 {
padding-top: 0 !important;
}
.pr-md-0,
.px-md-0 {
padding-right: 0 !important;
}
.pb-md-0,
.py-md-0 {
padding-bottom: 0 !important;
}
.pl-md-0,
.px-md-0 {
padding-left: 0 !important;
}
.p-md-1 {
padding: 0.25rem !important;
}
.pt-md-1,
.py-md-1 {
padding-top: 0.25rem !important;
}
.pr-md-1,
.px-md-1 {
padding-right: 0.25rem !important;
}
.pb-md-1,
.py-md-1 {
padding-bottom: 0.25rem !important;
}
.pl-md-1,
.px-md-1 {
padding-left: 0.25rem !important;
}
.p-md-2 {
padding: 0.5rem !important;
}
.pt-md-2,
.py-md-2 {
padding-top: 0.5rem !important;
}
.pr-md-2,
.px-md-2 {
padding-right: 0.5rem !important;
}
.pb-md-2,
.py-md-2 {
padding-bottom: 0.5rem !important;
}
.pl-md-2,
.px-md-2 {
padding-left: 0.5rem !important;
}
.p-md-3 {
padding: 1rem !important;
}
.pt-md-3,
.py-md-3 {
padding-top: 1rem !important;
}
.pr-md-3,
.px-md-3 {
padding-right: 1rem !important;
}
.pb-md-3,
.py-md-3 {
padding-bottom: 1rem !important;
}
.pl-md-3,
.px-md-3 {
padding-left: 1rem !important;
}
.p-md-4 {
padding: 1.5rem !important;
}
.pt-md-4,
.py-md-4 {
padding-top: 1.5rem !important;
}
.pr-md-4,
.px-md-4 {
padding-right: 1.5rem !important;
}
.pb-md-4,
.py-md-4 {
padding-bottom: 1.5rem !important;
}
.pl-md-4,
.px-md-4 {
padding-left: 1.5rem !important;
}
.p-md-5 {
padding: 3rem !important;
}
.pt-md-5,
.py-md-5 {
padding-top: 3rem !important;
}
.pr-md-5,
.px-md-5 {
padding-right: 3rem !important;
}
.pb-md-5,
.py-md-5 {
padding-bottom: 3rem !important;
}
.pl-md-5,
.px-md-5 {
padding-left: 3rem !important;
}
.m-md-n1 {
margin: -0.25rem !important;
}
.mt-md-n1,
.my-md-n1 {
margin-top: -0.25rem !important;
}
.mr-md-n1,
.mx-md-n1 {
margin-right: -0.25rem !important;
}
.mb-md-n1,
.my-md-n1 {
margin-bottom: -0.25rem !important;
}
.ml-md-n1,
.mx-md-n1 {
margin-left: -0.25rem !important;
}
.m-md-n2 {
margin: -0.5rem !important;
}
.mt-md-n2,
.my-md-n2 {
margin-top: -0.5rem !important;
}
.mr-md-n2,
.mx-md-n2 {
margin-right: -0.5rem !important;
}
.mb-md-n2,
.my-md-n2 {
margin-bottom: -0.5rem !important;
}
.ml-md-n2,
.mx-md-n2 {
margin-left: -0.5rem !important;
}
.m-md-n3 {
margin: -1rem !important;
}
.mt-md-n3,
.my-md-n3 {
margin-top: -1rem !important;
}
.mr-md-n3,
.mx-md-n3 {
margin-right: -1rem !important;
}
.mb-md-n3,
.my-md-n3 {
margin-bottom: -1rem !important;
}
.ml-md-n3,
.mx-md-n3 {
margin-left: -1rem !important;
}
.m-md-n4 {
margin: -1.5rem !important;
}
.mt-md-n4,
.my-md-n4 {
margin-top: -1.5rem !important;
}
.mr-md-n4,
.mx-md-n4 {
margin-right: -1.5rem !important;
}
.mb-md-n4,
.my-md-n4 {
margin-bottom: -1.5rem !important;
}
.ml-md-n4,
.mx-md-n4 {
margin-left: -1.5rem !important;
}
.m-md-n5 {
margin: -3rem !important;
}
.mt-md-n5,
.my-md-n5 {
margin-top: -3rem !important;
}
.mr-md-n5,
.mx-md-n5 {
margin-right: -3rem !important;
}
.mb-md-n5,
.my-md-n5 {
margin-bottom: -3rem !important;
}
.ml-md-n5,
.mx-md-n5 {
margin-left: -3rem !important;
}
.m-md-auto {
margin: auto !important;
}
.mt-md-auto,
.my-md-auto {
margin-top: auto !important;
}
.mr-md-auto,
.mx-md-auto {
margin-right: auto !important;
}
.mb-md-auto,
.my-md-auto {
margin-bottom: auto !important;
}
.ml-md-auto,
.mx-md-auto {
margin-left: auto !important;
}
}
@media (min-width: 992px) {
.m-lg-0 {
margin: 0 !important;
}
.mt-lg-0,
.my-lg-0 {
margin-top: 0 !important;
}
.mr-lg-0,
.mx-lg-0 {
margin-right: 0 !important;
}
.mb-lg-0,
.my-lg-0 {
margin-bottom: 0 !important;
}
.ml-lg-0,
.mx-lg-0 {
margin-left: 0 !important;
}
.m-lg-1 {
margin: 0.25rem !important;
}
.mt-lg-1,
.my-lg-1 {
margin-top: 0.25rem !important;
}
.mr-lg-1,
.mx-lg-1 {
margin-right: 0.25rem !important;
}
.mb-lg-1,
.my-lg-1 {
margin-bottom: 0.25rem !important;
}
.ml-lg-1,
.mx-lg-1 {
margin-left: 0.25rem !important;
}
.m-lg-2 {
margin: 0.5rem !important;
}
.mt-lg-2,
.my-lg-2 {
margin-top: 0.5rem !important;
}
.mr-lg-2,
.mx-lg-2 {
margin-right: 0.5rem !important;
}
.mb-lg-2,
.my-lg-2 {
margin-bottom: 0.5rem !important;
}
.ml-lg-2,
.mx-lg-2 {
margin-left: 0.5rem !important;
}
.m-lg-3 {
margin: 1rem !important;
}
.mt-lg-3,
.my-lg-3 {
margin-top: 1rem !important;
}
.mr-lg-3,
.mx-lg-3 {
margin-right: 1rem !important;
}
.mb-lg-3,
.my-lg-3 {
margin-bottom: 1rem !important;
}
.ml-lg-3,
.mx-lg-3 {
margin-left: 1rem !important;
}
.m-lg-4 {
margin: 1.5rem !important;
}
.mt-lg-4,
.my-lg-4 {
margin-top: 1.5rem !important;
}
.mr-lg-4,
.mx-lg-4 {
margin-right: 1.5rem !important;
}
.mb-lg-4,
.my-lg-4 {
margin-bottom: 1.5rem !important;
}
.ml-lg-4,
.mx-lg-4 {
margin-left: 1.5rem !important;
}
.m-lg-5 {
margin: 3rem !important;
}
.mt-lg-5,
.my-lg-5 {
margin-top: 3rem !important;
}
.mr-lg-5,
.mx-lg-5 {
margin-right: 3rem !important;
}
.mb-lg-5,
.my-lg-5 {
margin-bottom: 3rem !important;
}
.ml-lg-5,
.mx-lg-5 {
margin-left: 3rem !important;
}
.p-lg-0 {
padding: 0 !important;
}
.pt-lg-0,
.py-lg-0 {
padding-top: 0 !important;
}
.pr-lg-0,
.px-lg-0 {
padding-right: 0 !important;
}
.pb-lg-0,
.py-lg-0 {
padding-bottom: 0 !important;
}
.pl-lg-0,
.px-lg-0 {
padding-left: 0 !important;
}
.p-lg-1 {
padding: 0.25rem !important;
}
.pt-lg-1,
.py-lg-1 {
padding-top: 0.25rem !important;
}
.pr-lg-1,
.px-lg-1 {
padding-right: 0.25rem !important;
}
.pb-lg-1,
.py-lg-1 {
padding-bottom: 0.25rem !important;
}
.pl-lg-1,
.px-lg-1 {
padding-left: 0.25rem !important;
}
.p-lg-2 {
padding: 0.5rem !important;
}
.pt-lg-2,
.py-lg-2 {
padding-top: 0.5rem !important;
}
.pr-lg-2,
.px-lg-2 {
padding-right: 0.5rem !important;
}
.pb-lg-2,
.py-lg-2 {
padding-bottom: 0.5rem !important;
}
.pl-lg-2,
.px-lg-2 {
padding-left: 0.5rem !important;
}
.p-lg-3 {
padding: 1rem !important;
}
.pt-lg-3,
.py-lg-3 {
padding-top: 1rem !important;
}
.pr-lg-3,
.px-lg-3 {
padding-right: 1rem !important;
}
.pb-lg-3,
.py-lg-3 {
padding-bottom: 1rem !important;
}
.pl-lg-3,
.px-lg-3 {
padding-left: 1rem !important;
}
.p-lg-4 {
padding: 1.5rem !important;
}
.pt-lg-4,
.py-lg-4 {
padding-top: 1.5rem !important;
}
.pr-lg-4,
.px-lg-4 {
padding-right: 1.5rem !important;
}
.pb-lg-4,
.py-lg-4 {
padding-bottom: 1.5rem !important;
}
.pl-lg-4,
.px-lg-4 {
padding-left: 1.5rem !important;
}
.p-lg-5 {
padding: 3rem !important;
}
.pt-lg-5,
.py-lg-5 {
padding-top: 3rem !important;
}
.pr-lg-5,
.px-lg-5 {
padding-right: 3rem !important;
}
.pb-lg-5,
.py-lg-5 {
padding-bottom: 3rem !important;
}
.pl-lg-5,
.px-lg-5 {
padding-left: 3rem !important;
}
.m-lg-n1 {
margin: -0.25rem !important;
}
.mt-lg-n1,
.my-lg-n1 {
margin-top: -0.25rem !important;
}
.mr-lg-n1,
.mx-lg-n1 {
margin-right: -0.25rem !important;
}
.mb-lg-n1,
.my-lg-n1 {
margin-bottom: -0.25rem !important;
}
.ml-lg-n1,
.mx-lg-n1 {
margin-left: -0.25rem !important;
}
.m-lg-n2 {
margin: -0.5rem !important;
}
.mt-lg-n2,
.my-lg-n2 {
margin-top: -0.5rem !important;
}
.mr-lg-n2,
.mx-lg-n2 {
margin-right: -0.5rem !important;
}
.mb-lg-n2,
.my-lg-n2 {
margin-bottom: -0.5rem !important;
}
.ml-lg-n2,
.mx-lg-n2 {
margin-left: -0.5rem !important;
}
.m-lg-n3 {
margin: -1rem !important;
}
.mt-lg-n3,
.my-lg-n3 {
margin-top: -1rem !important;
}
.mr-lg-n3,
.mx-lg-n3 {
margin-right: -1rem !important;
}
.mb-lg-n3,
.my-lg-n3 {
margin-bottom: -1rem !important;
}
.ml-lg-n3,
.mx-lg-n3 {
margin-left: -1rem !important;
}
.m-lg-n4 {
margin: -1.5rem !important;
}
.mt-lg-n4,
.my-lg-n4 {
margin-top: -1.5rem !important;
}
.mr-lg-n4,
.mx-lg-n4 {
margin-right: -1.5rem !important;
}
.mb-lg-n4,
.my-lg-n4 {
margin-bottom: -1.5rem !important;
}
.ml-lg-n4,
.mx-lg-n4 {
margin-left: -1.5rem !important;
}
.m-lg-n5 {
margin: -3rem !important;
}
.mt-lg-n5,
.my-lg-n5 {
margin-top: -3rem !important;
}
.mr-lg-n5,
.mx-lg-n5 {
margin-right: -3rem !important;
}
.mb-lg-n5,
.my-lg-n5 {
margin-bottom: -3rem !important;
}
.ml-lg-n5,
.mx-lg-n5 {
margin-left: -3rem !important;
}
.m-lg-auto {
margin: auto !important;
}
.mt-lg-auto,
.my-lg-auto {
margin-top: auto !important;
}
.mr-lg-auto,
.mx-lg-auto {
margin-right: auto !important;
}
.mb-lg-auto,
.my-lg-auto {
margin-bottom: auto !important;
}
.ml-lg-auto,
.mx-lg-auto {
margin-left: auto !important;
}
}
@media (min-width: 1200px) {
.m-xl-0 {
margin: 0 !important;
}
.mt-xl-0,
.my-xl-0 {
margin-top: 0 !important;
}
.mr-xl-0,
.mx-xl-0 {
margin-right: 0 !important;
}
.mb-xl-0,
.my-xl-0 {
margin-bottom: 0 !important;
}
.ml-xl-0,
.mx-xl-0 {
margin-left: 0 !important;
}
.m-xl-1 {
margin: 0.25rem !important;
}
.mt-xl-1,
.my-xl-1 {
margin-top: 0.25rem !important;
}
.mr-xl-1,
.mx-xl-1 {
margin-right: 0.25rem !important;
}
.mb-xl-1,
.my-xl-1 {
margin-bottom: 0.25rem !important;
}
.ml-xl-1,
.mx-xl-1 {
margin-left: 0.25rem !important;
}
.m-xl-2 {
margin: 0.5rem !important;
}
.mt-xl-2,
.my-xl-2 {
margin-top: 0.5rem !important;
}
.mr-xl-2,
.mx-xl-2 {
margin-right: 0.5rem !important;
}
.mb-xl-2,
.my-xl-2 {
margin-bottom: 0.5rem !important;
}
.ml-xl-2,
.mx-xl-2 {
margin-left: 0.5rem !important;
}
.m-xl-3 {
margin: 1rem !important;
}
.mt-xl-3,
.my-xl-3 {
margin-top: 1rem !important;
}
.mr-xl-3,
.mx-xl-3 {
margin-right: 1rem !important;
}
.mb-xl-3,
.my-xl-3 {
margin-bottom: 1rem !important;
}
.ml-xl-3,
.mx-xl-3 {
margin-left: 1rem !important;
}
.m-xl-4 {
margin: 1.5rem !important;
}
.mt-xl-4,
.my-xl-4 {
margin-top: 1.5rem !important;
}
.mr-xl-4,
.mx-xl-4 {
margin-right: 1.5rem !important;
}
.mb-xl-4,
.my-xl-4 {
margin-bottom: 1.5rem !important;
}
.ml-xl-4,
.mx-xl-4 {
margin-left: 1.5rem !important;
}
.m-xl-5 {
margin: 3rem !important;
}
.mt-xl-5,
.my-xl-5 {
margin-top: 3rem !important;
}
.mr-xl-5,
.mx-xl-5 {
margin-right: 3rem !important;
}
.mb-xl-5,
.my-xl-5 {
margin-bottom: 3rem !important;
}
.ml-xl-5,
.mx-xl-5 {
margin-left: 3rem !important;
}
.p-xl-0 {
padding: 0 !important;
}
.pt-xl-0,
.py-xl-0 {
padding-top: 0 !important;
}
.pr-xl-0,
.px-xl-0 {
padding-right: 0 !important;
}
.pb-xl-0,
.py-xl-0 {
padding-bottom: 0 !important;
}
.pl-xl-0,
.px-xl-0 {
padding-left: 0 !important;
}
.p-xl-1 {
padding: 0.25rem !important;
}
.pt-xl-1,
.py-xl-1 {
padding-top: 0.25rem !important;
}
.pr-xl-1,
.px-xl-1 {
padding-right: 0.25rem !important;
}
.pb-xl-1,
.py-xl-1 {
padding-bottom: 0.25rem !important;
}
.pl-xl-1,
.px-xl-1 {
padding-left: 0.25rem !important;
}
.p-xl-2 {
padding: 0.5rem !important;
}
.pt-xl-2,
.py-xl-2 {
padding-top: 0.5rem !important;
}
.pr-xl-2,
.px-xl-2 {
padding-right: 0.5rem !important;
}
.pb-xl-2,
.py-xl-2 {
padding-bottom: 0.5rem !important;
}
.pl-xl-2,
.px-xl-2 {
padding-left: 0.5rem !important;
}
.p-xl-3 {
padding: 1rem !important;
}
.pt-xl-3,
.py-xl-3 {
padding-top: 1rem !important;
}
.pr-xl-3,
.px-xl-3 {
padding-right: 1rem !important;
}
.pb-xl-3,
.py-xl-3 {
padding-bottom: 1rem !important;
}
.pl-xl-3,
.px-xl-3 {
padding-left: 1rem !important;
}
.p-xl-4 {
padding: 1.5rem !important;
}
.pt-xl-4,
.py-xl-4 {
padding-top: 1.5rem !important;
}
.pr-xl-4,
.px-xl-4 {
padding-right: 1.5rem !important;
}
.pb-xl-4,
.py-xl-4 {
padding-bottom: 1.5rem !important;
}
.pl-xl-4,
.px-xl-4 {
padding-left: 1.5rem !important;
}
.p-xl-5 {
padding: 3rem !important;
}
.pt-xl-5,
.py-xl-5 {
padding-top: 3rem !important;
}
.pr-xl-5,
.px-xl-5 {
padding-right: 3rem !important;
}
.pb-xl-5,
.py-xl-5 {
padding-bottom: 3rem !important;
}
.pl-xl-5,
.px-xl-5 {
padding-left: 3rem !important;
}
.m-xl-n1 {
margin: -0.25rem !important;
}
.mt-xl-n1,
.my-xl-n1 {
margin-top: -0.25rem !important;
}
.mr-xl-n1,
.mx-xl-n1 {
margin-right: -0.25rem !important;
}
.mb-xl-n1,
.my-xl-n1 {
margin-bottom: -0.25rem !important;
}
.ml-xl-n1,
.mx-xl-n1 {
margin-left: -0.25rem !important;
}
.m-xl-n2 {
margin: -0.5rem !important;
}
.mt-xl-n2,
.my-xl-n2 {
margin-top: -0.5rem !important;
}
.mr-xl-n2,
.mx-xl-n2 {
margin-right: -0.5rem !important;
}
.mb-xl-n2,
.my-xl-n2 {
margin-bottom: -0.5rem !important;
}
.ml-xl-n2,
.mx-xl-n2 {
margin-left: -0.5rem !important;
}
.m-xl-n3 {
margin: -1rem !important;
}
.mt-xl-n3,
.my-xl-n3 {
margin-top: -1rem !important;
}
.mr-xl-n3,
.mx-xl-n3 {
margin-right: -1rem !important;
}
.mb-xl-n3,
.my-xl-n3 {
margin-bottom: -1rem !important;
}
.ml-xl-n3,
.mx-xl-n3 {
margin-left: -1rem !important;
}
.m-xl-n4 {
margin: -1.5rem !important;
}
.mt-xl-n4,
.my-xl-n4 {
margin-top: -1.5rem !important;
}
.mr-xl-n4,
.mx-xl-n4 {
margin-right: -1.5rem !important;
}
.mb-xl-n4,
.my-xl-n4 {
margin-bottom: -1.5rem !important;
}
.ml-xl-n4,
.mx-xl-n4 {
margin-left: -1.5rem !important;
}
.m-xl-n5 {
margin: -3rem !important;
}
.mt-xl-n5,
.my-xl-n5 {
margin-top: -3rem !important;
}
.mr-xl-n5,
.mx-xl-n5 {
margin-right: -3rem !important;
}
.mb-xl-n5,
.my-xl-n5 {
margin-bottom: -3rem !important;
}
.ml-xl-n5,
.mx-xl-n5 {
margin-left: -3rem !important;
}
.m-xl-auto {
margin: auto !important;
}
.mt-xl-auto,
.my-xl-auto {
margin-top: auto !important;
}
.mr-xl-auto,
.mx-xl-auto {
margin-right: auto !important;
}
.mb-xl-auto,
.my-xl-auto {
margin-bottom: auto !important;
}
.ml-xl-auto,
.mx-xl-auto {
margin-left: auto !important;
}
}
.text-monospace {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
"Courier New", monospace !important;
}
.text-justify {
text-align: justify !important;
}
.text-wrap {
white-space: normal !important;
}
.text-nowrap {
white-space: nowrap !important;
}
.text-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.text-left {
text-align: left !important;
}
.text-right {
text-align: right !important;
}
.text-center {
text-align: center !important;
}
@media (min-width: 576px) {
.text-sm-left {
text-align: left !important;
}
.text-sm-right {
text-align: right !important;
}
.text-sm-center {
text-align: center !important;
}
}
@media (min-width: 768px) {
.text-md-left {
text-align: left !important;
}
.text-md-right {
text-align: right !important;
}
.text-md-center {
text-align: center !important;
}
}
@media (min-width: 992px) {
.text-lg-left {
text-align: left !important;
}
.text-lg-right {
text-align: right !important;
}
.text-lg-center {
text-align: center !important;
}
}
@media (min-width: 1200px) {
.text-xl-left {
text-align: left !important;
}
.text-xl-right {
text-align: right !important;
}
.text-xl-center {
text-align: center !important;
}
}
.text-lowercase {
text-transform: lowercase !important;
}
.text-uppercase {
text-transform: uppercase !important;
}
.text-capitalize {
text-transform: capitalize !important;
}
.font-weight-light {
font-weight: 300 !important;
}
.font-weight-lighter {
font-weight: lighter !important;
}
.font-weight-normal {
font-weight: 400 !important;
}
.font-weight-bold {
font-weight: 700 !important;
}
.font-weight-bolder {
font-weight: bolder !important;
}
.font-italic {
font-style: italic !important;
}
.text-white {
color: #fff !important;
font-size: 18px;
}
.text-white:hover {
color: #C0C0C0 !important;
}
.text-primary {
color: #007bff !important;
}
a.text-primary:focus,
a.text-primary:hover {
color: #0056b3 !important;
}
.text-secondary {
color: #6c757d !important;
}
a.text-secondary:focus,
a.text-secondary:hover {
color: #494f54 !important;
}
.text-success {
color: #28a745 !important;
}
a.text-success:focus,
a.text-success:hover {
color: #19692c !important;
}
.text-info {
color: #17a2b8 !important;
}
a.text-info:focus,
a.text-info:hover {
color: #0f6674 !important;
}
.text-warning {
color: #ffc107 !important;
}
a.text-warning:focus,
a.text-warning:hover {
color: #ba8b00 !important;
}
.text-danger {
color: #dc3545 !important;
}
a.text-danger:focus,
a.text-danger:hover {
color: #a71d2a !important;
}
.text-light {
color: #f8f9fa !important;
}
a.text-light:focus,
a.text-light:hover {
color: #cbd3da !important;
}
.text-dark {
color: #343a40 !important;
}
a.text-dark:focus,
a.text-dark:hover {
color: #121416 !important;
}
.text-body {
color: #212529 !important;
}
.text-muted {
color: #6c757d !important;
}
.text-black-50 {
color: rgba(0, 0, 0, 0.5) !important;
}
.text-white-50 {
color: rgba(255, 255, 255, 0.5) !important;
}
.text-hide {
font: 0/0 a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
.text-decoration-none {
text-decoration: none !important;
}
.text-break {
word-break: break-word !important;
overflow-wrap: break-word !important;
}
.text-reset {
color: inherit !important;
}
.visible {
visibility: visible !important;
}
.invisible {
visibility: hidden !important;
}
@media print {
*,
::after,
::before {
text-shadow: none !important;
box-shadow: none !important;
}
a:not(.btn) {
text-decoration: underline;
}
abbr[title]::after {
content: " (" attr(title) ")";
}
pre {
white-space: pre-wrap !important;
}
blockquote,
pre {
border: 1px solid #adb5bd;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
img,
tr {
page-break-inside: avoid;
}
h2,
h3,
p {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
@page {
size: a3;
}
body {
min-width: 992px !important;
}
.container {
min-width: 992px !important;
}
.navbar {
display: none;
}
.badge {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered td,
.table-bordered th {
border: 1px solid #dee2e6 !important;
}
.table-dark {
color: inherit;
}
.table-dark tbody + tbody,
.table-dark td,
.table-dark th,
.table-dark thead th {
border-color: #dee2e6;
}
.table .thead-dark th {
color: inherit;
border-color: #dee2e6;
}
}
/**
* bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
*
* @version v1.15.3
* @homepage https://bootstrap-table.com
* @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)
* @license MIT
*/
(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):(e=e||self,e.BootstrapTable=t(e.jQuery))})(this,function(t){'use strict';var m=String.prototype,b=Math.max,y=Math.min,w=Math.floor,v=Math.ceil;function e(e,t){return t={exports:{}},e(t,t.exports),t.exports}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var o,a=0;a<t.length;a++)o=t[a],o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}function s(e,t,o){return t&&i(e.prototype,t),o&&i(e,o),e}function l(e,t){return d(e)||u(e,t)||g()}function r(e){return c(e)||p(e)||h()}function c(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}}function d(e){if(Array.isArray(e))return e}function p(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function u(e,t){var o=[],a=!0,n=!1,i=void 0;try{for(var s,l=e[Symbol.iterator]();!(a=(s=l.next()).done)&&(o.push(s.value),!(t&&o.length===t));a=!0);}catch(e){n=!0,i=e}finally{try{a||null==l["return"]||l["return"]()}finally{if(n)throw i}}return o}function h(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}t=t&&t.hasOwnProperty("default")?t["default"]:t;var S,x,k,T="undefined"==typeof globalThis?"undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?{}:self:global:window:globalThis,P="object",o=function(e){return e&&e.Math==Math&&e},C=o(typeof globalThis==P&&globalThis)||o(typeof window==P&&window)||o(typeof self==P&&self)||o(typeof T==P&&T)||Function("return this")(),I=function(e){try{return!!e()}catch(e){return!0}},A=!I(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),E={}.propertyIsEnumerable,R=Object.getOwnPropertyDescriptor,_=R&&!E.call({1:2},1),N=_?function(e){var t=R(this,e);return!!t&&t.enumerable}:E,f={f:N},F=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},D={}.toString,L=function(e){return D.call(e).slice(8,-1)},V="".split,B=I(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==L(e)?V.call(e,""):Object(e)}:Object,H=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},M=function(e){return B(H(e))},U=function(e){return"object"==typeof e?null!==e:"function"==typeof e},q=function(e,t){if(!U(e))return e;var o,a;if(t&&"function"==typeof(o=e.toString)&&!U(a=o.call(e)))return a;if("function"==typeof(o=e.valueOf)&&!U(a=o.call(e)))return a;if(!t&&"function"==typeof(o=e.toString)&&!U(a=o.call(e)))return a;throw TypeError("Can't convert object to primitive value")},z={}.hasOwnProperty,G=function(e,t){return z.call(e,t)},W=C.document,Y=U(W)&&U(W.createElement),K=function(e){return Y?W.createElement(e):{}},X=!A&&!I(function(){return 7!=Object.defineProperty(K("div"),"a",{get:function(){return 7}}).a}),Q=Object.getOwnPropertyDescriptor,J=A?Q:function(e,t){if(e=M(e),t=q(t,!0),X)try{return Q(e,t)}catch(e){}return G(e,t)?F(!f.f.call(e,t),e[t]):void 0},Z={f:J},ee=function(e){if(!U(e))throw TypeError(e+" is not an object");return e},te=Object.defineProperty,oe=A?te:function(e,t,o){if(ee(e),t=q(t,!0),ee(o),X)try{return te(e,t,o)}catch(e){}if("get"in o||"set"in o)throw TypeError("Accessors not supported");return"value"in o&&(e[t]=o.value),e},ae={f:oe},ne=A?function(e,t,o){return ae.f(e,t,F(1,o))}:function(e,t,o){return e[t]=o,e},ie=function(e,t){try{ne(C,e,t)}catch(o){C[e]=t}return t},se=e(function(e){var t=C["__core-js_shared__"]||ie("__core-js_shared__",{});(e.exports=function(e,o){return t[e]||(t[e]=void 0===o?{}:o)})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"\xA9 2019 Denis Pushkarev (zloirock.ru)"})}),le=se("native-function-to-string",Function.toString),re=C.WeakMap,ce="function"==typeof re&&/native code/.test(le.call(re)),de=0,O=Math.random(),pe=function(e){return"Symbol("+((void 0===e?"":e)+")_")+(++de+O).toString(36)},ue=se("keys"),he=function(e){return ue[e]||(ue[e]=pe(e))},ge={},fe=C.WeakMap,me=function(e){return k(e)?x(e):S(e,{})};if(ce){var be=new fe,ye=be.get,we=be.has,ve=be.set;S=function(e,t){return ve.call(be,e,t),t},x=function(e){return ye.call(be,e)||{}},k=function(e){return we.call(be,e)}}else{var Se=he("state");ge[Se]=!0,S=function(e,t){return ne(e,Se,t),t},x=function(e){return G(e,Se)?e[Se]:{}},k=function(e){return G(e,Se)}}var xe={set:S,get:x,has:k,enforce:me,getterFor:function(e){return function(t){var o;if(!U(t)||(o=x(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return o}}},ke=e(function(e){var t=xe.get,o=xe.enforce,a=(le+"").split("toString");se("inspectSource",function(e){return le.call(e)}),(e.exports=function(e,t,n,i){var s=!!i&&!!i.unsafe,l=!!i&&!!i.enumerable,r=!!i&&!!i.noTargetGet;return("function"==typeof n&&("string"==typeof t&&!G(n,"name")&&ne(n,"name",t),o(n).source=a.join("string"==typeof t?t:"")),e===C)?void(l?e[t]=n:ie(t,n)):void(s?!r&&e[t]&&(l=!0):delete e[t],l?e[t]=n:ne(e,t,n))})(Function.prototype,"toString",function(){return"function"==typeof this&&t(this).source||le.call(this)})}),Te=C,Pe=function(e){return"function"==typeof e?e:void 0},Oe=function(e,t){return 2>arguments.length?Pe(Te[e])||Pe(C[e]):Te[e]&&Te[e][t]||C[e]&&C[e][t]},Ce=function(e){return isNaN(e=+e)?0:(0<e?w:v)(e)},Ie=function(e){return 0<e?y(Ce(e),9007199254740991):0},$e=function(e,t){var o=Ce(e);return 0>o?b(o+t,0):y(o,t)},Ae=function(e){return function(t,o,a){var n,i=M(t),s=Ie(i.length),l=$e(a,s);if(e&&o!=o){for(;s>l;)if(n=i[l++],n!=n)return!0;}else for(;s>l;l++)if((e||l in i)&&i[l]===o)return e||l||0;return!e&&-1}},Ee={includes:Ae(!0),indexOf:Ae(!1)},Re=Ee.indexOf,_e=function(e,t){var o,a=M(e),n=0,s=[];for(o in a)!G(ge,o)&&G(a,o)&&s.push(o);for(;t.length>n;)G(a,o=t[n++])&&(~Re(s,o)||s.push(o));return s},Ne=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Fe=Ne.concat("length","prototype"),De=Object.getOwnPropertyNames||function(e){return _e(e,Fe)},Le={f:De},Ve=Object.getOwnPropertySymbols,Be={f:Ve},He=Oe("Reflect","ownKeys")||function(e){var t=Le.f(ee(e)),o=Be.f;return o?t.concat(o(e)):t},je=function(e,t){for(var o,a=He(t),n=ae.f,s=Z.f,l=0;l<a.length;l++)o=a[l],G(e,o)||n(e,o,s(t,o))},Me=/#|\.prototype\./,Ue=function(e,t){var o=ze[qe(e)];return o==We||o!=Ge&&("function"==typeof t?I(t):!!t)},qe=Ue.normalize=function(e){return(e+"").replace(Me,".").toLowerCase()},ze=Ue.data={},Ge=Ue.NATIVE="N",We=Ue.POLYFILL="P",Ye=Ue,Ke=Z.f,Xe=function(e,t){var o,a,n,i,s,l,r=e.target,c=e.global,d=e.stat;if(a=c?C:d?C[r]||ie(r,{}):(C[r]||{}).prototype,a)for(n in t){if(s=t[n],e.noTargetGet?(l=Ke(a,n),i=l&&l.value):i=a[n],o=Ye(c?n:r+(d?".":"#")+n,e.forced),!o&&void 0!==i){if(typeof s==typeof i)continue;je(s,i)}(e.sham||i&&i.sham)&&ne(s,"sham",!0),ke(a,n,s,e)}},Qe=!!Object.getOwnPropertySymbols&&!I(function(){return!(Symbol()+"")}),Je=Array.isArray||function(e){return"Array"==L(e)},Ze=function(e){return Object(H(e))},et=Object.keys||function(e){return _e(e,Ne)},tt=A?Object.defineProperties:function(e,t){ee(e);for(var o,a=et(t),n=a.length,i=0;n>i;)ae.f(e,o=a[i++],t[o]);return e},ot=Oe("document","documentElement"),at=he("IE_PROTO"),nt="prototype",it=function(){},st=function(){var e,t=K("iframe"),o=Ne.length,a="<",n="script",i=">";for(t.style.display="none",ot.appendChild(t),t.src="java"+n+":"+"",e=t.contentWindow.document,e.open(),e.write(a+n+i+"document.F=Object"+a+"/"+n+i),e.close(),st=e.F;o--;)delete st[nt][Ne[o]];return st()},lt=Object.create||function(e,t){var o;return null===e?o=st():(it[nt]=ee(e),o=new it,it[nt]=null,o[at]=e),void 0===t?o:tt(o,t)};ge[at]=!0;var rt=Le.f,ct={}.toString,dt="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],pt=function(e){try{return rt(e)}catch(e){return dt.slice()}},ut={f:function(e){return dt&&"[object Window]"==ct.call(e)?pt(e):rt(M(e))}},ht=C.Symbol,gt=se("wks"),ft=function(e){return gt[e]||(gt[e]=Qe&&ht[e]||(Qe?ht:pe)("Symbol."+e))},mt={f:ft},bt=ae.f,yt=function(e){var t=Te.Symbol||(Te.Symbol={});G(t,e)||bt(t,e,{value:mt.f(e)})},wt=ae.f,vt=ft("toStringTag"),St=function(e,t,o){e&&!G(e=o?e:e.prototype,vt)&&wt(e,vt,{configurable:!0,value:t})},xt=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function");return e},kt=function(e,t,o){return(xt(e),void 0===t)?e:0===o?function(){return e.call(t)}:1===o?function(o){return e.call(t,o)}:2===o?function(o,a){return e.call(t,o,a)}:3===o?function(o,a,n){return e.call(t,o,a,n)}:function(){return e.apply(t,arguments)}},Tt=ft("species"),Pt=function(e,t){var o;return Je(e)&&(o=e.constructor,"function"==typeof o&&(o===Array||Je(o.prototype))?o=void 0:U(o)&&(o=o[Tt],null===o&&(o=void 0))),new(void 0===o?Array:o)(0===t?0:t)},Ot=[].push,Ct=function(e){var t=1==e,o=4==e,a=6==e;return function(n,i,s,l){for(var r,c,d=Ze(n),p=B(d),u=kt(i,s,3),h=Ie(p.length),g=0,f=l||Pt,m=t?f(n,h):2==e?f(n,0):void 0;h>g;g++)if((5==e||a||g in p)&&(r=p[g],c=u(r,g,d),e))if(t)m[g]=c;else if(c)switch(e){case 3:return!0;case 5:return r;case 6:return g;case 2:Ot.call(m,r);}else if(o)return!1;return a?-1:3==e||o?o:m}},It={forEach:Ct(0),map:Ct(1),filter:Ct(2),some:Ct(3),every:Ct(4),find:Ct(5),findIndex:Ct(6)},$t=It.forEach,At=he("hidden"),Et="Symbol",Rt="prototype",_t=ft("toPrimitive"),Nt=xe.set,Ft=xe.getterFor(Et),Dt=Object[Rt],Lt=C.Symbol,Vt=C.JSON,Bt=Vt&&Vt.stringify,Ht=Z.f,jt=ae.f,Mt=ut.f,Ut=f.f,qt=se("symbols"),zt=se("op-symbols"),Gt=se("string-to-symbol-registry"),Wt=se("symbol-to-string-registry"),Yt=se("wks"),Kt=C.QObject,Xt=!Kt||!Kt[Rt]||!Kt[Rt].findChild,Qt=A&&I(function(){return 7!=lt(jt({},"a",{get:function(){return jt(this,"a",{value:7}).a}})).a})?function(e,t,o){var a=Ht(Dt,t);a&&delete Dt[t],jt(e,t,o),a&&e!==Dt&&jt(Dt,t,a)}:jt,Jt=function(e,t){var o=qt[e]=lt(Lt[Rt]);return Nt(o,{type:Et,tag:e,description:t}),A||(o.description=t),o},Zt=Qe&&"symbol"==typeof Lt.iterator?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof Lt},eo=function(e,t,o){e===Dt&&eo(zt,t,o),ee(e);var a=q(t,!0);return ee(o),G(qt,a)?(o.enumerable?(G(e,At)&&e[At][a]&&(e[At][a]=!1),o=lt(o,{enumerable:F(0,!1)})):(!G(e,At)&&jt(e,At,F(1,{})),e[At][a]=!0),Qt(e,a,o)):jt(e,a,o)},to=function(e,t){ee(e);var o=M(t),a=et(o).concat(io(o));return $t(a,function(t){(!A||oo.call(o,t))&&eo(e,t,o[t])}),e},oo=function(e){var t=q(e,!0),o=Ut.call(this,t);return(this!==Dt||!G(qt,t)||G(zt,t))&&(!(o||!G(this,t)||!G(qt,t)||G(this,At)&&this[At][t])||o)},ao=function(e,t){var o=M(e),a=q(t,!0);if(o!==Dt||!G(qt,a)||G(zt,a)){var n=Ht(o,a);return n&&G(qt,a)&&!(G(o,At)&&o[At][a])&&(n.enumerable=!0),n}},no=function(e){var t=Mt(M(e)),o=[];return $t(t,function(e){G(qt,e)||G(ge,e)||o.push(e)}),o},io=function(e){var t=e===Dt,o=Mt(t?zt:M(e)),a=[];return $t(o,function(e){G(qt,e)&&(!t||G(Dt,e))&&a.push(qt[e])}),a};Qe||(Lt=function(){if(this instanceof Lt)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?arguments[0]+"":void 0,t=pe(e),o=function(e){this===Dt&&o.call(zt,e),G(this,At)&&G(this[At],t)&&(this[At][t]=!1),Qt(this,t,F(1,e))};return A&&Xt&&Qt(Dt,t,{configurable:!0,set:o}),Jt(t,e)},ke(Lt[Rt],"toString",function(){return Ft(this).tag}),f.f=oo,ae.f=eo,Z.f=ao,Le.f=ut.f=no,Be.f=io,A&&(jt(Lt[Rt],"description",{configurable:!0,get:function(){return Ft(this).description}}),ke(Dt,"propertyIsEnumerable",oo,{unsafe:!0})),mt.f=function(e){return Jt(ft(e),e)}),Xe({global:!0,wrap:!0,forced:!Qe,sham:!Qe},{Symbol:Lt}),$t(et(Yt),function(e){yt(e)}),Xe({target:Et,stat:!0,forced:!Qe},{for:function(e){var t=e+"";if(G(Gt,t))return Gt[t];var o=Lt(t);return Gt[t]=o,Wt[o]=t,o},keyFor:function(e){if(!Zt(e))throw TypeError(e+" is not a symbol");return G(Wt,e)?Wt[e]:void 0},useSetter:function(){Xt=!0},useSimple:function(){Xt=!1}}),Xe({target:"Object",stat:!0,forced:!Qe,sham:!A},{create:function(e,t){return void 0===t?lt(e):to(lt(e),t)},defineProperty:eo,defineProperties:to,getOwnPropertyDescriptor:ao}),Xe({target:"Object",stat:!0,forced:!Qe},{getOwnPropertyNames:no,getOwnPropertySymbols:io}),Xe({target:"Object",stat:!0,forced:I(function(){Be.f(1)})},{getOwnPropertySymbols:function(e){return Be.f(Ze(e))}}),Vt&&Xe({target:"JSON",stat:!0,forced:!Qe||I(function(){var e=Lt();return"[null]"!=Bt([e])||"{}"!=Bt({a:e})||"{}"!=Bt(Object(e))})},{stringify:function(e){for(var t,o,a=[e],n=1;arguments.length>n;)a.push(arguments[n++]);if(o=t=a[1],(U(t)||void 0!==e)&&!Zt(e))return Je(t)||(t=function(e,t){if("function"==typeof o&&(t=o.call(this,e,t)),!Zt(t))return t}),a[1]=t,Bt.apply(Vt,a)}}),Lt[Rt][_t]||ne(Lt[Rt],_t,Lt[Rt].valueOf),St(Lt,Et),ge[At]=!0;var so=ae.f,lo=C.Symbol;if(A&&"function"==typeof lo&&(!("description"in lo.prototype)||void 0!==lo().description)){var ro={},co=function(){var e=1>arguments.length||void 0===arguments[0]?void 0:arguments[0]+"",t=this instanceof co?new lo(e):void 0===e?lo():lo(e);return""===e&&(ro[t]=!0),t};je(co,lo);var po=co.prototype=lo.prototype;po.constructor=co;var uo=po.toString,ho="Symbol(test)"==lo("test")+"",go=/^Symbol\((.*)\)[^)]+$/;so(po,"description",{configurable:!0,get:function(){var e=U(this)?this.valueOf():this,t=uo.call(e);if(G(ro,e))return"";var o=ho?t.slice(7,-1):t.replace(go,"$1");return""===o?void 0:o}}),Xe({global:!0,forced:!0},{Symbol:co})}yt("iterator");var fo=function(e,t,o){var a=q(t);a in e?ae.f(e,a,F(0,o)):e[a]=o},mo=ft("species"),bo=function(e){return!I(function(){var t=[],o=t.constructor={};return o[mo]=function(){return{foo:1}},1!==t[e](Boolean).foo})},yo=ft("isConcatSpreadable"),wo=9007199254740991,vo="Maximum allowed index exceeded",So=!I(function(){var e=[];return e[yo]=!1,e.concat()[0]!==e}),xo=bo("concat"),ko=function(e){if(!U(e))return!1;var t=e[yo];return void 0===t?Je(e):!!t};Xe({target:"Array",proto:!0,forced:!So||!xo},{concat:function(){var e,t,o,a,s,l=Ze(this),r=Pt(l,0),c=0;for(e=-1,o=arguments.length;e<o;e++)if(s=-1===e?l:arguments[e],ko(s)){if(a=Ie(s.length),c+a>wo)throw TypeError(vo);for(t=0;t<a;t++,c++)t in s&&fo(r,c,s[t])}else{if(c>=wo)throw TypeError(vo);fo(r,c++,s)}return r.length=c,r}});var To=It.filter;Xe({target:"Array",proto:!0,forced:!bo("filter")},{filter:function(e){return To(this,e,1<arguments.length?arguments[1]:void 0)}});var Po=ft("unscopables"),Oo=Array.prototype;null==Oo[Po]&&ne(Oo,Po,lt(null));var Co=function(e){Oo[Po][e]=!0},Io=It.find,$o="find",Ao=!0;$o in[]&&[,][$o](function(){Ao=!1}),Xe({target:"Array",proto:!0,forced:Ao},{find:function(e){return Io(this,e,1<arguments.length?arguments[1]:void 0)}}),Co($o);var Eo=It.findIndex,Ro="findIndex",_o=!0;Ro in[]&&[,][Ro](function(){_o=!1}),Xe({target:"Array",proto:!0,forced:_o},{findIndex:function(e){return Eo(this,e,1<arguments.length?arguments[1]:void 0)}}),Co(Ro);var No=Ee.includes;Xe({target:"Array",proto:!0},{includes:function(e){return No(this,e,1<arguments.length?arguments[1]:void 0)}}),Co("includes");var Fo=function(e,t){var o=[][e];return!o||!I(function(){o.call(null,t||function(){throw 1},1)})},Do=Ee.indexOf,Lo=[].indexOf,Vo=!!Lo&&0>1/[1].indexOf(1,-0),Bo=Fo("indexOf");Xe({target:"Array",proto:!0,forced:Vo||Bo},{indexOf:function(e){return Vo?Lo.apply(this,arguments)||0:Do(this,e,1<arguments.length?arguments[1]:void 0)}});var Ho,jo,Mo,Uo=!I(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),qo=he("IE_PROTO"),zo=Object.prototype,Go=Uo?Object.getPrototypeOf:function(e){return e=Ze(e),G(e,qo)?e[qo]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?zo:null},Wo=ft("iterator"),Yo=!1;[].keys&&(Mo=[].keys(),"next"in Mo?(jo=Go(Go(Mo)),jo!==Object.prototype&&(Ho=jo)):Yo=!0),null==Ho&&(Ho={}),G(Ho,Wo)||ne(Ho,Wo,function(){return this});var Ko={IteratorPrototype:Ho,BUGGY_SAFARI_ITERATORS:Yo},Xo=Ko.IteratorPrototype,Qo=function(e,t,o){return e.prototype=lt(Xo,{next:F(1,o)}),St(e,t+" Iterator",!1),e},Jo=function(e){if(!U(e)&&null!==e)throw TypeError("Can't set "+(e+" as a prototype"));return e},Zo=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,o={};try{e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,e.call(o,[]),t=o instanceof Array}catch(e){}return function(o,a){return ee(o),Jo(a),t?e.call(o,a):o.__proto__=a,o}}():void 0),ea=Ko.IteratorPrototype,ta=Ko.BUGGY_SAFARI_ITERATORS,oa=ft("iterator"),aa="keys",na="values",ia="entries",sa=function(){return this},la=function(e,t,o,a,n,i,s){Qo(o,t,a);var l,r,c,d=function(e){return e===n&&g?g:!ta&&e in u?u[e]:e===aa?function(){return new o(this,e)}:e===na?function(){return new o(this,e)}:e===ia?function(){return new o(this,e)}:function(){return new o(this)}},p=!1,u=e.prototype,h=u[oa]||u["@@iterator"]||n&&u[n],g=!ta&&h||d(n),f="Array"==t?u.entries||h:h;if(f&&(l=Go(f.call(new e)),ea!==Object.prototype&&l.next&&(Go(l)!==ea&&(Zo?Zo(l,ea):"function"!=typeof l[oa]&&ne(l,oa,sa)),St(l,t+" Iterator",!0))),n==na&&h&&h.name!==na&&(p=!0,g=function(){return h.call(this)}),u[oa]!==g&&ne(u,oa,g),n)if(r={values:d(na),keys:i?g:d(aa),entries:d(ia)},s)for(c in r)(ta||p||!(c in u))&&ke(u,c,r[c]);else Xe({target:t,proto:!0,forced:ta||p},r);return r},ra="Array Iterator",ca=xe.set,da=xe.getterFor(ra),pa=la(Array,"Array",function(e,t){ca(this,{type:ra,target:M(e),index:0,kind:t})},function(){var e=da(this),t=e.target,o=e.kind,a=e.index++;return!t||a>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==o?{value:a,done:!1}:"values"==o?{value:t[a],done:!1}:{value:[a,t[a]],done:!1}},"values");Co("keys"),Co("values"),Co("entries");var ua=[].join,ha=B!=Object,ga=Fo("join",",");Xe({target:"Array",proto:!0,forced:ha||ga},{join:function(e){return ua.call(M(this),void 0===e?",":e)}});var fa=ft("species"),ma=[].slice;Xe({target:"Array",proto:!0,forced:!bo("slice")},{slice:function(e,t){var o,a,i,s=M(this),l=Ie(s.length),r=$e(e,l),c=$e(void 0===t?l:t,l);if(Je(s)&&(o=s.constructor,"function"==typeof o&&(o===Array||Je(o.prototype))?o=void 0:U(o)&&(o=o[fa],null===o&&(o=void 0)),o===Array||void 0===o))return ma.call(s,r,c);for(a=new(void 0===o?Array:o)(b(c-r,0)),i=0;r<c;r++,i++)r in s&&fo(a,i,s[r]);return a.length=i,a}});var ba=[].sort,ya=[1,2,3],wa=I(function(){ya.sort(void 0)}),va=I(function(){ya.sort(null)}),Sa=Fo("sort");Xe({target:"Array",proto:!0,forced:wa||!va||Sa},{sort:function(e){return void 0===e?ba.call(Ze(this)):ba.call(Ze(this),xt(e))}});Xe({target:"Array",proto:!0,forced:!bo("splice")},{splice:function(e,t){var o,a,n,i,s,l,r=Ze(this),c=Ie(r.length),d=$e(e,c),p=arguments.length;if(0===p?o=a=0:1===p?(o=0,a=c-d):(o=p-2,a=y(b(Ce(t),0),c-d)),c+o-a>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(n=Pt(r,a),i=0;i<a;i++)s=d+i,s in r&&fo(n,i,r[s]);if(n.length=a,o<a){for(i=d;i<c-a;i++)s=i+a,l=i+o,s in r?r[l]=r[s]:delete r[l];for(i=c;i>c-a+o;i--)delete r[i-1]}else if(o>a)for(i=c-a;i>d;i--)s=i+a-1,l=i+o-1,s in r?r[l]=r[s]:delete r[l];for(i=0;i<o;i++)r[i+d]=arguments[i+2];return r.length=c-a+o,n}});var xa=function(e,t,o){var a,n;return Zo&&"function"==typeof(a=t.constructor)&&a!==o&&U(n=a.prototype)&&n!==o.prototype&&Zo(e,n),e},ka="\t\n\x0B\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF",Ta="["+ka+"]",Pa=RegExp("^"+Ta+Ta+"*"),Oa=RegExp(Ta+Ta+"*$"),Ca=function(e){return function(t){var o=H(t)+"";return 1&e&&(o=o.replace(Pa,"")),2&e&&(o=o.replace(Oa,"")),o}},Ia={start:Ca(1),end:Ca(2),trim:Ca(3)},$a=Le.f,Aa=Z.f,Ea=ae.f,Ra=Ia.trim,_a="Number",Na=C[_a],Fa=Na.prototype,Da=L(lt(Fa))==_a,La=function(e){var t,o,a,n,i,s,l,r,c=q(e,!1);if("string"==typeof c&&2<c.length)if(c=Ra(c),t=c.charCodeAt(0),43===t||45===t){if(o=c.charCodeAt(2),88===o||120===o)return NaN;}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:a=2,n=49;break;case 79:case 111:a=8,n=55;break;default:return+c;}for(i=c.slice(2),s=i.length,l=0;l<s;l++)if(r=i.charCodeAt(l),48>r||r>n)return NaN;return parseInt(i,a)}return+c};if(Ye(_a,!Na(" 0o1")||!Na("0b1")||Na("+0x1"))){for(var Va,Ba=function(e){var t=1>arguments.length?0:e,o=this;return o instanceof Ba&&(Da?I(function(){Fa.valueOf.call(o)}):L(o)!=_a)?xa(new Na(La(t)),o,Ba):La(t)},Ha=A?$a(Na):["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","EPSILON","isFinite","isInteger","isNaN","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","parseInt","isInteger"],ja=0;Ha.length>ja;ja++)G(Na,Va=Ha[ja])&&!G(Ba,Va)&&Ea(Ba,Va,Aa(Na,Va));Ba.prototype=Fa,Fa.constructor=Ba,ke(C,_a,Ba)}var Ma=Object.assign,Ua=!Ma||I(function(){var e={},t={},o=Symbol(),a="abcdefghijklmnopqrst";return e[o]=7,a.split("").forEach(function(e){t[e]=e}),7!=Ma({},e)[o]||et(Ma({},t)).join("")!=a})?function(e){for(var t=Ze(e),o=arguments.length,a=1,n=Be.f,i=f.f;o>a;)for(var s,l=B(arguments[a++]),r=n?et(l).concat(n(l)):et(l),c=r.length,d=0;c>d;)s=r[d++],(!A||i.call(l,s))&&(t[s]=l[s]);return t}:Ma;Xe({target:"Object",stat:!0,forced:Object.assign!==Ua},{assign:Ua});var qa=f.f,za=function(e){return function(t){for(var o,a=M(t),n=et(a),s=n.length,l=0,r=[];s>l;)o=n[l++],(!A||qa.call(a,o))&&r.push(e?[o,a[o]]:a[o]);return r}},Ga={entries:za(!0),values:za(!1)},Wa=Ga.entries;Xe({target:"Object",stat:!0},{entries:function(e){return Wa(e)}});var Ya=ft("toStringTag"),Ka="Arguments"==L(function(){return arguments}()),Xa=function(e,t){try{return e[t]}catch(e){}},Qa=function(e){var t,o,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(o=Xa(t=Object(e),Ya))?o:Ka?L(t):"Object"==(a=L(t))&&"function"==typeof t.callee?"Arguments":a},Ja=ft("toStringTag"),Za={};Za[Ja]="z";var en=function(){return"[object "+Qa(this)+"]"},tn=Object.prototype;en!==tn.toString&&ke(tn,"toString",en,{unsafe:!0});var on=Ia.trim,an=C.parseFloat,nn=1/an(ka+"-0")!=-Infinity,sn=nn?function(e){var t=on(e+""),o=an(t);return 0===o&&"-"==t.charAt(0)?-0:o}:an;Xe({global:!0,forced:parseFloat!=sn},{parseFloat:sn});var ln=Ia.trim,rn=C.parseInt,cn=/^[+-]?0[Xx]/,dn=8!==rn(ka+"08")||22!==rn(ka+"0x16"),pn=dn?function(e,t){var o=ln(e+"");return rn(o,t>>>0||(cn.test(o)?16:10))}:rn;Xe({global:!0,forced:parseInt!=pn},{parseInt:pn});var un=function(){var e=ee(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},hn="toString",gn=RegExp.prototype,fn=gn[hn],mn=I(function(){return"/a/b"!=fn.call({source:"a",flags:"b"})}),bn=fn.name!=hn;(mn||bn)&&ke(RegExp.prototype,hn,function(){var e=ee(this),t=e.source+"",o=e.flags,a=(void 0===o&&e instanceof RegExp&&!("flags"in gn)?un.call(e):o)+"";return"/"+t+"/"+a},{unsafe:!0});var yn=ft("match"),wn=function(e){var t;return U(e)&&(void 0===(t=e[yn])?"RegExp"==L(e):!!t)},vn=function(e){if(wn(e))throw TypeError("The method doesn't accept regular expressions");return e},Sn=ft("match");Xe({target:"String",proto:!0,forced:!function(e){var t=/./;try{"/./"[e](t)}catch(o){try{return t[Sn]=!1,"/./"[e](t)}catch(e){}}return!1}("includes")},{includes:function(e){return!!~(H(this)+"").indexOf(vn(e),1<arguments.length?arguments[1]:void 0)}});var xn=function(e){return function(t,o){var a,n,i=H(t)+"",s=Ce(o),l=i.length;return 0>s||s>=l?e?"":void 0:(a=i.charCodeAt(s),55296>a||56319<a||s+1===l||56320>(n=i.charCodeAt(s+1))||57343<n?e?i.charAt(s):a:e?i.slice(s,s+2):(a-55296<<10)+(n-56320)+65536)}},kn={codeAt:xn(!1),charAt:xn(!0)},Tn=kn.charAt,Pn="String Iterator",On=xe.set,Cn=xe.getterFor(Pn);la(String,"String",function(e){On(this,{type:Pn,string:e+"",index:0})},function(){var e,t=Cn(this),o=t.string,a=t.index;return a>=o.length?{value:void 0,done:!0}:(e=Tn(o,a),t.index+=e.length,{value:e,done:!1})});var In=RegExp.prototype.exec,$n=m.replace,An=In,En=function(){var e=/a/,t=/b*/g;return In.call(e,"a"),In.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),Rn=void 0!==/()??/.exec("")[1];(En||Rn)&&(An=function(e){var t,o,a,n,s=this;return Rn&&(o=new RegExp("^"+s.source+"$(?!\\s)",un.call(s))),En&&(t=s.lastIndex),a=In.call(s,e),En&&a&&(s.lastIndex=s.global?a.index+a[0].length:t),Rn&&a&&1<a.length&&$n.call(a[0],o,function(){for(n=1;n<arguments.length-2;n++)void 0===arguments[n]&&(a[n]=void 0)}),a});var _n=An,Nn=ft("species"),Fn=!I(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}),Dn=!I(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var o="ab".split(e);return 2!==o.length||"a"!==o[0]||"b"!==o[1]}),Ln=function(e,t,o,a){var n=ft(e),i=!I(function(){var t={};return t[n]=function(){return 7},7!=""[e](t)}),s=i&&!I(function(){var t=!1,o=/a/;return o.exec=function(){return t=!0,null},"split"===e&&(o.constructor={},o.constructor[Nn]=function(){return o}),o[n](""),!t});if(!i||!s||"replace"===e&&!Fn||"split"===e&&!Dn){var l=/./[n],r=o(n,""[e],function(e,t,o,a,n){return t.exec===_n?i&&!n?{done:!0,value:l.call(t,o,a)}:{done:!0,value:e.call(o,t,a)}:{done:!1}}),c=r[0],d=r[1];ke(String.prototype,e,c),ke(RegExp.prototype,n,2==t?function(e,t){return d.call(e,this,t)}:function(e){return d.call(e,this)}),a&&ne(RegExp.prototype[n],"sham",!0)}},Vn=kn.charAt,Bn=function(e,t,o){return t+(o?Vn(e,t).length:1)},Hn=function(e,t){var o=e.exec;if("function"==typeof o){var a=o.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==L(e))throw TypeError("RegExp#exec called on incompatible receiver");return _n.call(e,t)},jn=/\$([$&'`]|\d\d?|<[^>]*>)/g,Mn=/\$([$&'`]|\d\d?)/g,Un=function(e){return void 0===e?e:e+""};Ln("replace",2,function(e,t,o){function a(e,o,a,i,s,l){var r=a+e.length,c=i.length,n=Mn;return void 0!==s&&(s=Ze(s),n=jn),t.call(l,n,function(t,l){var d;switch(l.charAt(0)){case"$":return"$";case"&":return e;case"`":return o.slice(0,a);case"'":return o.slice(r);case"<":d=s[l.slice(1,-1)];break;default:var p=+l;if(0==p)return t;if(p>c){var n=w(p/10);return 0===n?t:n<=c?void 0===i[n-1]?l.charAt(1):i[n-1]+l.charAt(1):t}d=i[p-1];}return void 0===d?"":d})}return[function(o,a){var n=H(this),i=null==o?void 0:o[e];return void 0===i?t.call(n+"",o,a):i.call(o,n,a)},function(e,n){var s=o(t,e,this,n);if(s.done)return s.value;var l=ee(e),r=this+"",c="function"==typeof n;c||(n+="");var d=l.global;if(d){var p=l.unicode;l.lastIndex=0}for(var u,h,g=[];(u=Hn(l,r),null!==u)&&(g.push(u),!!d);)h=u[0]+"",""==h&&(l.lastIndex=Bn(r,Ie(l.lastIndex),p));for(var f="",m=0,w=0;w<g.length;w++){u=g[w];for(var v=u[0]+"",S=b(y(Ce(u.index),r.length),0),x=[],k=1;k<u.length;k++)x.push(Un(u[k]));var T=u.groups;if(c){var P=[v].concat(x,S,r);void 0!==T&&P.push(T);var O=n.apply(void 0,P)+""}else O=a(v,r,S,x,T,n);S>=m&&(f+=r.slice(m,S)+O,m=S+v.length)}return f+r.slice(m)}]});var qn=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Ln("search",1,function(e,t,o){return[function(t){var o=H(this),a=null==t?void 0:t[e];return void 0===a?new RegExp(t)[e](o+""):a.call(t,o)},function(e){var a=o(t,e,this);if(a.done)return a.value;var n=ee(e),i=this+"",s=n.lastIndex;qn(s,0)||(n.lastIndex=0);var l=Hn(n,i);return qn(n.lastIndex,s)||(n.lastIndex=s),null===l?-1:l.index}]});var zn=ft("species"),Gn=function(e,t){var o,a=ee(e).constructor;return void 0===a||null==(o=ee(a)[zn])?t:xt(o)},Wn=[].push,Yn=4294967295,Kn=!I(function(){return!RegExp(Yn,"y")});Ln("split",2,function(e,t,o){var a;return a="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||1<".".split(/()()/).length||"".split(/.?/).length?function(e,o){var a=H(this)+"",n=void 0===o?Yn:o>>>0;if(0===n)return[];if(void 0===e)return[a];if(!wn(e))return t.call(a,e,n);for(var i,s,l,r=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,p=new RegExp(e.source,c+"g");(i=_n.call(p,a))&&(s=p.lastIndex,!(s>d&&(r.push(a.slice(d,i.index)),1<i.length&&i.index<a.length&&Wn.apply(r,i.slice(1)),l=i[0].length,d=s,r.length>=n)));)p.lastIndex===i.index&&p.lastIndex++;return d===a.length?(l||!p.test(""))&&r.push(""):r.push(a.slice(d)),r.length>n?r.slice(0,n):r}:function(e,o){return void 0===e&&0===o?[]:t.call(this,e,o)},[function(t,o){var n=H(this),i=null==t?void 0:t[e];return void 0===i?a.call(n+"",t,o):i.call(t,n,o)},function(n,s){var l=o(a,n,this,s,a!==t);if(l.done)return l.value;var r=ee(n),c=this+"",d=Gn(r,RegExp),u=r.unicode,h=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(Kn?"y":"g"),g=new d(Kn?r:"^(?:"+r.source+")",h),f=void 0===s?Yn:s>>>0;if(0===f)return[];if(0===c.length)return null===Hn(g,c)?[c]:[];for(var m=0,b=0,w=[];b<c.length;){g.lastIndex=Kn?b:0;var v,S=Hn(g,Kn?c:c.slice(b));if(null===S||(v=y(Ie(g.lastIndex+(Kn?0:b)),c.length))===m)b=Bn(c,b,u);else{if(w.push(c.slice(m,b)),w.length===f)return w;for(var x=1;x<=S.length-1;x++)if(w.push(S[x]),w.length===f)return w;b=m=v}}return w.push(c.slice(m)),w}]},!Kn);var Xn=Ia.trim;Xe({target:"String",proto:!0,forced:function(e){return I(function(){return!!ka[e]()||"\u200B\x85\u180E"!="\u200B\x85\u180E"[e]()||ka[e].name!==e})}("trim")},{trim:function(){return Xn(this)}});var Qn={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Jn=It.forEach,Zn=Fo("forEach")?function(e){return Jn(this,e,1<arguments.length?arguments[1]:void 0)}:[].forEach;for(var ei in Qn){var ti=C[ei],oi=ti&&ti.prototype;if(oi&&oi.forEach!==Zn)try{ne(oi,"forEach",Zn)}catch(e){oi.forEach=Zn}}var ai=ft("iterator"),ni=ft("toStringTag"),ii=pa.values;for(var si in Qn){var li=C[si],ri=li&&li.prototype;if(ri){if(ri[ai]!==ii)try{ne(ri,ai,ii)}catch(e){ri[ai]=ii}if(ri[ni]||ne(ri,ni,si),Qn[si])for(var ci in pa)if(ri[ci]!==pa[ci])try{ne(ri,ci,pa[ci])}catch(e){ri[ci]=pa[ci]}}}var di=4;try{var pi=t.fn.dropdown.Constructor.VERSION;void 0!==pi&&(di=parseInt(pi,10))}catch(t){}var ui={3:{iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus",fullscreen:"glyphicon-fullscreen",search:"glyphicon-search",clearSearch:"glyphicon-trash"},classes:{buttonsPrefix:"btn",buttons:"default",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"pull",inputGroup:"input-group",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:["<ul class=\"dropdown-menu\" role=\"menu\">","</ul>"],toolbarDropdownItem:"<li role=\"menuitem\"><label>%s</label></li>",toolbarDropdownSeperator:"<li class=\"divider\"></li>",pageDropdown:["<ul class=\"dropdown-menu\" role=\"menu\">","</ul>"],pageDropdownItem:"<li role=\"menuitem\" class=\"%s\"><a href=\"#\">%s</a></li>",dropdownCaret:"<span class=\"caret\"></span>",pagination:["<ul class=\"pagination%s\">","</ul>"],paginationItem:"<li class=\"page-item%s\"><a class=\"page-link\" aria-label=\"%s\" href=\"javascript:void(0)\">%s</a></li>",icon:"<i class=\"%s %s\"></i>",inputGroup:"<div class=\"input-group\">%s<span class=\"input-group-btn\">%s</span></div>",searchInput:"<input class=\"%s%s\" type=\"text\" placeholder=\"%s\">",searchButton:"<button class=\"btn btn-default\" type=\"button\" name=\"search\" title=\"%s\">%s %s</button>",searchClearButton:"<button class=\"btn btn-default\" type=\"button\" name=\"clearSearch\" title=\"%s\">%s %s</button>"}},4:{iconsPrefix:"fa",icons:{paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on",columns:"fa-th-list",detailOpen:"fa-plus",detailClose:"fa-minus",fullscreen:"fa-arrows-alt",search:"fa-search",clearSearch:"fa-trash"},classes:{buttonsPrefix:"btn",buttons:"secondary",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"float",inputGroup:"btn-group",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:["<div class=\"dropdown-menu dropdown-menu-right\">","</div>"],toolbarDropdownItem:"<label class=\"dropdown-item\">%s</label>",pageDropdown:["<div class=\"dropdown-menu\">","</div>"],pageDropdownItem:"<a class=\"dropdown-item %s\" href=\"#\">%s</a>",toolbarDropdownSeperator:"<div class=\"dropdown-divider\"></div>",dropdownCaret:"<span class=\"caret\"></span>",pagination:["<ul class=\"pagination%s\">","</ul>"],paginationItem:"<li class=\"page-item%s\"><a class=\"page-link\" aria-label=\"%s\" href=\"javascript:void(0)\">%s</a></li>",icon:"<i class=\"%s %s\"></i>",inputGroup:"<div class=\"input-group\">%s<div class=\"input-group-append\">%s</div></div>",searchInput:"<input class=\"%s%s\" type=\"text\" placeholder=\"%s\">",searchButton:"<button class=\"btn btn-secondary\" type=\"button\" name=\"search\" title=\"%s\">%s %s</button>",searchClearButton:"<button class=\"btn btn-secondary\" type=\"button\" name=\"clearSearch\" title=\"%s\">%s %s</button>"}}}[di],hi={height:void 0,classes:"table table-bordered table-hover",theadClasses:"",rowStyle:function(){return{}},rowAttributes:function(){return{}},undefinedText:"-",locale:void 0,virtualScroll:!1,virtualScrollItemHeight:void 0,sortable:!0,sortClass:void 0,silentSort:!0,sortName:void 0,sortOrder:"asc",sortStable:!1,rememberOrder:!1,customSort:void 0,columns:[[]],data:[],url:void 0,method:"get",cache:!0,contentType:"application/json",dataType:"json",ajax:void 0,ajaxOptions:{},queryParams:function(e){return e},queryParamsType:"limit",responseHandler:function(e){return e},totalField:"total",totalNotFilteredField:"totalNotFiltered",dataField:"rows",pagination:!1,onlyInfoPagination:!1,showExtendedPagination:!1,paginationLoop:!0,sidePagination:"client",totalRows:0,totalNotFiltered:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"&lsaquo;",paginationNextText:"&rsaquo;",paginationSuccessivelySize:5,paginationPagesBySide:1,paginationUseIntermediate:!1,search:!1,searchOnEnterKey:!1,strictSearch:!1,visibleSearch:!1,showButtonIcons:!0,showButtonText:!1,showSearchButton:!1,showSearchClearButton:!1,trimOnSearch:!0,searchAlign:"right",searchTimeOut:500,searchText:"",customSearch:void 0,showHeader:!0,showFooter:!1,footerStyle:function(){return{}},showColumns:!1,showColumnsToggleAll:!1,minimumCountColumns:1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,showFullscreen:!1,smartDisplay:!0,escape:!1,filterOptions:{filterAlgorithm:"and"},idField:void 0,selectItemName:"btSelectItem",clickToSelect:!1,ignoreClickToSelectOn:function(e){var t=e.tagName;return["A","BUTTON"].includes(t)},singleSelect:!1,checkboxHeader:!0,maintainMetaData:!1,multipleSelectRow:!1,uniqueId:void 0,cardView:!1,detailView:!1,detailViewIcon:!0,detailViewByClick:!1,detailFormatter:function(){return""},detailFilter:function(){return!0},toolbar:void 0,toolbarAlign:"left",buttonsToolbar:void 0,buttonsAlign:"right",buttonsPrefix:ui.classes.buttonsPrefix,buttonsClass:ui.classes.buttons,icons:ui.icons,html:ui.html,iconSize:void 0,iconsPrefix:ui.iconsPrefix,onAll:function(){return!1},onClickCell:function(){return!1},onDblClickCell:function(){return!1},onClickRow:function(){return!1},onDblClickRow:function(){return!1},onSort:function(){return!1},onCheck:function(){return!1},onUncheck:function(){return!1},onCheckAll:function(){return!1},onUncheckAll:function(){return!1},onCheckSome:function(){return!1},onUncheckSome:function(){return!1},onLoadSuccess:function(){return!1},onLoadError:function(){return!1},onColumnSwitch:function(){return!1},onPageChange:function(){return!1},onSearch:function(){return!1},onToggle:function(){return!1},onPreBody:function(){return!1},onPostBody:function(){return!1},onPostHeader:function(){return!1},onPostFooter:function(){return!1},onExpandRow:function(){return!1},onCollapseRow:function(){return!1},onRefreshOptions:function(){return!1},onRefresh:function(){return!1},onResetView:function(){return!1},onScrollBody:function(){return!1}},gi={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(e){return"".concat(e," rows per page")},formatShowingRows:function(e,t,o,a){return void 0!==a&&0<a&&a>o?"Showing ".concat(e," to ").concat(t," of ").concat(o," rows (filtered from ").concat(a," total rows)"):"Showing ".concat(e," to ").concat(t," of ").concat(o," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(e){return"to page ".concat(e)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(e){return"Showing ".concat(e," rows")},formatSearch:function(){return"Search"},formatClearSearch:function(){return"Clear Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"}};Object.assign(hi,gi);var fi={VERSION:"1.15.3",THEME:"bootstrap".concat(di),CONSTANTS:ui,DEFAULTS:hi,COLUMN_DEFAULTS:{field:void 0,title:void 0,titleTooltip:void 0,class:void 0,width:void 0,widthUnit:"px",rowspan:void 0,colspan:void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,cellStyle:void 0,radio:!1,checkbox:!1,checkboxEnabled:!0,clickToSelect:!0,showSelectTitle:!1,sortable:!1,sortName:void 0,order:"asc",sorter:void 0,visible:!0,switchable:!0,cardVisible:!0,searchable:!0,formatter:void 0,footerFormatter:void 0,detailFormatter:void 0,searchFormatter:!0,escape:!1,events:void 0},METHODS:["getOptions","refreshOptions","getData","getSelections","getAllSelections","load","append","prepend","remove","removeAll","insertRow","updateRow","getRowByUniqueId","updateByUniqueId","removeByUniqueId","updateCell","updateCellByUniqueId","showRow","hideRow","getHiddenRows","showColumn","hideColumn","getVisibleColumns","getHiddenColumns","showAllColumns","hideAllColumns","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","destroy","resetView","resetWidth","showLoading","hideLoading","togglePagination","toggleFullscreen","toggleView","resetSearch","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","toggleDetailView","expandRow","collapseRow","expandAllRows","collapseAllRows","updateColumnTitle","updateFormatText"],EVENTS:{"all.bs.table":"onAll","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","post-footer.bs.table":"onPostFooter","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh","scroll-body.bs.table":"onScrollBody"},LOCALES:{en:gi,"en-US":gi}},mi=function(e,t,o,a,n,i,s,l){for(var r,c=n,d=0,p=!!s&&kt(s,l,3);d<a;){if(d in o){if(r=p?p(o[d],d,t):o[d],0<i&&Je(r))c=mi(e,t,r,Ie(r.length),c,i-1)-1;else{if(9007199254740991<=c)throw TypeError("Exceed the acceptable array length");e[c]=r}c++}d++}return c};Xe({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Ze(this),o=Ie(t.length),a=Pt(t,0);return a.length=mi(a,t,t,o,0,void 0===e?1:Ce(e)),a}}),Co("flat");var bi=I(function(){et(1)});Xe({target:"Object",stat:!0,forced:bi},{keys:function(e){return et(Ze(e))}});var yi={sprintf:function(e){for(var t=arguments.length,o=Array(1<t?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];var n=!0,s=0,l=e.replace(/%s/g,function(){var e=o[s++];return"undefined"==typeof e?(n=!1,""):e});return n?l:""},isEmptyObject:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return 0===Object.entries(e).length&&e.constructor===Object},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},getFieldTitle:function(e,t){var o=!0,a=!1,n=void 0;try{for(var i,s,l=e[Symbol.iterator]();!(o=(i=l.next()).done);o=!0)if(s=i.value,s.field===t)return s.title}catch(e){a=!0,n=e}finally{try{o||null==l.return||l.return()}finally{if(a)throw n}}return""},setFieldIndex:function(e){var t=0,o=[],a=!0,n=!1,s=void 0;try{for(var l,c,d=e[0][Symbol.iterator]();!(a=(l=d.next()).done);a=!0)c=l.value,t+=c.colspan||1}catch(e){n=!0,s=e}finally{try{a||null==d.return||d.return()}finally{if(n)throw s}}for(var p=0;p<e.length;p++){o[p]=[];for(var u=0;u<t;u++)o[p][u]=!1}for(var h=0;h<e.length;h++){var g=!0,f=!1,m=void 0;try{for(var b,y=e[h][Symbol.iterator]();!(g=(b=y.next()).done);g=!0){var w=b.value,r=w.rowspan||1,v=w.colspan||1,S=o[h].indexOf(!1);w.colspanIndex=S,1===v?(w.fieldIndex=S,"undefined"==typeof w.field&&(w.field=S)):w.colspanGroup=w.colspan;for(var x=0;x<r;x++)o[h+x][S]=!0;for(var T=0;T<v;T++)o[h][S+T]=!0}}catch(e){f=!0,m=e}finally{try{g||null==y.return||y.return()}finally{if(f)throw m}}}},updateFieldGroup:function(e){var t=e.flat(),o=!0,a=!1,n=void 0;try{for(var s,l=e[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var d=s.value,c=!0,p=!1,u=void 0;try{for(var h,g,f=d[Symbol.iterator]();!(c=(h=f.next()).done);c=!0)if(g=h.value,1<g.colspanGroup){for(var m=0,b=function(e){var o=t.find(function(t){return t.fieldIndex===e});o.visible&&m++},y=g.colspanIndex;y<g.colspanIndex+g.colspanGroup;y++)b(y);g.colspan=m,g.visible=0<m}}catch(e){p=!0,u=e}finally{try{c||null==f.return||f.return()}finally{if(p)throw u}}}}catch(e){a=!0,n=e}finally{try{o||null==l.return||l.return()}finally{if(a)throw n}}},getScrollBarWidth:function(){if(void 0===this.cachedWidth){var e=t("<div/>").addClass("fixed-table-scroll-inner"),o=t("<div/>").addClass("fixed-table-scroll-outer");o.append(e),t("body").append(o);var a=e[0].offsetWidth;o.css("overflow","scroll");var n=e[0].offsetWidth;a===n&&(n=o[0].clientWidth),o.remove(),this.cachedWidth=a-n}return this.cachedWidth},calculateObjectValue:function(e,t,o,n){var i=t;if("string"==typeof t){var s=t.split(".");if(1<s.length){i=window;var l=!0,c=!1,d=void 0;try{for(var p,u,h=s[Symbol.iterator]();!(l=(p=h.next()).done);l=!0)u=p.value,i=i[u]}catch(e){c=!0,d=e}finally{try{l||null==h.return||h.return()}finally{if(c)throw d}}}else i=window[t]}return null!==i&&"object"===a(i)?i:"function"==typeof i?i.apply(e,o||[]):!i&&"string"==typeof t&&this.sprintf.apply(this,[t].concat(r(o)))?this.sprintf.apply(this,[t].concat(r(o))):n},compareObjects:function(e,t,o){var a=Object.keys(e),n=Object.keys(t);if(o&&a.length!==n.length)return!1;for(var i,s=0,l=a;s<l.length;s++)if(i=l[s],n.includes(i)&&e[i]!==t[i])return!1;return!0},escapeHTML:function(e){return"string"==typeof e?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/`/g,"&#x60;"):e},getRealDataAttr:function(e){for(var t=0,o=Object.entries(e);t<o.length;t++){var a=l(o[t],2),n=a[0],i=a[1],s=n.split(/(?=[A-Z])/).join("-").toLowerCase();s!==n&&(e[s]=i,delete e[n])}return e},getItemField:function(e,t,o){var a=e;if("string"!=typeof t||e.hasOwnProperty(t))return o?this.escapeHTML(e[t]):e[t];var n=t.split("."),i=!0,s=!1,l=void 0;try{for(var r,c,d=n[Symbol.iterator]();!(i=(r=d.next()).done);i=!0)c=r.value,a=a&&a[c]}catch(e){s=!0,l=e}finally{try{i||null==d.return||d.return()}finally{if(s)throw l}}return o?this.escapeHTML(a):a},isIEBrowser:function(){return navigator.userAgent.includes("MSIE ")||/Trident.*rv:11\./.test(navigator.userAgent)},findIndex:function(e,t){var o=!0,a=!1,n=void 0;try{for(var i,s,l=e[Symbol.iterator]();!(o=(i=l.next()).done);o=!0)if(s=i.value,JSON.stringify(s)===JSON.stringify(t))return e.indexOf(s)}catch(e){a=!0,n=e}finally{try{o||null==l.return||l.return()}finally{if(a)throw n}}return-1},trToData:function(e,o){var a=this,n=[],i=[];return o.each(function(o,s){var l={};l._id=t(s).attr("id"),l._class=t(s).attr("class"),l._data=a.getRealDataAttr(t(s).data()),t(s).find(">td,>th").each(function(n,s){for(var r=+t(s).attr("colspan")||1,c=+t(s).attr("rowspan")||1,d=n;i[o]&&i[o][d];d++);for(var p=d;p<d+r;p++)for(var u=o;u<o+c;u++)i[u]||(i[u]=[]),i[u][p]=!0;var h=e[d].field;l[h]=t(s).html().trim(),l["_".concat(h,"_id")]=t(s).attr("id"),l["_".concat(h,"_class")]=t(s).attr("class"),l["_".concat(h,"_rowspan")]=t(s).attr("rowspan"),l["_".concat(h,"_colspan")]=t(s).attr("colspan"),l["_".concat(h,"_title")]=t(s).attr("title"),l["_".concat(h,"_data")]=a.getRealDataAttr(t(s).data())}),n.push(l)}),n},sort:function(e,t,o,n){return((void 0===e||null===e)&&(e=""),(void 0===t||null===t)&&(t=""),n&&e===t&&(e=e._position,t=t._position),this.isNumeric(e)&&this.isNumeric(t))?(e=parseFloat(e),t=parseFloat(t),e<t?-1*o:e>t?o:0):e===t?0:("string"!=typeof e&&(e=e.toString()),-1===e.localeCompare(t)?-1*o:o)}},wi=50,vi=4,Si=function(){function e(t){var o=this;n(this,e),this.rows=t.rows,this.scrollEl=t.scrollEl,this.contentEl=t.contentEl,this.callback=t.callback,this.itemHeight=t.itemHeight,this.cache={},this.scrollTop=this.scrollEl.scrollTop,this.initDOM(this.rows),this.scrollEl.scrollTop=this.scrollTop,this.lastCluster=0;var a=function(){o.lastCluster!==(o.lastCluster=o.getNum())&&(o.initDOM(o.rows),o.callback())};this.scrollEl.addEventListener("scroll",a,!1),this.destroy=function(){o.contentEl.innerHtml="",o.scrollEl.removeEventListener("scroll",a,!1)}}return s(e,[{key:"initDOM",value:function(e){"undefined"==typeof this.clusterHeight&&(this.cache.data=this.contentEl.innerHTML=e[0]+e[0]+e[0],this.getRowsHeight(e));var t=this.initData(e,this.getNum()),o=t.rows.join(""),a=this.checkChanges("data",o),n=this.checkChanges("top",t.topOffset),i=this.checkChanges("bottom",t.bottomOffset),s=[];a&&n?(t.topOffset&&s.push(this.getExtra("top",t.topOffset)),s.push(o),t.bottomOffset&&s.push(this.getExtra("bottom",t.bottomOffset)),this.contentEl.innerHTML=s.join("")):i&&(this.contentEl.lastChild.style.height="".concat(t.bottomOffset,"px"))}},{key:"getRowsHeight",value:function(){if("undefined"==typeof this.itemHeight){var e=this.contentEl.children,t=e[w(e.length/2)];this.itemHeight=t.offsetHeight}this.blockHeight=this.itemHeight*wi,this.clusterRows=wi*vi,this.clusterHeight=this.blockHeight*vi}},{key:"getNum",value:function(){return this.scrollTop=this.scrollEl.scrollTop,w(this.scrollTop/(this.clusterHeight-this.blockHeight))||0}},{key:"initData",value:function(e,t){if(e.length<wi)return{topOffset:0,bottomOffset:0,rowsAbove:0,rows:e};var o=b((this.clusterRows-wi)*t,0),a=o+this.clusterRows,n=b(o*this.itemHeight,0),s=b((e.length-a)*this.itemHeight,0),l=[],r=o;1>n&&r++;for(var c=o;c<a;c++)e[c]&&l.push(e[c]);return{topOffset:n,bottomOffset:s,rowsAbove:r,rows:l}}},{key:"checkChanges",value:function(e,t){var o=t!==this.cache[e];return this.cache[e]=t,o}},{key:"getExtra",value:function(e,t){var o=document.createElement("tr");return o.className="virtual-scroll-".concat(e),t&&(o.style.height="".concat(t,"px")),o.outerHTML}}]),e}(),xi=function(){function e(o,a){n(this,e),this.options=a,this.$el=t(o),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0,this.init()}return s(e,[{key:"init",value:function(){this.initConstants(),this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initHiddenRows(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()}},{key:"initConstants",value:function(){var e=this.options;this.constants=fi.CONSTANTS,this.constants.theme=t.fn.bootstrapTable.theme;var o=e.buttonsPrefix?"".concat(e.buttonsPrefix,"-"):"";this.constants.buttonsClass=[e.buttonsPrefix,o+e.buttonsClass,yi.sprintf("".concat(o,"%s"),e.iconSize)].join(" ").trim()}},{key:"initLocale",value:function(){if(this.options.locale){var e=t.fn.bootstrapTable.locales,o=this.options.locale.split(/-|_/);o[0]=o[0].toLowerCase(),o[1]&&(o[1]=o[1].toUpperCase()),e[this.options.locale]?t.extend(this.options,e[this.options.locale]):e[o.join("-")]?t.extend(this.options,e[o.join("-")]):e[o[0]]&&t.extend(this.options,e[o[0]])}}},{key:"initContainer",value:function(){var e=["top","both"].includes(this.options.paginationVAlign)?"<div class=\"fixed-table-pagination clearfix\"></div>":"",o=["bottom","both"].includes(this.options.paginationVAlign)?"<div class=\"fixed-table-pagination\"></div>":"";this.$container=t("\n <div class=\"bootstrap-table ".concat(this.constants.theme,"\">\n <div class=\"fixed-table-toolbar\"></div>\n ").concat(e,"\n <div class=\"fixed-table-container\">\n <div class=\"fixed-table-header\"><table></table></div>\n <div class=\"fixed-table-body\">\n <div class=\"fixed-table-loading\">\n <span class=\"loading-wrap\">\n <span class=\"loading-text\">").concat(this.options.formatLoadingMessage(),"</span>\n <span class=\"animation-wrap\"><span class=\"animation-dot\"></span></span>\n </span>\n </div>\n </div>\n <div class=\"fixed-table-footer\"><table><thead><tr></tr></thead></table></div>\n </div>\n ").concat(o,"\n </div>\n ")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$el.find("tfoot"),this.$toolbar=this.options.buttonsToolbar?t("body").find(this.options.buttonsToolbar):this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after("<div class=\"clearfix\"></div>"),this.$el.addClass(this.options.classes),this.$tableLoading.addClass(this.options.classes),this.options.height?(this.$tableContainer.addClass("fixed-height"),this.options.showFooter&&this.$tableContainer.addClass("has-footer"),this.options.classes.split(" ").includes("table-bordered")&&(this.$tableBody.append("<div class=\"fixed-table-border\"></div>"),this.$tableBorder=this.$tableBody.find(".fixed-table-border"),this.$tableLoading.addClass("fixed-table-border")),this.$tableFooter=this.$container.find(".fixed-table-footer")):!this.$tableFooter.length&&(this.$el.append("<tfoot><tr></tr></tfoot>"),this.$tableFooter=this.$el.find("tfoot"))}},{key:"initTable",value:function(){var o=this,a=[];this.$header=this.$el.find(">thead"),this.$header.length?this.options.theadClasses&&this.$header.addClass(this.options.theadClasses):this.$header=t("<thead class=\"".concat(this.options.theadClasses,"\"></thead>")).appendTo(this.$el),this.$header.find("tr").each(function(e,o){var n=[];t(o).find("th").each(function(e,o){"undefined"!=typeof t(o).data("field")&&t(o).data("field","".concat(t(o).data("field"))),n.push(t.extend({},{title:t(o).html(),class:t(o).attr("class"),titleTooltip:t(o).attr("title"),rowspan:t(o).attr("rowspan")?+t(o).attr("rowspan"):void 0,colspan:t(o).attr("colspan")?+t(o).attr("colspan"):void 0},t(o).data()))}),a.push(n)}),Array.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=t.extend(!0,[],a,this.options.columns),this.columns=[],this.fieldsColumnsIndex=[],yi.setFieldIndex(this.options.columns),this.options.columns.forEach(function(a,n){a.forEach(function(a,i){var s=t.extend({},e.COLUMN_DEFAULTS,a);"undefined"!=typeof s.fieldIndex&&(o.columns[s.fieldIndex]=s,o.fieldsColumnsIndex[s.field]=s.fieldIndex),o.options.columns[n][i]=s})}),this.options.data.length||(this.options.data=yi.trToData(this.columns,this.$el.find(">tbody>tr")),[].length&&(this.fromHtml=!0)),this.footerData=yi.trToData(this.columns,this.$el.find(">tfoot>tr")),this.footerData&&this.$el.find("tfoot").html("<tr></tr>"),!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()}},{key:"initHeader",value:function(){var o=this,a={},n=[];this.header={fields:[],styles:[],classes:[],formatters:[],detailFormatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},yi.updateFieldGroup(this.options.columns),this.options.columns.forEach(function(e,t){n.push("<tr>"),0===t&&!o.options.cardView&&o.options.detailView&&o.options.detailViewIcon&&n.push("<th class=\"detail\" rowspan=\"".concat(o.options.columns.length,"\">\n <div class=\"fht-cell\"></div>\n </th>\n ")),e.forEach(function(e,i){if(e.visible){var s=yi.sprintf(" class=\"%s\"",e["class"]),l=e.widthUnit,r=parseFloat(e.width),c=yi.sprintf("text-align: %s; ",e.halign?e.halign:e.align),d=yi.sprintf("text-align: %s; ",e.align),p=yi.sprintf("vertical-align: %s; ",e.valign);if(p+=yi.sprintf("width: %s; ",(e.checkbox||e.radio)&&!r?e.showSelectTitle?void 0:"36px":r?r+l:void 0),"undefined"!=typeof e.fieldIndex){if(o.header.fields[e.fieldIndex]=e.field,o.header.styles[e.fieldIndex]=d+p,o.header.classes[e.fieldIndex]=s,o.header.formatters[e.fieldIndex]=e.formatter,o.header.detailFormatters[e.fieldIndex]=e.detailFormatter,o.header.events[e.fieldIndex]=e.events,o.header.sorters[e.fieldIndex]=e.sorter,o.header.sortNames[e.fieldIndex]=e.sortName,o.header.cellStyles[e.fieldIndex]=e.cellStyle,o.header.searchables[e.fieldIndex]=e.searchable,o.options.cardView&&!e.cardVisible)return;a[e.field]=e}n.push("<th".concat(yi.sprintf(" title=\"%s\"",e.titleTooltip)),e.checkbox||e.radio?yi.sprintf(" class=\"bs-checkbox %s\"",e["class"]||""):s,yi.sprintf(" style=\"%s\"",c+p),yi.sprintf(" rowspan=\"%s\"",e.rowspan),yi.sprintf(" colspan=\"%s\"",e.colspan),yi.sprintf(" data-field=\"%s\"",e.field),0===i&&0<t?" data-not-first-th":"",">"),n.push(yi.sprintf("<div class=\"th-inner %s\">",o.options.sortable&&e.sortable?"sortable both":""));var u=o.options.escape?yi.escapeHTML(e.title):e.title,h=u;e.checkbox&&(u="",!o.options.singleSelect&&o.options.checkboxHeader&&(u="<label><input name=\"btSelectAll\" type=\"checkbox\" /><span></span></label>"),o.header.stateField=e.field),e.radio&&(u="",o.header.stateField=e.field,o.options.singleSelect=!0),!u&&e.showSelectTitle&&(u+=h),n.push(u),n.push("</div>"),n.push("<div class=\"fht-cell\"></div>"),n.push("</div>"),n.push("</th>")}}),n.push("</tr>")}),this.$header.html(n.join("")),this.$header.find("th[data-field]").each(function(e,o){t(o).data(a[t(o).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(a){var e=t(a.currentTarget);return(!o.options.detailView||e.parent().hasClass("bs-checkbox")||e.closest(".bootstrap-table")[0]===o.$container[0])&&void(o.options.sortable&&e.parent().data().sortable&&o.onSort(a))}),this.$header.children().children().off("keypress").on("keypress",function(a){if(o.options.sortable&&t(a.currentTarget).data().sortable){var e=a.keyCode||a.which;13===e&&o.onSort(a)}});var i="resize.bootstrap-table".concat(this.$el.attr("id")||"");t(window).off(i),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),t(window).on(i,function(t){return o.resetWidth(t)})),this.$selectAll=this.$header.find("[name=\"btSelectAll\"]"),this.$selectAll.off("click").on("click",function(e){var a=e.currentTarget,n=t(a).prop("checked");o[n?"checkAll":"uncheckAll"](),o.updateSelected()})}},{key:"initData",value:function(e,t){this.options.data="append"===t?this.options.data.concat(e):"prepend"===t?[].concat(e).concat(this.options.data):e||this.options.data,this.data=this.options.data,"server"===this.options.sidePagination||this.initSort()}},{key:"initSort",value:function(){var e=this,t=this.options.sortName,o="desc"===this.options.sortOrder?-1:1,n=this.header.fields.indexOf(this.options.sortName),i=0;-1!==n&&(this.options.sortStable&&this.data.forEach(function(e,t){e.hasOwnProperty("_position")||(e._position=t)}),this.options.customSort?yi.calculateObjectValue(this.options,this.options.customSort,[this.options.sortName,this.options.sortOrder,this.data]):this.data.sort(function(i,a){e.header.sortNames[n]&&(t=e.header.sortNames[n]);var s=yi.getItemField(i,t,e.options.escape),l=yi.getItemField(a,t,e.options.escape),r=yi.calculateObjectValue(e.header,e.header.sorters[n],[s,l,i,a]);return void 0===r?yi.sort(s,l,o,e.options.sortStable):e.options.sortStable&&0===r?o*(i._position-a._position):o*r}),void 0!==this.options.sortClass&&(clearTimeout(i),i=setTimeout(function(){e.$el.removeClass(e.options.sortClass);var t=e.$header.find("[data-field=\"".concat(e.options.sortName,"\"]")).index();e.$el.find("tr td:nth-child(".concat(t+1,")")).addClass(e.options.sortClass)},250)))}},{key:"onSort",value:function(e){var o=e.type,a=e.currentTarget,n="keypress"===o?t(a):t(a).parent(),i=this.$header.find("th").eq(n.index());return this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===n.data("field")?this.options.sortOrder="asc"===this.options.sortOrder?"desc":"asc":(this.options.sortName=n.data("field"),this.options.sortOrder=this.options.rememberOrder?"asc"===n.data("order")?"desc":"asc":this.columns[this.fieldsColumnsIndex[n.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[n.data("field")]].order),this.trigger("sort",this.options.sortName,this.options.sortOrder),n.add(i).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination?(this.options.pageNumber=1,void this.initServer(this.options.silentSort)):void(this.initSort(),this.initBody())}},{key:"initToolbar",value:function(){var e,n,s=this,l=this.options,o=[],i=0,r=0;if(this.$toolbar.find(".bs-bars").children().length&&t("body").append(t(l.toolbar)),this.$toolbar.html(""),("string"==typeof l.toolbar||"object"===a(l.toolbar))&&t(yi.sprintf("<div class=\"bs-bars %s-%s\"></div>",this.constants.classes.pull,l.toolbarAlign)).appendTo(this.$toolbar).append(t(l.toolbar)),o=["<div class=\"".concat(["columns","columns-".concat(l.buttonsAlign),this.constants.classes.buttonsGroup,"".concat(this.constants.classes.pull,"-").concat(l.buttonsAlign)].join(" "),"\">")],"string"==typeof l.icons&&(l.icons=yi.calculateObjectValue(null,l.icons)),l.showPaginationSwitch&&o.push("<button class=\"".concat(this.constants.buttonsClass,"\" type=\"button\" name=\"paginationSwitch\"\n aria-label=\"Pagination Switch\" title=\"").concat(l.formatPaginationSwitch(),"\">\n ").concat(l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.paginationSwitchDown):"","\n ").concat(l.showButtonText?l.formatPaginationSwitchUp():"","\n </button>")),l.showRefresh&&o.push("<button class=\"".concat(this.constants.buttonsClass,"\" type=\"button\" name=\"refresh\"\n aria-label=\"Refresh\" title=\"").concat(l.formatRefresh(),"\">\n ").concat(l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.refresh):"","\n ").concat(l.showButtonText?l.formatRefresh():"","\n </button>")),l.showToggle&&o.push("<button class=\"".concat(this.constants.buttonsClass,"\" type=\"button\" name=\"toggle\"\n aria-label=\"Toggle\" title=\"").concat(l.formatToggle(),"\">\n ").concat(l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.toggleOff):"","\n ").concat(l.showButtonText?l.formatToggleOn():"","\n </button>")),l.showFullscreen&&o.push("<button class=\"".concat(this.constants.buttonsClass,"\" type=\"button\" name=\"fullscreen\"\n aria-label=\"Fullscreen\" title=\"").concat(l.formatFullscreen(),"\">\n ").concat(l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.fullscreen):"","\n ").concat(l.showButtonText?l.formatFullscreen():"","\n </button>")),l.showColumns){if(o.push("<div class=\"keep-open ".concat(this.constants.classes.buttonsDropdown,"\" title=\"").concat(l.formatColumns(),"\">\n <button class=\"").concat(this.constants.buttonsClass," dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\"\n aria-label=\"Columns\" title=\"").concat(l.formatColumns(),"\">\n ").concat(l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.columns):"","\n ").concat(l.showButtonText?l.formatColumns():"","\n ").concat(this.constants.html.dropdownCaret,"\n </button>\n ").concat(this.constants.html.toolbarDropdown[0])),l.showColumnsToggleAll){var c=this.getVisibleColumns().length===this.columns.length;o.push(yi.sprintf(this.constants.html.toolbarDropdownItem,yi.sprintf("<input type=\"checkbox\" class=\"toggle-all\" %s> <span>%s</span>",c?"checked=\"checked\"":"",l.formatColumnsToggleAll()))),o.push(this.constants.html.toolbarDropdownSeperator)}this.columns.forEach(function(e,t){if(!(e.radio||e.checkbox)&&(!l.cardView||e.cardVisible)){var a=e.visible?" checked=\"checked\"":"";e.switchable&&(o.push(yi.sprintf(s.constants.html.toolbarDropdownItem,yi.sprintf("<input type=\"checkbox\" data-field=\"%s\" value=\"%s\"%s> <span>%s</span>",e.field,t,a,e.title))),r++)}}),o.push(this.constants.html.toolbarDropdown[1],"</div>")}if(o.push("</div>"),(this.showToolbar||2<o.length)&&this.$toolbar.append(o.join("")),l.showPaginationSwitch&&this.$toolbar.find("button[name=\"paginationSwitch\"]").off("click").on("click",function(){return s.togglePagination()}),l.showFullscreen&&this.$toolbar.find("button[name=\"fullscreen\"]").off("click").on("click",function(){return s.toggleFullscreen()}),l.showRefresh&&this.$toolbar.find("button[name=\"refresh\"]").off("click").on("click",function(){return s.refresh()}),l.showToggle&&this.$toolbar.find("button[name=\"toggle\"]").off("click").on("click",function(){s.toggleView()}),l.showColumns){e=this.$toolbar.find(".keep-open");var d=e.find("input:not(\".toggle-all\")"),p=e.find("input.toggle-all");r<=l.minimumCountColumns&&e.find("input").prop("disabled",!0),e.find("li, label").off("click").on("click",function(t){t.stopImmediatePropagation()}),d.off("click").on("click",function(e){var o=e.currentTarget,a=t(o);s._toggleColumn(a.val(),a.prop("checked"),!1),s.trigger("column-switch",a.data("field"),a.prop("checked")),p.prop("checked",d.filter(":checked").length===s.columns.length)}),p.off("click").on("click",function(e){var o=e.currentTarget;s._toggleAllColumns(t(o).prop("checked"))})}if(l.search){o=[];var u=yi.sprintf(this.constants.html.searchButton,l.formatSearch(),l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.search):"",l.showButtonText?l.formatSearch():""),h=yi.sprintf(this.constants.html.searchClearButton,l.formatClearSearch(),l.showButtonIcons?yi.sprintf(this.constants.html.icon,l.iconsPrefix,l.icons.clearSearch):"",l.showButtonText?l.formatClearSearch():""),g="<input class=\"".concat(this.constants.classes.input).concat(yi.sprintf(" input-%s",l.iconSize)," search-input\" type=\"text\" placeholder=\"").concat(l.formatSearch(),"\">"),f=g;(l.showSearchButton||l.showSearchClearButton)&&(f=yi.sprintf(this.constants.html.inputGroup,g,(l.showSearchButton?u:"")+(l.showSearchClearButton?h:""))),o.push(yi.sprintf("\n <div class=\"".concat(this.constants.classes.pull,"-").concat(l.searchAlign," search ").concat(this.constants.classes.inputGroup,"\">\n %s\n </div>\n "),f)),this.$toolbar.append(o.join(""));var m=this.$toolbar.find(".search input");n=l.showSearchButton?this.$toolbar.find(".search button[name=search]"):m;var b=l.showSearchButton?"click":yi.isIEBrowser()?"mouseup":"keyup drop blur";n.off(b).on(b,function(e){l.searchOnEnterKey&&13!==e.keyCode||[37,38,39,40].includes(e.keyCode)||(clearTimeout(i),i=setTimeout(function(){s.onSearch(l.showSearchButton?{currentTarget:m}:e)},l.searchTimeOut))}),l.showSearchClearButton&&this.$toolbar.find(".search button[name=clearSearch]").click(function(){s.resetSearch(),s.onSearch({currentTarget:s.$toolbar.find(".search input")})})}}},{key:"onSearch",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.currentTarget,a=e.firedByInitSearchText,n=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(void 0!==o&&n){var i=t(o).val().trim();if(this.options.trimOnSearch&&t(o).val()!==i&&t(o).val(i),this.searchText===i)return;t(o).hasClass("search-input")&&(this.searchText=i,this.options.searchText=i)}a||(this.options.pageNumber=1),this.initSearch(),a?"client"===this.options.sidePagination&&this.updatePagination():this.updatePagination(),this.trigger("search",this.searchText)}},{key:"initSearch",value:function(){var e=this;if(this.filterOptions=this.filterOptions||this.options.filterOptions,"server"!==this.options.sidePagination){if(this.options.customSearch)return void(this.data=yi.calculateObjectValue(this.options,this.options.customSearch,[this.options.data,this.searchText]));var t=this.searchText&&(this.options.escape?yi.escapeHTML(this.searchText):this.searchText).toLowerCase(),o=yi.isEmptyObject(this.filterColumns)?null:this.filterColumns;"function"==typeof this.filterOptions.filterAlgorithm?this.data=this.options.data.filter(function(t){return e.filterOptions.filterAlgorithm.apply(null,[t,o])}):"string"==typeof this.filterOptions.filterAlgorithm&&(this.data=o?this.options.data.filter(function(t){var a=e.filterOptions.filterAlgorithm;if("and"===a){for(var n in o)if(Array.isArray(o[n])&&!o[n].includes(t[n])||!Array.isArray(o[n])&&t[n]!==o[n])return!1;}else if("or"===a){var i=!1;for(var s in o)(Array.isArray(o[s])&&o[s].includes(t[s])||!Array.isArray(o[s])&&t[s]===o[s])&&(i=!0);return i}return!0}):this.options.data);var a=this.getVisibleFields();this.data=t?this.data.filter(function(o,n){for(var i=0;i<e.header.fields.length;i++)if(e.header.searchables[i]&&(!e.options.visibleSearch||-1!==a.indexOf(e.header.fields[i]))){var s=yi.isNumeric(e.header.fields[i])?parseInt(e.header.fields[i],10):e.header.fields[i],l=e.columns[e.fieldsColumnsIndex[s]],r=void 0;if("string"==typeof s){r=o;for(var c=s.split("."),d=0;d<c.length;d++)null!==r[c[d]]&&(r=r[c[d]])}else r=o[s];if(l&&l.searchFormatter&&(r=yi.calculateObjectValue(l,e.header.formatters[i],[r,o,n,l.field],r)),"string"==typeof r||"number"==typeof r)if(!e.options.strictSearch){var p=/(?:(<=|=>|=<|>=|>|<)(?:\s+)?(\d+)?|(\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm,u=p.exec(t),h=!1;if(u){var g=u[1]||"".concat(u[5],"l"),f=u[2]||u[3],m=parseInt(r,10),b=parseInt(f,10);switch(g){case">":case"<l":h=m>b;break;case"<":case">l":h=m<b;break;case"<=":case"=<":case">=l":case"=>l":h=m<=b;break;case">=":case"=>":case"<=l":case"=<l":h=m>=b;break;default:}}if(h||"".concat(r).toLowerCase().includes(t))return!0}else if("".concat(r).toLowerCase()===t)return!0}return!1}):this.data}}},{key:"initPagination",value:function(){var e=Math.round,t=this,a=this.options;if(!a.pagination)return void this.$pagination.hide();this.$pagination.show();var o,n,s,l,r,c,d,p=[],u=!1,h=this.getData({includeHiddenRows:!1}),g=a.pageList;if("server"!==a.sidePagination&&(a.totalRows=h.length),this.totalPages=0,a.totalRows){if(a.pageSize===a.formatAllRows())a.pageSize=a.totalRows,u=!0;else if(a.pageSize===a.totalRows){var f="string"==typeof a.pageList?a.pageList.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):a.pageList;f.includes(a.formatAllRows().toLowerCase())&&(u=!0)}this.totalPages=~~((a.totalRows-1)/a.pageSize)+1,a.totalPages=this.totalPages}0<this.totalPages&&a.pageNumber>this.totalPages&&(a.pageNumber=this.totalPages),this.pageFrom=(a.pageNumber-1)*a.pageSize+1,this.pageTo=a.pageNumber*a.pageSize,this.pageTo>a.totalRows&&(this.pageTo=a.totalRows),this.options.pagination&&"server"!==this.options.sidePagination&&(this.options.totalNotFiltered=this.options.data.length),this.options.showExtendedPagination||(this.options.totalNotFiltered=void 0);var m=a.onlyInfoPagination?a.formatDetailPagination(a.totalRows):a.formatShowingRows(this.pageFrom,this.pageTo,a.totalRows,a.totalNotFiltered);if(p.push("<div class=\"".concat(this.constants.classes.pull,"-").concat(a.paginationDetailHAlign," pagination-detail\">\n <span class=\"pagination-info\">\n ").concat(m,"\n </span>")),!a.onlyInfoPagination){p.push("<span class=\"page-list\">");var b=["<span class=\"".concat(this.constants.classes.paginationDropdown,"\">\n <button class=\"").concat(this.constants.buttonsClass," dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\">\n <span class=\"page-size\">\n ").concat(u?a.formatAllRows():a.pageSize,"\n </span>\n ").concat(this.constants.html.dropdownCaret,"\n </button>\n ").concat(this.constants.html.pageDropdown[0])];if("string"==typeof a.pageList){var y=a.pageList.replace("[","").replace("]","").replace(/ /g,"").split(",");g=[];var w=!0,v=!1,S=void 0;try{for(var x,k,T=y[Symbol.iterator]();!(w=(x=T.next()).done);w=!0)k=x.value,g.push(k.toLowerCase()===a.formatAllRows().toLowerCase()||["all","unlimited"].includes(k.toLowerCase())?a.formatAllRows():+k)}catch(e){v=!0,S=e}finally{try{w||null==T.return||T.return()}finally{if(v)throw S}}}g.forEach(function(e,o){if(!a.smartDisplay||0===o||g[o-1]<a.totalRows){var n;n=u?e===a.formatAllRows()?t.constants.classes.dropdownActive:"":e===a.pageSize?t.constants.classes.dropdownActive:"",b.push(yi.sprintf(t.constants.html.pageDropdownItem,n,e))}}),b.push("".concat(this.constants.html.pageDropdown[1],"</span>")),p.push(a.formatRecordsPerPage(b.join(""))),p.push("</span></div>"),p.push("<div class=\"".concat(this.constants.classes.pull,"-").concat(a.paginationHAlign," pagination\">"),yi.sprintf(this.constants.html.pagination[0],yi.sprintf(" pagination-%s",a.iconSize)),yi.sprintf(this.constants.html.paginationItem," page-pre",a.formatSRPaginationPreText(),a.paginationPreText)),this.totalPages<a.paginationSuccessivelySize?(n=1,s=this.totalPages):(n=a.pageNumber-a.paginationPagesBySide,s=n+2*a.paginationPagesBySide),a.pageNumber<a.paginationSuccessivelySize-1&&(s=a.paginationSuccessivelySize),a.paginationSuccessivelySize>this.totalPages-n&&(n=n-(a.paginationSuccessivelySize-(this.totalPages-n))+1),1>n&&(n=1),s>this.totalPages&&(s=this.totalPages);var P=e(a.paginationPagesBySide/2),O=function(e){var o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return yi.sprintf(t.constants.html.paginationItem,o+(e===a.pageNumber?" ".concat(t.constants.classes.paginationActive):""),a.formatSRPaginationPageText(e),e)};if(1<n){var C=a.paginationPagesBySide;for(C>=n&&(C=n-1),o=1;o<=C;o++)p.push(O(o));n-1===C+1?(o=n-1,p.push(O(o))):n-1>C&&(n-2*a.paginationPagesBySide>a.paginationPagesBySide&&a.paginationUseIntermediate?(o=e((n-P)/2+P),p.push(O(o," page-intermediate"))):p.push(yi.sprintf(this.constants.html.paginationItem," page-first-separator disabled","","...")))}for(o=n;o<=s;o++)p.push(O(o));if(this.totalPages>s){var I=this.totalPages-(a.paginationPagesBySide-1);for(s>=I&&(I=s+1),s+1===I-1?(o=s+1,p.push(O(o))):I>s+1&&(this.totalPages-s>2*a.paginationPagesBySide&&a.paginationUseIntermediate?(o=e((this.totalPages-P-s)/2+s),p.push(O(o," page-intermediate"))):p.push(yi.sprintf(this.constants.html.paginationItem," page-last-separator disabled","","..."))),o=I;o<=this.totalPages;o++)p.push(O(o))}p.push(yi.sprintf(this.constants.html.paginationItem," page-next",a.formatSRPaginationNextText(),a.paginationNextText)),p.push(this.constants.html.pagination[1],"</div>")}this.$pagination.html(p.join(""));var $=["bottom","both"].includes(a.paginationVAlign)?" ".concat(this.constants.classes.dropup):"";this.$pagination.last().find(".page-list > span").addClass($),a.onlyInfoPagination||(l=this.$pagination.find(".page-list a"),r=this.$pagination.find(".page-pre"),c=this.$pagination.find(".page-next"),d=this.$pagination.find(".page-item").not(".page-next, .page-pre, .page-last-separator, .page-first-separator"),1>=this.totalPages&&this.$pagination.find("div.pagination").hide(),a.smartDisplay&&(2>g.length||a.totalRows<=g[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"](),!a.paginationLoop&&(1===a.pageNumber&&r.addClass("disabled"),a.pageNumber===this.totalPages&&c.addClass("disabled")),u&&(a.pageSize=a.formatAllRows()),l.off("click").on("click",function(o){return t.onPageListChange(o)}),r.off("click").on("click",function(o){return t.onPagePre(o)}),c.off("click").on("click",function(o){return t.onPageNext(o)}),d.off("click").on("click",function(o){return t.onPageNumber(o)}))}},{key:"updatePagination",value:function(e){e&&t(e.currentTarget).hasClass("disabled")||(!this.options.maintainMetaData&&this.resetRows(),this.initPagination(),"server"===this.options.sidePagination?this.initServer():this.initBody(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize))}},{key:"onPageListChange",value:function(e){e.preventDefault();var o=t(e.currentTarget);return o.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive),this.options.pageSize=o.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+o.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(e),!1}},{key:"onPagePre",value:function(e){return e.preventDefault(),0==this.options.pageNumber-1?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(e),!1}},{key:"onPageNext",value:function(e){return e.preventDefault(),this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(e),!1}},{key:"onPageNumber",value:function(e){if(e.preventDefault(),this.options.pageNumber!==+t(e.currentTarget).text())return this.options.pageNumber=+t(e.currentTarget).text(),this.updatePagination(e),!1}},{key:"initRow",value:function(e,t){var o=this,n=[],i={},s=[],r="",c={},d=[];if(!(-1<yi.findIndex(this.hiddenRows,e))){if(i=yi.calculateObjectValue(this.options,this.options.rowStyle,[e,t],i),i&&i.css)for(var p=0,u=Object.entries(i.css);p<u.length;p++){var h=l(u[p],2),g=h[0],f=h[1];s.push("".concat(g,": ").concat(f))}if(c=yi.calculateObjectValue(this.options,this.options.rowAttributes,[e,t],c),c)for(var m=0,b=Object.entries(c);m<b.length;m++){var y=l(b[m],2),g=y[0],f=y[1];d.push("".concat(g,"=\"").concat(yi.escapeHTML(f),"\""))}if(e._data&&!yi.isEmptyObject(e._data))for(var w=0,S=Object.entries(e._data);w<S.length;w++){var x=l(S[w],2),T=x[0],k=x[1];if("index"===T)return;r+=" data-".concat(T,"='").concat("object"===a(k)?JSON.stringify(k):k,"'")}return n.push("<tr",yi.sprintf(" %s",d.length?d.join(" "):void 0),yi.sprintf(" id=\"%s\"",Array.isArray(e)?void 0:e._id),yi.sprintf(" class=\"%s\"",i.classes||(Array.isArray(e)?void 0:e._class))," data-index=\"".concat(t,"\""),yi.sprintf(" data-uniqueid=\"%s\"",yi.getItemField(e,this.options.uniqueId,!1)),yi.sprintf(" data-has-detail-view=\"%s\"",!this.options.cardView&&this.options.detailView&&yi.calculateObjectValue(null,this.options.detailFilter,[t,e])?"true":void 0),yi.sprintf("%s",r),">"),this.options.cardView&&n.push("<td colspan=\"".concat(this.header.fields.length,"\"><div class=\"card-views\">")),!this.options.cardView&&this.options.detailView&&this.options.detailViewIcon&&(n.push("<td>"),yi.calculateObjectValue(null,this.options.detailFilter,[t,e])&&n.push("\n <a class=\"detail-icon\" href=\"#\">\n ".concat(yi.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen),"\n </a>\n ")),n.push("</td>")),this.header.fields.forEach(function(a,i){var r="",d=yi.getItemField(e,a,o.options.escape),p="",u="",h={},g="",f=o.header.classes[i],m="",b="",y="",w="",S="",x=o.columns[i];if((!o.fromHtml||"undefined"!=typeof d||x.checkbox||x.radio)&&x.visible&&(!o.options.cardView||x.cardVisible)){if(x.escape&&(d=yi.escapeHTML(d)),s.concat([o.header.styles[i]]).length&&(m=" style=\"".concat(s.concat([o.header.styles[i]]).join("; "),"\"")),e["_".concat(a,"_id")]&&(g=yi.sprintf(" id=\"%s\"",e["_".concat(a,"_id")])),e["_".concat(a,"_class")]&&(f=yi.sprintf(" class=\"%s\"",e["_".concat(a,"_class")])),e["_".concat(a,"_rowspan")]&&(y=yi.sprintf(" rowspan=\"%s\"",e["_".concat(a,"_rowspan")])),e["_".concat(a,"_colspan")]&&(w=yi.sprintf(" colspan=\"%s\"",e["_".concat(a,"_colspan")])),e["_".concat(a,"_title")]&&(S=yi.sprintf(" title=\"%s\"",e["_".concat(a,"_title")])),h=yi.calculateObjectValue(o.header,o.header.cellStyles[i],[d,e,t,a],h),h.classes&&(f=" class=\"".concat(h.classes,"\"")),h.css){for(var T=[],P=0,O=Object.entries(h.css);P<O.length;P++){var C=l(O[P],2),I=C[0],$=C[1];T.push("".concat(I,": ").concat($))}m=" style=\"".concat(T.concat(o.header.styles[i]).join("; "),"\"")}if(p=yi.calculateObjectValue(x,o.header.formatters[i],[d,e,t,a],d),e["_".concat(a,"_data")]&&!yi.isEmptyObject(e["_".concat(a,"_data")]))for(var A=0,E=Object.entries(e["_".concat(a,"_data")]);A<E.length;A++){var R=l(E[A],2),_=R[0],k=R[1];if("index"===_)return;b+=" data-".concat(_,"=\"").concat(k,"\"")}if(x.checkbox||x.radio){u=x.checkbox?"checkbox":u,u=x.radio?"radio":u;var v=x["class"]||"",c=(!0===p||d||p&&p.checked)&&!1!==p,N=!x.checkboxEnabled||p&&p.disabled;r=[o.options.cardView?"<div class=\"card-view ".concat(v,"\">"):"<td class=\"bs-checkbox ".concat(v,"\"").concat(f).concat(m,">"),"<label>\n <input\n data-index=\"".concat(t,"\"\n name=\"").concat(o.options.selectItemName,"\"\n type=\"").concat(u,"\"\n ").concat(yi.sprintf("value=\"%s\"",e[o.options.idField]),"\n ").concat(yi.sprintf("checked=\"%s\"",c?"checked":void 0),"\n ").concat(yi.sprintf("disabled=\"%s\"",N?"disabled":void 0)," />\n <span></span>\n </label>"),o.header.formatters[i]&&"string"==typeof p?p:"",o.options.cardView?"</div>":"</td>"].join(""),e[o.header.stateField]=!0===p||!!d||p&&p.checked}else if(p="undefined"==typeof p||null===p?o.options.undefinedText:p,o.options.cardView){var F=o.options.showHeader?"<span class=\"card-view-title\"".concat(m,">").concat(yi.getFieldTitle(o.columns,a),"</span>"):"";r="<div class=\"card-view\">".concat(F,"<span class=\"card-view-value\">").concat(p,"</span></div>"),o.options.smartDisplay&&""===p&&(r="<div class=\"card-view\"></div>")}else r="<td".concat(g).concat(f).concat(m).concat(b).concat(y).concat(w).concat(S,">").concat(p,"</td>");n.push(r)}}),this.options.cardView&&n.push("</div></td>"),n.push("</tr>"),n.join("")}}},{key:"initBody",value:function(e){var o=this,a=this.getData();this.trigger("pre-body",a),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=t("<tbody></tbody>").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=a.length);for(var n=[],s=t(document.createDocumentFragment()),l=!1,r=this.pageFrom-1;r<this.pageTo;r++){var c=a[r],d=this.initRow(c,r,a,s);l=l||!!d,d&&"string"==typeof d&&(this.options.virtualScroll?n.push(d):s.append(d))}l?this.options.virtualScroll?(this.virtualScroll&&this.virtualScroll.destroy(),this.virtualScroll=new Si({rows:n,scrollEl:this.$tableBody[0],contentEl:this.$body[0],itemHeight:this.options.virtualScrollItemHeight,callback:function(){o.fitHeader()}})):this.$body.html(s):this.$body.html("<tr class=\"no-records-found\">".concat(yi.sprintf("<td colspan=\"%s\">%s</td>",this.$header.find("th").length,this.options.formatNoMatches()),"</tr>")),e||this.scrollTo(0),this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(a){var e=t(a.currentTarget),n=e.parent(),i=t(a.target).parents(".card-views").children(),s=t(a.target).parents(".card-view"),l=n.data("index"),r=o.data[l],c=o.options.cardView?i.index(s):e[0].cellIndex,d=o.getVisibleFields(),p=d[o.options.detailView&&o.detailViewIcon&&!o.options.cardView?c-1:c],u=o.columns[o.fieldsColumnsIndex[p]],h=yi.getItemField(r,p,o.options.escape);if(!e.find(".detail-icon").length){if(o.trigger("click"===a.type?"click-cell":"dbl-click-cell",p,h,r,e),o.trigger("click"===a.type?"click-row":"dbl-click-row",r,n,p),"click"===a.type&&o.options.clickToSelect&&u.clickToSelect&&!yi.calculateObjectValue(o.options,o.options.ignoreClickToSelectOn,[a.target])){var g=n.find(yi.sprintf("[name=\"%s\"]",o.options.selectItemName));g.length&&g[0].click()}"click"===a.type&&o.options.detailViewByClick&&o.toggleDetailView(l,o.header.detailFormatters[o.fieldsColumnsIndex[p]])}}).off("mousedown").on("mousedown",function(t){o.multipleSelectRowCtrlKey=t.ctrlKey||t.metaKey,o.multipleSelectRowShiftKey=t.shiftKey}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(a){return a.preventDefault(),o.toggleDetailView(t(a.currentTarget).parent().parent().data("index")),!1}),this.$selectItem=this.$body.find(yi.sprintf("[name=\"%s\"]",this.options.selectItemName)),this.$selectItem.off("click").on("click",function(a){a.stopImmediatePropagation();var e=t(a.currentTarget);o._toggleCheck(e.prop("checked"),e.data("index"))}),this.header.events.forEach(function(e,a){var n=e;if(n){"string"==typeof n&&(n=yi.calculateObjectValue(null,n));var i=o.header.fields[a],s=o.getVisibleFields().indexOf(i);if(-1!==s){o.options.detailView&&!o.options.cardView&&(s+=1);var l=function(e){if(!n.hasOwnProperty(e))return"continue";var a=n[e];o.$body.find(">tr:not(.no-records-found)").each(function(n,l){var r=t(l),c=r.find(o.options.cardView?".card-view":"td").eq(s),d=e.indexOf(" "),p=e.substring(0,d),u=e.substring(d+1);c.find(u).off(p).on(p,function(t){var e=r.data("index"),n=o.data[e],s=n[i];a.apply(o,[t,s,n,e])})})};for(var r in n){var c=l(r)}}}}),this.updateSelected(),this.initFooter(),this.resetView(),"server"!==this.options.sidePagination&&(this.options.totalRows=a.length),this.trigger("post-body",a)}},{key:"initServer",value:function(e,o,a){var n=this,i={},s=this.header.fields.indexOf(this.options.sortName),l={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};if((this.header.sortNames[s]&&(l.sortName=this.header.sortNames[s]),this.options.pagination&&"server"===this.options.sidePagination&&(l.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,l.pageNumber=this.options.pageNumber),a||this.options.url||this.options.ajax)&&("limit"===this.options.queryParamsType&&(l={search:l.searchText,sort:l.sortName,order:l.sortOrder},this.options.pagination&&"server"===this.options.sidePagination&&(l.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),l.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,0===l.limit&&delete l.limit)),yi.isEmptyObject(this.filterColumnsPartial)||(l.filter=JSON.stringify(this.filterColumnsPartial,null)),i=yi.calculateObjectValue(this.options,this.options.queryParams,[l],i),t.extend(i,o||{}),!1!==i)){e||this.showLoading();var r=t.extend({},yi.calculateObjectValue(null,this.options.ajaxOptions),{type:this.options.method,url:a||this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(i):i,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(t){var o=yi.calculateObjectValue(n.options,n.options.responseHandler,[t],t);n.load(o),n.trigger("load-success",o),e||n.hideLoading()},error:function(t){var o=[];"server"===n.options.sidePagination&&(o={},o[n.options.totalField]=0,o[n.options.dataField]=[]),n.load(o),n.trigger("load-error",t.status,t),e||n.$tableLoading.hide()}});return this.options.ajax?yi.calculateObjectValue(this,this.options.ajax,[r],null):(this._xhr&&4!==this._xhr.readyState&&this._xhr.abort(),this._xhr=t.ajax(r)),i}}},{key:"initSearchText",value:function(){if(this.options.search&&(this.searchText="",""!==this.options.searchText)){var e=this.$toolbar.find(".search input");e.val(this.options.searchText),this.onSearch({currentTarget:e,firedByInitSearchText:!0})}}},{key:"getCaret",value:function(){var e=this;this.$header.find("th").each(function(o,a){t(a).find(".sortable").removeClass("desc asc").addClass(t(a).data("field")===e.options.sortName?e.options.sortOrder:"both")})}},{key:"updateSelected",value:function(){var e=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",e),this.$selectItem.each(function(e,o){t(o).closest("tr")[t(o).prop("checked")?"addClass":"removeClass"]("selected")})}},{key:"updateRows",value:function(){var e=this;this.$selectItem.each(function(o,a){e.data[t(a).data("index")][e.header.stateField]=t(a).prop("checked")})}},{key:"resetRows",value:function(){var e=!0,t=!1,o=void 0;try{for(var a,n,i=this.data[Symbol.iterator]();!(e=(a=i.next()).done);e=!0)n=a.value,this.$selectAll.prop("checked",!1),this.$selectItem.prop("checked",!1),this.header.stateField&&(n[this.header.stateField]=!1)}catch(e){t=!0,o=e}finally{try{e||null==i.return||i.return()}finally{if(t)throw o}}this.initHiddenRows()}},{key:"trigger",value:function(o){for(var a,n="".concat(o,".bs.table"),i=arguments.length,s=Array(1<i?i-1:0),l=1;l<i;l++)s[l-1]=arguments[l];(a=this.options)[e.EVENTS[n]].apply(a,s),this.$el.trigger(t.Event(n),s),this.options.onAll(n,s),this.$el.trigger(t.Event("all.bs.table"),[n,s])}},{key:"resetHeader",value:function(){var e=this;clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(function(){return e.fitHeader()},this.$el.is(":hidden")?100:0)}},{key:"fitHeader",value:function(){var e=this;if(this.$el.is(":hidden"))return void(this.timeoutId_=setTimeout(function(){return e.fitHeader()},100));var o=this.$tableBody.get(0),a=o.scrollWidth>o.clientWidth&&o.scrollHeight>o.clientHeight+this.$header.outerHeight()?yi.getScrollBarWidth():0;this.$el.css("margin-top",-this.$header.outerHeight());var n=t(":focus");if(0<n.length){var i=n.parents("th");if(0<i.length){var s=i.attr("data-field");if(void 0!==s){var l=this.$header.find("[data-field='".concat(s,"']"));0<l.length&&l.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find("[name=\"btSelectAll\"]"),this.$tableHeader.css("margin-right",a).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),this.$tableLoading.css("width",this.$el.outerWidth());var r=t(".focus-temp:visible:eq(0)");0<r.length&&(r.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(o,a){e.$header_.find(yi.sprintf("th[data-field=\"%s\"]",t(a).data("field"))).data(t(a).data())});for(var c=this.getVisibleFields(),d=this.$header_.find("th"),p=this.$body.find(">tr:not(.no-records-found,.virtual-scroll-top)").eq(0);p.length&&p.find(">td[colspan]:not([colspan=\"1\"])").length;)p=p.next();p.find("> *").each(function(o,a){var n=t(a),i=o;if(e.options.detailView&&e.options.detailViewIcon&&!e.options.cardView){if(0===o){var s=d.filter(".detail"),l=s.width()-s.find(".fht-cell").width();s.find(".fht-cell").width(n.innerWidth()-l)}i=o-1}if(-1!==i){var r=e.$header_.find(yi.sprintf("th[data-field=\"%s\"]",c[i]));1<r.length&&(r=t(d[n[0].cellIndex]));var p=r.width()-r.find(".fht-cell").width();r.find(".fht-cell").width(n.innerWidth()-p)}}),this.horizontalScroll(),this.trigger("post-header")}},{key:"initFooter",value:function(){if(this.options.showFooter&&!this.options.cardView){var e=this.getData(),t=[];!this.options.cardView&&this.options.detailView&&this.options.detailViewIcon&&t.push("<th class=\"detail\"><div class=\"th-inner\"></div><div class=\"fht-cell\"></div></th>");var o=!0,a=!1,n=void 0;try{for(var i,s=this.columns[Symbol.iterator]();!(o=(i=s.next()).done);o=!0){var r=i.value,c="",d="",p=[],u={},h=yi.sprintf(" class=\"%s\"",r["class"]);if(r.visible){if(this.options.cardView&&!r.cardVisible)return;if(c=yi.sprintf("text-align: %s; ",r.falign?r.falign:r.align),d=yi.sprintf("vertical-align: %s; ",r.valign),u=yi.calculateObjectValue(null,this.options.footerStyle,[r]),u&&u.css)for(var g=0,f=Object.entries(u.css);g<f.length;g++){var m=l(f[g],2),b=m[0],y=m[1];p.push("".concat(b,": ").concat(y))}u&&u.classes&&(h=yi.sprintf(" class=\"%s\"",r["class"]?[r["class"],u.classes].join(" "):u.classes)),t.push("<th",h,yi.sprintf(" style=\"%s\"",c+d+p.concat().join("; ")),">"),t.push("<div class=\"th-inner\">"),t.push(yi.calculateObjectValue(r,r.footerFormatter,[e],this.footerData[0]&&this.footerData[0][r.field]||"")),t.push("</div>"),t.push("<div class=\"fht-cell\"></div>"),t.push("</div>"),t.push("</th>")}}}catch(e){a=!0,n=e}finally{try{o||null==s.return||s.return()}finally{if(a)throw n}}this.$tableFooter.find("tr").html(t.join("")),this.trigger("post-footer",this.$tableFooter)}}},{key:"fitFooter",value:function(){var e=this;if(this.$el.is(":hidden"))return void setTimeout(function(){return e.fitFooter()},100);var o=this.$tableBody.get(0),a=o.scrollWidth>o.clientWidth&&o.scrollHeight>o.clientHeight+this.$header.outerHeight()?yi.getScrollBarWidth():0;this.$tableFooter.css("margin-right",a).find("table").css("width",this.$el.outerWidth()).attr("class",this.$el.attr("class"));for(var n=this.getVisibleFields(),s=this.$tableFooter.find("th"),l=this.$body.find(">tr:first-child:not(.no-records-found)");l.length&&l.find(">td[colspan]:not([colspan=\"1\"])").length;)l=l.next();l.find("> *").each(function(o,a){var n=t(a),i=o;if(e.options.detailView&&!e.options.cardView){if(0===o){var l=s.filter(".detail"),r=l.width()-l.find(".fht-cell").width();l.find(".fht-cell").width(n.innerWidth()-r)}i=o-1}if(-1!==i){var c=s.eq(o),d=c.width()-c.find(".fht-cell").width();c.find(".fht-cell").width(n.innerWidth()-d)}}),this.horizontalScroll()}},{key:"horizontalScroll",value:function(){var e=this;this.trigger("scroll-body"),this.$tableBody.off("scroll").on("scroll",function(o){var a=o.currentTarget;e.options.showHeader&&e.options.height&&e.$tableHeader.scrollLeft(t(a).scrollLeft()),e.options.showFooter&&!e.options.cardView&&e.$tableFooter.scrollLeft(t(a).scrollLeft())})}},{key:"getVisibleFields",value:function(){var e=[],t=!0,o=!1,a=void 0;try{for(var n,i=this.header.fields[Symbol.iterator]();!(t=(n=i.next()).done);t=!0){var s=n.value,l=this.columns[this.fieldsColumnsIndex[s]];l&&l.visible&&e.push(s)}}catch(e){o=!0,a=e}finally{try{t||null==i.return||i.return()}finally{if(o)throw a}}return e}},{key:"initHiddenRows",value:function(){this.hiddenRows=[]}},{key:"getOptions",value:function(){var e=t.extend({},this.options);return delete e.data,t.extend(!0,{},e)}},{key:"refreshOptions",value:function(e){yi.compareObjects(this.options,e,!0)||(this.options=t.extend(this.options,e),this.trigger("refresh-options",this.options),this.destroy(),this.init())}},{key:"getData",value:function(e){var t=this.options.data;if((this.searchText||this.options.sortName||!yi.isEmptyObject(this.filterColumns)||!yi.isEmptyObject(this.filterColumnsPartial))&&(t=this.data),e&&e.useCurrentPage&&(t=t.slice(this.pageFrom-1,this.pageTo)),e&&!e.includeHiddenRows){var o=this.getHiddenRows();t=t.filter(function(e){return-1===yi.findIndex(o,e)})}return t}},{key:"getSelections",value:function(){var e=this;return this.data.filter(function(t){return!0===t[e.header.stateField]})}},{key:"getAllSelections",value:function(){var e=this;return this.options.data.filter(function(t){return!0===t[e.header.stateField]})}},{key:"load",value:function(e){var t=!1,o=e;this.options.pagination&&"server"===this.options.sidePagination&&(this.options.totalRows=o[this.options.totalField]),this.options.pagination&&"server"===this.options.sidePagination&&(this.options.totalNotFiltered=o[this.options.totalNotFilteredField]),t=o.fixedScroll,o=Array.isArray(o)?o:o[this.options.dataField],this.initData(o),this.initSearch(),this.initPagination(),this.initBody(t)}},{key:"append",value:function(e){this.initData(e,"append"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"prepend",value:function(e){this.initData(e,"prepend"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"remove",value:function(e){var t,o,a=this.options.data.length;if(e.hasOwnProperty("field")&&e.hasOwnProperty("values")){for(t=a-1;0<=t;t--)(o=this.options.data[t],!!o.hasOwnProperty(e.field))&&e.values.includes(o[e.field])&&(this.options.data.splice(t,1),"server"===this.options.sidePagination&&(this.options.totalRows-=1));a===this.options.data.length||(this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}}},{key:"removeAll",value:function(){0<this.options.data.length&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"insertRow",value:function(e){e.hasOwnProperty("index")&&e.hasOwnProperty("row")&&(this.options.data.splice(e.index,0,e.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},{key:"updateRow",value:function(e){var o=Array.isArray(e)?e:[e],a=!0,n=!1,i=void 0;try{for(var s,l,r=o[Symbol.iterator]();!(a=(s=r.next()).done);a=!0)(l=s.value,l.hasOwnProperty("index")&&l.hasOwnProperty("row"))&&(t.extend(this.options.data[l.index],l.row),l.hasOwnProperty("replace")&&l.replace?this.options.data[l.index]=l.row:t.extend(this.options.data[l.index],l.row))}catch(e){n=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(n)throw i}}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"getRowByUniqueId",value:function(e){var t,o,a,n=this.options.uniqueId,s=this.options.data.length,l=e,r=null;for(t=s-1;0<=t;t--){if(o=this.options.data[t],o.hasOwnProperty(n))a=o[n];else if(o._data&&o._data.hasOwnProperty(n))a=o._data[n];else continue;if("string"==typeof a?l=l.toString():"number"==typeof a&&(+a===a&&0==a%1?l=parseInt(l):a===+a&&0!==a&&(l=parseFloat(l))),a===l){r=o;break}}return r}},{key:"updateByUniqueId",value:function(e){var o=Array.isArray(e)?e:[e],a=!0,n=!1,i=void 0;try{for(var s,l,r=o[Symbol.iterator]();!(a=(s=r.next()).done);a=!0)if(l=s.value,l.hasOwnProperty("id")&&l.hasOwnProperty("row")){var c=this.options.data.indexOf(this.getRowByUniqueId(l.id));-1!==c&&(l.hasOwnProperty("replace")&&l.replace?this.options.data[c]=l.row:t.extend(this.options.data[c],l.row))}}catch(e){n=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(n)throw i}}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"removeByUniqueId",value:function(e){var t=this.options.data.length,o=this.getRowByUniqueId(e);o&&this.options.data.splice(this.options.data.indexOf(o),1),t===this.options.data.length||(this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"updateCell",value:function(e){e.hasOwnProperty("index")&&e.hasOwnProperty("field")&&e.hasOwnProperty("value")&&(this.data[e.index][e.field]=e.value,!1===e.reinit||(this.initSort(),this.initBody(!0)))}},{key:"updateCellByUniqueId",value:function(e){var t=this;if(e.hasOwnProperty("id")&&e.hasOwnProperty("field")&&e.hasOwnProperty("value")){var o=Array.isArray(e)?e:[e];o.forEach(function(e){var o=e.id,a=e.field,n=e.value,i=t.options.data.indexOf(t.getRowByUniqueId(o));-1===i||(t.options.data[i][a]=n)}),!1===e.reinit||(this.initSort(),this.initBody(!0))}}},{key:"showRow",value:function(e){this._toggleRow(e,!0)}},{key:"hideRow",value:function(e){this._toggleRow(e,!1)}},{key:"_toggleRow",value:function(e,t){var o;if(e.hasOwnProperty("index")?o=this.getData()[e.index]:e.hasOwnProperty("uniqueId")&&(o=this.getRowByUniqueId(e.uniqueId)),!!o){var a=yi.findIndex(this.hiddenRows,o);t||-1!==a?t&&-1<a&&this.hiddenRows.splice(a,1):this.hiddenRows.push(o),t?this.updatePagination():(this.initBody(!0),this.initPagination())}}},{key:"getHiddenRows",value:function(e){if(e)return this.initHiddenRows(),void this.initBody(!0);var t=this.getData(),o=[],a=!0,n=!1,i=void 0;try{for(var s,l,r=t[Symbol.iterator]();!(a=(s=r.next()).done);a=!0)l=s.value,this.hiddenRows.includes(l)&&o.push(l)}catch(e){n=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(n)throw i}}return this.hiddenRows=o,o}},{key:"showColumn",value:function(e){var t=this,o=Array.isArray(e)?e:[e];o.forEach(function(e){t._toggleColumn(t.fieldsColumnsIndex[e],!0,!0)})}},{key:"hideColumn",value:function(e){var t=this,o=Array.isArray(e)?e:[e];o.forEach(function(e){t._toggleColumn(t.fieldsColumnsIndex[e],!1,!0)})}},{key:"_toggleColumn",value:function(e,t,o){if(-1!==e&&this.columns[e].visible!==t&&(this.columns[e].visible=t,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var a=this.$toolbar.find(".keep-open input").prop("disabled",!1);o&&a.filter(yi.sprintf("[value=\"%s\"]",e)).prop("checked",t),a.filter(":checked").length<=this.options.minimumCountColumns&&a.filter(":checked").prop("disabled",!0)}}},{key:"getVisibleColumns",value:function(){return this.columns.filter(function(e){var t=e.visible;return t})}},{key:"getHiddenColumns",value:function(){return this.columns.filter(function(e){var t=e.visible;return!t})}},{key:"showAllColumns",value:function(){this._toggleAllColumns(!0)}},{key:"hideAllColumns",value:function(){this._toggleAllColumns(!1)}},{key:"_toggleAllColumns",value:function(e){var o=this,a=!0,n=!1,i=void 0;try{for(var s,l,r=this.columns.slice().reverse()[Symbol.iterator]();!(a=(s=r.next()).done);a=!0)if(l=s.value,l.switchable){if(!e&&this.options.showColumns&&this.getVisibleColumns().length===this.options.minimumCountColumns)continue;l.visible=e}}catch(e){n=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(n)throw i}}if(this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var c=this.$toolbar.find(".keep-open input:not(\".toggle-all\")").prop("disabled",!1);e?c.prop("checked",e):c.get().reverse().forEach(function(a){c.filter(":checked").length>o.options.minimumCountColumns&&t(a).prop("checked",e)}),c.filter(":checked").length<=this.options.minimumCountColumns&&c.filter(":checked").prop("disabled",!0)}}},{key:"mergeCells",value:function(e){var t,o,a=e.index,n=this.getVisibleFields().indexOf(e.field),s=e.rowspan||1,l=e.colspan||1,r=this.$body.find(">tr");this.options.detailView&&!this.options.cardView&&(n+=1);var c=r.eq(a).find(">td").eq(n);if(!(0>a||0>n||a>=this.data.length)){for(t=a;t<a+s;t++)for(o=n;o<n+l;o++)r.eq(t).find(">td").eq(o).hide();c.attr("rowspan",s).attr("colspan",l).show()}}},{key:"checkAll",value:function(){this._toggleCheckAll(!0)}},{key:"uncheckAll",value:function(){this._toggleCheckAll(!1)}},{key:"_toggleCheckAll",value:function(e){var t=this.getSelections();this.$selectAll.add(this.$selectAll_).prop("checked",e),this.$selectItem.filter(":enabled").prop("checked",e),this.updateRows();var o=this.getSelections();return e?void this.trigger("check-all",o,t):void this.trigger("uncheck-all",o,t)}},{key:"checkInvert",value:function(){var e=this.$selectItem.filter(":enabled"),o=e.filter(":checked");e.each(function(e,o){t(o).prop("checked",!t(o).prop("checked"))}),this.updateRows(),this.updateSelected(),this.trigger("uncheck-some",o),o=this.getSelections(),this.trigger("check-some",o)}},{key:"check",value:function(e){this._toggleCheck(!0,e)}},{key:"uncheck",value:function(e){this._toggleCheck(!1,e)}},{key:"_toggleCheck",value:function(e,t){var o=this.$selectItem.filter("[data-index=\"".concat(t,"\"]")),a=this.data[t];if(o.is(":radio")||this.options.singleSelect||this.options.multipleSelectRow&&!this.multipleSelectRowCtrlKey&&!this.multipleSelectRowShiftKey){var n=!0,s=!1,l=void 0;try{for(var c,d,p=this.options.data[Symbol.iterator]();!(n=(c=p.next()).done);n=!0)d=c.value,d[this.header.stateField]=!1}catch(e){s=!0,l=e}finally{try{n||null==p.return||p.return()}finally{if(s)throw l}}this.$selectItem.filter(":checked").not(o).prop("checked",!1)}if(a[this.header.stateField]=e,this.options.multipleSelectRow){if(this.multipleSelectRowShiftKey&&0<=this.multipleSelectRowLastSelectedIndex)for(var u=[this.multipleSelectRowLastSelectedIndex,t].sort(),h=u[0]+1;h<u[1];h++)this.data[h][this.header.stateField]=!0,this.$selectItem.filter("[data-index=\"".concat(h,"\"]")).prop("checked",!0);this.multipleSelectRowCtrlKey=!1,this.multipleSelectRowShiftKey=!1,this.multipleSelectRowLastSelectedIndex=e?t:-1}o.prop("checked",e),this.updateSelected(),this.trigger(e?"check":"uncheck",this.data[t],o)}},{key:"checkBy",value:function(e){this._toggleCheckBy(!0,e)}},{key:"uncheckBy",value:function(e){this._toggleCheckBy(!1,e)}},{key:"_toggleCheckBy",value:function(e,t){var o=this;if(t.hasOwnProperty("field")&&t.hasOwnProperty("values")){var a=[];this.data.forEach(function(n,s){if(!n.hasOwnProperty(t.field))return!1;if(t.values.includes(n[t.field])){var i=o.$selectItem.filter(":enabled").filter(yi.sprintf("[data-index=\"%s\"]",s)).prop("checked",e);n[o.header.stateField]=e,a.push(n),o.trigger(e?"check":"uncheck",n,i)}}),this.updateSelected(),this.trigger(e?"check-some":"uncheck-some",a)}}},{key:"refresh",value:function(e){e&&e.url&&(this.options.url=e.url),e&&e.pageNumber&&(this.options.pageNumber=e.pageNumber),e&&e.pageSize&&(this.options.pageSize=e.pageSize),this.trigger("refresh",this.initServer(e&&e.silent,e&&e.query,e&&e.url))}},{key:"destroy",value:function(){this.$el.insertBefore(this.$container),t(this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")}},{key:"resetView",value:function(e){var t=0;if(e&&e.height&&(this.options.height=e.height),this.$selectAll.prop("checked",0<this.$selectItem.length&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.$tableContainer.toggleClass("has-card-view",this.options.cardView),!this.options.cardView&&this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),t+=this.$header.outerHeight(!0)):(this.$tableHeader.hide(),this.trigger("post-header")),!this.options.cardView&&this.options.showFooter&&(this.$tableFooter.show(),this.fitFooter(),this.options.height&&(t+=this.$tableFooter.outerHeight(!0))),this.options.height){var o=this.$toolbar.outerHeight(!0),a=this.$pagination.outerHeight(!0),n=this.options.height-o-a,i=this.$tableBody.find("table").outerHeight(!0);this.$tableContainer.css("height","".concat(n,"px")),this.$tableBorder&&this.$tableBorder.css("height","".concat(n-i-t-1,"px"))}this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),this.$tableFooter.hide()):(this.getCaret(),this.$tableContainer.css("padding-bottom","".concat(t,"px"))),this.trigger("reset-view")}},{key:"resetWidth",value:function(){this.options.showHeader&&this.options.height&&this.fitHeader(),this.options.showFooter&&!this.options.cardView&&this.fitFooter()}},{key:"showLoading",value:function(){this.$tableLoading.css("display","flex")}},{key:"hideLoading",value:function(){this.$tableLoading.css("display","none")}},{key:"togglePagination",value:function(){this.options.pagination=!this.options.pagination;var e=this.options.showButtonIcons?this.options.pagination?this.options.icons.paginationSwitchDown:this.options.icons.paginationSwitchUp:"",t=this.options.showButtonText?this.options.pagination?this.options.formatPaginationSwitchUp():this.options.formatPaginationSwitchDown():"";this.$toolbar.find("button[name=\"paginationSwitch\"]").html(yi.sprintf(this.constants.html.icon,this.options.iconsPrefix,e)+" "+t),this.updatePagination()}},{key:"toggleFullscreen",value:function(){this.$el.closest(".bootstrap-table").toggleClass("fullscreen"),this.resetView()}},{key:"toggleView",value:function(){this.options.cardView=!this.options.cardView,this.initHeader();var e=this.options.showButtonIcons?this.options.cardView?this.options.icons.toggleOn:this.options.icons.toggleOff:"",t=this.options.showButtonText?this.options.cardView?this.options.formatToggleOff():this.options.formatToggleOn():"";this.$toolbar.find("button[name=\"toggle\"]").html(yi.sprintf(this.constants.html.icon,this.options.iconsPrefix,e)+" "+t),this.initBody(),this.trigger("toggle",this.options.cardView)}},{key:"resetSearch",value:function(e){var t=this.$toolbar.find(".search input");t.val(e||""),this.onSearch({currentTarget:t})}},{key:"filterBy",value:function(e,o){this.filterOptions=yi.isEmptyObject(o)?this.options.filterOptions:t.extend(this.options.filterOptions,o),this.filterColumns=yi.isEmptyObject(e)?{}:e,this.options.pageNumber=1,this.initSearch(),this.updatePagination()}},{key:"scrollTo",value:function e(o){if("undefined"==typeof o)return this.$tableBody.scrollTop();var n={unit:"px",value:0};"object"===a(o)?n=Object.assign(n,o):"string"==typeof o&&"bottom"===o?n.value=this.$tableBody[0].scrollHeight:"string"==typeof o&&(n.value=o);var e=n.value;"rows"===n.unit&&(e=0,this.$body.find("> tr:lt(".concat(n.value,")")).each(function(o,a){e+=t(a).outerHeight(!0)})),this.$tableBody.scrollTop(e)}},{key:"getScrollPosition",value:function(){return this.scrollTo()}},{key:"selectPage",value:function(e){0<e&&e<=this.options.totalPages&&(this.options.pageNumber=e,this.updatePagination())}},{key:"prevPage",value:function(){1<this.options.pageNumber&&(this.options.pageNumber--,this.updatePagination())}},{key:"nextPage",value:function(){this.options.pageNumber<this.options.totalPages&&(this.options.pageNumber++,this.updatePagination())}},{key:"toggleDetailView",value:function(e,t){var o=this.$body.find(yi.sprintf("> tr[data-index=\"%s\"]",e));o.next().is("tr.detail-view")?this.collapseRow(e):this.expandRow(e,t),this.resetView()}},{key:"expandRow",value:function(e,t){var o=this.data[e],a=this.$body.find(yi.sprintf("> tr[data-index=\"%s\"][data-has-detail-view]",e));if(!a.next().is("tr.detail-view")){this.options.detailViewIcon&&a.find("a.detail-icon").html(yi.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailClose)),a.after(yi.sprintf("<tr class=\"detail-view\"><td colspan=\"%s\"></td></tr>",a.children("td").length));var n=a.next().find("td"),i=t||this.options.detailFormatter,s=yi.calculateObjectValue(this.options,i,[e,o,n],"");1===n.length&&n.append(s),this.trigger("expand-row",e,o,n)}}},{key:"collapseRow",value:function(e){var t=this.data[e],o=this.$body.find(yi.sprintf("> tr[data-index=\"%s\"][data-has-detail-view]",e));o.next().is("tr.detail-view")&&(this.options.detailViewIcon&&o.find("a.detail-icon").html(yi.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen)),this.trigger("collapse-row",e,t,o.next()),o.next().remove())}},{key:"expandAllRows",value:function(){for(var e=this.$body.find("> tr[data-index][data-has-detail-view]"),o=0;o<e.length;o++)this.expandRow(t(e[o]).data("index"))}},{key:"collapseAllRows",value:function(){for(var e=this.$body.find("> tr[data-index][data-has-detail-view]"),o=0;o<e.length;o++)this.collapseRow(t(e[o]).data("index"))}},{key:"updateColumnTitle",value:function(e){if(e.hasOwnProperty("field")&&e.hasOwnProperty("title")&&(this.columns[this.fieldsColumnsIndex[e.field]].title=this.options.escape?yi.escapeHTML(e.title):e.title,this.columns[this.fieldsColumnsIndex[e.field]].visible)){var o=void 0===this.options.height?this.$header:this.$tableHeader;o.find("th[data-field]").each(function(o,a){if(t(a).data("field")===e.field)return t(t(a).find(".th-inner")[0]).text(e.title),!1})}}},{key:"updateFormatText",value:function(e,t){/^format/.test(e)&&this.options[e]&&("string"==typeof t?this.options[e]=function(){return t}:"function"==typeof t&&(this.options[e]=t),this.initToolbar(),this.initPagination(),this.initBody())}}]),e}();return xi.VERSION=fi.VERSION,xi.DEFAULTS=fi.DEFAULTS,xi.LOCALES=fi.LOCALES,xi.COLUMN_DEFAULTS=fi.COLUMN_DEFAULTS,xi.METHODS=fi.METHODS,xi.EVENTS=fi.EVENTS,t.BootstrapTable=xi,t.fn.bootstrapTable=function(e){for(var o=arguments.length,n=Array(1<o?o-1:0),i=1;i<o;i++)n[i-1]=arguments[i];var s;return this.each(function(o,i){var l=t(i).data("bootstrap.table"),r=t.extend({},xi.DEFAULTS,t(i).data(),"object"===a(e)&&e);if("string"==typeof e){var c;if(!fi.METHODS.includes(e))throw new Error("Unknown method: ".concat(e));if(!l)return;s=(c=l)[e].apply(c,n),"destroy"==e&&t(i).removeData("bootstrap.table")}l||t(i).data("bootstrap.table",l=new t.BootstrapTable(i,r))}),"undefined"==typeof s?this:s},t.fn.bootstrapTable.Constructor=xi,t.fn.bootstrapTable.theme=fi.THEME,t.fn.bootstrapTable.VERSION=fi.VERSION,t.fn.bootstrapTable.defaults=xi.DEFAULTS,t.fn.bootstrapTable.columnDefaults=xi.COLUMN_DEFAULTS,t.fn.bootstrapTable.events=xi.EVENTS,t.fn.bootstrapTable.locales=xi.LOCALES,t.fn.bootstrapTable.methods=xi.METHODS,t.fn.bootstrapTable.utils=yi,t(function(){t("[data-toggle=\"table\"]").bootstrapTable()}),xi});
因为 它太大了无法显示 source diff 。你可以改为 查看blob
/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
function createDivs(res, divs) {
var elem = document.getElementById("main");
var worker_num = res.workers.length; // 8
var curr_num = elem.children.length; // 0
divs = (divs < worker_num) ? divs : worker_num;
if (curr_num < divs) {
for (var i = curr_num; i < divs; i++) {
var workerDiv = document.createElement("div");
workerDiv.id = `w${i}`;
if (i === 0) {
workerDiv.innerHTML = `<p class="card-header" id="${i}">Master</p>`;
} else {
workerDiv.innerHTML = `<p class="card-header" id="${i}">Worker ${res.workers[i].hostname}</p>`;
}
var cardDiv = document.createElement("div");
cardDiv.className = "row";
var card = '';
for (var j = 0; j < 3; j++)
card += `<div class="col-lg-4"><div class="card mb-1"><div id="w${i}c${j}" class="card-body" style="height: 110px;"></div></div></div>`;
cardDiv.innerHTML = card;
workerDiv.appendChild(cardDiv);
elem.appendChild(workerDiv);
for (var j = 0; j < 3; j++)
imgHandle[`w${i}c${j}`] = echarts.init(document.getElementById(`w${i}c${j}`));
};
} else if (curr_num > worker_num) {
for (var i = curr_num - 1; i >= worker_num; i--) {
delete imgHandle[`w${i}c0`];
delete imgHandle[`w${i}c1`];
delete imgHandle[`w${i}c2`];
var workerDiv = document.getElementById(`w${i}`);
elem.removeChild(workerDiv);
}
}
}
function addPlots(res, record, imgHandle, begin, end) {
var worker_num = res.workers.length;
var record_num = Object.keys(record).length;
end = (end < worker_num) ? end : worker_num;
for (var i = begin; i < end; i++) {
var worker = res.workers[i];
var cpuOption = {
color: ["#7B68EE", "#6495ED"],
legend: {
orient: 'vertical',
x: 'left',
data: ['Used CPU', 'Vacant CPU'],
textStyle: {
fontSize: 8,
}
},
series: [
{
type: "pie",
radius: "80%",
label: {
normal: {
formatter: "{c}",
show: true,
position: "inner",
fontSize: 16,
}
},
data: [
{ value: worker.used_cpus, name: "Used CPU" },
{ value: worker.vacant_cpus, name: "Vacant CPU" }
]
}
]
};
var memoryOption = {
color: ["#FF8C00", "#FF4500"],
legend: {
orient: "vertical",
x: "left",
data: ["Used Memory", "Vacant Memory"],
textStyle: {
fontSize: 8,
}
},
series: [
{
name: "Memory",
type: "pie",
radius: "80%",
label: {
normal: {
formatter: "{c}",
show: true,
position: "inner",
fontSize: 12,
}
},
data: [
{ value: worker.used_memory, name: "Used Memory" },
{ value: worker.vacant_memory, name: "Vacant Memory" }
]
}
]
};
var loadOption = {
grid:{
x:30,
y:25,
x2:20,
y2:20,
borderWidth:1
},
xAxis: {
type: "category",
data: worker.load_time,
},
yAxis: {
type: "value",
name: "Average CPU load (%)",
splitNumber:3,
nameTextStyle:{
padding: [0, 0, 0, 60],
fontSize: 10,
}
},
series: [
{
data: worker.load_value,
type: "line"
}
]
};
if (i < record_num && worker.worker_address === record[i].worker_address) {
if (worker.cpu_num !== record[i].cpu_num) {
imgHandle[`w${i}c0`].setOption(cpuOption);
}
if (worker.used_memory !== record[i].used_memory) {
imgHandle[`w${i}c1`].setOption(memoryOption);
}
imgHandle[`w${i}c2`].setOption(loadOption);
} else {
var workerTitle = document.getElementById(`${i}`);
workerTitle.innerText = i===0 ? "Master" : `Worker ${worker.hostname}`;
imgHandle[`w${i}c0`].setOption(cpuOption);
imgHandle[`w${i}c1`].setOption(memoryOption);
imgHandle[`w${i}c2`].setOption(loadOption);
}
record[i] = {
worker_address: worker.worker_address,
used_cpu: worker.used_cpu,
vacant_cpu: worker.vacant_cpu,
used_memory: worker.used_cpu,
vacant_memory: worker.vacant_memory
};
}
if (end < record_num) {
for (var i = end; i < record_num; i++)
delete record[i]
}
};
function autoTable(res) {
var table = document.getElementById("table");
table.innerHTML = "";
var rows = res.clients.length;
for(var i=0; i< rows; i++){
var tr = document.createElement('tr');
var s1 = `<th scope="row">${i+1}</th>`;
var s2 = `<td>${res.clients[i].file_path}</td>`;
var s3 = `<td>${res.clients[i].client_address}</td>`;
var s4 = `<td>${res.clients[i].actor_num}</td>`;
var s5 = `<td>${res.clients[i].time}</td>`;
tr.innerHTML = s1 + s2 + s3 + s4 + s5;
table.appendChild(tr);
}
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Parl Cluster</title>
<script type="text/javascript" src="../static/js/jquery.min.js"></script>
<script src="../static/js/echarts.min.js"></script>
<script src="../static/js/parl.js"></script>
<link rel="stylesheet" href="../static/css/bootstrap-parl.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-dark fixed-top">
<div class="container">
<a class="navbar-brand">
<img src="../static/logo.png" style="height: 30px">
</a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<li class="nav-item" id="worker_nav">
<a class="btn text-white" href="workers">Worker</a>
</li>
<li class="nav-item" id="client_nav">
<a class="btn text-white" href="clients">Client</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container" id="client_container">
<h5 class="font-weight-light text-center text-lg-left mt-4 mb-4">
Client status
</h5>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Path</th>
<th scope="col">Client ID</th>
<th scope="col">Actor Num</th>
<th scope="col">Time (min)</th>
</tr>
</thead>
<tbody id='table'>
<th colspan="5">Loading Data...</th>
</tbody>
</table>
</div>
<script>
var res = {};
$(document).ready(function () {
$.get('cluster', function (data, status) {
res = data;
autoTable(res);
});
setInterval(function () {
$.get('cluster', function (data, status) {
res = data;
autoTable(res);
});
}, 10000);
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Parl Cluster</title>
<script type="text/javascript" src="../static/js/jquery.min.js"></script>
<script src="../static/js/echarts.min.js"></script>
<script src="../static/js/parl.js"></script>
<link rel="stylesheet" href="../static/css/bootstrap-parl.min.css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-dark fixed-top">
<div class="container">
<a class="navbar-brand">
<img src="../static/logo.png" style="height: 30px" />
</a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<li class="nav-item" id="worker_nav">
<a class="btn text-white" href="workers">Worker</a>
</li>
<li class="nav-item" id="client_nav">
<a class="btn text-white" href="clients">Client</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container" id="worker_container">
<h5 class="font-weight-light text-center text-lg-left mt-4 mb-4">
Worker CPU usage, Memory usage and average loads.
</h5>
<div id="main"></div>
</div>
<script>
var record = {};
var imgHandle = {};
var res = {};
var div_num = 5;
var start_num = 5;
var delta = 3;
$(document).ready(function() {
console.log('After ready.');
$.get("cluster", function(data, status) {
res = data;
console.log('Get first data.', res);
createDivs(res, start_num);
addPlots(res, record, imgHandle, 0, start_num);
});
setInterval(function() {
$.get("cluster", function(data, status) {
res = data;
console.log('Interval', res);
createDivs(res, start_num);
addPlots(res, record, imgHandle, 0, start_num);
});
}, 10000);
$(window).on("scroll", function() {
if (monitor === 1) {
var scrollTop = $(document).scrollTop();
var windowHeight = $(window).height();
var bodyHeight = $(document).height() - windowHeight;
var scrollPercentage = scrollTop / bodyHeight;
if (scrollPercentage > 0.25) {
if (div_num < res.workers.length) {
div_num += delta;
createDivs(res, div_num);
addPlots(res, record, imgHandle, div_num - delta, div_num);
}
}
}
});
});
</script>
</body>
</html>
# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
#
# 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.
import unittest
import parl
from parl.remote.master import Master
from parl.remote.worker import Worker
from parl.remote.monitor import ClusterMonitor
import time
import threading
from parl.remote.client import disconnect
from parl.remote import exceptions
import timeout_decorator
import subprocess
@parl.remote_class
class Actor(object):
def __init__(self, arg1=None, arg2=None):
self.arg1 = arg1
self.arg2 = arg2
def get_arg1(self):
return self.arg1
def get_arg2(self):
return self.arg2
def set_arg1(self, value):
self.arg1 = value
def set_arg2(self, value):
self.arg2 = value
def get_unable_serialize_object(self):
return UnableSerializeObject()
def add_one(self, value):
value += 1
return value
def add(self, x, y):
time.sleep(3)
return x + y
def will_raise_exception_func(self):
x = 1 / 0
class TestClusterMonitor(unittest.TestCase):
def tearDown(self):
disconnect()
def test_one_worker(self):
port = 1439
master = Master(port=port)
th = threading.Thread(target=master.run)
th.start()
time.sleep(1)
worker = Worker('localhost:{}'.format(port), 1)
cluster_monitor = ClusterMonitor('localhost:{}'.format(port))
time.sleep(1)
self.assertEqual(1, len(cluster_monitor.data['workers']))
worker.exit()
time.sleep(40)
self.assertEqual(0, len(cluster_monitor.data['workers']))
master.exit()
def test_twenty_worker(self):
port = 1440
master = Master(port=port)
th = threading.Thread(target=master.run)
th.start()
time.sleep(1)
workers = []
for _ in range(20):
worker = Worker('localhost:{}'.format(port), 1)
workers.append(worker)
cluster_monitor = ClusterMonitor('localhost:{}'.format(port))
time.sleep(1)
self.assertEqual(20, len(cluster_monitor.data['workers']))
for i in range(10):
workers[i].exit()
time.sleep(40)
self.assertEqual(10, len(cluster_monitor.data['workers']))
for i in range(10, 20):
workers[i].exit()
time.sleep(40)
self.assertEqual(0, len(cluster_monitor.data['workers']))
master.exit()
def test_add_actor(self):
port = 1441
master = Master(port=port)
th = threading.Thread(target=master.run)
th.start()
time.sleep(1)
worker = Worker('localhost:{}'.format(port), 1)
cluster_monitor = ClusterMonitor('localhost:{}'.format(port))
time.sleep(1)
self.assertEqual(0, len(cluster_monitor.data['clients']))
parl.connect('localhost:{}'.format(port))
time.sleep(10)
self.assertEqual(1, len(cluster_monitor.data['clients']))
self.assertEqual(1, cluster_monitor.data['workers'][0]['vacant_cpus'])
actor = Actor()
time.sleep(20)
self.assertEqual(0, cluster_monitor.data['workers'][0]['vacant_cpus'])
self.assertEqual(1, cluster_monitor.data['workers'][0]['used_cpus'])
self.assertEqual(1, cluster_monitor.data['clients'][0]['actor_num'])
del actor
time.sleep(40)
self.assertEqual(0, cluster_monitor.data['clients'][0]['actor_num'])
self.assertEqual(1, cluster_monitor.data['workers'][0]['vacant_cpus'])
worker.exit()
master.exit()
if __name__ == '__main__':
unittest.main()
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
# limitations under the License. # limitations under the License.
import unittest import unittest
import socket
from parl.remote.job_center import JobCenter from parl.remote.job_center import JobCenter
from parl.remote.message import InitializedWorker, InitializedJob from parl.remote.message import InitializedWorker, InitializedJob
...@@ -22,11 +23,13 @@ class InitializedWorker(object): ...@@ -22,11 +23,13 @@ class InitializedWorker(object):
worker_address, worker_address,
master_heartbeat_address='localhost:8010', master_heartbeat_address='localhost:8010',
initialized_jobs=[], initialized_jobs=[],
cpu_num=4): cpu_num=4,
hostname=None):
self.worker_address = worker_address self.worker_address = worker_address
self.master_heartbeat_address = master_heartbeat_address self.master_heartbeat_address = master_heartbeat_address
self.initialized_jobs = initialized_jobs self.initialized_jobs = initialized_jobs
self.cpu_num = cpu_num self.cpu_num = cpu_num
self.hostname = hostname
class ImportTest(unittest.TestCase): class ImportTest(unittest.TestCase):
...@@ -38,12 +41,14 @@ class ImportTest(unittest.TestCase): ...@@ -38,12 +41,14 @@ class ImportTest(unittest.TestCase):
worker_heartbeat_address='172.18.182.39:48724', worker_heartbeat_address='172.18.182.39:48724',
client_heartbeat_address='172.18.182.39:48725', client_heartbeat_address='172.18.182.39:48725',
ping_heartbeat_address='172.18.182.39:48726', ping_heartbeat_address='172.18.182.39:48726',
worker_address='172.18.182.39:478727', worker_address='172.18.182.39:8001',
pid=1234) pid=1234)
jobs.append(job) jobs.append(job)
self.worker1 = InitializedWorker( self.worker1 = InitializedWorker(
worker_address='172.18.182.39:8001', initialized_jobs=jobs) worker_address='172.18.182.39:8001',
initialized_jobs=jobs,
hostname=socket.gethostname())
jobs = [] jobs = []
for i in range(5): for i in range(5):
...@@ -52,16 +57,18 @@ class ImportTest(unittest.TestCase): ...@@ -52,16 +57,18 @@ class ImportTest(unittest.TestCase):
worker_heartbeat_address='172.18.182.39:48724', worker_heartbeat_address='172.18.182.39:48724',
client_heartbeat_address='172.18.182.39:48725', client_heartbeat_address='172.18.182.39:48725',
ping_heartbeat_address='172.18.182.39:48726', ping_heartbeat_address='172.18.182.39:48726',
worker_address='172.18.182.39:478727', worker_address='172.18.182.39:8002',
pid=1234) pid=1234)
jobs.append(job) jobs.append(job)
self.worker2 = InitializedWorker( self.worker2 = InitializedWorker(
worker_address='172.18.182.39:8002', initialized_jobs=jobs) worker_address='172.18.182.39:8002',
initialized_jobs=jobs,
hostname=socket.gethostname())
def test_add_worker(self): def test_add_worker(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
job_center.add_worker(self.worker2) job_center.add_worker(self.worker2)
...@@ -70,7 +77,7 @@ class ImportTest(unittest.TestCase): ...@@ -70,7 +77,7 @@ class ImportTest(unittest.TestCase):
self.worker1) self.worker1)
def test_drop_worker(self): def test_drop_worker(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
job_center.add_worker(self.worker2) job_center.add_worker(self.worker2)
job_center.drop_worker(self.worker2.worker_address) job_center.drop_worker(self.worker2.worker_address)
...@@ -81,7 +88,7 @@ class ImportTest(unittest.TestCase): ...@@ -81,7 +88,7 @@ class ImportTest(unittest.TestCase):
self.assertEqual(len(job_center.worker_dict), 1) self.assertEqual(len(job_center.worker_dict), 1)
def test_request_job(self): def test_request_job(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_address1 = job_center.request_job() job_address1 = job_center.request_job()
self.assertTrue(job_address1 is None) self.assertTrue(job_address1 is None)
...@@ -91,7 +98,7 @@ class ImportTest(unittest.TestCase): ...@@ -91,7 +98,7 @@ class ImportTest(unittest.TestCase):
self.assertEqual(len(job_center.job_pool), 4) self.assertEqual(len(job_center.job_pool), 4)
def test_reset_job(self): def test_reset_job(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
job_address = job_center.request_job() job_address = job_center.request_job()
...@@ -103,7 +110,7 @@ class ImportTest(unittest.TestCase): ...@@ -103,7 +110,7 @@ class ImportTest(unittest.TestCase):
def test_update_job(self): def test_update_job(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
job_center.add_worker(self.worker2) job_center.add_worker(self.worker2)
...@@ -142,7 +149,7 @@ class ImportTest(unittest.TestCase): ...@@ -142,7 +149,7 @@ class ImportTest(unittest.TestCase):
self.assertEqual(5, len(self.worker1.initialized_jobs)) self.assertEqual(5, len(self.worker1.initialized_jobs))
def test_cpu_num(self): def test_cpu_num(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
self.assertEqual(job_center.cpu_num, 5) self.assertEqual(job_center.cpu_num, 5)
job_center.add_worker(self.worker2) job_center.add_worker(self.worker2)
...@@ -151,7 +158,7 @@ class ImportTest(unittest.TestCase): ...@@ -151,7 +158,7 @@ class ImportTest(unittest.TestCase):
self.assertEqual(job_center.cpu_num, 9) self.assertEqual(job_center.cpu_num, 9)
def test_worker_num(self): def test_worker_num(self):
job_center = JobCenter() job_center = JobCenter('localhost')
job_center.add_worker(self.worker1) job_center.add_worker(self.worker1)
self.assertEqual(job_center.worker_num, 1) self.assertEqual(job_center.worker_num, 1)
job_center.add_worker(self.worker2) job_center.add_worker(self.worker2)
......
...@@ -15,13 +15,16 @@ ...@@ -15,13 +15,16 @@
import cloudpickle import cloudpickle
import multiprocessing import multiprocessing
import os import os
import psutil
import signal import signal
import socket
import subprocess import subprocess
import sys import sys
import time import time
import threading import threading
import warnings import warnings
import zmq import zmq
from datetime import datetime
from parl.utils import get_ip_address, to_byte, to_str, logger from parl.utils import get_ip_address, to_byte, to_str, logger
from parl.remote import remote_constants from parl.remote import remote_constants
...@@ -29,9 +32,6 @@ from parl.remote.message import InitializedWorker ...@@ -29,9 +32,6 @@ from parl.remote.message import InitializedWorker
from parl.remote.status import WorkerStatus from parl.remote.status import WorkerStatus
from six.moves import queue from six.moves import queue
if sys.version_info.major == 3:
warnings.simplefilter("ignore", ResourceWarning)
class Worker(object): class Worker(object):
"""Worker provides the cpu computation resources for the cluster. """Worker provides the cpu computation resources for the cluster.
...@@ -53,9 +53,6 @@ class Worker(object): ...@@ -53,9 +53,6 @@ class Worker(object):
master_address (str): Master's ip address. master_address (str): Master's ip address.
request_master_socket (zmq.Context.socket): A socket which sends job request_master_socket (zmq.Context.socket): A socket which sends job
address to the master node. address to the master node.
reply_master_socket (zmq.Context.socket): A socket which accepts
submitted job from master
node.
reply_job_socket (zmq.Context.socket): A socket which receives reply_job_socket (zmq.Context.socket): A socket which receives
job_address from the job. job_address from the job.
kill_job_socket (zmq.Context.socket): A socket that receives commands to kill the job from jobs. kill_job_socket (zmq.Context.socket): A socket that receives commands to kill the job from jobs.
...@@ -101,17 +98,17 @@ class Worker(object): ...@@ -101,17 +98,17 @@ class Worker(object):
self.cpu_num = multiprocessing.cpu_count() self.cpu_num = multiprocessing.cpu_count()
def _create_sockets(self): def _create_sockets(self):
""" Each worker has four sockets at start: """ Each worker has three sockets at start:
(1) request_master_socket: sends job address to master node. (1) request_master_socket: sends job address to master node.
(2) reply_master_socket: accepts submitted job from master node. (2) reply_job_socket: receives job_address from subprocess.
(3) reply_job_socket: receives job_address from subprocess. (3) kill_job_socket : receives commands to kill the job from jobs.
(4) kill_job_socket : receives commands to kill the job from jobs.
When a job starts, a new heartbeat socket is created to receive When a job starts, a new heartbeat socket is created to receive
heartbeat signals from the job. heartbeat signals from the job.
""" """
self.worker_ip = get_ip_address()
# request_master_socket: sends job address to master # request_master_socket: sends job address to master
self.request_master_socket = self.ctx.socket(zmq.REQ) self.request_master_socket = self.ctx.socket(zmq.REQ)
...@@ -121,17 +118,6 @@ class Worker(object): ...@@ -121,17 +118,6 @@ class Worker(object):
self.request_master_socket.setsockopt(zmq.RCVTIMEO, 500) self.request_master_socket.setsockopt(zmq.RCVTIMEO, 500)
self.request_master_socket.connect("tcp://" + self.master_address) self.request_master_socket.connect("tcp://" + self.master_address)
# reply_master_socket: receives submitted job from master
self.reply_master_socket = self.ctx.socket(zmq.REP)
self.reply_master_socket.linger = 0
self.worker_ip = get_ip_address()
reply_master_port = self.reply_master_socket.bind_to_random_port(
"tcp://*")
self.reply_master_address = "{}:{}".format(self.worker_ip,
reply_master_port)
logger.set_dir(
os.path.expanduser('~/.parl_data/worker/{}'.format(
self.reply_master_address)))
# reply_job_socket: receives job_address from subprocess # reply_job_socket: receives job_address from subprocess
self.reply_job_socket = self.ctx.socket(zmq.REP) self.reply_job_socket = self.ctx.socket(zmq.REP)
self.reply_job_socket.linger = 0 self.reply_job_socket.linger = 0
...@@ -165,16 +151,20 @@ class Worker(object): ...@@ -165,16 +151,20 @@ class Worker(object):
args=("master {}".format(self.master_address), )) args=("master {}".format(self.master_address), ))
self.reply_master_hearbeat_thread.start() self.reply_master_hearbeat_thread.start()
self.heartbeat_socket_initialized.wait() self.heartbeat_socket_initialized.wait()
initialized_worker = InitializedWorker(self.reply_master_address,
self.master_heartbeat_address,
initialized_jobs, self.cpu_num)
for job in initialized_jobs:
job.worker_address = self.master_heartbeat_address
initialized_worker = InitializedWorker(self.master_heartbeat_address,
initialized_jobs, self.cpu_num,
socket.gethostname())
self.request_master_socket.send_multipart([ self.request_master_socket.send_multipart([
remote_constants.WORKER_INITIALIZED_TAG, remote_constants.WORKER_INITIALIZED_TAG,
cloudpickle.dumps(initialized_worker) cloudpickle.dumps(initialized_worker)
]) ])
_ = self.request_master_socket.recv_multipart() _ = self.request_master_socket.recv_multipart()
self.worker_status = WorkerStatus(self.reply_master_address, self.worker_status = WorkerStatus(self.master_heartbeat_address,
initialized_jobs, self.cpu_num) initialized_jobs, self.cpu_num)
def _fill_job_buffer(self): def _fill_job_buffer(self):
...@@ -204,6 +194,9 @@ class Worker(object): ...@@ -204,6 +194,9 @@ class Worker(object):
self.reply_job_address self.reply_job_address
] ]
if sys.version_info.major == 3:
warnings.simplefilter("ignore", ResourceWarning)
# avoid that many jobs are killed and restarted at the same time. # avoid that many jobs are killed and restarted at the same time.
self.lock.acquire() self.lock.acquire()
...@@ -220,7 +213,6 @@ class Worker(object): ...@@ -220,7 +213,6 @@ class Worker(object):
[remote_constants.NORMAL_TAG, [remote_constants.NORMAL_TAG,
to_byte(self.kill_job_address)]) to_byte(self.kill_job_address)])
initialized_job = cloudpickle.loads(job_message[1]) initialized_job = cloudpickle.loads(job_message[1])
initialized_job.worker_address = self.reply_master_address
new_jobs.append(initialized_job) new_jobs.append(initialized_job)
# a thread for sending heartbeat signals to job # a thread for sending heartbeat signals to job
...@@ -237,6 +229,7 @@ class Worker(object): ...@@ -237,6 +229,7 @@ class Worker(object):
if success: if success:
while True: while True:
initialized_job = self.job_buffer.get() initialized_job = self.job_buffer.get()
initialized_job.worker_address = self.master_heartbeat_address
if initialized_job.is_alive: if initialized_job.is_alive:
self.worker_status.add_job(initialized_job) self.worker_status.add_job(initialized_job)
if not initialized_job.is_alive: # make sure that the job is still alive. if not initialized_job.is_alive: # make sure that the job is still alive.
...@@ -307,6 +300,15 @@ class Worker(object): ...@@ -307,6 +300,15 @@ class Worker(object):
#detect whether `self.worker_is_alive` is True periodically #detect whether `self.worker_is_alive` is True periodically
pass pass
def _get_worker_status(self):
now = datetime.strftime(datetime.now(), '%H:%M:%S')
virtual_memory = psutil.virtual_memory()
total_memory = round(virtual_memory[0] / (1024**3), 2)
used_memory = round(virtual_memory[3] / (1024**3), 2)
vacant_memory = round(total_memory - used_memory, 2)
load_average = round(psutil.getloadavg()[0], 2)
return (vacant_memory, used_memory, now, load_average)
def _reply_heartbeat(self, target): def _reply_heartbeat(self, target):
"""Worker will kill its jobs when it lost connection with the master. """Worker will kill its jobs when it lost connection with the master.
""" """
...@@ -319,13 +321,25 @@ class Worker(object): ...@@ -319,13 +321,25 @@ class Worker(object):
socket.bind_to_random_port("tcp://*") socket.bind_to_random_port("tcp://*")
self.master_heartbeat_address = "{}:{}".format(self.worker_ip, self.master_heartbeat_address = "{}:{}".format(self.worker_ip,
heartbeat_master_port) heartbeat_master_port)
logger.set_dir(
os.path.expanduser('~/.parl_data/worker/{}'.format(
self.master_heartbeat_address)))
self.heartbeat_socket_initialized.set() self.heartbeat_socket_initialized.set()
logger.info("[Worker] Connect to the master node successfully. " logger.info("[Worker] Connect to the master node successfully. "
"({} CPUs)".format(self.cpu_num)) "({} CPUs)".format(self.cpu_num))
while self.master_is_alive and self.worker_is_alive: while self.master_is_alive and self.worker_is_alive:
try: try:
message = socket.recv_multipart() message = socket.recv_multipart()
socket.send_multipart([remote_constants.HEARTBEAT_TAG]) worker_status = self._get_worker_status()
socket.send_multipart([
remote_constants.HEARTBEAT_TAG,
to_byte(str(worker_status[0])),
to_byte(str(worker_status[1])),
to_byte(worker_status[2]),
to_byte(str(worker_status[3]))
])
except zmq.error.Again as e: except zmq.error.Again as e:
self.master_is_alive = False self.master_is_alive = False
except zmq.error.ContextTerminated as e: except zmq.error.ContextTerminated as e:
......
...@@ -62,6 +62,7 @@ setup( ...@@ -62,6 +62,7 @@ setup(
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
url='https://github.com/PaddlePaddle/PARL', url='https://github.com/PaddlePaddle/PARL',
packages=_find_packages(), packages=_find_packages(),
include_package_data=True,
package_data={'': ['*.so']}, package_data={'': ['*.so']},
install_requires=[ install_requires=[
"termcolor>=1.1.0", "termcolor>=1.1.0",
...@@ -72,6 +73,8 @@ setup( ...@@ -72,6 +73,8 @@ setup(
"tensorboardX==1.8", "tensorboardX==1.8",
"tb-nightly==1.15.0a20190801", "tb-nightly==1.15.0a20190801",
"click", "click",
"flask",
"psutil",
], ],
classifiers=[ classifiers=[
'Intended Audience :: Developers', 'Intended Audience :: Developers',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册