Image metadata

- Initial addition of metadata for images.
This commit is contained in:
Josh Stark 2020-01-03 17:26:25 +00:00
parent 754180a142
commit cf5b277ff2
35 changed files with 839 additions and 4133 deletions

View File

@ -1,87 +0,0 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.atomic.AtomicReference;
public abstract class AbstractQueueConsumer<R extends FleetResponse, T extends FleetRequest<R>> extends Thread implements QueueConsumer<T> {
private final Logger LOGGER = LoggerFactory.getLogger(getClass().getName());
private final RequestQueue<T> requestQueue;
private final AtomicReference<ConsumerState> state;
public AbstractQueueConsumer(final RequestQueue<T> requestQueue, final String name) {
super(name + "-Consumer");
this.requestQueue = requestQueue;
this.state = new AtomicReference<>(ConsumerState.Stopped);
}
@Override
public void run() {
while (isRunning()) {
consume();
}
}
@Override
public void start() {
getLogger().info("Starting...");
super.start();
state.set(ConsumerState.Running);
}
@Override
public void consume() {
try {
T request = requestQueue.takeOneRequest();
R response = request.execute();
handleResponse(response);
} catch (Exception e) {
getLogger().error("consume caught unhandled exception", e);
}
}
public boolean isRunning() {
return state.get().isRunning();
}
protected abstract void handleResponse(R response);
public Logger getLogger() {
return LOGGER;
}
private enum ConsumerState {
Running, Stopped;
final boolean isRunning() {
return this == Running;
}
}
}

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
public class AbstractRequestQueue<T extends FleetRequest<? extends FleetResponse>> implements RequestQueue<T> {
private final Logger LOGGER = LoggerFactory.getLogger(getClass().getName());
private final BlockingQueue<T> requestQueue;
public AbstractRequestQueue() {
this.requestQueue = new LinkedBlockingDeque<>();
}
@Override
public synchronized void enqueueRequest(final T request) {
try {
if (!requestQueue.contains(request)) {
final boolean added = requestQueue.add(request);
if (!added) {
LOGGER.warn("enqueueRequest unable to add request to queue");
}
}
} catch (Exception e) {
LOGGER.error("enqueueRequest caught unhandled exception {}", e.getMessage());
}
}
@Override
public synchronized T takeOneRequest() {
try {
return requestQueue.take();
} catch (InterruptedException e) {
LOGGER.error("takeOneRequest was interrupted: {}", e.getMessage());
throw new RuntimeException(e);
}
}
}

View File

@ -1,23 +0,0 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
public interface FleetRequest<T extends FleetResponse> {
T execute();
}

View File

@ -1,23 +0,0 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
public interface FleetResponse {
void handle();
}

View File

@ -1,23 +0,0 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
public interface QueueConsumer<T extends FleetRequest<?>> {
void consume();
}

View File

@ -52,10 +52,15 @@ public abstract class AbstractItemCache<KEY extends Key, ITEM extends HasKey<KEY
@Override
public final void addItem(final ITEM item) {
final ITEM cached = items.put(item.getKey(), item);
final ITEM original = items.get(item.getKey());
final ITEM cached = items.put(item.getKey(), item);
LOGGER.info("Item {} cached", item);
listeners.forEach(l -> l.onItemCached(cached));
if (null == original) {
listeners.forEach(l -> l.onItemAdded(cached));
} else {
listeners.forEach(l -> l.onItemUpdated(original, cached));
}
}
@Override

View File

@ -20,6 +20,6 @@ package io.linuxserver.fleet.v2.cache;
import io.linuxserver.fleet.v2.key.HasKey;
import io.linuxserver.fleet.v2.key.Key;
public class BasicItemCache<KEY extends Key, ITEM extends HasKey<KEY>> extends AbstractItemCache<KEY, ITEM> {
public final class BasicItemCache<KEY extends Key, ITEM extends HasKey<KEY>> extends AbstractItemCache<KEY, ITEM> {
// Default implementation
}

View File

@ -42,7 +42,8 @@ public interface ItemCache<KEY extends Key, ITEM extends HasKey<KEY>> {
interface ItemCacheListener<ITEM> {
void onItemCached(final ITEM item);
void onItemAdded(final ITEM item);
void onItemUpdated(final ITEM oldItem, final ITEM newItem);
void onItemRemoved(final ITEM item);
}
}

View File

@ -27,7 +27,10 @@ import io.linuxserver.fleet.v2.types.*;
import io.linuxserver.fleet.v2.types.internal.ImageOutlineRequest;
import io.linuxserver.fleet.v2.types.internal.RepositoryOutlineRequest;
import io.linuxserver.fleet.v2.types.internal.TagBranchOutlineRequest;
import io.linuxserver.fleet.v2.types.meta.ImageMetaData;
import io.linuxserver.fleet.v2.types.meta.ItemSyncSpec;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullHistory;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullStatistic;
import java.sql.*;
import java.time.LocalDateTime;
@ -54,6 +57,7 @@ public class DefaultImageDAO extends AbstractDAO implements ImageDAO {
private static final String CreateImageOutline = "{CALL Image_CreateOutline(?,?,?,?,?,?,?,?,?,?)}";
private static final String GetImage = "{CALL Image_Get(?)}";
private static final String DeleteImage = "{CALL Image_Delete(?)}";
private static final String GetImageStats = "{CALL Image_GetStats(?)}";
public DefaultImageDAO(final DatabaseProvider databaseConnection) {
super(databaseConnection);
@ -458,8 +462,11 @@ public class DefaultImageDAO extends AbstractDAO implements ImageDAO {
if (results.next()) {
final Image image = new Image(makeImageKey(results),
final ImageKey imageKey = makeImageKey(results);
final Image image = new Image(imageKey,
makeSyncSpec(results),
makeImageMetaData(connection, imageKey),
makeCountData(results),
results.getString("Description"),
results.getTimestamp("LastUpdated").toLocalDateTime());
@ -472,6 +479,37 @@ public class DefaultImageDAO extends AbstractDAO implements ImageDAO {
return null;
}
private ImageMetaData makeImageMetaData(final Connection connection, final ImageKey imageKey) throws SQLException {
try (final CallableStatement call = connection.prepareCall(GetImageStats)) {
call.setInt(1, imageKey.getId());
final ResultSet results = call.executeQuery();
final ImagePullHistory pullHistory = new ImagePullHistory();
while (results.next()) {
final long imagePulls = results.getLong("ImagePulls");
if (!results.wasNull()) {
final String timeGroup = results.getString("TimeGroup");
final String groupMode = results.getString("GroupMode");
final ImagePullStatistic statistic = new ImagePullStatistic(imagePulls,
timeGroup,
ImagePullStatistic.StatGroupMode.valueOf(groupMode));
final boolean added = pullHistory.addStatistic(statistic);
if (!added) {
getLogger().warn("Unable to add pull history {} to image {}", statistic, imageKey);
}
}
}
return new ImageMetaData(pullHistory);
}
}
private ImageKey makeImageKey(final ResultSet results) throws SQLException {
return new ImageKey(results.getInt("ImageId"),

View File

@ -18,11 +18,23 @@
package io.linuxserver.fleet.v2.db;
import io.linuxserver.fleet.core.db.DatabaseProvider;
import io.linuxserver.fleet.db.query.InsertUpdateResult;
import io.linuxserver.fleet.v2.key.UserKey;
import io.linuxserver.fleet.v2.types.User;
import io.linuxserver.fleet.v2.types.internal.UserOutlineRequest;
import io.linuxserver.fleet.v2.web.AppRole;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class DefaultUserDAO extends AbstractDAO implements UserDAO {
private static final String GetUser = "{CALL User_Get(?)}";
private static final String GetUserByName = "{CALL User_GetByName(?)}";
private static final String GetAllUser = "{CALL User_GetAll()}";
private static final String CreateUser = "{CALL User_Save(?,?,?,?,?)}";
public DefaultUserDAO(DatabaseProvider databaseProvider) {
super(databaseProvider);
}
@ -36,4 +48,28 @@ public class DefaultUserDAO extends AbstractDAO implements UserDAO {
public User lookUpUser(final String username) {
return null;
}
@Override
public InsertUpdateResult<User> createUser(final UserOutlineRequest request) {
return null;
}
@Override
public List<User> fetchAllUsers() {
return null;
}
@Override
public InsertUpdateResult<Void> removeUser(User user) {
return null;
}
private User makeOneUser(final ResultSet results) throws SQLException {
return new User(new UserKey(results.getInt("UserId")),
results.getString("UserName"),
results.getString("UserPassword"),
results.getTimestamp("ModifiedTime").toLocalDateTime(),
AppRole.valueOf(results.getString("UserRole")));
}
}

View File

@ -17,12 +17,22 @@
package io.linuxserver.fleet.v2.db;
import io.linuxserver.fleet.db.query.InsertUpdateResult;
import io.linuxserver.fleet.v2.key.UserKey;
import io.linuxserver.fleet.v2.types.User;
import io.linuxserver.fleet.v2.types.internal.UserOutlineRequest;
import java.util.List;
public interface UserDAO {
User fetchUser(UserKey userKey);
User lookUpUser(String username);
InsertUpdateResult<User> createUser(UserOutlineRequest request);
List<User> fetchAllUsers();
InsertUpdateResult<Void> removeUser(User user);
}

View File

@ -62,10 +62,6 @@ public class ImageKey extends AbstractDatabaseKey {
return getAsLookupKey().toString();
}
public ImageKey cloneWithId(int id) {
return new ImageKey(id, name, repositoryKey);
}
public final RepositoryKey getRepositoryKey() {
return repositoryKey;
}

View File

@ -20,6 +20,7 @@ package io.linuxserver.fleet.v2.types;
import io.linuxserver.fleet.v2.key.HasKey;
import io.linuxserver.fleet.v2.key.ImageKey;
import io.linuxserver.fleet.v2.key.RepositoryKey;
import io.linuxserver.fleet.v2.types.meta.ImageMetaData;
import io.linuxserver.fleet.v2.types.meta.ItemSyncSpec;
import java.time.LocalDateTime;
@ -37,9 +38,11 @@ public class Image extends AbstractSyncItem<ImageKey, Image> {
private final String description;
private final LocalDateTime lastUpdated;
private final Set<TagBranch> tagBranches;
private final ImageMetaData metaData;
public Image(final ImageKey key,
final ItemSyncSpec syncSpec,
final ImageMetaData metaData,
final ImageCountData countData,
final String description,
final LocalDateTime lastUpdated) {
@ -47,6 +50,7 @@ public class Image extends AbstractSyncItem<ImageKey, Image> {
super(key, syncSpec);
this.countData = countData;
this.metaData = metaData;
this.description = description;
this.lastUpdated = parseDateTime(lastUpdated);
this.tagBranches = new HashSet<>();
@ -57,7 +61,7 @@ public class Image extends AbstractSyncItem<ImageKey, Image> {
final String description,
final LocalDateTime lastUpdated) {
final Image cloned = new Image(getKey(), getSpec(), new ImageCountData(pullCount,starCount), description, lastUpdated);
final Image cloned = new Image(getKey(), getSpec(), getMetaData(), new ImageCountData(pullCount,starCount), description, lastUpdated);
tagBranches.forEach(t -> cloned.addTagBranch(t.cloneForUpdate()));
return cloned;
@ -66,7 +70,7 @@ public class Image extends AbstractSyncItem<ImageKey, Image> {
@Override
public final Image cloneWithSyncSpec(final ItemSyncSpec syncSpec) {
final Image cloned = new Image(getKey(), syncSpec, countData, getDescription(), getLastUpdated());
final Image cloned = new Image(getKey(), syncSpec, getMetaData(), countData, getDescription(), getLastUpdated());
tagBranches.forEach(t -> cloned.addTagBranch(t.cloneForUpdate()));
return cloned;
@ -92,6 +96,10 @@ public class Image extends AbstractSyncItem<ImageKey, Image> {
return description;
}
public final ImageMetaData getMetaData() {
return metaData;
}
public final LocalDateTime getLastUpdated() {
return parseDateTime(lastUpdated);
}

View File

@ -19,56 +19,46 @@ package io.linuxserver.fleet.v2.types;
import io.linuxserver.fleet.v2.key.AbstractHasKey;
import io.linuxserver.fleet.v2.key.UserKey;
import io.linuxserver.fleet.v2.web.AppRole;
import java.time.LocalDateTime;
public class User extends AbstractHasKey<UserKey> {
private final String username;
private final String password;
private final String username;
private final String password;
private final AppRole role;
private final LocalDateTime modifiedTime;
private LocalDateTime modifiedTime;
public User(final UserKey key,
final String username,
final String password,
final LocalDateTime modifiedTime,
final AppRole role) {
super(key);
public User(String username, String password) {
super(new UserKey());
this.username = username;
this.password = password;
this.username = username;
this.password = password;
this.modifiedTime = LocalDateTime.of(modifiedTime.toLocalDate(), modifiedTime.toLocalTime());
this.role = role;
}
public User(Integer id, String username, String password) {
super(new UserKey(id));
this.username = username;
this.password = password;
}
public String getUsername() {
public final String getUsername() {
return username;
}
public String getPassword() {
public final String getPassword() {
return password;
}
public User withModifiedTime(LocalDateTime modifiedTime) {
this.modifiedTime = modifiedTime;
return this;
public final AppRole getRole() {
return role;
}
public LocalDateTime getModifiedTime() {
public final LocalDateTime getModifiedTime() {
if (null != modifiedTime) {
return LocalDateTime.of(
modifiedTime.getYear(),
modifiedTime.getMonth(),
modifiedTime.getDayOfMonth(),
modifiedTime.getHour(),
modifiedTime.getMinute(),
modifiedTime.getSecond()
);
return LocalDateTime.of(modifiedTime.toLocalDate(), modifiedTime.toLocalTime());
}
return null;

View File

@ -0,0 +1,73 @@
/*
* Copyright (c) 2020 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.v2.types.api;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullStatistic;
import java.util.*;
import java.util.stream.Collectors;
public class ApiImagePullHistoryWrapper extends AbstractApiWrapper<List<ImagePullStatistic>> {
public ApiImagePullHistoryWrapper(final List<ImagePullStatistic> originalObject) {
super(originalObject);
}
public final List<String> getLabels() {
return getOriginalObject().stream().map(ImagePullStatistic::getGroupedDateTime).collect(Collectors.toList());
}
public final List<Long> getPulls() {
return getOriginalObject().stream().map(ImagePullStatistic::getPullCount).collect(Collectors.toList());
}
public final PullDifferentialsWithLabels getPullDifferential() {
final PullDifferentialsWithLabels differentialsWithLabels = new PullDifferentialsWithLabels();
int i;
for (i = 1; i < getOriginalObject().size(); i++) {
final ImagePullStatistic previousStat = getOriginalObject().get(i - 1);
final ImagePullStatistic currentStat = getOriginalObject().get(i);
differentialsWithLabels.addDifferential(currentStat.getGroupedDateTime(), (currentStat.getPullCount() - previousStat.getPullCount()));
}
return differentialsWithLabels;
}
public static class PullDifferentialsWithLabels {
private final Map<String, Long> differentials;
public PullDifferentialsWithLabels() {
differentials = new TreeMap<>();
}
public final void addDifferential(final String label, final Long pulls) {
differentials.put(label, pulls);
}
public final Set<String> getLabels() {
return differentials.keySet();
}
public final Collection<Long> getPulls() {
return differentials.values();
}
}
}

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2019 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.v2.types.internal;
import io.linuxserver.fleet.v2.web.AppRole;
public class UserOutlineRequest {
public static final UserOutlineRequest InitialFirstLoadUser = new UserOutlineRequest("admin", "admin", AppRole.Admin);
private final String username;
private final String password;
private final AppRole role;
public UserOutlineRequest(final String username, final String password, final AppRole role) {
this.username = username;
this.password = password;
this.role = role;
}
public final String getUsername() {
return username;
}
public final String getPassword() {
return password;
}
public final AppRole getRole() {
return role;
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2019 LinuxServer.io
* Copyright (c) 2020 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -15,11 +15,22 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.queue;
package io.linuxserver.fleet.v2.types.meta;
public interface RequestQueue<T extends FleetRequest> {
import io.linuxserver.fleet.v2.types.meta.history.ImagePullHistory;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullStatistic;
void enqueueRequest(T request);
import java.util.List;
T takeOneRequest();
public class ImageMetaData {
private final ImagePullHistory pullHistory;
public ImageMetaData(final ImagePullHistory pullHistory) {
this.pullHistory = pullHistory;
}
public final List<ImagePullStatistic> getHistoryFor(final ImagePullStatistic.StatGroupMode groupMode) {
return pullHistory.getHistoryFor(groupMode);
}
}

View File

@ -0,0 +1,40 @@
/*
* Copyright (c) 2020 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.v2.types.meta.history;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
public class ImagePullHistory {
private final Set<ImagePullStatistic> historicalPulls;
public ImagePullHistory() {
historicalPulls = new TreeSet<>();
}
public final boolean addStatistic(final ImagePullStatistic statistic) {
return historicalPulls.add(statistic);
}
public final List<ImagePullStatistic> getHistoryFor(final ImagePullStatistic.StatGroupMode groupMode) {
return historicalPulls.stream().filter(s -> s.isGroupedBy(groupMode)).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,81 @@
/*
* Copyright (c) 2020 LinuxServer.io
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.linuxserver.fleet.v2.types.meta.history;
public class ImagePullStatistic implements Comparable<ImagePullStatistic> {
private final long pullCount;
private final String groupedDateTime;
private final StatGroupMode groupMode;
public ImagePullStatistic(final long pullCount,
final String groupedDateTime,
final StatGroupMode groupMode) {
this.pullCount = pullCount;
this.groupedDateTime = groupedDateTime;
this.groupMode = groupMode;
}
public final long getPullCount() {
return pullCount;
}
public final String getGroupedDateTime() {
return groupedDateTime;
}
public final boolean isGroupedBy(final StatGroupMode groupMode) {
return this.groupMode == groupMode;
}
@Override
public int compareTo(final ImagePullStatistic o) {
final int dateComparison = groupedDateTime.compareTo(o.getGroupedDateTime());
if (dateComparison == 0) {
return groupMode.compareTo(o.groupMode);
}
return dateComparison;
}
@Override
public int hashCode() {
return groupMode.hashCode() + groupedDateTime.hashCode();
}
@Override
public boolean equals(final Object obj) {
if (!(obj instanceof ImagePullStatistic)) {
return false;
}
final ImagePullStatistic other = (ImagePullStatistic) obj;
return other.getGroupedDateTime().equals(getGroupedDateTime()) && other.isGroupedBy(groupMode);
}
@Override
public String toString() {
return pullCount + "@" + groupedDateTime + ":" + groupMode;
}
public enum StatGroupMode {
Day, Week, Month;
}
}

View File

@ -19,6 +19,6 @@ package io.linuxserver.fleet.v2.web;
import io.javalin.core.security.Role;
public enum FleetRole implements Role {
Anyone, AdminOnly
public enum AppRole implements Role {
Anyone, Admin
}

View File

@ -44,6 +44,7 @@ public interface Locations {
String Image = "image";
String Schedule = "schedule";
String Sync = "sync";
String Stats = "stats";
}
interface Admin {

View File

@ -18,8 +18,10 @@
package io.linuxserver.fleet.v2.web;
import io.javalin.Javalin;
import io.javalin.core.validation.JavalinValidation;
import io.linuxserver.fleet.core.FleetAppController;
import io.linuxserver.fleet.core.config.WebConfiguration;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullStatistic;
import io.linuxserver.fleet.v2.web.routes.*;
import static io.javalin.apibuilder.ApiBuilder.*;
@ -46,6 +48,8 @@ public class WebRouteController {
Javalin.log.info(printBanner());
JavalinValidation.register(ImagePullStatistic.StatGroupMode.class, ImagePullStatistic.StatGroupMode::valueOf);
webInstance.exception(ApiException.class, (e, ctx) -> {
ctx.status(400);
@ -54,33 +58,42 @@ public class WebRouteController {
webInstance.routes(() -> {
get(Locations.Login, new LoginController(app), roles(FleetRole.Anyone));
get(Locations.Home, new HomeController( app), roles(FleetRole.Anyone));
get(Locations.Image, new ImageController(app), roles(FleetRole.Anyone));
get(Locations.Login, new LoginController(app), roles(AppRole.Anyone));
get(Locations.Home, new HomeController( app), roles(AppRole.Anyone));
get(Locations.Image, new ImageController(app), roles(AppRole.Anyone));
get(Locations.Admin.Repositories, new AdminRepositoryController(app), roles(FleetRole.Anyone));
get(Locations.Admin.Images, new AdminImageController( app), roles(FleetRole.Anyone));
get(Locations.Admin.Schedules, new AdminScheduleController( app), roles(FleetRole.Anyone));
get(Locations.Admin.Repositories, new AdminRepositoryController(app), roles(AppRole.Anyone));
get(Locations.Admin.Images, new AdminImageController( app), roles(AppRole.Anyone));
get(Locations.Admin.Schedules, new AdminScheduleController( app), roles(AppRole.Anyone));
path(Locations.Internal.Api, () -> {
path(Locations.Internal.Repository, () -> {
put(apiController::updateRepositorySpec, roles(FleetRole.Anyone));
post(apiController::addNewRepository, roles(FleetRole.Anyone));
delete(apiController::deleteRepository, roles(FleetRole.Anyone));
put(apiController::updateRepositorySpec, roles(AppRole.Anyone));
post(apiController::addNewRepository, roles(AppRole.Anyone));
delete(apiController::deleteRepository, roles(AppRole.Anyone));
path(Locations.Internal.Sync, () -> {
put(apiController::syncRepository, roles(FleetRole.Anyone));
put(apiController::syncRepository, roles(AppRole.Anyone));
});
});
path(Locations.Internal.Image, () -> {
put(apiController::updateImageSpec, roles(FleetRole.Anyone));
put(apiController::updateImageSpec, roles(AppRole.Anyone));
path(Locations.Internal.Sync, () -> {
put(apiController::syncImage, roles(AppRole.Anyone));
});
path(Locations.Internal.Stats, () -> {
get(apiController::getImagePullHistory, roles(AppRole.Anyone));
});
});
path(Locations.Internal.Schedule, () -> {
put(apiController::runSchedule, roles(FleetRole.Anyone));
put(apiController::runSchedule, roles(AppRole.Anyone));
});
});
});

View File

@ -22,7 +22,7 @@ import io.javalin.core.security.Role;
import io.javalin.http.Context;
import io.javalin.http.Handler;
import io.linuxserver.fleet.v2.types.User;
import io.linuxserver.fleet.v2.web.FleetRole;
import io.linuxserver.fleet.v2.web.AppRole;
import io.linuxserver.fleet.v2.web.Locations;
import io.linuxserver.fleet.v2.web.SessionAttributes;
import org.jetbrains.annotations.NotNull;
@ -34,7 +34,7 @@ public class DefaultAccessManager implements AccessManager {
@Override
public void manage(@NotNull Handler handler, @NotNull Context ctx, @NotNull Set<Role> permittedRoles) throws Exception {
if (permittedRoles.contains(FleetRole.Anyone)) {
if (permittedRoles.contains(AppRole.Anyone)) {
handler.handle(ctx);
} else {

View File

@ -26,11 +26,13 @@ import io.linuxserver.fleet.v2.service.AbstractAppService;
import io.linuxserver.fleet.v2.thread.schedule.AppSchedule;
import io.linuxserver.fleet.v2.types.Image;
import io.linuxserver.fleet.v2.types.Repository;
import io.linuxserver.fleet.v2.types.api.ApiImagePullHistoryWrapper;
import io.linuxserver.fleet.v2.types.api.ApiImageWrapper;
import io.linuxserver.fleet.v2.types.api.ApiRepositoryWrapper;
import io.linuxserver.fleet.v2.types.api.ApiScheduleWrapper;
import io.linuxserver.fleet.v2.types.internal.RepositoryOutlineRequest;
import io.linuxserver.fleet.v2.types.meta.ItemSyncSpec;
import io.linuxserver.fleet.v2.types.meta.history.ImagePullStatistic;
import io.linuxserver.fleet.v2.web.ApiException;
import io.linuxserver.fleet.v2.web.request.NewRepositoryRequest;
import io.linuxserver.fleet.v2.web.request.UpdateImageSpecRequest;
@ -134,6 +136,20 @@ public class InternalApiController extends AbstractAppService {
}
}
public final void syncImage(final Context ctx) {
try {
final String imageKeyParam = ctx.formParam("imageKey", String.class).get();
getController().synchroniseImage(ImageKey.parse(imageKeyParam));
ctx.json("OK");
} catch (IllegalArgumentException e) {
throw new ApiException(e.getMessage(), e);
}
}
public void deleteRepository(final Context ctx) {
try {
@ -147,4 +163,19 @@ public class InternalApiController extends AbstractAppService {
throw new ApiException(e.getMessage(), e);
}
}
public void getImagePullHistory(final Context ctx) {
try {
final String imageKeyParam = ctx.queryParam("imageKey", String.class).get();
final ImagePullStatistic.StatGroupMode groupMode = ctx.queryParam("groupMode", ImagePullStatistic.StatGroupMode.class).get();
final Image cachedImage = getController().getRepositoryService().getImage(ImageKey.parse(imageKeyParam));
ctx.json(new ApiImagePullHistoryWrapper(cachedImage.getMetaData().getHistoryFor(groupMode)));
} catch (IllegalArgumentException e) {
throw new ApiException(e.getMessage(), e);
}
}
}

View File

@ -63,6 +63,21 @@ CREATE TABLE Schedule (
) ENGINE=InnoDB;
//
CREATE TABLE AppSetting (
`id` INT NOT NULL auto_increment PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`string_val` VARCHAR(255) DEFAULT NULL,
`int_val` INT DEFAULT NULL,
`double_val` DOUBLE(6,2) DEFAULT NULL,
`boolean_val` TINYINT DEFAULT NULL,
UNIQUE KEY (`name`)
) ENGINE=InnoDB;
//
ALTER TABLE Users
ADD COLUMN `role` enum('Admin') DEFAULT 'Admin';
//
CREATE OR REPLACE VIEW `Image_View` AS (
SELECT
@ -421,6 +436,93 @@ BEGIN
END //
CREATE OR REPLACE PROCEDURE `Image_StorePullHistory`
(
in_image_id INT,
in_image_pulls BIGINT,
OUT out_status ENUM('Updated', 'NoChange')
)
BEGIN
IF EXISTS(SELECT 1 FROM Image WHERE `id` = in_image_id) THEN
INSERT INTO ImagePullHistory
(
`image_id`,
`pull_timestamp`,
`pull_count`
)
VALUES
(
in_image_id,
UNIX_TIMESTAMP(NOW()),
in_image_pulls
);
SET out_status = 'Updated';
ELSE
SET out_status = 'NoChange';
END IF;
END;
//
CREATE OR REPLACE PROCEDURE `Image_GetStats` (
in_image_id INT
)
BEGIN
SELECT
`image_id` AS ImageId,
MAX(`pull_count`) AS ImagePulls,
FROM_UNIXTIME(`pull_timestamp`, '%Y%m%d') AS TimeGroup,
'Week' AS GroupMode
FROM
ImagePullHistory
WHERE
`image_id` = in_image_id
AND
`pull_timestamp` > unix_timestamp(now() - interval 7 day)
GROUP BY
TimeGroup
UNION ALL
SELECT
`image_id` AS ImageId,
MAX(`pull_count`) AS ImagePulls,
FROM_UNIXTIME(`pull_timestamp`, '%Y%m%d') AS TimeGroup,
'Month' AS GroupMode
FROM
ImagePullHistory
WHERE
`image_id` = in_image_id
AND
`pull_timestamp` > unix_timestamp(now() - interval 1 month)
GROUP BY
TimeGroup
UNION ALL
SELECT
`image_id` AS ImageId,
MAX(`pull_count`) AS ImagePulls,
FROM_UNIXTIME(`pull_timestamp`, '%Y%m%d%h') AS TimeGroup,
'Day' AS GroupMode
FROM
ImagePullHistory
WHERE
`image_id` = in_image_id
AND
`pull_timestamp` > unix_timestamp(date(now()))
ORDER BY
GroupMode, TimeGroup;
END;
//
CREATE OR REPLACE PROCEDURE `Image_Store`
(
in_id INT,
@ -463,6 +565,8 @@ BEGIN
SET out_status = 'Updated';
END IF;
CALL Image_StorePullHistory(in_id, in_pulls, out_status);
SELECT * FROM ImageKey_View WHERE `ImageId` = in_id;
END IF;
@ -537,3 +641,103 @@ BEGIN
Schedule;
END;
//
CREATE OR REPLACE VIEW `User_View` AS (
SELECT
`id` AS `UserId`,
`username` AS `UserName`,
`password` AS `UserPassword`,
`role` AS `UserRole`,
`modified` AS `ModifiedTime`
FROM
Users
);
//
CREATE OR REPLACE PROCEDURE `User_Save`
(
in_id INT,
in_username VARCHAR(255),
in_password VARCHAR(255),
in_role ENUM('Admin'),
OUT out_status ENUM('Exists', 'Inserted')
)
BEGIN
IF in_id IS NULL THEN
INSERT INTO Users
(
`username`,
`password`,
`role`
)
VALUES
(
in_username,
in_password,
in_role
);
SET out_status = 'Inserted';
SELECT * FROM User_View WHERE `id` = LAST_INSERT_ID();
ELSE
SET out_status = 'Exists';
END IF;
END;
//
CREATE OR REPLACE PROCEDURE `User_GetAll` ()
BEGIN
SELECT * FROM User_View;
END;
//
CREATE OR REPLACE PROCEDURE `User_Get`
(
in_id INT
)
BEGIN
SELECT
*
FROM
User_View
WHERE
UserId = in_id;
END;
//
CREATE OR REPLACE PROCEDURE `User_GetByName`
(
in_username VARCHAR(255)
)
BEGIN
SELECT
*
FROM
User_View
WHERE
UserName = in_username;
END;
//
CREATE OR REPLACE PROCEDURE `User_Delete`
(
in_id INT
)
BEGIN
DELETE FROM Users WHERE `id` = in_id;
END;
//

View File

@ -23,5 +23,5 @@ INSERT INTO
VALUES
('SyncAllCachedImages', '1:hours', '0:minutes', 'io.linuxserver.fleet.v2.thread.schedule.sync.AllImagesSyncSchedule'),
('GetMissingImages', '30:minutes', '0:minutes', 'io.linuxserver.fleet.v2.thread.schedule.sync.GetMissingImagesSchedule'),
('RefreshCache', '1:days', '10:minutes', 'io.linuxserver.fleet.v2.thread.schedule.cache.RefreshCacheSchedule'),
('RefreshCache', '1:days', '15:minutes', 'io.linuxserver.fleet.v2.thread.schedule.cache.RefreshCacheSchedule'),
('CheckAppVersion', '1:days', '0:minutes', 'io.linuxserver.fleet.v2.thread.schedule.CheckAppVersionSchedule');

File diff suppressed because one or more lines are too long

View File

@ -130,8 +130,32 @@ var adminManager = (function($) {
})
};
ajaxManager.call(request, function(data) {
notificationManager.makeNotification(data.name + ' updated', 'success');
});
};
var syncImage = function(trigger) {
var imageKey = trigger.data('image-key');
var request = {
url: '/internalapi/image/sync',
method: 'put',
data: {
'imageKey': imageKey
}
};
toggleButtonLoadingState(trigger);
ajaxManager.call(request, function() {
notificationManager.makeNotification('Image updated', 'success');
notificationManager.makeNotification('Sync request submitted.', 'success');
toggleButtonLoadingState(trigger);
}, function() {
toggleButtonLoadingState(trigger);
});
};
@ -160,9 +184,7 @@ var adminManager = (function($) {
})
};
ajaxManager.call(request, function(data) {
notificationManager.makeNotification('Updated ' + data.name, 'success');
});
ajaxManager.call(request, function() {});
};
var cleanEmpty = function(val) {
@ -207,6 +229,10 @@ var adminManager = (function($) {
$('.update-image-trigger').on('click', function() {
updateImageSpec($(this).parents('.image-row'));
});
$('.sync-image').on('click', function() {
syncImage($(this));
});
};
return {

File diff suppressed because one or more lines are too long

View File

@ -1,410 +0,0 @@
!function(r,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=r.document?e(r,!0):function(a){if(!a.document)throw Error("jQuery requires a window with a document");return e(a)}:e(r)}("undefined"!=typeof window?window:this,function(r,e){function a(c,u,a){var d,f=(u=u||C).createElement("script");if(f.text=c,a)for(d in ab)a[d]&&(f[d]=a[d]);u.head.appendChild(f).parentNode.removeChild(f)}function b(c){return null==c?c+"":"object"==typeof c||"function"==typeof c?K[xb.call(c)]||
"object":typeof c}function h(c){var u=!!c&&"length"in c&&c.length,a=b(c);return!O(c)&&!Ga(c)&&("array"===a||0===u||"number"==typeof u&&0<u&&u-1 in c)}function l(c,u){return c.nodeName&&c.nodeName.toLowerCase()===u.toLowerCase()}function k(c,u,a){return O(u)?g.grep(c,function(c,d){return!!u.call(c,d,c)!==a}):u.nodeType?g.grep(c,function(c){return c===u!==a}):"string"!=typeof u?g.grep(c,function(c){return-1<ba.call(u,c)!==a}):g.filter(u,c,a)}function n(c,u){for(;(c=c[u])&&1!==c.nodeType;);return c}
function p(c){var u={};return g.each(c.match(ta)||[],function(c,a){u[a]=!0}),u}function w(c){return c}function y(c){throw c;}function v(c,u,a,d){var f;try{c&&O(f=c.promise)?f.call(c).done(u).fail(a):c&&O(f=c.then)?f.call(c,u,a):u.apply(void 0,[c].slice(d))}catch(g){a.apply(void 0,[g])}}function x(){C.removeEventListener("DOMContentLoaded",x);r.removeEventListener("load",x);g.ready()}function z(c,u){return u.toUpperCase()}function I(c){return c.replace(ca,"ms-").replace(B,z)}function R(){this.expando=
g.expando+R.uid++}function F(c,u,a){var d;if(void 0===a&&1===c.nodeType)if(d="data-"+u.replace(La,"-$\x26").toLowerCase(),"string"==typeof(a=c.getAttribute(d))){try{d=a,a="true"===d||"false"!==d&&("null"===d?null:d===+d+""?+d:V.test(d)?JSON.parse(d):d)}catch(f){}fa.set(c,u,a)}else a=void 0;return a}function M(c,u,a,d){var f,b,m=20,e=d?function(){return d.cur()}:function(){return g.css(c,u,"")},t=e(),q=a&&a[3]||(g.cssNumber[u]?"":"px"),h=(g.cssNumber[u]||"px"!==q&&+t)&&Ma.exec(g.css(c,u));if(h&&h[3]!==
q){t/=2;q=q||h[3];for(h=+t||1;m--;)g.style(c,u,h+q),0>=(1-b)*(1-(b=e()/t||.5))&&(m=0),h/=b;h*=2;g.style(c,u,h+q);a=a||[]}return a&&(h=+h||+t||0,f=a[1]?h+(a[1]+1)*a[2]:+a[2],d&&(d.unit=q,d.start=h,d.end=f)),f}function D(c,u){for(var a,d,f=[],b=0,m=c.length;b<m;b++)if((d=c[b]).style)if(a=d.style.display,u){if("none"===a&&(f[b]=G.get(d,"display")||null,f[b]||(d.style.display="")),""===d.style.display&&Ua(d)){a=b;var e,t=void 0;e=d.ownerDocument;var q=d.nodeName;e=(d=kb[q])||(t=e.body.appendChild(e.createElement(q)),
d=g.css(t,"display"),t.parentNode.removeChild(t),"none"===d&&(d="block"),kb[q]=d,d);f[a]=e}}else"none"!==a&&(f[b]="none",G.set(d,"display",a));for(b=0;b<m;b++)null!=f[b]&&(c[b].style.display=f[b]);return c}function A(c,u){var a;return a="undefined"!=typeof c.getElementsByTagName?c.getElementsByTagName(u||"*"):"undefined"!=typeof c.querySelectorAll?c.querySelectorAll(u||"*"):[],void 0===u||u&&l(c,u)?g.merge([c],a):a}function W(c,a){for(var d=0,f=c.length;d<f;d++)G.set(c[d],"globalEval",!a||G.get(a[d],
"globalEval"))}function T(c,a,d,f,m){for(var e,t,q,h,k=a.createDocumentFragment(),l=[],n=0,E=c.length;n<E;n++)if((e=c[n])||0===e)if("object"===b(e))g.merge(l,e.nodeType?[e]:e);else if(yb.test(e)){t=t||k.appendChild(a.createElement("div"));q=(Na.exec(e)||["",""])[1].toLowerCase();q=la[q]||la._default;t.innerHTML=q[1]+g.htmlPrefilter(e)+q[2];for(q=q[0];q--;)t=t.lastChild;g.merge(l,t.childNodes);(t=k.firstChild).textContent=""}else l.push(a.createTextNode(e));k.textContent="";for(n=0;e=l[n++];)if(f&&
-1<g.inArray(e,f))m&&m.push(e);else if(h=g.contains(e.ownerDocument,e),t=A(k.appendChild(e),"script"),h&&W(t),d)for(q=0;e=t[q++];)na.test(e.type||"")&&d.push(e);return k}function wa(){return!0}function ua(){return!1}function Ba(){try{return C.activeElement}catch(c){}}function Oa(c,a,d,f,b,m){var e,t;if("object"==typeof a){"string"!=typeof d&&(f=f||d,d=void 0);for(t in a)Oa(c,t,d,f,a[t],m);return c}if(null==f&&null==b?(b=d,f=d=void 0):null==b&&("string"==typeof d?(b=f,f=void 0):(b=f,f=d,d=void 0)),
!1===b)b=ua;else if(!b)return c;return 1===m&&(e=b,(b=function(c){return g().off(c),e.apply(this,arguments)}).guid=e.guid||(e.guid=g.guid++)),c.each(function(){g.event.add(this,a,b,f,d)})}function lb(c,a){return l(c,"table")&&l(11!==a.nodeType?a:a.firstChild,"tr")?g(c).children("tbody")[0]||c:c}function Va(c){return c.type=(null!==c.getAttribute("type"))+"/"+c.type,c}function zb(c){return"true/"===(c.type||"").slice(0,5)?c.type=c.type.slice(5):c.removeAttribute("type"),c}function mb(c,a){var d,f,
b,m,e,t;if(1===a.nodeType){if(G.hasData(c)&&(d=G.access(c),f=G.set(a,d),t=d.events))for(b in delete f.handle,f.events={},t)for(d=0,f=t[b].length;d<f;d++)g.event.add(a,b,t[b][d]);fa.hasData(c)&&(m=fa.access(c),e=g.extend({},m),fa.set(a,e))}}function Ca(c,u,d,f){u=nb.apply([],u);var b,m,e,t,q=0,h=c.length,k=h-1,l=u[0],n=O(l);if(n||1<h&&"string"==typeof l&&!Q.checkClone&&ob.test(l))return c.each(function(a){var b=c.eq(a);n&&(u[0]=l.call(this,a,b.html()));Ca(b,u,d,f)});if(h&&(b=T(u,c[0].ownerDocument,
!1,c,f),m=b.firstChild,1===b.childNodes.length&&(b=m),m||f)){for(e=(m=g.map(A(b,"script"),Va)).length;q<h;q++)t=b,q!==k&&(t=g.clone(t,!0,!0),e&&g.merge(m,A(t,"script"))),d.call(c[q],t,q);if(e)for(b=m[m.length-1].ownerDocument,g.map(m,zb),q=0;q<e;q++)t=m[q],na.test(t.type||"")&&!G.access(t,"globalEval")&&g.contains(b,t)&&(t.src&&"module"!==(t.type||"").toLowerCase()?g._evalUrl&&g._evalUrl(t.src):a(t.textContent.replace(Ab,""),b,t))}return c}function pb(c,a,d){for(var f=a?g.filter(a,c):c,b=0;null!=
(a=f[b]);b++)d||1!==a.nodeType||g.cleanData(A(a)),a.parentNode&&(d&&g.contains(a.ownerDocument,a)&&W(A(a,"script")),a.parentNode.removeChild(a));return c}function Wa(c,a,d){var f,b,m,e,t=c.style;return(d=d||xa(c))&&(""!==(e=d.getPropertyValue(a)||d[a])||g.contains(c.ownerDocument,c)||(e=g.style(c,a)),!Q.pixelBoxStyles()&&Pa.test(e)&&P.test(a)&&(f=t.width,b=t.minWidth,m=t.maxWidth,t.minWidth=t.maxWidth=t.width=e,e=d.width,t.width=f,t.minWidth=b,t.maxWidth=m)),void 0!==e?e+"":e}function Bb(c,a){return{get:function(){if(!c())return(this.get=
a).apply(this,arguments);delete this.get}}}function bb(c){var a=g.cssProps[c];if(!a){var a=g.cssProps,d;a:if(d=c,!(d in Xa)){for(var f=d[0].toUpperCase()+d.slice(1),b=Cb.length;b--;)if((d=Cb[b]+f)in Xa)break a;d=void 0}a=a[c]=d||c}return a}function cb(c,a,d){return(c=Ma.exec(a))?Math.max(0,c[2]-(d||0))+(c[3]||"px"):a}function db(c,a,d,f,b,m){var e="width"===a?1:0,t=0,q=0;if(d===(f?"border":"content"))return 0;for(;4>e;e+=2)"margin"===d&&(q+=g.css(c,d+ka[e],!0,b)),f?("content"===d&&(q-=g.css(c,"padding"+
ka[e],!0,b)),"margin"!==d&&(q-=g.css(c,"border"+ka[e]+"Width",!0,b))):(q+=g.css(c,"padding"+ka[e],!0,b),"padding"!==d?q+=g.css(c,"border"+ka[e]+"Width",!0,b):t+=g.css(c,"border"+ka[e]+"Width",!0,b));return!f&&0<=m&&(q+=Math.max(0,Math.ceil(c["offset"+a[0].toUpperCase()+a.slice(1)]-m-q-t-.5))),q}function qb(c,a,d){var f=xa(c),b=Wa(c,a,f),m="border-box"===g.css(c,"boxSizing",!1,f),e=m;if(Pa.test(b)){if(!d)return b;b="auto"}return e=e&&(Q.boxSizingReliable()||b===c.style[a]),("auto"===b||!parseFloat(b)&&
"inline"===g.css(c,"display",!1,f))&&(b=c["offset"+a[0].toUpperCase()+a.slice(1)],e=!0),(b=parseFloat(b)||0)+db(c,a,d||(m?"border":"content"),e,f,b)+"px"}function X(c,a,d,f,b){return new X.prototype.init(c,a,d,f,b)}function da(){eb&&(!1===C.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(da):r.setTimeout(da,g.fx.interval),g.fx.tick())}function rb(){return r.setTimeout(function(){Qa=void 0}),Qa=Date.now()}function Ha(c,a){var d,f=0,b={height:c};for(a=a?1:0;4>f;f+=2-a)b["margin"+(d=ka[f])]=
b["padding"+d]=c;return a&&(b.opacity=b.width=c),b}function Da(c,a,d){for(var f,b=(oa.tweeners[a]||[]).concat(oa.tweeners["*"]),g=0,m=b.length;g<m;g++)if(f=b[g].call(d,a,c))return f}function S(c,a){var d,f,b,m,e;for(d in c)if(f=I(d),b=a[f],m=c[d],Array.isArray(m)&&(b=m[1],m=c[d]=m[0]),d!==f&&(c[f]=m,delete c[d]),(e=g.cssHooks[f])&&"expand"in e)for(d in m=e.expand(m),delete c[f],m)d in c||(c[d]=m[d],a[d]=b);else a[f]=b}function oa(c,a,d){var f,b=0,m=oa.prefilters.length,e=g.Deferred().always(function(){delete t.elem}),
t=function(){if(f)return!1;for(var a=Qa||rb(),a=Math.max(0,q.startTime+q.duration-a),d=1-(a/q.duration||0),u=0,b=q.tweens.length;u<b;u++)q.tweens[u].run(d);return e.notifyWith(c,[q,d,a]),1>d&&b?a:(b||e.notifyWith(c,[q,1,0]),e.resolveWith(c,[q]),!1)},q=e.promise({elem:c,props:g.extend({},a),opts:g.extend(!0,{specialEasing:{},easing:g.easing._default},d),originalProperties:a,originalOptions:d,startTime:Qa||rb(),duration:d.duration,tweens:[],createTween:function(a,d){var u=g.Tween(c,q.opts,a,d,q.opts.specialEasing[a]||
q.opts.easing);return q.tweens.push(u),u},stop:function(a){var d=0,u=a?q.tweens.length:0;if(f)return this;for(f=!0;d<u;d++)q.tweens[d].run(1);return a?(e.notifyWith(c,[q,1,0]),e.resolveWith(c,[q,a])):e.rejectWith(c,[q,a]),this}});d=q.props;for(S(d,q.opts.specialEasing);b<m;b++)if(a=oa.prefilters[b].call(q,c,d,q.opts))return O(a.stop)&&(g._queueHooks(q.elem,q.opts.queue).stop=a.stop.bind(a)),a;return g.map(d,Da,q),O(q.opts.start)&&q.opts.start.call(c,q),q.progress(q.opts.progress).done(q.opts.done,
q.opts.complete).fail(q.opts.fail).always(q.opts.always),g.fx.timer(g.extend(t,{elem:c,anim:q,queue:q.opts.queue})),q}function ya(c){return(c.match(ta)||[]).join(" ")}function pa(c){return c.getAttribute&&c.getAttribute("class")||""}function J(c){return Array.isArray(c)?c:"string"==typeof c?c.match(ta)||[]:[]}function fb(c,a,d,f){var m;if(Array.isArray(a))g.each(a,function(a,u){d||Aa.test(c)?f(c,u):fb(c+"["+("object"==typeof u&&null!=u?a:"")+"]",u,d,f)});else if(d||"object"!==b(a))f(c,a);else for(m in a)fb(c+
"["+m+"]",a[m],d,f)}function Ya(c){return function(a,d){"string"!=typeof a&&(d=a,a="*");var f,b=0,g=a.toLowerCase().match(ta)||[];if(O(d))for(;f=g[b++];)"+"===f[0]?(f=f.slice(1)||"*",(c[f]=c[f]||[]).unshift(d)):(c[f]=c[f]||[]).push(d)}}function sb(c,a,d,f){function b(q){var t;return m[q]=!0,g.each(c[q]||[],function(c,g){var q=g(a,d,f);return"string"!=typeof q||e||m[q]?e?!(t=q):void 0:(a.dataTypes.unshift(q),b(q),!1)}),t}var m={},e=c===Nb;return b(a.dataTypes[0])||!m["*"]&&b("*")}function qa(c,a){var d,
f,b=g.ajaxSettings.flatOptions||{};for(d in a)void 0!==a[d]&&((b[d]?c:f||(f={}))[d]=a[d]);return f&&g.extend(!0,c,f),c}var ga=[],C=r.document,Db=Object.getPrototypeOf,za=ga.slice,nb=ga.concat,Ea=ga.push,ba=ga.indexOf,K={},xb=K.toString,gb=K.hasOwnProperty,Eb=gb.toString,Ob=Eb.call(Object),Q={},O=function(c){return"function"==typeof c&&"number"!=typeof c.nodeType},Ga=function(c){return null!=c&&c===c.window},ab={type:!0,src:!0,noModule:!0},g=function(c,a){return new g.fn.init(c,a)},Fb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
g.fn=g.prototype={jquery:"3.3.1",constructor:g,length:0,toArray:function(){return za.call(this)},get:function(c){return null==c?za.call(this):0>c?this[c+this.length]:this[c]},pushStack:function(c){c=g.merge(this.constructor(),c);return c.prevObject=this,c},each:function(c){return g.each(this,c)},map:function(c){return this.pushStack(g.map(this,function(a,d){return c.call(a,d,a)}))},slice:function(){return this.pushStack(za.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},
eq:function(c){var a=this.length;c=+c+(0>c?a:0);return this.pushStack(0<=c&&c<a?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:Ea,sort:ga.sort,splice:ga.splice};g.extend=g.fn.extend=function(){var c,a,d,f,b,m,e=arguments[0]||{},q=1,t=arguments.length,h=!1;"boolean"==typeof e&&(h=e,e=arguments[q]||{},q++);"object"==typeof e||O(e)||(e={});for(q===t&&(e=this,q--);q<t;q++)if(null!=(c=arguments[q]))for(a in c)d=e[a],e!==(f=c[a])&&(h&&f&&(g.isPlainObject(f)||(b=Array.isArray(f)))?
(b?(b=!1,m=d&&Array.isArray(d)?d:[]):m=d&&g.isPlainObject(d)?d:{},e[a]=g.extend(h,m,f)):void 0!==f&&(e[a]=f));return e};g.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(c){throw Error(c);},noop:function(){},isPlainObject:function(c){var a,d;return!(!c||"[object Object]"!==xb.call(c))&&(!(a=Db(c))||"function"==typeof(d=gb.call(a,"constructor")&&a.constructor)&&Eb.call(d)===Ob)},isEmptyObject:function(c){for(var a in c)return!1;return!0},globalEval:function(c){a(c)},
each:function(c,a){var d,f=0;if(h(c))for(d=c.length;f<d&&!1!==a.call(c[f],f,c[f]);f++);else for(f in c)if(!1===a.call(c[f],f,c[f]))break;return c},trim:function(c){return null==c?"":(c+"").replace(Fb,"")},makeArray:function(c,a){var d=a||[];return null!=c&&(h(Object(c))?g.merge(d,"string"==typeof c?[c]:c):Ea.call(d,c)),d},inArray:function(c,a,d){return null==a?-1:ba.call(a,c,d)},merge:function(c,a){for(var d=+a.length,f=0,b=c.length;f<d;f++)c[b++]=a[f];return c.length=b,c},grep:function(c,a,d){var f=
[],b=0,g=c.length;for(d=!d;b<g;b++)!a(c[b],b)!==d&&f.push(c[b]);return f},map:function(c,a,d){var f,b,g=0,m=[];if(h(c))for(f=c.length;g<f;g++)null!=(b=a(c[g],g,d))&&m.push(b);else for(g in c)null!=(b=a(c[g],g,d))&&m.push(b);return nb.apply([],m)},guid:1,support:Q});"function"==typeof Symbol&&(g.fn[Symbol.iterator]=ga[Symbol.iterator]);g.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(c,a){K["[object "+a+"]"]=a.toLowerCase()});var Fa=function(c){function a(c,
d,f,u){var b,g,m,e,q,N=d&&d.ownerDocument,t=d?d.nodeType:9;if(f=f||[],"string"!=typeof c||!c||1!==t&&9!==t&&11!==t)return f;if(!u&&((d?d.ownerDocument||d:J)!==A&&C(d),d=d||A,sa)){if(11!==t&&(e=za.exec(c)))if(b=e[1])if(9===t){if(!(g=d.getElementById(b)))return f;if(g.id===b)return f.push(g),f}else{if(N&&(g=N.getElementById(b))&&R(d,g)&&g.id===b)return f.push(g),f}else{if(e[2])return T.apply(f,d.getElementsByTagName(c)),f;if((b=e[3])&&x.getElementsByClassName&&d.getElementsByClassName)return T.apply(f,
d.getElementsByClassName(b)),f}if(!(!x.qsa||Q[c+" "]||aa&&aa.test(c))){if(1!==t)N=d,q=c;else if("object"!==d.nodeName.toLowerCase()){(m=d.getAttribute("id"))?m=m.replace(wa,xa):d.setAttribute("id",m=G);for(b=(g=F(c)).length;b--;)g[b]="#"+m+" "+n(g[b]);q=g.join(",");N=ra.test(c)&&k(d.parentNode)||d}if(q)try{return T.apply(f,N.querySelectorAll(q)),f}catch(h){}finally{m===G&&d.removeAttribute("id")}}}return I(c.replace(ga,"$1"),d,f,u)}function d(){function c(d,f){return a.push(d+" ")>v.cacheLength&&
delete c[a.shift()],c[d+" "]=f}var a=[];return c}function f(c){return c[G]=!0,c}function b(c){var a=A.createElement("fieldset");try{return!!c(a)}catch(d){return!1}finally{a.parentNode&&a.parentNode.removeChild(a)}}function g(c,a){for(var d=c.split("|"),f=d.length;f--;)v.attrHandle[d[f]]=a}function m(c,a){var d=a&&c,f=d&&1===c.nodeType&&1===a.nodeType&&c.sourceIndex-a.sourceIndex;if(f)return f;if(d)for(;d=d.nextSibling;)if(d===a)return-1;return c?1:-1}function e(c){return function(a){return"input"===
a.nodeName.toLowerCase()&&a.type===c}}function q(c){return function(a){var d=a.nodeName.toLowerCase();return("input"===d||"button"===d)&&a.type===c}}function t(c){return function(a){return"form"in a?a.parentNode&&!1===a.disabled?"label"in a?"label"in a.parentNode?a.parentNode.disabled===c:a.disabled===c:a.isDisabled===c||a.isDisabled!==!c&&Qb(a)===c:a.disabled===c:"label"in a&&a.disabled===c}}function h(c){return f(function(a){return a=+a,f(function(d,f){for(var u,b=c([],d.length,a),g=b.length;g--;)d[u=
b[g]]&&(d[u]=!(f[u]=d[u]))})})}function k(c){return c&&"undefined"!=typeof c.getElementsByTagName&&c}function l(){}function n(c){for(var a=0,d=c.length,f="";a<d;a++)f+=c[a].value;return f}function E(c,a,d){var f=a.dir,u=a.next,b=u||f,g=d&&"parentNode"===b,m=O++;return a.first?function(a,d,u){for(;a=a[f];)if(1===a.nodeType||g)return c(a,d,u);return!1}:function(a,d,e){var q,N,t,h=[L,m];if(e)for(;a=a[f];){if((1===a.nodeType||g)&&c(a,d,e))return!0}else for(;a=a[f];)if(1===a.nodeType||g)if(t=a[G]||(a[G]=
{}),N=t[a.uniqueID]||(t[a.uniqueID]={}),u&&u===a.nodeName.toLowerCase())a=a[f]||a;else{if((q=N[b])&&q[0]===L&&q[1]===m)return h[2]=q[2];if(N[b]=h,h[2]=c(a,d,e))return!0}return!1}}function r(c){return 1<c.length?function(a,d,f){for(var u=c.length;u--;)if(!c[u](a,d,f))return!1;return!0}:c[0]}function p(c,a,d,f,u){for(var b,g=[],m=0,e=c.length,q=null!=a;m<e;m++)(b=c[m])&&(d&&!d(b,f,u)||(g.push(b),q&&a.push(m)));return g}function ia(c,d,b,g,m,e){return g&&!g[G]&&(g=ia(g)),m&&!m[G]&&(m=ia(m,e)),f(function(f,
e,q,N){var t,h,va=[],k=[],l=e.length,ea;if(!(ea=f)){ea=d||"*";for(var n=q.nodeType?[q]:q,jb=[],E=0,r=n.length;E<r;E++)a(ea,n[E],jb);ea=jb}ea=!c||!f&&d?ea:p(ea,va,c,q,N);n=b?m||(f?c:l||g)?[]:e:ea;if(b&&b(ea,n,q,N),g)for(t=p(n,k),g(t,[],q,N),q=t.length;q--;)(h=t[q])&&(n[k[q]]=!(ea[k[q]]=h));if(f){if(m||c){if(m){t=[];for(q=n.length;q--;)(h=n[q])&&t.push(ea[q]=h);m(null,n=[],t,N)}for(q=n.length;q--;)(h=n[q])&&-1<(t=m?X(f,h):va[q])&&(f[t]=!(e[t]=h))}}else n=p(n===e?n.splice(l,n.length):n),m?m(null,e,n,
N):T.apply(e,n)})}function w(c){var a,d,f,u=c.length,b=v.relative[c[0].type];d=b||v.relative[" "];for(var g=b?1:0,m=E(function(c){return c===a},d,!0),e=E(function(c){return-1<X(a,c)},d,!0),q=[function(c,d,f){c=!b&&(f||d!==Aa)||((a=d).nodeType?m(c,d,f):e(c,d,f));return a=null,c}];g<u;g++)if(d=v.relative[c[g].type])q=[E(r(q),d)];else{if((d=v.filter[c[g].type].apply(null,c[g].matches))[G]){for(f=++g;f<u&&!v.relative[c[f].type];f++);return ia(1<g&&r(q),1<g&&n(c.slice(0,g-1).concat({value:" "===c[g-2].type?
"*":""})).replace(ga,"$1"),d,g<f&&w(c.slice(g,f)),f<u&&w(c=c.slice(f)),f<u&&n(c))}q.push(d)}return r(q)}function y(c,d){var b=0<d.length,g=0<c.length,m=function(f,m,e,q,t){var N,h,va,k=0,l="0",ea=f&&[],n=[],jb=Aa,E=f||g&&v.find.TAG("*",t),r=L+=null==jb?1:Math.random()||.1,Wb=E.length;for(t&&(Aa=m===A||m||t);l!==Wb&&null!=(N=E[l]);l++){if(g&&N){h=0;for(m||N.ownerDocument===A||(C(N),e=!sa);va=c[h++];)if(va(N,m||A,e)){q.push(N);break}t&&(L=r)}b&&((N=!va&&N)&&k--,f&&ea.push(N))}if(k+=l,b&&l!==k){for(h=
0;va=d[h++];)va(ea,n,m,e);if(f){if(0<k)for(;l--;)ea[l]||n[l]||(n[l]=Z.call(q));n=p(n)}T.apply(q,n);t&&!f&&0<n.length&&1<k+d.length&&a.uniqueSort(q)}return t&&(L=r,Aa=jb),ea};return b?f(m):m}var Y,x,v,D,ja,F,z,I,Aa,B,M,C,A,U,sa,aa,H,K,R,G="sizzle"+1*new Date,J=c.document,L=0,O=0,P=d(),Mb=d(),Q=d(),W=function(c,a){return c===a&&(M=!0),0},V={}.hasOwnProperty,S=[],Z=S.pop,da=S.push,T=S.push,fa=S.slice,X=function(c,a){for(var d=0,f=c.length;d<f;d++)if(c[d]===a)return d;return-1},la=RegExp("[\\x20\\t\\r\\n\\f]+",
"g"),ga=RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$","g"),ma=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,na=/^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,oa=RegExp("\x3d[\\x20\\t\\r\\n\\f]*([^\\]'\"]*?)[\\x20\\t\\r\\n\\f]*\\]","g"),pa=/:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/,
qa=/^(?:\\.|[\w-]|[^\x00-\xa0])+$/,ha={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:/^((?:\\.|[\w-]|[^\x00-\xa0])+|[*])/,ATTR:/^\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\]/,PSEUDO:/^:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/,
CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ta=/^(?:input|select|textarea|button)$/i,ua=/^h\d$/i,ka=
/^[^{]+\{\s*\[native \w/,za=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ra=/[+~]/,ba=RegExp("\\\\([\\da-f]{1,6}[\\x20\\t\\r\\n\\f]?|([\\x20\\t\\r\\n\\f])|.)","ig"),ca=function(c,a,d){c="0x"+a-65536;return c!==c||d?a:0>c?String.fromCharCode(c+65536):String.fromCharCode(c>>10|55296,1023&c|56320)},wa=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,xa=function(c,a){return a?"\x00"===c?"\ufffd":c.slice(0,-1)+"\\"+c.charCodeAt(c.length-1).toString(16)+" ":"\\"+c},ya=function(){C()},Qb=E(function(c){return!0===
c.disabled&&("form"in c||"label"in c)},{dir:"parentNode",next:"legend"});try{T.apply(S=fa.call(J.childNodes),J.childNodes),S[J.childNodes.length].nodeType}catch(gc){T={apply:S.length?function(c,a){da.apply(c,fa.call(a))}:function(c,a){for(var d=c.length,f=0;c[d++]=a[f++];);c.length=d-1}}}x=a.support={};ja=a.isXML=function(c){c=c&&(c.ownerDocument||c).documentElement;return!!c&&"HTML"!==c.nodeName};C=a.setDocument=function(c){var a,d;c=c?c.ownerDocument||c:J;return c!==A&&9===c.nodeType&&c.documentElement?
(A=c,U=A.documentElement,sa=!ja(A),J!==A&&(d=A.defaultView)&&d.top!==d&&(d.addEventListener?d.addEventListener("unload",ya,!1):d.attachEvent&&d.attachEvent("onunload",ya)),x.attributes=b(function(c){return c.className="i",!c.getAttribute("className")}),x.getElementsByTagName=b(function(c){return c.appendChild(A.createComment("")),!c.getElementsByTagName("*").length}),x.getElementsByClassName=ka.test(A.getElementsByClassName),x.getById=b(function(c){return U.appendChild(c).id=G,!A.getElementsByName||
!A.getElementsByName(G).length}),x.getById?(v.filter.ID=function(c){var a=c.replace(ba,ca);return function(c){return c.getAttribute("id")===a}},v.find.ID=function(c,a){if("undefined"!=typeof a.getElementById&&sa){var d=a.getElementById(c);return d?[d]:[]}}):(v.filter.ID=function(c){var a=c.replace(ba,ca);return function(c){return(c="undefined"!=typeof c.getAttributeNode&&c.getAttributeNode("id"))&&c.value===a}},v.find.ID=function(c,a){if("undefined"!=typeof a.getElementById&&sa){var d,f,u,b=a.getElementById(c);
if(b){if((d=b.getAttributeNode("id"))&&d.value===c)return[b];u=a.getElementsByName(c);for(f=0;b=u[f++];)if((d=b.getAttributeNode("id"))&&d.value===c)return[b]}return[]}}),v.find.TAG=x.getElementsByTagName?function(c,a){return"undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(c):x.qsa?a.querySelectorAll(c):void 0}:function(c,a){var d,f=[],u=0,b=a.getElementsByTagName(c);if("*"===c){for(;d=b[u++];)1===d.nodeType&&f.push(d);return f}return b},v.find.CLASS=x.getElementsByClassName&&function(c,
a){if("undefined"!=typeof a.getElementsByClassName&&sa)return a.getElementsByClassName(c)},H=[],aa=[],(x.qsa=ka.test(A.querySelectorAll))&&(b(function(c){U.appendChild(c).innerHTML="\x3ca id\x3d'"+G+"'\x3e\x3c/a\x3e\x3cselect id\x3d'"+G+"-\r\\' msallowcapture\x3d''\x3e\x3coption selected\x3d''\x3e\x3c/option\x3e\x3c/select\x3e";c.querySelectorAll("[msallowcapture^\x3d'']").length&&aa.push("[*^$]\x3d[\\x20\\t\\r\\n\\f]*(?:''|\"\")");c.querySelectorAll("[selected]").length||aa.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)");
c.querySelectorAll("[id~\x3d"+G+"-]").length||aa.push("~\x3d");c.querySelectorAll(":checked").length||aa.push(":checked");c.querySelectorAll("a#"+G+"+*").length||aa.push(".#.+[+~]")}),b(function(c){c.innerHTML="\x3ca href\x3d'' disabled\x3d'disabled'\x3e\x3c/a\x3e\x3cselect disabled\x3d'disabled'\x3e\x3coption/\x3e\x3c/select\x3e";var a=A.createElement("input");a.setAttribute("type","hidden");c.appendChild(a).setAttribute("name","D");c.querySelectorAll("[name\x3dd]").length&&aa.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?\x3d");
2!==c.querySelectorAll(":enabled").length&&aa.push(":enabled",":disabled");U.appendChild(c).disabled=!0;2!==c.querySelectorAll(":disabled").length&&aa.push(":enabled",":disabled");c.querySelectorAll("*,:x");aa.push(",.*:")})),(x.matchesSelector=ka.test(K=U.matches||U.webkitMatchesSelector||U.mozMatchesSelector||U.oMatchesSelector||U.msMatchesSelector))&&b(function(c){x.disconnectedMatch=K.call(c,"*");K.call(c,"[s!\x3d'']:x");H.push("!\x3d",":((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?\x3d)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|((?:\\\\.|[\\w-]|[^\x00-\\xa0])+))|)[\\x20\\t\\r\\n\\f]*\\])*)|.*)\\)|)")}),
aa=aa.length&&new RegExp(aa.join("|")),H=H.length&&new RegExp(H.join("|")),a=ka.test(U.compareDocumentPosition),R=a||ka.test(U.contains)?function(c,a){var d=9===c.nodeType?c.documentElement:c,f=a&&a.parentNode;return c===f||!(!f||1!==f.nodeType||!(d.contains?d.contains(f):c.compareDocumentPosition&&16&c.compareDocumentPosition(f)))}:function(c,a){if(a)for(;a=a.parentNode;)if(a===c)return!0;return!1},W=a?function(c,a){if(c===a)return M=!0,0;var d=!c.compareDocumentPosition-!a.compareDocumentPosition;
return d||(1&(d=(c.ownerDocument||c)===(a.ownerDocument||a)?c.compareDocumentPosition(a):1)||!x.sortDetached&&a.compareDocumentPosition(c)===d?c===A||c.ownerDocument===J&&R(J,c)?-1:a===A||a.ownerDocument===J&&R(J,a)?1:B?X(B,c)-X(B,a):0:4&d?-1:1)}:function(c,a){if(c===a)return M=!0,0;var d,f=0;d=c.parentNode;var u=a.parentNode,b=[c],g=[a];if(!d||!u)return c===A?-1:a===A?1:d?-1:u?1:B?X(B,c)-X(B,a):0;if(d===u)return m(c,a);for(d=c;d=d.parentNode;)b.unshift(d);for(d=a;d=d.parentNode;)g.unshift(d);for(;b[f]===
g[f];)f++;return f?m(b[f],g[f]):b[f]===J?-1:g[f]===J?1:0},A):A};a.matches=function(c,d){return a(c,null,null,d)};a.matchesSelector=function(c,d){if((c.ownerDocument||c)!==A&&C(c),d=d.replace(oa,"\x3d'$1']"),!(!x.matchesSelector||!sa||Q[d+" "]||H&&H.test(d)||aa&&aa.test(d)))try{var f=K.call(c,d);if(f||x.disconnectedMatch||c.document&&11!==c.document.nodeType)return f}catch(b){}return 0<a(d,A,null,[c]).length};a.contains=function(c,a){return(c.ownerDocument||c)!==A&&C(c),R(c,a)};a.attr=function(c,a){(c.ownerDocument||
c)!==A&&C(c);var d=v.attrHandle[a.toLowerCase()],d=d&&V.call(v.attrHandle,a.toLowerCase())?d(c,a,!sa):void 0;return void 0!==d?d:x.attributes||!sa?c.getAttribute(a):(d=c.getAttributeNode(a))&&d.specified?d.value:null};a.escape=function(c){return(c+"").replace(wa,xa)};a.error=function(c){throw Error("Syntax error, unrecognized expression: "+c);};a.uniqueSort=function(c){var a,d=[],f=0,u=0;if(M=!x.detectDuplicates,B=!x.sortStable&&c.slice(0),c.sort(W),M){for(;a=c[u++];)a===c[u]&&(f=d.push(u));for(;f--;)c.splice(d[f],
1)}return B=null,c};D=a.getText=function(c){var a,d="",f=0;if(a=c.nodeType)if(1===a||9===a||11===a){if("string"==typeof c.textContent)return c.textContent;for(c=c.firstChild;c;c=c.nextSibling)d+=D(c)}else{if(3===a||4===a)return c.nodeValue}else for(;a=c[f++];)d+=D(a);return d};(v=a.selectors={cacheLength:50,createPseudo:f,match:ha,attrHandle:{},find:{},relative:{"\x3e":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(c){return c[1]=
c[1].replace(ba,ca),c[3]=(c[3]||c[4]||c[5]||"").replace(ba,ca),"~\x3d"===c[2]&&(c[3]=" "+c[3]+" "),c.slice(0,4)},CHILD:function(c){return c[1]=c[1].toLowerCase(),"nth"===c[1].slice(0,3)?(c[3]||a.error(c[0]),c[4]=+(c[4]?c[5]+(c[6]||1):2*("even"===c[3]||"odd"===c[3])),c[5]=+(c[7]+c[8]||"odd"===c[3])):c[3]&&a.error(c[0]),c},PSEUDO:function(c){var a,d=!c[6]&&c[2];return ha.CHILD.test(c[0])?null:(c[3]?c[2]=c[4]||c[5]||"":d&&pa.test(d)&&(a=F(d,!0))&&(a=d.indexOf(")",d.length-a)-d.length)&&(c[0]=c[0].slice(0,
a),c[2]=d.slice(0,a)),c.slice(0,3))}},filter:{TAG:function(c){var a=c.replace(ba,ca).toLowerCase();return"*"===c?function(){return!0}:function(c){return c.nodeName&&c.nodeName.toLowerCase()===a}},CLASS:function(c){var a=P[c+" "];return a||(a=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+c+"([\\x20\\t\\r\\n\\f]|$)"),P(c,function(c){return a.test("string"==typeof c.className&&c.className||"undefined"!=typeof c.getAttribute&&c.getAttribute("class")||"")}))},ATTR:function(c,d,f){return function(b){b=a.attr(b,
c);return null==b?"!\x3d"===d:!d||(b+="","\x3d"===d?b===f:"!\x3d"===d?b!==f:"^\x3d"===d?f&&0===b.indexOf(f):"*\x3d"===d?f&&-1<b.indexOf(f):"$\x3d"===d?f&&b.slice(-f.length)===f:"~\x3d"===d?-1<(" "+b.replace(la," ")+" ").indexOf(f):"|\x3d"===d&&(b===f||b.slice(0,f.length+1)===f+"-"))}},CHILD:function(c,a,d,f,u){var b="nth"!==c.slice(0,3),g="last"!==c.slice(-4),m="of-type"===a;return 1===f&&0===u?function(c){return!!c.parentNode}:function(a,d,e){var q,N,t,h,va;d=b!==g?"nextSibling":"previousSibling";
var k=a.parentNode,l=m&&a.nodeName.toLowerCase(),ea=!e&&!m,n=!1;if(k){if(b){for(;d;){for(t=a;t=t[d];)if(m?t.nodeName.toLowerCase()===l:1===t.nodeType)return!1;va=d="only"===c&&!va&&"nextSibling"}return!0}if(va=[g?k.firstChild:k.lastChild],g&&ea)for(n=(h=(q=(e=(N=(t=k)[G]||(t[G]={}))[t.uniqueID]||(N[t.uniqueID]={}))[c]||[])[0]===L&&q[1])&&q[2],t=h&&k.childNodes[h];t=++h&&t&&t[d]||(n=h=0)||va.pop();){if(1===t.nodeType&&++n&&t===a){e[c]=[L,h,n];break}}else if(ea&&(n=h=(q=((N=(t=a)[G]||(t[G]={}))[t.uniqueID]||
(N[t.uniqueID]={}))[c]||[])[0]===L&&q[1]),!1===n)for(;(t=++h&&t&&t[d]||(n=h=0)||va.pop())&&((m?t.nodeName.toLowerCase()!==l:1!==t.nodeType)||!++n||(ea&&((e=(N=t[G]||(t[G]={}))[t.uniqueID]||(N[t.uniqueID]={}))[c]=[L,n]),t!==a)););return(n-=u)===f||0==n%f&&0<=n/f}}},PSEUDO:function(c,d){var b,g=v.pseudos[c]||v.setFilters[c.toLowerCase()]||a.error("unsupported pseudo: "+c);return g[G]?g(d):1<g.length?(b=[c,c,"",d],v.setFilters.hasOwnProperty(c.toLowerCase())?f(function(c,a){for(var f,u=g(c,d),b=u.length;b--;)c[f=
X(c,u[b])]=!(a[f]=u[b])}):function(c){return g(c,0,b)}):g}},pseudos:{not:f(function(c){var a=[],d=[],u=z(c.replace(ga,"$1"));return u[G]?f(function(c,a,d,f){var b;d=u(c,null,f,[]);for(f=c.length;f--;)(b=d[f])&&(c[f]=!(a[f]=b))}):function(c,f,b){return a[0]=c,u(a,null,b,d),a[0]=null,!d.pop()}}),has:f(function(c){return function(d){return 0<a(c,d).length}}),contains:f(function(c){return c=c.replace(ba,ca),function(a){return-1<(a.textContent||a.innerText||D(a)).indexOf(c)}}),lang:f(function(c){return qa.test(c||
"")||a.error("unsupported lang: "+c),c=c.replace(ba,ca).toLowerCase(),function(a){var d;do if(d=sa?a.lang:a.getAttribute("xml:lang")||a.getAttribute("lang"))return(d=d.toLowerCase())===c||0===d.indexOf(c+"-");while((a=a.parentNode)&&1===a.nodeType);return!1}}),target:function(a){var d=c.location&&c.location.hash;return d&&d.slice(1)===a.id},root:function(c){return c===U},focus:function(c){return c===A.activeElement&&(!A.hasFocus||A.hasFocus())&&!!(c.type||c.href||~c.tabIndex)},enabled:t(!1),disabled:t(!0),
checked:function(c){var a=c.nodeName.toLowerCase();return"input"===a&&!!c.checked||"option"===a&&!!c.selected},selected:function(c){return c.parentNode&&c.parentNode.selectedIndex,!0===c.selected},empty:function(c){for(c=c.firstChild;c;c=c.nextSibling)if(6>c.nodeType)return!1;return!0},parent:function(c){return!v.pseudos.empty(c)},header:function(c){return ua.test(c.nodeName)},input:function(c){return ta.test(c.nodeName)},button:function(c){var a=c.nodeName.toLowerCase();return"input"===a&&"button"===
c.type||"button"===a},text:function(c){var a;return"input"===c.nodeName.toLowerCase()&&"text"===c.type&&(null==(a=c.getAttribute("type"))||"text"===a.toLowerCase())},first:h(function(){return[0]}),last:h(function(c,a){return[a-1]}),eq:h(function(c,a,d){return[0>d?d+a:d]}),even:h(function(c,a){for(var d=0;d<a;d+=2)c.push(d);return c}),odd:h(function(c,a){for(var d=1;d<a;d+=2)c.push(d);return c}),lt:h(function(c,a,d){for(a=0>d?d+a:d;0<=--a;)c.push(a);return c}),gt:h(function(c,a,d){for(d=0>d?d+a:d;++d<
a;)c.push(d);return c})}}).pseudos.nth=v.pseudos.eq;for(Y in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})v.pseudos[Y]=e(Y);for(Y in{submit:!0,reset:!0})v.pseudos[Y]=q(Y);l.prototype=v.filters=v.pseudos;v.setFilters=new l;F=a.tokenize=function(c,d){var f,b,g,m,e,q,t;if(e=Mb[c+" "])return d?0:e.slice(0);e=c;q=[];for(t=v.preFilter;e;){f&&!(b=ma.exec(e))||(b&&(e=e.slice(b[0].length)||e),q.push(g=[]));f=!1;(b=na.exec(e))&&(f=b.shift(),g.push({value:f,type:b[0].replace(ga," ")}),e=e.slice(f.length));
for(m in v.filter)!(b=ha[m].exec(e))||t[m]&&!(b=t[m](b))||(f=b.shift(),g.push({value:f,type:m,matches:b}),e=e.slice(f.length));if(!f)break}return d?e.length:e?a.error(c):Mb(c,q).slice(0)};return z=a.compile=function(c,a){var d,f=[],u=[],b=Q[c+" "];if(!b){a||(a=F(c));for(d=a.length;d--;)(b=w(a[d]))[G]?f.push(b):u.push(b);(b=Q(c,y(u,f))).selector=c}return b},I=a.select=function(c,a,d,f){var u,b,g,m,e,q="function"==typeof c&&c,t=!f&&F(c=q.selector||c);if(d=d||[],1===t.length){if(2<(b=t[0]=t[0].slice(0)).length&&
"ID"===(g=b[0]).type&&9===a.nodeType&&sa&&v.relative[b[1].type]){if(!(a=(v.find.ID(g.matches[0].replace(ba,ca),a)||[])[0]))return d;q&&(a=a.parentNode);c=c.slice(b.shift().value.length)}for(u=ha.needsContext.test(c)?0:b.length;u--&&(g=b[u],!v.relative[m=g.type]);)if((e=v.find[m])&&(f=e(g.matches[0].replace(ba,ca),ra.test(b[0].type)&&k(a.parentNode)||a))){if(b.splice(u,1),!(c=f.length&&n(b)))return T.apply(d,f),d;break}}return(q||z(c,t))(f,a,!sa,d,!a||ra.test(c)&&k(a.parentNode)||a),d},x.sortStable=
G.split("").sort(W).join("")===G,x.detectDuplicates=!!M,C(),x.sortDetached=b(function(c){return 1&c.compareDocumentPosition(A.createElement("fieldset"))}),b(function(c){return c.innerHTML="\x3ca href\x3d'#'\x3e\x3c/a\x3e","#"===c.firstChild.getAttribute("href")})||g("type|href|height|width",function(c,a,d){if(!d)return c.getAttribute(a,"type"===a.toLowerCase()?1:2)}),x.attributes&&b(function(c){return c.innerHTML="\x3cinput/\x3e",c.firstChild.setAttribute("value",""),""===c.firstChild.getAttribute("value")})||
g("value",function(c,a,d){if(!d&&"input"===c.nodeName.toLowerCase())return c.defaultValue}),b(function(c){return null==c.getAttribute("disabled")})||g("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",function(c,a,d){var f;if(!d)return!0===c[a]?a.toLowerCase():(f=c.getAttributeNode(a))&&f.specified?f.value:null}),a}(r);g.find=Fa;g.expr=Fa.selectors;g.expr[":"]=g.expr.pseudos;g.uniqueSort=g.unique=Fa.uniqueSort;g.text=Fa.getText;
g.isXMLDoc=Fa.isXML;g.contains=Fa.contains;g.escapeSelector=Fa.escape;var Ra=function(c,a,d){for(var f=[],b=void 0!==d;(c=c[a])&&9!==c.nodeType;)if(1===c.nodeType){if(b&&g(c).is(d))break;f.push(c)}return f},Ia=function(c,a){for(var d=[];c;c=c.nextSibling)1===c.nodeType&&c!==a&&d.push(c);return d},ma=g.expr.match.needsContext,tb=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;g.filter=function(c,a,d){var f=a[0];return d&&(c=":not("+c+")"),1===a.length&&1===f.nodeType?g.find.matchesSelector(f,
c)?[f]:[]:g.find.matches(c,g.grep(a,function(c){return 1===c.nodeType}))};g.fn.extend({find:function(c){var a,d,f=this.length,b=this;if("string"!=typeof c)return this.pushStack(g(c).filter(function(){for(a=0;a<f;a++)if(g.contains(b[a],this))return!0}));d=this.pushStack([]);for(a=0;a<f;a++)g.find(c,b[a],d);return 1<f?g.uniqueSort(d):d},filter:function(c){return this.pushStack(k(this,c||[],!1))},not:function(c){return this.pushStack(k(this,c||[],!0))},is:function(c){return!!k(this,"string"==typeof c&&
ma.test(c)?g(c):c||[],!1).length}});var hb,Ja=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(g.fn.init=function(c,a,d){var f,b;if(!c)return this;if(d=d||hb,"string"==typeof c){if(!(f="\x3c"===c[0]&&"\x3e"===c[c.length-1]&&3<=c.length?[null,c,null]:Ja.exec(c))||!f[1]&&a)return!a||a.jquery?(a||d).find(c):this.constructor(a).find(c);if(f[1]){if(a=a instanceof g?a[0]:a,g.merge(this,g.parseHTML(f[1],a&&a.nodeType?a.ownerDocument||a:C,!0)),tb.test(f[1])&&g.isPlainObject(a))for(f in a)O(this[f])?this[f](a[f]):this.attr(f,
a[f]);return this}return(b=C.getElementById(f[2]))&&(this[0]=b,this.length=1),this}return c.nodeType?(this[0]=c,this.length=1,this):O(c)?void 0!==d.ready?d.ready(c):c(g):g.makeArray(c,this)}).prototype=g.fn;hb=g(C);var L=/^(?:parents|prev(?:Until|All))/,Gb={children:!0,contents:!0,next:!0,prev:!0};g.fn.extend({has:function(c){var a=g(c,this),d=a.length;return this.filter(function(){for(var c=0;c<d;c++)if(g.contains(this,a[c]))return!0})},closest:function(c,a){var d,f=0,b=this.length,m=[],e="string"!=
typeof c&&g(c);if(!ma.test(c))for(;f<b;f++)for(d=this[f];d&&d!==a;d=d.parentNode)if(11>d.nodeType&&(e?-1<e.index(d):1===d.nodeType&&g.find.matchesSelector(d,c))){m.push(d);break}return this.pushStack(1<m.length?g.uniqueSort(m):m)},index:function(c){return c?"string"==typeof c?ba.call(g(c),this[0]):ba.call(this,c.jquery?c[0]:c):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(c,a){return this.pushStack(g.uniqueSort(g.merge(this.get(),g(c,a))))},addBack:function(c){return this.add(null==
c?this.prevObject:this.prevObject.filter(c))}});g.each({parent:function(c){return(c=c.parentNode)&&11!==c.nodeType?c:null},parents:function(c){return Ra(c,"parentNode")},parentsUntil:function(c,a,d){return Ra(c,"parentNode",d)},next:function(c){return n(c,"nextSibling")},prev:function(c){return n(c,"previousSibling")},nextAll:function(c){return Ra(c,"nextSibling")},prevAll:function(c){return Ra(c,"previousSibling")},nextUntil:function(c,a,d){return Ra(c,"nextSibling",d)},prevUntil:function(c,a,d){return Ra(c,
"previousSibling",d)},siblings:function(c){return Ia((c.parentNode||{}).firstChild,c)},children:function(c){return Ia(c.firstChild)},contents:function(c){return l(c,"iframe")?c.contentDocument:(l(c,"template")&&(c=c.content||c),g.merge([],c.childNodes))}},function(c,a){g.fn[c]=function(d,f){var b=g.map(this,a,d);return"Until"!==c.slice(-5)&&(f=d),f&&"string"==typeof f&&(b=g.filter(f,b)),1<this.length&&(Gb[c]||g.uniqueSort(b),L.test(c)&&b.reverse()),this.pushStack(b)}});var ta=/[^\x20\t\r\n\f]+/g;
g.Callbacks=function(c){c="string"==typeof c?p(c):g.extend({},c);var a,d,f,m,e=[],q=[],t=-1,h=function(){m=m||c.once;for(f=a=!0;q.length;t=-1)for(d=q.shift();++t<e.length;)!1===e[t].apply(d[0],d[1])&&c.stopOnFalse&&(t=e.length,d=!1);c.memory||(d=!1);a=!1;m&&(e=d?[]:"")},k={add:function(){return e&&(d&&!a&&(t=e.length-1,q.push(d)),function Xb(a){g.each(a,function(a,d){O(d)?c.unique&&k.has(d)||e.push(d):d&&d.length&&"string"!==b(d)&&Xb(d)})}(arguments),d&&!a&&h()),this},remove:function(){return g.each(arguments,
function(c,a){for(var d;-1<(d=g.inArray(a,e,d));)e.splice(d,1),d<=t&&t--}),this},has:function(c){return c?-1<g.inArray(c,e):0<e.length},empty:function(){return e&&(e=[]),this},disable:function(){return m=q=[],e=d="",this},disabled:function(){return!e},lock:function(){return m=q=[],d||a||(e=d=""),this},locked:function(){return!!m},fireWith:function(c,d){return m||(d=[c,(d=d||[]).slice?d.slice():d],q.push(d),a||h()),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!f}};
return k};g.extend({Deferred:function(c){var a=[["notify","progress",g.Callbacks("memory"),g.Callbacks("memory"),2],["resolve","done",g.Callbacks("once memory"),g.Callbacks("once memory"),0,"resolved"],["reject","fail",g.Callbacks("once memory"),g.Callbacks("once memory"),1,"rejected"]],d="pending",f={state:function(){return d},always:function(){return b.done(arguments).fail(arguments),this},"catch":function(c){return f.then(null,c)},pipe:function(){var c=arguments;return g.Deferred(function(d){g.each(a,
function(a,f){var u=O(c[f[4]])&&c[f[4]];b[f[1]](function(){var c=u&&u.apply(this,arguments);c&&O(c.promise)?c.promise().progress(d.notify).done(d.resolve).fail(d.reject):d[f[0]+"With"](this,u?[c]:arguments)})});c=null}).promise()},then:function(c,d,f){function b(c,a,d,f){return function(){var u=this,e=arguments,q=function(){var g,q;if(!(c<m)){if((g=d.apply(u,e))===a.promise())throw new TypeError("Thenable self-resolution");q=g&&("object"==typeof g||"function"==typeof g)&&g.then;O(q)?f?q.call(g,b(m,
a,w,f),b(m,a,y,f)):(m++,q.call(g,b(m,a,w,f),b(m,a,y,f),b(m,a,w,a.notifyWith))):(d!==w&&(u=void 0,e=[g]),(f||a.resolveWith)(u,e))}},t=f?q:function(){try{q()}catch(f){g.Deferred.exceptionHook&&g.Deferred.exceptionHook(f,t.stackTrace),c+1>=m&&(d!==y&&(u=void 0,e=[f]),a.rejectWith(u,e))}};c?t():(g.Deferred.getStackHook&&(t.stackTrace=g.Deferred.getStackHook()),r.setTimeout(t))}}var m=0;return g.Deferred(function(g){a[0][3].add(b(0,g,O(f)?f:w,g.notifyWith));a[1][3].add(b(0,g,O(c)?c:w));a[2][3].add(b(0,
g,O(d)?d:y))}).promise()},promise:function(c){return null!=c?g.extend(c,f):f}},b={};return g.each(a,function(c,g){var m=g[2],e=g[5];f[g[1]]=m.add;e&&m.add(function(){d=e},a[3-c][2].disable,a[3-c][3].disable,a[0][2].lock,a[0][3].lock);m.add(g[3].fire);b[g[0]]=function(){return b[g[0]+"With"](this===b?void 0:this,arguments),this};b[g[0]+"With"]=m.fireWith}),f.promise(b),c&&c.call(b,b),b},when:function(c){var a=arguments.length,d=a,f=Array(d),b=za.call(arguments),m=g.Deferred(),e=function(c){return function(d){f[c]=
this;b[c]=1<arguments.length?za.call(arguments):d;--a||m.resolveWith(f,b)}};if(1>=a&&(v(c,m.done(e(d)).resolve,m.reject,!a),"pending"===m.state()||O(b[d]&&b[d].then)))return m.then();for(;d--;)v(b[d],e(d),m.reject);return m.promise()}});var ha=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;g.Deferred.exceptionHook=function(c,a){r.console&&r.console.warn&&c&&ha.test(c.name)&&r.console.warn("jQuery.Deferred exception: "+c.message,c.stack,a)};g.readyException=function(c){r.setTimeout(function(){throw c;
})};var ib=g.Deferred();g.fn.ready=function(c){return ib.then(c)["catch"](function(c){g.readyException(c)}),this};g.extend({isReady:!1,readyWait:1,ready:function(c){(!0===c?--g.readyWait:g.isReady)||(g.isReady=!0,!0!==c&&0<--g.readyWait||ib.resolveWith(C,[g]))}});g.ready.then=ib.then;"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?r.setTimeout(g.ready):(C.addEventListener("DOMContentLoaded",x),r.addEventListener("load",x));var ra=function(c,a,d,f,m,e,q){var t=0,h=
c.length,k=null==d;if("object"===b(d))for(t in m=!0,d)ra(c,a,t,d[t],!0,e,q);else if(void 0!==f&&(m=!0,O(f)||(q=!0),k&&(q?(a.call(c,f),a=null):(k=a,a=function(c,a,d){return k.call(g(c),d)})),a))for(;t<h;t++)a(c[t],d,q?f:f.call(c[t],t,a(c[t],d)));return m?c:k?a.call(c):h?a(c[0],d):e},ca=/^-ms-/,B=/-([a-z])/g,Za=function(c){return 1===c.nodeType||9===c.nodeType||!+c.nodeType};R.uid=1;R.prototype={cache:function(c){var a=c[this.expando];return a||(a={},Za(c)&&(c.nodeType?c[this.expando]=a:Object.defineProperty(c,
this.expando,{value:a,configurable:!0}))),a},set:function(c,a,d){var f;c=this.cache(c);if("string"==typeof a)c[I(a)]=d;else for(f in a)c[I(f)]=a[f];return c},get:function(c,a){return void 0===a?this.cache(c):c[this.expando]&&c[this.expando][I(a)]},access:function(c,a,d){return void 0===a||a&&"string"==typeof a&&void 0===d?this.get(c,a):(this.set(c,a,d),void 0!==d?d:a)},remove:function(c,a){var d,f=c[this.expando];if(void 0!==f){if(void 0!==a)for(d=(a=Array.isArray(a)?a.map(I):(a=I(a))in f?[a]:a.match(ta)||
[]).length;d--;)delete f[a[d]];(void 0===a||g.isEmptyObject(f))&&(c.nodeType?c[this.expando]=void 0:delete c[this.expando])}},hasData:function(c){c=c[this.expando];return void 0!==c&&!g.isEmptyObject(c)}};var G=new R,fa=new R,V=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,La=/[A-Z]/g;g.extend({hasData:function(c){return fa.hasData(c)||G.hasData(c)},data:function(c,a,d){return fa.access(c,a,d)},removeData:function(c,a){fa.remove(c,a)},_data:function(c,a,d){return G.access(c,a,d)},_removeData:function(c,a){G.remove(c,
a)}});g.fn.extend({data:function(c,a){var d,f,b,g=this[0],m=g&&g.attributes;if(void 0===c){if(this.length&&(b=fa.get(g),1===g.nodeType&&!G.get(g,"hasDataAttrs"))){for(d=m.length;d--;)m[d]&&0===(f=m[d].name).indexOf("data-")&&(f=I(f.slice(5)),F(g,f,b[f]));G.set(g,"hasDataAttrs",!0)}return b}return"object"==typeof c?this.each(function(){fa.set(this,c)}):ra(this,function(a){var d;if(g&&void 0===a){if(void 0!==(d=fa.get(g,c))||void 0!==(d=F(g,c)))return d}else this.each(function(){fa.set(this,c,a)})},
null,a,1<arguments.length,null,!0)},removeData:function(c){return this.each(function(){fa.remove(this,c)})}});g.extend({queue:function(c,a,d){var f;if(c)return a=(a||"fx")+"queue",f=G.get(c,a),d&&(!f||Array.isArray(d)?f=G.access(c,a,g.makeArray(d)):f.push(d)),f||[]},dequeue:function(c,a){a=a||"fx";var d=g.queue(c,a),f=d.length,b=d.shift(),m=g._queueHooks(c,a),e=function(){g.dequeue(c,a)};"inprogress"===b&&(b=d.shift(),f--);b&&("fx"===a&&d.unshift("inprogress"),delete m.stop,b.call(c,e,m));!f&&m&&
m.empty.fire()},_queueHooks:function(c,a){var d=a+"queueHooks";return G.get(c,d)||G.access(c,d,{empty:g.Callbacks("once memory").add(function(){G.remove(c,[a+"queue",d])})})}});g.fn.extend({queue:function(c,a){var d=2;return"string"!=typeof c&&(a=c,c="fx",d--),arguments.length<d?g.queue(this[0],c):void 0===a?this:this.each(function(){var d=g.queue(this,c,a);g._queueHooks(this,c);"fx"===c&&"inprogress"!==d[0]&&g.dequeue(this,c)})},dequeue:function(c){return this.each(function(){g.dequeue(this,c)})},
clearQueue:function(c){return this.queue(c||"fx",[])},promise:function(c,a){var d,f=1,b=g.Deferred(),m=this,e=this.length,q=function(){--f||b.resolveWith(m,[m])};"string"!=typeof c&&(a=c,c=void 0);for(c=c||"fx";e--;)(d=G.get(m[e],c+"queueHooks"))&&d.empty&&(f++,d.empty.add(q));return q(),b.promise(a)}});var H=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Ma=new RegExp("^(?:([+-])\x3d|)("+H+")([a-z%]*)$","i"),ka=["Top","Right","Bottom","Left"],Ua=function(c,a){return"none"===(c=a||c).style.display||
""===c.style.display&&g.contains(c.ownerDocument,c)&&"none"===g.css(c,"display")},ub=function(c,a,d,f){var b,g={};for(b in a)g[b]=c.style[b],c.style[b]=a[b];d=d.apply(c,f||[]);for(b in a)c.style[b]=g[b];return d},kb={};g.fn.extend({show:function(){return D(this,!0)},hide:function(){return D(this)},toggle:function(c){return"boolean"==typeof c?c?this.show():this.hide():this.each(function(){Ua(this)?g(this).show():g(this).hide()})}});var vb=/^(?:checkbox|radio)$/i,Na=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
na=/^$|^module$|\/(?:java|ecma)script/i,la={option:[1,"\x3cselect multiple\x3d'multiple'\x3e","\x3c/select\x3e"],thead:[1,"\x3ctable\x3e","\x3c/table\x3e"],col:[2,"\x3ctable\x3e\x3ccolgroup\x3e","\x3c/colgroup\x3e\x3c/table\x3e"],tr:[2,"\x3ctable\x3e\x3ctbody\x3e","\x3c/tbody\x3e\x3c/table\x3e"],td:[3,"\x3ctable\x3e\x3ctbody\x3e\x3ctr\x3e","\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e"],_default:[0,"",""]};la.optgroup=la.option;la.tbody=la.tfoot=la.colgroup=la.caption=la.thead;la.th=la.td;var yb=/<|&#?\w+;/;
!function(){var c=C.createDocumentFragment().appendChild(C.createElement("div")),a=C.createElement("input");a.setAttribute("type","radio");a.setAttribute("checked","checked");a.setAttribute("name","t");c.appendChild(a);Q.checkClone=c.cloneNode(!0).cloneNode(!0).lastChild.checked;c.innerHTML="\x3ctextarea\x3ex\x3c/textarea\x3e";Q.noCloneChecked=!!c.cloneNode(!0).lastChild.defaultValue}();var $a=C.documentElement,Hb=/^key/,Ib=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Sa=/^([^.]*)(?:\.(.+)|)/;
g.event={global:{},add:function(c,a,d,f,b){var m,e,q,t,h,k,l,n,E,r;if(h=G.get(c))for(d.handler&&(d=(m=d).handler,b=m.selector),b&&g.find.matchesSelector($a,b),d.guid||(d.guid=g.guid++),(t=h.events)||(t=h.events={}),(e=h.handle)||(e=h.handle=function(a){return"undefined"!=typeof g&&g.event.triggered!==a.type?g.event.dispatch.apply(c,arguments):void 0}),h=(a=(a||"").match(ta)||[""]).length;h--;)E=r=(q=Sa.exec(a[h])||[])[1],q=(q[2]||"").split(".").sort(),E&&(l=g.event.special[E]||{},E=(b?l.delegateType:
l.bindType)||E,l=g.event.special[E]||{},k=g.extend({type:E,origType:r,data:f,handler:d,guid:d.guid,selector:b,needsContext:b&&g.expr.match.needsContext.test(b),namespace:q.join(".")},m),(n=t[E])||((n=t[E]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(c,f,q,e)||c.addEventListener&&c.addEventListener(E,e)),l.add&&(l.add.call(c,k),k.handler.guid||(k.handler.guid=d.guid)),b?n.splice(n.delegateCount++,0,k):n.push(k),g.event.global[E]=!0)},remove:function(c,a,d,f,b){var m,e,q,t,h,k,l,n,E,r,p,ia=G.hasData(c)&&
G.get(c);if(ia&&(t=ia.events)){for(h=(a=(a||"").match(ta)||[""]).length;h--;)if(q=Sa.exec(a[h])||[],E=p=q[1],r=(q[2]||"").split(".").sort(),E){l=g.event.special[E]||{};n=t[E=(f?l.delegateType:l.bindType)||E]||[];q=q[2]&&new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)");for(e=m=n.length;m--;)k=n[m],!b&&p!==k.origType||d&&d.guid!==k.guid||q&&!q.test(k.namespace)||f&&f!==k.selector&&("**"!==f||!k.selector)||(n.splice(m,1),k.selector&&n.delegateCount--,l.remove&&l.remove.call(c,k));e&&!n.length&&
(l.teardown&&!1!==l.teardown.call(c,r,ia.handle)||g.removeEvent(c,E,ia.handle),delete t[E])}else for(E in t)g.event.remove(c,E+a[h],d,f,!0);g.isEmptyObject(t)&&G.remove(c,"handle events")}},dispatch:function(c){var a=g.event.fix(c),d,f,b,m,e,q,t=Array(arguments.length);f=(G.get(this,"events")||{})[a.type]||[];var h=g.event.special[a.type]||{};t[0]=a;for(d=1;d<arguments.length;d++)t[d]=arguments[d];if(a.delegateTarget=this,!h.preDispatch||!1!==h.preDispatch.call(this,a)){q=g.event.handlers.call(this,
a,f);for(d=0;(m=q[d++])&&!a.isPropagationStopped();)for(a.currentTarget=m.elem,f=0;(e=m.handlers[f++])&&!a.isImmediatePropagationStopped();)a.rnamespace&&!a.rnamespace.test(e.namespace)||(a.handleObj=e,a.data=e.data,void 0!==(b=((g.event.special[e.origType]||{}).handle||e.handler).apply(m.elem,t))&&!1===(a.result=b)&&(a.preventDefault(),a.stopPropagation()));return h.postDispatch&&h.postDispatch.call(this,a),a.result}},handlers:function(c,a){var d,f,b,m,e,q=[],t=a.delegateCount,h=c.target;if(t&&h.nodeType&&
!("click"===c.type&&1<=c.button))for(;h!==this;h=h.parentNode||this)if(1===h.nodeType&&("click"!==c.type||!0!==h.disabled)){m=[];e={};for(d=0;d<t;d++)void 0===e[b=(f=a[d]).selector+" "]&&(e[b]=f.needsContext?-1<g(b,this).index(h):g.find(b,this,null,[h]).length),e[b]&&m.push(f);m.length&&q.push({elem:h,handlers:m})}return h=this,t<a.length&&q.push({elem:h,handlers:a.slice(t)}),q},addProp:function(c,a){Object.defineProperty(g.Event.prototype,c,{enumerable:!0,configurable:!0,get:O(a)?function(){if(this.originalEvent)return a(this.originalEvent)}:
function(){if(this.originalEvent)return this.originalEvent[c]},set:function(a){Object.defineProperty(this,c,{enumerable:!0,configurable:!0,writable:!0,value:a})}})},fix:function(c){return c[g.expando]?c:new g.Event(c)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Ba()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Ba()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&
l(this,"input"))return this.click(),!1},_default:function(c){return l(c.target,"a")}},beforeunload:{postDispatch:function(c){void 0!==c.result&&c.originalEvent&&(c.originalEvent.returnValue=c.result)}}}};g.removeEvent=function(c,a,d){c.removeEventListener&&c.removeEventListener(a,d)};g.Event=function(c,a){if(!(this instanceof g.Event))return new g.Event(c,a);c&&c.type?(this.originalEvent=c,this.type=c.type,this.isDefaultPrevented=c.defaultPrevented||void 0===c.defaultPrevented&&!1===c.returnValue?
wa:ua,this.target=c.target&&3===c.target.nodeType?c.target.parentNode:c.target,this.currentTarget=c.currentTarget,this.relatedTarget=c.relatedTarget):this.type=c;a&&g.extend(this,a);this.timeStamp=c&&c.timeStamp||Date.now();this[g.expando]=!0};g.Event.prototype={constructor:g.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var c=this.originalEvent;this.isDefaultPrevented=wa;c&&!this.isSimulated&&c.preventDefault()},stopPropagation:function(){var c=
this.originalEvent;this.isPropagationStopped=wa;c&&!this.isSimulated&&c.stopPropagation()},stopImmediatePropagation:function(){var c=this.originalEvent;this.isImmediatePropagationStopped=wa;c&&!this.isSimulated&&c.stopImmediatePropagation();this.stopPropagation()}};g.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,
offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(c){var a=c.button;return null==c.which&&Hb.test(c.type)?null!=c.charCode?c.charCode:c.keyCode:!c.which&&void 0!==a&&Ib.test(c.type)?1&a?1:2&a?3:4&a?2:0:c.which}},g.event.addProp);g.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(c,a){g.event.special[c]={delegateType:a,bindType:a,handle:function(c){var d,f=c.relatedTarget,
b=c.handleObj;return f&&(f===this||g.contains(this,f))||(c.type=b.origType,d=b.handler.apply(this,arguments),c.type=a),d}}});g.fn.extend({on:function(c,a,d,f){return Oa(this,c,a,d,f)},one:function(c,a,d,f){return Oa(this,c,a,d,f,1)},off:function(c,a,d){var f,b;if(c&&c.preventDefault&&c.handleObj)return f=c.handleObj,g(c.delegateTarget).off(f.namespace?f.origType+"."+f.namespace:f.origType,f.selector,f.handler),this;if("object"==typeof c){for(b in c)this.off(b,a,c[b]);return this}return!1!==a&&"function"!=
typeof a||(d=a,a=void 0),!1===d&&(d=ua),this.each(function(){g.event.remove(this,c,d,a)})}});var Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Jb=/<script|<style|<link/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,Ab=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;g.extend({htmlPrefilter:function(c){return c.replace(Z,"\x3c$1\x3e\x3c/$2\x3e")},clone:function(c,a,d){var f,b,m,e,q=c.cloneNode(!0),t=g.contains(c.ownerDocument,c);if(!(Q.noCloneChecked||1!==c.nodeType&&
11!==c.nodeType||g.isXMLDoc(c)))for(e=A(q),f=0,b=(m=A(c)).length;f<b;f++){var h=m[f],k=e[f],l=k.nodeName.toLowerCase();"input"===l&&vb.test(h.type)?k.checked=h.checked:"input"!==l&&"textarea"!==l||(k.defaultValue=h.defaultValue)}if(a)if(d)for(m=m||A(c),e=e||A(q),f=0,b=m.length;f<b;f++)mb(m[f],e[f]);else mb(c,q);return 0<(e=A(q,"script")).length&&W(e,!t&&A(c,"script")),q},cleanData:function(c){for(var a,d,f,b=g.event.special,m=0;void 0!==(d=c[m]);m++)if(Za(d)){if(a=d[G.expando]){if(a.events)for(f in a.events)b[f]?
g.event.remove(d,f):g.removeEvent(d,f,a.handle);d[G.expando]=void 0}d[fa.expando]&&(d[fa.expando]=void 0)}}});g.fn.extend({detach:function(c){return pb(this,c,!0)},remove:function(c){return pb(this,c)},text:function(c){return ra(this,function(c){return void 0===c?g.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=c)})},null,c,arguments.length)},append:function(){return Ca(this,arguments,function(c){1!==this.nodeType&&11!==this.nodeType&&
9!==this.nodeType||lb(this,c).appendChild(c)})},prepend:function(){return Ca(this,arguments,function(c){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var a=lb(this,c);a.insertBefore(c,a.firstChild)}})},before:function(){return Ca(this,arguments,function(c){this.parentNode&&this.parentNode.insertBefore(c,this)})},after:function(){return Ca(this,arguments,function(c){this.parentNode&&this.parentNode.insertBefore(c,this.nextSibling)})},empty:function(){for(var c,a=0;null!=(c=this[a]);a++)1===
c.nodeType&&(g.cleanData(A(c,!1)),c.textContent="");return this},clone:function(c,a){return c=null!=c&&c,a=null==a?c:a,this.map(function(){return g.clone(this,c,a)})},html:function(c){return ra(this,function(c){var a=this[0]||{},d=0,f=this.length;if(void 0===c&&1===a.nodeType)return a.innerHTML;if("string"==typeof c&&!Jb.test(c)&&!la[(Na.exec(c)||["",""])[1].toLowerCase()]){c=g.htmlPrefilter(c);try{for(;d<f;d++)1===(a=this[d]||{}).nodeType&&(g.cleanData(A(a,!1)),a.innerHTML=c);a=0}catch(b){}}a&&this.empty().append(c)},
null,c,arguments.length)},replaceWith:function(){var c=[];return Ca(this,arguments,function(a){var d=this.parentNode;0>g.inArray(this,c)&&(g.cleanData(A(this)),d&&d.replaceChild(a,this))},c)}});g.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(c,a){g.fn[c]=function(c){for(var d=[],f=g(c),b=f.length-1,m=0;m<=b;m++)c=m===b?this:this.clone(!0),g(f[m])[a](c),Ea.apply(d,c.get());return this.pushStack(d)}});var Pa=new RegExp("^("+
H+")(?!px)[a-z%]+$","i"),xa=function(c){var a=c.ownerDocument.defaultView;return a&&a.opener||(a=r),a.getComputedStyle(c)},P=new RegExp(ka.join("|"),"i");!function(){function c(){if(q){e.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";q.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";$a.appendChild(e).appendChild(q);var c=r.getComputedStyle(q);a="1%"!==c.top;m=12===
Math.round(parseFloat(c.marginLeft));q.style.right="60%";b=36===Math.round(parseFloat(c.right));d=36===Math.round(parseFloat(c.width));q.style.position="absolute";f=36===q.offsetWidth||"absolute";$a.removeChild(e);q=null}}var a,d,f,b,m,e=C.createElement("div"),q=C.createElement("div");q.style&&(q.style.backgroundClip="content-box",q.cloneNode(!0).style.backgroundClip="",Q.clearCloneStyle="content-box"===q.style.backgroundClip,g.extend(Q,{boxSizingReliable:function(){return c(),d},pixelBoxStyles:function(){return c(),
b},pixelPosition:function(){return c(),a},reliableMarginLeft:function(){return c(),m},scrollboxSize:function(){return c(),f}}))}();var Kb=/^(none|table(?!-c[ea]).+)/,Ka=/^--/,Ta={position:"absolute",visibility:"hidden",display:"block"},Lb={letterSpacing:"0",fontWeight:"400"},Cb=["Webkit","Moz","ms"],Xa=C.createElement("div").style;g.extend({cssHooks:{opacity:{get:function(c,a){if(a){var d=Wa(c,"opacity");return""===d?"1":d}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,
flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(c,a,d,f){if(c&&3!==c.nodeType&&8!==c.nodeType&&c.style){var b,m,e,q=I(a),t=Ka.test(a),h=c.style;if(t||(a=bb(q)),e=g.cssHooks[a]||g.cssHooks[q],void 0===d)return e&&"get"in e&&void 0!==(b=e.get(c,!1,f))?b:h[a];"string"==(m=typeof d)&&(b=Ma.exec(d))&&b[1]&&(d=M(c,a,b),m="number");null!=d&&d===d&&("number"===m&&(d+=b&&b[3]||(g.cssNumber[q]?"":"px")),Q.clearCloneStyle||""!==
d||0!==a.indexOf("background")||(h[a]="inherit"),e&&"set"in e&&void 0===(d=e.set(c,d,f))||(t?h.setProperty(a,d):h[a]=d))}},css:function(c,a,d,f){var b,m,e,q=I(a);return Ka.test(a)||(a=bb(q)),(e=g.cssHooks[a]||g.cssHooks[q])&&"get"in e&&(b=e.get(c,!0,d)),void 0===b&&(b=Wa(c,a,f)),"normal"===b&&a in Lb&&(b=Lb[a]),""===d||d?(m=parseFloat(b),!0===d||isFinite(m)?m||0:b):b}});g.each(["height","width"],function(c,a){g.cssHooks[a]={get:function(c,d,f){if(d)return!Kb.test(g.css(c,"display"))||c.getClientRects().length&&
c.getBoundingClientRect().width?qb(c,a,f):ub(c,Ta,function(){return qb(c,a,f)})},set:function(c,d,f){var b,m=xa(c),e="border-box"===g.css(c,"boxSizing",!1,m);f=f&&db(c,a,f,e,m);return e&&Q.scrollboxSize()===m.position&&(f-=Math.ceil(c["offset"+a[0].toUpperCase()+a.slice(1)]-parseFloat(m[a])-db(c,a,"border",!1,m)-.5)),f&&(b=Ma.exec(d))&&"px"!==(b[3]||"px")&&(c.style[a]=d,d=g.css(c,a)),cb(c,d,f)}}});g.cssHooks.marginLeft=Bb(Q.reliableMarginLeft,function(c,a){if(a)return(parseFloat(Wa(c,"marginLeft"))||
c.getBoundingClientRect().left-ub(c,{marginLeft:0},function(){return c.getBoundingClientRect().left}))+"px"});g.each({margin:"",padding:"",border:"Width"},function(c,a){g.cssHooks[c+a]={expand:function(d){var f=0,b={};for(d="string"==typeof d?d.split(" "):[d];4>f;f++)b[c+ka[f]+a]=d[f]||d[f-2]||d[0];return b}};"margin"!==c&&(g.cssHooks[c+a].set=cb)});g.fn.extend({css:function(c,a){return ra(this,function(c,a,d){var f,b={},m=0;if(Array.isArray(a)){d=xa(c);for(f=a.length;m<f;m++)b[a[m]]=g.css(c,a[m],
!1,d);return b}return void 0!==d?g.style(c,a,d):g.css(c,a)},c,a,1<arguments.length)}});g.Tween=X;X.prototype={constructor:X,init:function(c,a,d,f,b,m){this.elem=c;this.prop=d;this.easing=b||g.easing._default;this.options=a;this.start=this.now=this.cur();this.end=f;this.unit=m||(g.cssNumber[d]?"":"px")},cur:function(){var c=X.propHooks[this.prop];return c&&c.get?c.get(this):X.propHooks._default.get(this)},run:function(c){var a,d=X.propHooks[this.prop];return this.options.duration?this.pos=a=g.easing[this.easing](c,
this.options.duration*c,0,1,this.options.duration):this.pos=a=c,this.now=(this.end-this.start)*a+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),d&&d.set?d.set(this):X.propHooks._default.set(this),this}};X.prototype.init.prototype=X.prototype;X.propHooks={_default:{get:function(c){var a;return 1!==c.elem.nodeType||null!=c.elem[c.prop]&&null==c.elem.style[c.prop]?c.elem[c.prop]:(a=g.css(c.elem,c.prop,""))&&"auto"!==a?a:0},set:function(c){g.fx.step[c.prop]?g.fx.step[c.prop](c):
1!==c.elem.nodeType||null==c.elem.style[g.cssProps[c.prop]]&&!g.cssHooks[c.prop]?c.elem[c.prop]=c.now:g.style(c.elem,c.prop,c.now+c.unit)}}};X.propHooks.scrollTop=X.propHooks.scrollLeft={set:function(c){c.elem.nodeType&&c.elem.parentNode&&(c.elem[c.prop]=c.now)}};g.easing={linear:function(c){return c},swing:function(c){return.5-Math.cos(c*Math.PI)/2},_default:"swing"};g.fx=X.prototype.init;g.fx.step={};var Qa,eb,Pb=/^(?:toggle|show|hide)$/,m=/queueHooks$/;g.Animation=g.extend(oa,{tweeners:{"*":[function(c,
a){var d=this.createTween(c,a);return M(d.elem,c,Ma.exec(a),d),d}]},tweener:function(c,a){O(c)?(a=c,c=["*"]):c=c.match(ta);for(var d,f=0,b=c.length;f<b;f++)d=c[f],oa.tweeners[d]=oa.tweeners[d]||[],oa.tweeners[d].unshift(a)},prefilters:[function(c,a,d){var f,b,m,e,q,t,h,k="width"in a||"height"in a,l=this,n={},E=c.style,r=c.nodeType&&Ua(c),p=G.get(c,"fxshow");d.queue||(null==(e=g._queueHooks(c,"fx")).unqueued&&(e.unqueued=0,q=e.empty.fire,e.empty.fire=function(){e.unqueued||q()}),e.unqueued++,l.always(function(){l.always(function(){e.unqueued--;
g.queue(c,"fx").length||e.empty.fire()})}));for(f in a)if(b=a[f],Pb.test(b)){if(delete a[f],m=m||"toggle"===b,b===(r?"hide":"show")){if("show"!==b||!p||void 0===p[f])continue;r=!0}n[f]=p&&p[f]||g.style(c,f)}if((a=!g.isEmptyObject(a))||!g.isEmptyObject(n))for(f in k&&1===c.nodeType&&(d.overflow=[E.overflow,E.overflowX,E.overflowY],null==(t=p&&p.display)&&(t=G.get(c,"display")),"none"===(h=g.css(c,"display"))&&(t?h=t:(D([c],!0),t=c.style.display||t,h=g.css(c,"display"),D([c]))),("inline"===h||"inline-block"===
h&&null!=t)&&"none"===g.css(c,"float")&&(a||(l.done(function(){E.display=t}),null==t&&(h=E.display,t="none"===h?"":h)),E.display="inline-block")),d.overflow&&(E.overflow="hidden",l.always(function(){E.overflow=d.overflow[0];E.overflowX=d.overflow[1];E.overflowY=d.overflow[2]})),a=!1,n)a||(p?"hidden"in p&&(r=p.hidden):p=G.access(c,"fxshow",{display:t}),m&&(p.hidden=!r),r&&D([c],!0),l.done(function(){r||D([c]);G.remove(c,"fxshow");for(f in n)g.style(c,f,n[f])})),a=Da(r?p[f]:0,f,l),f in p||(p[f]=a.start,
r&&(a.end=a.start,a.start=0))}],prefilter:function(c,a){a?oa.prefilters.unshift(c):oa.prefilters.push(c)}});g.speed=function(c,a,d){var f=c&&"object"==typeof c?g.extend({},c):{complete:d||!d&&a||O(c)&&c,duration:c,easing:d&&a||a&&!O(a)&&a};return g.fx.off?f.duration=0:"number"!=typeof f.duration&&(f.duration in g.fx.speeds?f.duration=g.fx.speeds[f.duration]:f.duration=g.fx.speeds._default),null!=f.queue&&!0!==f.queue||(f.queue="fx"),f.old=f.complete,f.complete=function(){O(f.old)&&f.old.call(this);
f.queue&&g.dequeue(this,f.queue)},f};g.fn.extend({fadeTo:function(c,a,d,f){return this.filter(Ua).css("opacity",0).show().end().animate({opacity:a},c,d,f)},animate:function(c,a,d,f){var b=g.isEmptyObject(c),m=g.speed(a,d,f);a=function(){var a=oa(this,g.extend({},c),m);(b||G.get(this,"finish"))&&a.stop(!0)};return a.finish=a,b||!1===m.queue?this.each(a):this.queue(m.queue,a)},stop:function(c,a,d){var f=function(c){var a=c.stop;delete c.stop;a(d)};return"string"!=typeof c&&(d=a,a=c,c=void 0),a&&!1!==
c&&this.queue(c||"fx",[]),this.each(function(){var a=!0,b=null!=c&&c+"queueHooks",e=g.timers,q=G.get(this);if(b)q[b]&&q[b].stop&&f(q[b]);else for(b in q)q[b]&&q[b].stop&&m.test(b)&&f(q[b]);for(b=e.length;b--;)e[b].elem!==this||null!=c&&e[b].queue!==c||(e[b].anim.stop(d),a=!1,e.splice(b,1));!a&&d||g.dequeue(this,c)})},finish:function(c){return!1!==c&&(c=c||"fx"),this.each(function(){var a,d=G.get(this),f=d[c+"queue"];a=d[c+"queueHooks"];var b=g.timers,m=f?f.length:0;d.finish=!0;g.queue(this,c,[]);
a&&a.stop&&a.stop.call(this,!0);for(a=b.length;a--;)b[a].elem===this&&b[a].queue===c&&(b[a].anim.stop(!0),b.splice(a,1));for(a=0;a<m;a++)f[a]&&f[a].finish&&f[a].finish.call(this);delete d.finish})}});g.each(["toggle","show","hide"],function(c,a){var d=g.fn[a];g.fn[a]=function(c,f,b){return null==c||"boolean"==typeof c?d.apply(this,arguments):this.animate(Ha(a,!0),c,f,b)}});g.each({slideDown:Ha("show"),slideUp:Ha("hide"),slideToggle:Ha("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},
function(c,a){g.fn[c]=function(c,d,f){return this.animate(a,c,d,f)}});g.timers=[];g.fx.tick=function(){var c,a=0,d=g.timers;for(Qa=Date.now();a<d.length;a++)(c=d[a])()||d[a]!==c||d.splice(a--,1);d.length||g.fx.stop();Qa=void 0};g.fx.timer=function(c){g.timers.push(c);g.fx.start()};g.fx.interval=13;g.fx.start=function(){eb||(eb=!0,da())};g.fx.stop=function(){eb=null};g.fx.speeds={slow:600,fast:200,_default:400};g.fn.delay=function(c,a){return c=g.fx?g.fx.speeds[c]||c:c,a=a||"fx",this.queue(a,function(a,
d){var f=r.setTimeout(a,c);d.stop=function(){r.clearTimeout(f)}})};(function(){var c=C.createElement("input"),a=C.createElement("select").appendChild(C.createElement("option"));c.type="checkbox";Q.checkOn=""!==c.value;Q.optSelected=a.selected;(c=C.createElement("input")).value="t";c.type="radio";Q.radioValue="t"===c.value})();var q,d=g.expr.attrHandle;g.fn.extend({attr:function(c,a){return ra(this,g.attr,c,a,1<arguments.length)},removeAttr:function(c){return this.each(function(){g.removeAttr(this,
c)})}});g.extend({attr:function(c,a,d){var f,b,m=c.nodeType;if(3!==m&&8!==m&&2!==m)return"undefined"==typeof c.getAttribute?g.prop(c,a,d):(1===m&&g.isXMLDoc(c)||(b=g.attrHooks[a.toLowerCase()]||(g.expr.match.bool.test(a)?q:void 0)),void 0!==d?null===d?void g.removeAttr(c,a):b&&"set"in b&&void 0!==(f=b.set(c,d,a))?f:(c.setAttribute(a,d+""),d):b&&"get"in b&&null!==(f=b.get(c,a))?f:null==(f=g.find.attr(c,a))?void 0:f)},attrHooks:{type:{set:function(c,a){if(!Q.radioValue&&"radio"===a&&l(c,"input")){var d=
c.value;return c.setAttribute("type",a),d&&(c.value=d),a}}}},removeAttr:function(c,a){var d,f=0,b=a&&a.match(ta);if(b&&1===c.nodeType)for(;d=b[f++];)c.removeAttribute(d)}});q={set:function(c,a,d){return!1===a?g.removeAttr(c,d):c.setAttribute(d,d),d}};g.each(g.expr.match.bool.source.match(/\w+/g),function(c,a){var f=d[a]||g.find.attr;d[a]=function(c,a,b){var m,e,g=a.toLowerCase();return b||(e=d[g],d[g]=m,m=null!=f(c,a,b)?g:null,d[g]=e),m}});var f=/^(?:input|select|textarea|button)$/i,t=/^(?:a|area)$/i;
g.fn.extend({prop:function(c,a){return ra(this,g.prop,c,a,1<arguments.length)},removeProp:function(c){return this.each(function(){delete this[g.propFix[c]||c]})}});g.extend({prop:function(c,a,d){var f,b,m=c.nodeType;if(3!==m&&8!==m&&2!==m)return 1===m&&g.isXMLDoc(c)||(a=g.propFix[a]||a,b=g.propHooks[a]),void 0!==d?b&&"set"in b&&void 0!==(f=b.set(c,d,a))?f:c[a]=d:b&&"get"in b&&null!==(f=b.get(c,a))?f:c[a]},propHooks:{tabIndex:{get:function(c){var a=g.find.attr(c,"tabindex");return a?parseInt(a,10):
f.test(c.nodeName)||t.test(c.nodeName)&&c.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}});Q.optSelected||(g.propHooks.selected={get:function(c){c=c.parentNode;return c&&c.parentNode&&c.parentNode.selectedIndex,null},set:function(c){c=c.parentNode;c&&(c.selectedIndex,c.parentNode&&c.parentNode.selectedIndex)}});g.each("tabIndex readOnly maxLength cellSpacing cellPadding rowSpan colSpan useMap frameBorder contentEditable".split(" "),function(){g.propFix[this.toLowerCase()]=this});g.fn.extend({addClass:function(c){var a,
d,f,b,m,e,q,t=0;if(O(c))return this.each(function(a){g(this).addClass(c.call(this,a,pa(this)))});if((a=J(c)).length)for(;d=this[t++];)if(b=pa(d),f=1===d.nodeType&&" "+ya(b)+" "){for(e=0;m=a[e++];)0>f.indexOf(" "+m+" ")&&(f+=m+" ");b!==(q=ya(f))&&d.setAttribute("class",q)}return this},removeClass:function(c){var a,d,f,b,m,e,q,t=0;if(O(c))return this.each(function(a){g(this).removeClass(c.call(this,a,pa(this)))});if(!arguments.length)return this.attr("class","");if((a=J(c)).length)for(;d=this[t++];)if(b=
pa(d),f=1===d.nodeType&&" "+ya(b)+" "){for(e=0;m=a[e++];)for(;-1<f.indexOf(" "+m+" ");)f=f.replace(" "+m+" "," ");b!==(q=ya(f))&&d.setAttribute("class",q)}return this},toggleClass:function(a,d){var f=typeof a,b="string"===f||Array.isArray(a);return"boolean"==typeof d&&b?d?this.addClass(a):this.removeClass(a):O(a)?this.each(function(f){g(this).toggleClass(a.call(this,f,pa(this),d),d)}):this.each(function(){var d,m,e,q;if(b)for(m=0,e=g(this),q=J(a);d=q[m++];)e.hasClass(d)?e.removeClass(d):e.addClass(d);
else void 0!==a&&"boolean"!==f||((d=pa(this))&&G.set(this,"__className__",d),this.setAttribute&&this.setAttribute("class",d||!1===a?"":G.get(this,"__className__")||""))})},hasClass:function(a){var d,f=0;for(a=" "+a+" ";d=this[f++];)if(1===d.nodeType&&-1<(" "+ya(pa(d))+" ").indexOf(a))return!0;return!1}});var E=/\r/g;g.fn.extend({val:function(a){var d,f,b,m=this[0];if(arguments.length)return b=O(a),this.each(function(f){var m;1===this.nodeType&&(null==(m=b?a.call(this,f,g(this).val()):a)?m="":"number"==
typeof m?m+="":Array.isArray(m)&&(m=g.map(m,function(a){return null==a?"":a+""})),(d=g.valHooks[this.type]||g.valHooks[this.nodeName.toLowerCase()])&&"set"in d&&void 0!==d.set(this,m,"value")||(this.value=m))});if(m)return(d=g.valHooks[m.type]||g.valHooks[m.nodeName.toLowerCase()])&&"get"in d&&void 0!==(f=d.get(m,"value"))?f:"string"==typeof(f=m.value)?f.replace(E,""):null==f?"":f}});g.extend({valHooks:{option:{get:function(a){var d=g.find.attr(a,"value");return null!=d?d:ya(g.text(a))}},select:{get:function(a){var d,
f,b=a.options,m=a.selectedIndex,e="select-one"===a.type,q=e?null:[],t=e?m+1:b.length;for(f=0>m?t:e?m:0;f<t;f++)if(!(!(d=b[f]).selected&&f!==m||d.disabled||d.parentNode.disabled&&l(d.parentNode,"optgroup"))){if(a=g(d).val(),e)return a;q.push(a)}return q},set:function(a,d){for(var f,b,m=a.options,e=g.makeArray(d),q=m.length;q--;)((b=m[q]).selected=-1<g.inArray(g.valHooks.option.get(b),e))&&(f=!0);return f||(a.selectedIndex=-1),e}}}});g.each(["radio","checkbox"],function(){g.valHooks[this]={set:function(a,
d){if(Array.isArray(d))return a.checked=-1<g.inArray(g(a).val(),d)}};Q.checkOn||(g.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});Q.focusin="onfocusin"in r;var ia=/^(?:focusinfocus|focusoutblur)$/,Y=function(a){a.stopPropagation()};g.extend(g.event,{trigger:function(a,d,f,b){var m,e,q,t,h,k,l,n,E=[f||C],p=gb.call(a,"type")?a.type:a;m=gb.call(a,"namespace")?a.namespace.split("."):[];if(e=n=q=f=f||C,3!==f.nodeType&&8!==f.nodeType&&!ia.test(p+g.event.triggered)&&
(-1<p.indexOf(".")&&(p=(m=p.split(".")).shift(),m.sort()),h=0>p.indexOf(":")&&"on"+p,a=a[g.expando]?a:new g.Event(p,"object"==typeof a&&a),a.isTrigger=b?2:3,a.namespace=m.join("."),a.rnamespace=a.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=f),d=null==d?[a]:g.makeArray(d,[a]),l=g.event.special[p]||{},b||!l.trigger||!1!==l.trigger.apply(f,d))){if(!b&&!l.noBubble&&!Ga(f)){t=l.delegateType||p;for(ia.test(t+p)||(e=e.parentNode);e;e=e.parentNode)E.push(e),
q=e;q===(f.ownerDocument||C)&&E.push(q.defaultView||q.parentWindow||r)}for(m=0;(e=E[m++])&&!a.isPropagationStopped();)n=e,a.type=1<m?t:l.bindType||p,(k=(G.get(e,"events")||{})[a.type]&&G.get(e,"handle"))&&k.apply(e,d),(k=h&&e[h])&&k.apply&&Za(e)&&(a.result=k.apply(e,d),!1===a.result&&a.preventDefault());return a.type=p,b||a.isDefaultPrevented()||l._default&&!1!==l._default.apply(E.pop(),d)||!Za(f)||h&&O(f[p])&&!Ga(f)&&((q=f[h])&&(f[h]=null),g.event.triggered=p,a.isPropagationStopped()&&n.addEventListener(p,
Y),f[p](),a.isPropagationStopped()&&n.removeEventListener(p,Y),g.event.triggered=void 0,q&&(f[h]=q)),a.result}},simulate:function(a,d,f){a=g.extend(new g.Event,f,{type:a,isSimulated:!0});g.event.trigger(a,null,d)}});g.fn.extend({trigger:function(a,d){return this.each(function(){g.event.trigger(a,d,this)})},triggerHandler:function(a,d){var f=this[0];if(f)return g.event.trigger(a,d,f,!0)}});Q.focusin||g.each({focus:"focusin",blur:"focusout"},function(a,d){var f=function(a){g.event.simulate(d,a.target,
g.event.fix(a))};g.event.special[d]={setup:function(){var b=this.ownerDocument||this,m=G.access(b,d);m||b.addEventListener(a,f,!0);G.access(b,d,(m||0)+1)},teardown:function(){var b=this.ownerDocument||this,m=G.access(b,d)-1;m?G.access(b,d,m):(b.removeEventListener(a,f,!0),G.remove(b,d))}}});var ja=r.location,U=Date.now(),sa=/\?/;g.parseXML=function(a){var d;if(!a||"string"!=typeof a)return null;try{d=(new r.DOMParser).parseFromString(a,"text/xml")}catch(f){d=void 0}return d&&!d.getElementsByTagName("parsererror").length||
g.error("Invalid XML: "+a),d};var Aa=/\[\]$/,aa=/\r?\n/g,Mb=/^(?:submit|button|image|reset|file)$/i,Qb=/^(?:input|select|textarea|keygen)/i;g.param=function(a,d){var f,b=[],m=function(a,c){var d=O(c)?c():c;b[b.length]=encodeURIComponent(a)+"\x3d"+encodeURIComponent(null==d?"":d)};if(Array.isArray(a)||a.jquery&&!g.isPlainObject(a))g.each(a,function(){m(this.name,this.value)});else for(f in a)fb(f,a[f],d,m);return b.join("\x26")};g.fn.extend({serialize:function(){return g.param(this.serializeArray())},
serializeArray:function(){return this.map(function(){var a=g.prop(this,"elements");return a?g.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!g(this).is(":disabled")&&Qb.test(this.nodeName)&&!Mb.test(a)&&(this.checked||!vb.test(a))}).map(function(a,d){var f=g(this).val();return null==f?null:Array.isArray(f)?g.map(f,function(a){return{name:d.name,value:a.replace(aa,"\r\n")}}):{name:d.name,value:f.replace(aa,"\r\n")}}).get()}});var Yb=/%20/g,Zb=/#.*$/,$b=/([?&])_=[^&]*/,ac=
/^(.*?):[ \t]*([^\r\n]*)$/gm,bc=/^(?:GET|HEAD)$/,cc=/^\/\//,Tb={},Nb={},Ub="*/".concat("*"),Rb=C.createElement("a");Rb.href=ja.href;g.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ja.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ja.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset\x3dUTF-8",accepts:{"*":Ub,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":g.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,d){return d?qa(qa(a,g.ajaxSettings),d):qa(g.ajaxSettings,a)},ajaxPrefilter:Ya(Tb),ajaxTransport:Ya(Nb),ajax:function(a,d){function f(a,c,d,q){var h,n,E,u,Y=c;if(!k){k=!0;t&&r.clearTimeout(t);b=void 0;e=q||"";F.readyState=0<a?4:0;
q=200<=a&&300>a||304===a;if(d){E=p;for(var A=F,N,D,ja,z,I=E.contents,B=E.dataTypes;"*"===B[0];)B.shift(),void 0===N&&(N=E.mimeType||A.getResponseHeader("Content-Type"));if(N)for(D in I)if(I[D]&&I[D].test(N)){B.unshift(D);break}if(B[0]in d)ja=B[0];else{for(D in d){if(!B[0]||E.converters[D+" "+B[0]]){ja=D;break}z||(z=D)}ja=ja||z}d=ja?(ja!==B[0]&&B.unshift(ja),d[ja]):void 0;E=d}var C;a:{d=p;N=E;D=F;ja=q;var M,Aa,U;E={};A=d.dataTypes.slice();if(A[1])for(M in d.converters)E[M.toLowerCase()]=d.converters[M];
for(z=A.shift();z;)if(d.responseFields[z]&&(D[d.responseFields[z]]=N),!U&&ja&&d.dataFilter&&(N=d.dataFilter(N,d.dataType)),U=z,z=A.shift())if("*"===z)z=U;else if("*"!==U&&U!==z){if(!(M=E[U+" "+z]||E["* "+z]))for(C in E)if((Aa=C.split(" "))[1]===z&&(M=E[U+" "+Aa[0]]||E["* "+Aa[0]])){!0===M?M=E[C]:!0!==E[C]&&(z=Aa[0],A.unshift(Aa[1]));break}if(!0!==M)if(M&&d["throws"])N=M(N);else try{N=M(N)}catch(aa){C={state:"parsererror",error:M?aa:"No conversion from "+U+" to "+z};break a}}C={state:"success",data:N}}E=
C;q?(p.ifModified&&((u=F.getResponseHeader("Last-Modified"))&&(g.lastModified[m]=u),(u=F.getResponseHeader("etag"))&&(g.etag[m]=u)),204===a||"HEAD"===p.type?Y="nocontent":304===a?Y="notmodified":(Y=E.state,h=E.data,q=!(n=E.error))):(n=Y,!a&&Y||(Y="error",0>a&&(a=0)));F.status=a;F.statusText=(c||Y)+"";q?v.resolveWith(ia,[h,Y,F]):v.rejectWith(ia,[F,Y,n]);F.statusCode(y);y=void 0;l&&w.trigger(q?"ajaxSuccess":"ajaxError",[F,p,q?h:n]);x.fireWith(ia,[F,Y]);l&&(w.trigger("ajaxComplete",[F,p]),--g.active||
g.event.trigger("ajaxStop"))}}"object"==typeof a&&(d=a,a=void 0);d=d||{};var b,m,e,q,t,h,k,l,n,E,p=g.ajaxSetup({},d),ia=p.context||p,w=p.context&&(ia.nodeType||ia.jquery)?g(ia):g.event,v=g.Deferred(),x=g.Callbacks("once memory"),y=p.statusCode||{},Y={},A={},D="canceled",F={readyState:0,getResponseHeader:function(a){var c;if(k){if(!q)for(q={};c=ac.exec(e);)q[c[1].toLowerCase()]=c[2];c=q[a.toLowerCase()]}return null==c?null:c},getAllResponseHeaders:function(){return k?e:null},setRequestHeader:function(a,
c){return null==k&&(a=A[a.toLowerCase()]=A[a.toLowerCase()]||a,Y[a]=c),this},overrideMimeType:function(a){return null==k&&(p.mimeType=a),this},statusCode:function(a){var c;if(a)if(k)F.always(a[F.status]);else for(c in a)y[c]=[y[c],a[c]];return this},abort:function(a){a=a||D;return b&&b.abort(a),f(0,a),this}};if(v.promise(F),p.url=((a||p.url||ja.href)+"").replace(cc,ja.protocol+"//"),p.type=d.method||d.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(ta)||[""],null==p.crossDomain){h=
C.createElement("a");try{h.href=p.url,h.href=h.href,p.crossDomain=Rb.protocol+"//"+Rb.host!=h.protocol+"//"+h.host}catch(z){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=g.param(p.data,p.traditional)),sb(Tb,p,d,F),k)return F;(l=g.event&&p.global)&&0==g.active++&&g.event.trigger("ajaxStart");p.type=p.type.toUpperCase();p.hasContent=!bc.test(p.type);m=p.url.replace(Zb,"");p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&
(p.data=p.data.replace(Yb,"+")):(E=p.url.slice(m.length),p.data&&(p.processData||"string"==typeof p.data)&&(m+=(sa.test(m)?"\x26":"?")+p.data,delete p.data),!1===p.cache&&(m=m.replace($b,"$1"),E=(sa.test(m)?"\x26":"?")+"_\x3d"+U++ +E),p.url=m+E);p.ifModified&&(g.lastModified[m]&&F.setRequestHeader("If-Modified-Since",g.lastModified[m]),g.etag[m]&&F.setRequestHeader("If-None-Match",g.etag[m]));(p.data&&p.hasContent&&!1!==p.contentType||d.contentType)&&F.setRequestHeader("Content-Type",p.contentType);
F.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Ub+"; q\x3d0.01":""):p.accepts["*"]);for(n in p.headers)F.setRequestHeader(n,p.headers[n]);if(p.beforeSend&&(!1===p.beforeSend.call(ia,F,p)||k))return F.abort();if(D="abort",x.add(p.complete),F.done(p.success),F.fail(p.error),b=sb(Nb,p,d,F)){if(F.readyState=1,l&&w.trigger("ajaxSend",[F,p]),k)return F;p.async&&0<p.timeout&&(t=r.setTimeout(function(){F.abort("timeout")},p.timeout));
try{k=!1,b.send(Y,f)}catch(z){if(k)throw z;f(-1,z)}}else f(-1,"No Transport");return F},getJSON:function(a,d,f){return g.get(a,d,f,"json")},getScript:function(a,d){return g.get(a,void 0,d,"script")}});g.each(["get","post"],function(a,d){g[d]=function(a,c,f,b){return O(c)&&(b=b||f,f=c,c=void 0),g.ajax(g.extend({url:a,type:d,dataType:b,data:c,success:f},g.isPlainObject(a)&&a))}});g._evalUrl=function(a){return g.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})};g.fn.extend({wrapAll:function(a){var d;
return this[0]&&(O(a)&&(a=a.call(this[0])),d=g(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&d.insertBefore(this[0]),d.map(function(){for(var a=this;a.firstElementChild;)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return O(a)?this.each(function(d){g(this).wrapInner(a.call(this,d))}):this.each(function(){var d=g(this),f=d.contents();f.length?f.wrapAll(a):d.append(a)})},wrap:function(a){var d=O(a);return this.each(function(f){g(this).wrapAll(d?a.call(this,
f):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){g(this).replaceWith(this.childNodes)}),this}});g.expr.pseudos.hidden=function(a){return!g.expr.pseudos.visible(a)};g.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)};g.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(a){}};var dc={0:200,1223:204},wb=g.ajaxSettings.xhr();Q.cors=!!wb&&"withCredentials"in wb;Q.ajax=wb=!!wb;g.ajaxTransport(function(a){var d,
f;if(Q.cors||wb&&!a.crossDomain)return{send:function(b,m){var e,g=a.xhr();if(g.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)g[e]=a.xhrFields[e];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType);a.crossDomain||b["X-Requested-With"]||(b["X-Requested-With"]="XMLHttpRequest");for(e in b)g.setRequestHeader(e,b[e]);d=function(a){return function(){d&&(d=f=g.onload=g.onerror=g.onabort=g.ontimeout=g.onreadystatechange=null,"abort"===a?g.abort():"error"===a?
"number"!=typeof g.status?m(0,"error"):m(g.status,g.statusText):m(dc[g.status]||g.status,g.statusText,"text"!==(g.responseType||"text")||"string"!=typeof g.responseText?{binary:g.response}:{text:g.responseText},g.getAllResponseHeaders()))}};g.onload=d();f=g.onerror=g.ontimeout=d("error");void 0!==g.onabort?g.onabort=f:g.onreadystatechange=function(){4===g.readyState&&r.setTimeout(function(){d&&f()})};d=d("abort");try{g.send(a.hasContent&&a.data||null)}catch(q){if(d)throw q;}},abort:function(){d&&
d()}}});g.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)});g.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return g.globalEval(a),a}}});g.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1);a.crossDomain&&(a.type="GET")});g.ajaxTransport("script",function(a){if(a.crossDomain){var d,f;return{send:function(b,m){d=g("\x3cscript\x3e").prop({charset:a.scriptCharset,
src:a.url}).on("load error",f=function(a){d.remove();f=null;a&&m("error"===a.type?404:200,a.type)});C.head.appendChild(d[0])},abort:function(){f&&f()}}}});var Vb=[],Sb=/(=)\?(?=&|$)|\?\?/;g.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Vb.pop()||g.expando+"_"+U++;return this[a]=!0,a}});g.ajaxPrefilter("json jsonp",function(a,d,f){var b,m,e,q=!1!==a.jsonp&&(Sb.test(a.url)?"url":"string"==typeof a.data&&0===(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&Sb.test(a.data)&&
"data");if(q||"jsonp"===a.dataTypes[0])return b=a.jsonpCallback=O(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,q?a[q]=a[q].replace(Sb,"$1"+b):!1!==a.jsonp&&(a.url+=(sa.test(a.url)?"\x26":"?")+a.jsonp+"\x3d"+b),a.converters["script json"]=function(){return e||g.error(b+" was not called"),e[0]},a.dataTypes[0]="json",m=r[b],r[b]=function(){e=arguments},f.always(function(){void 0===m?g(r).removeProp(b):r[b]=m;a[b]&&(a.jsonpCallback=d.jsonpCallback,Vb.push(b));e&&O(m)&&m(e[0]);e=m=void 0}),"script"});
Q.createHTMLDocument=function(){var a=C.implementation.createHTMLDocument("").body;return a.innerHTML="\x3cform\x3e\x3c/form\x3e\x3cform\x3e\x3c/form\x3e",2===a.childNodes.length}();g.parseHTML=function(a,d,f){if("string"!=typeof a)return[];"boolean"==typeof d&&(f=d,d=!1);var b,m,e;return d||(Q.createHTMLDocument?((b=(d=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,d.head.appendChild(b)):d=C),m=tb.exec(a),e=!f&&[],m?[d.createElement(m[1])]:(m=T([a],d,e),e&&e.length&&
g(e).remove(),g.merge([],m.childNodes))};g.fn.load=function(a,d,f){var b,m,e,q=this,t=a.indexOf(" ");return-1<t&&(b=ya(a.slice(t)),a=a.slice(0,t)),O(d)?(f=d,d=void 0):d&&"object"==typeof d&&(m="POST"),0<q.length&&g.ajax({url:a,type:m||"GET",dataType:"html",data:d}).done(function(a){e=arguments;q.html(b?g("\x3cdiv\x3e").append(g.parseHTML(a)).find(b):a)}).always(f&&function(a,d){q.each(function(){f.apply(this,e||[a.responseText,d,a])})}),this};g.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,d){g.fn[d]=function(a){return this.on(d,a)}});g.expr.pseudos.animated=function(a){return g.grep(g.timers,function(d){return a===d.elem}).length};g.offset={setOffset:function(a,d,f){var b,m,e,q,t,h,k=g.css(a,"position"),l=g(a),n={};"static"===k&&(a.style.position="relative");t=l.offset();e=g.css(a,"top");h=g.css(a,"left");("absolute"===k||"fixed"===k)&&-1<(e+h).indexOf("auto")?(q=(b=l.position()).top,m=b.left):(q=parseFloat(e)||0,m=parseFloat(h)||0);O(d)&&(d=d.call(a,f,g.extend({},t)));
null!=d.top&&(n.top=d.top-t.top+q);null!=d.left&&(n.left=d.left-t.left+m);"using"in d?d.using.call(a,n):l.css(n)}};g.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(d){g.offset.setOffset(this,a,d)});var d,f,b=this[0];if(b)return b.getClientRects().length?(d=b.getBoundingClientRect(),f=b.ownerDocument.defaultView,{top:d.top+f.pageYOffset,left:d.left+f.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var a,d,f,b=this[0],m={top:0,left:0};if("fixed"===
g.css(b,"position"))d=b.getBoundingClientRect();else{d=this.offset();f=b.ownerDocument;for(a=b.offsetParent||f.documentElement;a&&(a===f.body||a===f.documentElement)&&"static"===g.css(a,"position");)a=a.parentNode;a&&a!==b&&1===a.nodeType&&((m=g(a).offset()).top+=g.css(a,"borderTopWidth",!0),m.left+=g.css(a,"borderLeftWidth",!0))}return{top:d.top-m.top-g.css(b,"marginTop",!0),left:d.left-m.left-g.css(b,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent;a&&
"static"===g.css(a,"position");)a=a.offsetParent;return a||$a})}});g.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,d){var f="pageYOffset"===d;g.fn[a]=function(b){return ra(this,function(a,c,b){var m;if(Ga(a)?m=a:9===a.nodeType&&(m=a.defaultView),void 0===b)return m?m[d]:a[c];m?m.scrollTo(f?m.pageXOffset:b,f?b:m.pageYOffset):a[c]=b},a,b,arguments.length)}});g.each(["top","left"],function(a,d){g.cssHooks[d]=Bb(Q.pixelPosition,function(a,c){if(c)return c=Wa(a,d),Pa.test(c)?g(a).position()[d]+
"px":c})});g.each({Height:"height",Width:"width"},function(a,d){g.each({padding:"inner"+a,content:d,"":"outer"+a},function(f,b){g.fn[b]=function(m,e){var q=arguments.length&&(f||"boolean"!=typeof m),t=f||(!0===m||!0===e?"margin":"border");return ra(this,function(d,f,m){var e;return Ga(d)?0===b.indexOf("outer")?d["inner"+a]:d.document.documentElement["client"+a]:9===d.nodeType?(e=d.documentElement,Math.max(d.body["scroll"+a],e["scroll"+a],d.body["offset"+a],e["offset"+a],e["client"+a])):void 0===m?
g.css(d,f,t):g.style(d,f,m,t)},d,q?m:void 0,q)}})});g.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,d){g.fn[d]=function(a,c){return 0<arguments.length?this.on(d,null,a,c):this.trigger(d)}});g.fn.extend({hover:function(a,d){return this.mouseenter(a).mouseleave(d||a)}});g.fn.extend({bind:function(a,d,f){return this.on(a,null,d,f)},unbind:function(a,
d){return this.off(a,null,d)},delegate:function(a,d,f,b){return this.on(d,a,f,b)},undelegate:function(a,d,f){return 1===arguments.length?this.off(a,"**"):this.off(d,a||"**",f)}});g.proxy=function(a,d){var f,b,m;if("string"==typeof d&&(f=a[d],d=a,a=f),O(a))return b=za.call(arguments,2),m=function(){return a.apply(d||this,b.concat(za.call(arguments)))},m.guid=a.guid=a.guid||g.guid++,m};g.holdReady=function(a){a?g.readyWait++:g.ready(!0)};g.isArray=Array.isArray;g.parseJSON=JSON.parse;g.nodeName=l;g.isFunction=
O;g.isWindow=Ga;g.camelCase=I;g.type=b;g.now=Date.now;g.isNumeric=function(a){var d=g.type(a);return("number"===d||"string"===d)&&!isNaN(a-parseFloat(a))};"function"==typeof define&&define.amd&&define("jquery",[],function(){return g});var ec=r.jQuery,fc=r.$;return g.noConflict=function(a){return r.$===g&&(r.$=fc),a&&r.jQuery===g&&(r.jQuery=ec),g},e||(r.jQuery=r.$=g),g});
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(r.bootstrap={},r.jQuery)}(this,function(r,e){function a(a,b){for(var d=0;d<b.length;d++){var f=b[d];f.enumerable=f.enumerable||!1;f.configurable=!0;"value"in f&&(f.writable=!0);Object.defineProperty(a,f.key,f)}}function b(b,e,d){return e&&a(b.prototype,e),d&&a(b,d),b}function h(a){for(var b=1;b<arguments.length;b++){var d=null!=arguments[b]?
arguments[b]:{},f=Object.keys(d);"function"==typeof Object.getOwnPropertySymbols&&(f=f.concat(Object.getOwnPropertySymbols(d).filter(function(a){return Object.getOwnPropertyDescriptor(d,a).enumerable})));f.forEach(function(f){var b;b=d[f];f in a?Object.defineProperty(a,f,{value:b,enumerable:!0,configurable:!0,writable:!0}):a[f]=b})}return a}function l(a){return a&&"[object Function]"==={}.toString.call(a)}function k(a,b){if(1!==a.nodeType)return[];var d=getComputedStyle(a,null);return b?d[b]:d}function n(a){return"HTML"===
a.nodeName?a:a.parentNode||a.host}function p(a){if(!a)return document.body;switch(a.nodeName){case "HTML":case "BODY":return a.ownerDocument.body;case "#document":return a.body}var b=k(a);return/(auto|scroll|overlay)/.test(b.overflow+b.overflowY+b.overflowX)?a:p(n(a))}function w(a){return 11===a?Fb:10===a?Fa:Fb||Fa}function y(a){if(!a)return document.documentElement;for(var b=w(10)?document.body:null,d=a.offsetParent;d===b&&a.nextElementSibling;)d=(a=a.nextElementSibling).offsetParent;return(b=d&&
d.nodeName)&&"BODY"!==b&&"HTML"!==b?-1!==["TD","TABLE"].indexOf(d.nodeName)&&"static"===k(d,"position")?y(d):d:a?a.ownerDocument.documentElement:document.documentElement}function v(a){return null!==a.parentNode?v(a.parentNode):a}function x(a,b){if(!(a&&a.nodeType&&b&&b.nodeType))return document.documentElement;var d=a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING,f=d?a:b,d=d?b:a,e=document.createRange();e.setStart(f,0);e.setEnd(d,0);var g,e=e.commonAncestorContainer;if(a!==e&&b!==e||
f.contains(d))return"BODY"===(g=e.nodeName)||"HTML"!==g&&y(e.firstElementChild)!==e?y(e):e;f=v(a);return f.host?x(f.host,b):x(a,v(b).host)}function z(a){var b="top"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",d=a.nodeName;return"BODY"===d||"HTML"===d?(d=a.ownerDocument.documentElement,(a.ownerDocument.scrollingElement||d)[b]):a[b]}function I(a,b){var d="x"===b?"Left":"Top",f="Left"===d?"Right":"Bottom";return parseFloat(a["border"+d+"Width"],10)+parseFloat(a["border"+
f+"Width"],10)}function R(a,b,d,f){return Math.max(b["offset"+a],b["scroll"+a],d["client"+a],d["offset"+a],d["scroll"+a],w(10)?d["offset"+a]+f["margin"+("Height"===a?"Top":"Left")]+f["margin"+("Height"===a?"Bottom":"Right")]:0)}function F(){var a=document.body,b=document.documentElement,d=w(10)&&getComputedStyle(b);return{height:R("Height",a,b,d),width:R("Width",a,b,d)}}function M(a){return ma({},a,{right:a.left+a.width,bottom:a.top+a.height})}function D(a){var b={};try{if(w(10)){var b=a.getBoundingClientRect(),
d=z(a,"top"),f=z(a,"left");b.top+=d;b.left+=f;b.bottom+=d;b.right+=f}else b=a.getBoundingClientRect()}catch(e){}b={left:b.left,top:b.top,width:b.right-b.left,height:b.bottom-b.top};f="HTML"===a.nodeName?F():{};d=a.offsetWidth-(f.width||a.clientWidth||b.right-b.left);f=a.offsetHeight-(f.height||a.clientHeight||b.bottom-b.top);if(d||f)a=k(a),d-=I(a,"x"),f-=I(a,"y"),b.width-=d,b.height-=f;return M(b)}function A(a,b){var d=2<arguments.length&&void 0!==arguments[2]&&arguments[2],f=w(10),e="HTML"===b.nodeName,
g=D(a),h=D(b),l=p(a),n=k(b),r=parseFloat(n.borderTopWidth,10),v=parseFloat(n.borderLeftWidth,10);d&&"HTML"===b.nodeName&&(h.top=Math.max(h.top,0),h.left=Math.max(h.left,0));g=M({top:g.top-h.top-r,left:g.left-h.left-v,width:g.width,height:g.height});if(g.marginTop=0,g.marginLeft=0,!f&&e)e=parseFloat(n.marginTop,10),n=parseFloat(n.marginLeft,10),g.top-=r-e,g.bottom-=r-e,g.left-=v-n,g.right-=v-n,g.marginTop=e,g.marginLeft=n;return(f&&!d?b.contains(l):b===l&&"BODY"!==l.nodeName)&&(g=function(a,d){var f=
2<arguments.length&&void 0!==arguments[2]&&arguments[2],b=z(d,"top"),e=z(d,"left"),f=f?-1:1;return a.top+=b*f,a.bottom+=b*f,a.left+=e*f,a.right+=e*f,a}(g,b)),g}function W(a){if(!a||!a.parentElement||w())return document.documentElement;for(a=a.parentElement;a&&"none"===k(a,"transform");)a=a.parentElement;return a||document.documentElement}function T(a,b,d,f){var e=4<arguments.length&&void 0!==arguments[4]&&arguments[4],g={top:0,left:0},h=e?W(a):x(a,b);if("viewport"===f)g=function(a){var d=1<arguments.length&&
void 0!==arguments[1]&&arguments[1],f=a.ownerDocument.documentElement,b=A(a,f),e=Math.max(f.clientWidth,window.innerWidth||0),g=Math.max(f.clientHeight,window.innerHeight||0),m=d?0:z(f),d=d?0:z(f,"left");return M({top:m-b.top+b.marginTop,left:d-b.left+b.marginLeft,width:e,height:g})}(h,e);else{var l=void 0;"scrollParent"===f?"BODY"===(l=p(n(b))).nodeName&&(l=a.ownerDocument.documentElement):l="window"===f?a.ownerDocument.documentElement:f;e=A(l,h,e);"HTML"!==l.nodeName||function U(a){var d=a.nodeName;
return"BODY"!==d&&"HTML"!==d&&("fixed"===k(a,"position")||U(n(a)))}(h)?g=e:(l=F(),h=l.height,l=l.width,g.top+=e.top-e.marginTop,g.bottom=h+e.top,g.left+=e.left-e.marginLeft,g.right=l+e.left)}return g.left+=d,g.top+=d,g.right-=d,g.bottom-=d,g}function wa(a,b,d,f,e){var g=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===a.indexOf("auto"))return a;var g=T(d,f,g,e),h={top:{width:g.width,height:b.top-g.top},right:{width:g.right-b.right,height:g.height},bottom:{width:g.width,height:g.bottom-
b.bottom},left:{width:b.left-g.left,height:g.height}},g=Object.keys(h).map(function(a){return ma({key:a},h[a],{area:(d=h[a],d.width*d.height)});var d}).sort(function(a,d){return d.area-a.area}),k=g.filter(function(a){var f=a.height;return a.width>=d.clientWidth&&f>=d.clientHeight}),g=0<k.length?k[0].key:g[0].key,k=a.split("-")[1];return g+(k?"-"+k:"")}function ua(a,b,d){var f=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return A(d,f?W(b):x(b,d),f)}function Ba(a){var b=getComputedStyle(a),
d=parseFloat(b.marginTop)+parseFloat(b.marginBottom),b=parseFloat(b.marginLeft)+parseFloat(b.marginRight);return{width:a.offsetWidth+b,height:a.offsetHeight+d}}function Oa(a){var b={left:"right",right:"left",bottom:"top",top:"bottom"};return a.replace(/left|right|bottom|top/g,function(a){return b[a]})}function lb(a,b,d){d=d.split("-")[0];a=Ba(a);var f={width:a.width,height:a.height},e=-1!==["right","left"].indexOf(d),g=e?"top":"left",h=e?"left":"top",k=e?"height":"width";return f[g]=b[g]+b[k]/2-a[k]/
2,f[h]=d===h?b[h]-a[e?"width":"height"]:b[Oa(h)],f}function Va(a,b){return Array.prototype.find?a.find(b):a.filter(b)[0]}function zb(a,b,d){return(void 0===d?a:a.slice(0,function(a,d,b){if(Array.prototype.findIndex)return a.findIndex(function(a){return a[d]===b});var e=Va(a,function(a){return a[d]===b});return a.indexOf(e)}(a,"name",d))).forEach(function(a){a["function"]&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var d=a["function"]||a.fn;a.enabled&&l(d)&&(b.offsets.popper=
M(b.offsets.popper),b.offsets.reference=M(b.offsets.reference),b=d(b,a))}),b}function mb(a,b){return a.some(function(a){var f=a.name;return a.enabled&&f===b})}function Ca(a){for(var b=[!1,"ms","Webkit","Moz","O"],d=a.charAt(0).toUpperCase()+a.slice(1),f=0;f<b.length;f++){var e=b[f],e=e?""+e+d:a;if("undefined"!=typeof document.body.style[e])return e}return null}function pb(a){return(a=a.ownerDocument)?a.defaultView:window}function Wa(a,b,d,f){d.updateBound=f;pb(a).addEventListener("resize",d.updateBound,
{passive:!0});a=p(a);return function E(a,d,f,b){var e="BODY"===a.nodeName;a=e?a.ownerDocument.defaultView:a;a.addEventListener(d,f,{passive:!0});e||E(p(a.parentNode),d,f,b);b.push(a)}(a,"scroll",d.updateBound,d.scrollParents),d.scrollElement=a,d.eventsEnabled=!0,d}function Bb(){var a,b;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(a=this.reference,b=this.state,pb(a).removeEventListener("resize",b.updateBound),b.scrollParents.forEach(function(a){a.removeEventListener("scroll",
b.updateBound)}),b.updateBound=null,b.scrollParents=[],b.scrollElement=null,b.eventsEnabled=!1,b))}function bb(a){return""!==a&&!isNaN(parseFloat(a))&&isFinite(a)}function cb(a,b){Object.keys(b).forEach(function(d){var f="";-1!=="width height top right bottom left".split(" ").indexOf(d)&&bb(b[d])&&(f="px");a.style[d]=b[d]+f})}function db(a,b,d){var f=Va(a,function(a){return a.name===b});a=!!f&&a.some(function(a){return a.name===d&&a.enabled&&a.order<f.order});if(!a){var e="`"+b+"`";console.warn("`"+
d+"` modifier is required by "+e+" modifier in order to work, be sure to include it before "+e+"!")}return a}function qb(a){var b=1<arguments.length&&void 0!==arguments[1]&&arguments[1],d=hb.indexOf(a),d=hb.slice(d+1).concat(hb.slice(0,d));return b?d.reverse():d}function X(a,b,d,f){var e=[0,0],g=-1!==["right","left"].indexOf(f);a=a.split(/(\+|\-)/).map(function(a){return a.trim()});f=a.indexOf(Va(a,function(a){return-1!==a.search(/,|\s/)}));a[f]&&-1===a[f].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
var h=/\s*,\s*|\s+/;a=-1!==f?[a.slice(0,f).concat([a[f].split(h)[0]]),[a[f].split(h)[1]].concat(a.slice(f+1))]:[a];return(a=a.map(function(a,f){var e=(1===f?!g:g)?"height":"width",m=!1;return a.reduce(function(a,d){return""===a[a.length-1]&&-1!==["+","-"].indexOf(d)?(a[a.length-1]=d,m=!0,a):m?(a[a.length-1]+=d,m=!1,a):a.concat(d)},[]).map(function(a){var f;var g=a.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);f=+g[1];g=g[2];if(f)if(0===g.indexOf("%")){a=void 0;switch(g){case "%p":a=b;break;default:a=d}f*=M(a)[e]/
100}else f="vh"===g||"vw"===g?("vh"===g?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*f:f;else f=a;return f})})).forEach(function(a,d){a.forEach(function(f,b){bb(f)&&(e[d]+=f*("-"===a[b-1]?-1:1))})}),e}var da,rb,Ha,Da,S,oa,ya,pa,J,fb,Ya,sb,qa,ga,C,Db,za,nb,Ea,ba,K=function(a){var b={TRANSITION_END:"bsTransitionEnd",getUID:function(a){for(;a+=~~(1E6*Math.random()),document.getElementById(a););return a},
getSelectorFromElement:function(a){var f=a.getAttribute("data-target");f&&"#"!==f||(f=a.getAttribute("href")||"");try{return document.querySelector(f)?f:null}catch(b){return null}},getTransitionDurationFromElement:function(d){if(!d)return 0;d=a(d).css("transition-duration");return parseFloat(d)?(d=d.split(",")[0],1E3*parseFloat(d)):0},reflow:function(a){return a.offsetHeight},triggerTransitionEnd:function(d){a(d).trigger("transitionend")},supportsTransitionEnd:function(){return!0},isElement:function(a){return(a[0]||
a).nodeType},typeCheckConfig:function(a,f,e){for(var g in e)if(Object.prototype.hasOwnProperty.call(e,g)){var m=e[g],h=f[g],h=h&&b.isElement(h)?"element":(k=h,{}.toString.call(k).match(/\s([a-z]+)/i)[1].toLowerCase());if(!(new RegExp(m)).test(h))throw Error(a.toUpperCase()+': Option "'+g+'" provided type "'+h+'" but expected type "'+m+'".');}var k}};return a.fn.emulateTransitionEnd=function(d){var f=this,e=!1;return a(this).one(b.TRANSITION_END,function(){e=!0}),setTimeout(function(){e||b.triggerTransitionEnd(f)},
d),this},a.event.special[b.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(d){if(a(d.target).is(this))return d.handleObj.handler.apply(this,arguments)}},b}(e=e&&e.hasOwnProperty("default")?e["default"]:e),xb=(rb=(da=e).fn.alert,Ha={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},Da=function(){function a(d){this._element=d}var e=a.prototype;return e.close=function(a){var f=this._element;a&&(f=this._getRootElement(a));
this._triggerCloseEvent(f).isDefaultPrevented()||this._removeElement(f)},e.dispose=function(){da.removeData(this._element,"bs.alert");this._element=null},e._getRootElement=function(a){var f=K.getSelectorFromElement(a),b=!1;return f&&(b=document.querySelector(f)),b||(b=da(a).closest(".alert")[0]),b},e._triggerCloseEvent=function(a){var f=da.Event(Ha.CLOSE);return da(a).trigger(f),f},e._removeElement=function(a){var f=this;if(da(a).removeClass("show"),da(a).hasClass("fade")){var b=K.getTransitionDurationFromElement(a);
da(a).one(K.TRANSITION_END,function(b){return f._destroyElement(a,b)}).emulateTransitionEnd(b)}else this._destroyElement(a)},e._destroyElement=function(a){da(a).detach().trigger(Ha.CLOSED).remove()},a._jQueryInterface=function(d){return this.each(function(){var f=da(this),b=f.data("bs.alert");b||(b=new a(this),f.data("bs.alert",b));"close"===d&&b[d](this)})},a._handleDismiss=function(a){return function(f){f&&f.preventDefault();a.close(this)}},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}}]),
a}(),da(document).on(Ha.CLICK_DATA_API,'[data-dismiss\x3d"alert"]',Da._handleDismiss(new Da)),da.fn.alert=Da._jQueryInterface,da.fn.alert.Constructor=Da,da.fn.alert.noConflict=function(){return da.fn.alert=rb,Da._jQueryInterface},Da),gb=(oa=(S=e).fn.button,ya={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},pa=function(){function a(d){this._element=d}var e=a.prototype;return e.toggle=function(){var a=!0,f=!0,b=S(this._element).closest('[data-toggle\x3d"buttons"]')[0];
if(b){var e=this._element.querySelector("input");if(e){"radio"===e.type&&(e.checked&&this._element.classList.contains("active")?a=!1:(f=b.querySelector(".active"))&&S(f).removeClass("active"));if(a){if(e.hasAttribute("disabled")||b.hasAttribute("disabled")||e.classList.contains("disabled")||b.classList.contains("disabled"))return;e.checked=!this._element.classList.contains("active");S(e).trigger("change")}e.focus();f=!1}}f&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active"));
a&&S(this._element).toggleClass("active")},e.dispose=function(){S.removeData(this._element,"bs.button");this._element=null},a._jQueryInterface=function(d){return this.each(function(){var f=S(this).data("bs.button");f||(f=new a(this),S(this).data("bs.button",f));"toggle"===d&&f[d]()})},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}}]),a}(),S(document).on(ya.CLICK_DATA_API,'[data-toggle^\x3d"button"]',function(a){a.preventDefault();a=a.target;S(a).hasClass("btn")||(a=S(a).closest(".btn"));pa._jQueryInterface.call(S(a),
"toggle")}).on(ya.FOCUS_BLUR_DATA_API,'[data-toggle^\x3d"button"]',function(a){var b=S(a.target).closest(".btn")[0];S(b).toggleClass("focus",/^focus(in)?$/.test(a.type))}),S.fn.button=pa._jQueryInterface,S.fn.button.Constructor=pa,S.fn.button.noConflict=function(){return S.fn.button=oa,pa._jQueryInterface},pa),Eb=(fb=(J=e).fn.carousel,Ya={interval:5E3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},sb={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},
qa={SLIDE:"slide.bs.carousel",SLID:"slid.bs.carousel",KEYDOWN:"keydown.bs.carousel",MOUSEENTER:"mouseenter.bs.carousel",MOUSELEAVE:"mouseleave.bs.carousel",TOUCHEND:"touchend.bs.carousel",LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},ga=function(){function a(d,f){this._activeElement=this._interval=this._items=null;this._isSliding=this._isPaused=!1;this.touchTimeout=null;this._config=this._getConfig(f);this._element=J(d)[0];this._indicatorsElement=this._element.querySelector(".carousel-indicators");
this._addEventListeners()}var e=a.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){!document.hidden&&J(this._element).is(":visible")&&"hidden"!==J(this._element).css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(a){a||(this._isPaused=!0);this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(K.triggerTransitionEnd(this._element),this.cycle(!0));clearInterval(this._interval);
this._interval=null},e.cycle=function(a){a||(this._isPaused=!1);this._interval&&(clearInterval(this._interval),this._interval=null);this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(a){var f=this;this._activeElement=this._element.querySelector(".active.carousel-item");var b=this._getItemIndex(this._activeElement);if(!(a>this._items.length-1||0>a))if(this._isSliding)J(this._element).one(qa.SLID,
function(){return f.to(a)});else{if(b===a)return this.pause(),void this.cycle();this._slide(b<a?"next":"prev",this._items[a])}},e.dispose=function(){J(this._element).off(".bs.carousel");J.removeData(this._element,"bs.carousel");this._indicatorsElement=this._activeElement=this._isSliding=this._isPaused=this._interval=this._element=this._config=this._items=null},e._getConfig=function(a){return a=h({},Ya,a),K.typeCheckConfig("carousel",a,sb),a},e._addEventListeners=function(){var a=this;this._config.keyboard&&
J(this._element).on(qa.KEYDOWN,function(f){return a._keydown(f)});"hover"===this._config.pause&&(J(this._element).on(qa.MOUSEENTER,function(f){return a.pause(f)}).on(qa.MOUSELEAVE,function(f){return a.cycle(f)}),"ontouchstart"in document.documentElement&&J(this._element).on(qa.TOUCHEND,function(){a.pause();a.touchTimeout&&clearTimeout(a.touchTimeout);a.touchTimeout=setTimeout(function(f){return a.cycle(f)},500+a._config.interval)}))},e._keydown=function(a){if(!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:a.preventDefault();
this.prev();break;case 39:a.preventDefault(),this.next()}},e._getItemIndex=function(a){return this._items=a&&a.parentNode?[].slice.call(a.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(a)},e._getItemByDirection=function(a,f){var b="next"===a,e="prev"===a,g=this._getItemIndex(f),m=this._items.length-1;if((e&&0===g||b&&g===m)&&!this._config.wrap)return f;b=(g+("prev"===a?-1:1))%this._items.length;return-1===b?this._items[this._items.length-1]:this._items[b]},e._triggerSlideEvent=
function(a,f){var b=this._getItemIndex(a),e=this._getItemIndex(this._element.querySelector(".active.carousel-item")),b=J.Event(qa.SLIDE,{relatedTarget:a,direction:f,from:e,to:b});return J(this._element).trigger(b),b},e._setActiveIndicatorElement=function(a){if(this._indicatorsElement){var f=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));J(f).removeClass("active");(a=this._indicatorsElement.children[this._getItemIndex(a)])&&J(a).addClass("active")}},e._slide=function(a,f){var b,
e,g,m=this,h=this._element.querySelector(".active.carousel-item"),q=this._getItemIndex(h),k=f||h&&this._getItemByDirection(a,h),l=this._getItemIndex(k),n=!!this._interval;if("next"===a?(b="carousel-item-left",e="carousel-item-next",g="left"):(b="carousel-item-right",e="carousel-item-prev",g="right"),k&&J(k).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(k,g).isDefaultPrevented()&&h&&k){this._isSliding=!0;n&&this.pause();this._setActiveIndicatorElement(k);var p=J.Event(qa.SLID,
{relatedTarget:k,direction:g,from:q,to:l});J(this._element).hasClass("slide")?(J(k).addClass(e),K.reflow(k),J(h).addClass(b),J(k).addClass(b),g=K.getTransitionDurationFromElement(h),J(h).one(K.TRANSITION_END,function(){J(k).removeClass(b+" "+e).addClass("active");J(h).removeClass("active "+e+" "+b);m._isSliding=!1;setTimeout(function(){return J(m._element).trigger(p)},0)}).emulateTransitionEnd(g)):(J(h).removeClass("active"),J(k).addClass("active"),this._isSliding=!1,J(this._element).trigger(p));
n&&this.cycle()}},a._jQueryInterface=function(d){return this.each(function(){var f=J(this).data("bs.carousel"),b=h({},Ya,J(this).data());"object"==typeof d&&(b=h({},b,d));var e="string"==typeof d?d:b.slide;if(f||(f=new a(this,b),J(this).data("bs.carousel",f)),"number"==typeof d)f.to(d);else if("string"==typeof e){if("undefined"==typeof f[e])throw new TypeError('No method named "'+e+'"');f[e]()}else b.interval&&(f.pause(),f.cycle())})},a._dataApiClickHandler=function(d){var f=K.getSelectorFromElement(this);
if(f&&(f=J(f)[0])&&J(f).hasClass("carousel")){var b=h({},J(f).data(),J(this).data()),e=this.getAttribute("data-slide-to");e&&(b.interval=!1);a._jQueryInterface.call(J(f),b);e&&J(f).data("bs.carousel").to(e);d.preventDefault()}},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}},{key:"Default",get:function(){return Ya}}]),a}(),J(document).on(qa.CLICK_DATA_API,"[data-slide], [data-slide-to]",ga._dataApiClickHandler),J(window).on(qa.LOAD_DATA_API,function(){for(var a=[].slice.call(document.querySelectorAll('[data-ride\x3d"carousel"]')),
b=0,d=a.length;b<d;b++){var f=J(a[b]);ga._jQueryInterface.call(f,f.data())}}),J.fn.carousel=ga._jQueryInterface,J.fn.carousel.Constructor=ga,J.fn.carousel.noConflict=function(){return J.fn.carousel=fb,ga._jQueryInterface},ga),Ob=(Db=(C=e).fn.collapse,za={toggle:!0,parent:""},nb={toggle:"boolean",parent:"(string|element)"},Ea={SHOW:"show.bs.collapse",SHOWN:"shown.bs.collapse",HIDE:"hide.bs.collapse",HIDDEN:"hidden.bs.collapse",CLICK_DATA_API:"click.bs.collapse.data-api"},ba=function(){function a(d,
f){this._isTransitioning=!1;this._element=d;this._config=this._getConfig(f);this._triggerArray=C.makeArray(document.querySelectorAll('[data-toggle\x3d"collapse"][href\x3d"#'+d.id+'"],[data-toggle\x3d"collapse"][data-target\x3d"#'+d.id+'"]'));for(var b=[].slice.call(document.querySelectorAll('[data-toggle\x3d"collapse"]')),e=0,g=b.length;e<g;e++){var m=b[e],h=K.getSelectorFromElement(m),q=[].slice.call(document.querySelectorAll(h)).filter(function(a){return a===d});null!==h&&0<q.length&&(this._selector=
h,this._triggerArray.push(m))}this._parent=this._config.parent?this._getParent():null;this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray);this._config.toggle&&this.toggle()}var e=a.prototype;return e.toggle=function(){C(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var d,f,b=this;if(!(this._isTransitioning||C(this._element).hasClass("show")||(this._parent&&0===(d=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter(function(a){return a.getAttribute("data-parent")===
b._config.parent})).length&&(d=null),d&&(f=C(d).not(this._selector).data("bs.collapse"))&&f._isTransitioning))){var e=C.Event(Ea.SHOW);if(C(this._element).trigger(e),!e.isDefaultPrevented()){d&&(a._jQueryInterface.call(C(d).not(this._selector),"hide"),f||C(d).data("bs.collapse",null));var g=this._getDimension();C(this._element).removeClass("collapse").addClass("collapsing");this._element.style[g]=0;this._triggerArray.length&&C(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0);
this.setTransitioning(!0);d="scroll"+(g[0].toUpperCase()+g.slice(1));f=K.getTransitionDurationFromElement(this._element);C(this._element).one(K.TRANSITION_END,function(){C(b._element).removeClass("collapsing").addClass("collapse").addClass("show");b._element.style[g]="";b.setTransitioning(!1);C(b._element).trigger(Ea.SHOWN)}).emulateTransitionEnd(f);this._element.style[g]=this._element[d]+"px"}}},e.hide=function(){var a=this;if(!this._isTransitioning&&C(this._element).hasClass("show")){var f=C.Event(Ea.HIDE);
if(C(this._element).trigger(f),!f.isDefaultPrevented()){f=this._getDimension();this._element.style[f]=this._element.getBoundingClientRect()[f]+"px";K.reflow(this._element);C(this._element).addClass("collapsing").removeClass("collapse").removeClass("show");var b=this._triggerArray.length;if(0<b)for(var e=0;e<b;e++){var g=this._triggerArray[e],m=K.getSelectorFromElement(g);null!==m&&(C([].slice.call(document.querySelectorAll(m))).hasClass("show")||C(g).addClass("collapsed").attr("aria-expanded",!1))}this.setTransitioning(!0);
this._element.style[f]="";f=K.getTransitionDurationFromElement(this._element);C(this._element).one(K.TRANSITION_END,function(){a.setTransitioning(!1);C(a._element).removeClass("collapsing").addClass("collapse").trigger(Ea.HIDDEN)}).emulateTransitionEnd(f)}}},e.setTransitioning=function(a){this._isTransitioning=a},e.dispose=function(){C.removeData(this._element,"bs.collapse");this._isTransitioning=this._triggerArray=this._element=this._parent=this._config=null},e._getConfig=function(a){return(a=h({},
za,a)).toggle=!!a.toggle,K.typeCheckConfig("collapse",a,nb),a},e._getDimension=function(){return C(this._element).hasClass("width")?"width":"height"},e._getParent=function(){var d=this,f=null;K.isElement(this._config.parent)?(f=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(f=this._config.parent[0])):f=document.querySelector(this._config.parent);var b=[].slice.call(f.querySelectorAll('[data-toggle\x3d"collapse"][data-parent\x3d"'+this._config.parent+'"]'));return C(b).each(function(f,
b){d._addAriaAndCollapsedClass(a._getTargetFromElement(b),[b])}),f},e._addAriaAndCollapsedClass=function(a,f){if(a){var b=C(a).hasClass("show");f.length&&C(f).toggleClass("collapsed",!b).attr("aria-expanded",b)}},a._getTargetFromElement=function(a){return(a=K.getSelectorFromElement(a))?document.querySelector(a):null},a._jQueryInterface=function(d){return this.each(function(){var f=C(this),b=f.data("bs.collapse"),e=h({},za,f.data(),"object"==typeof d&&d?d:{});if(!b&&e.toggle&&/show|hide/.test(d)&&
(e.toggle=!1),b||(b=new a(this,e),f.data("bs.collapse",b)),"string"==typeof d){if("undefined"==typeof b[d])throw new TypeError('No method named "'+d+'"');b[d]()}})},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}},{key:"Default",get:function(){return za}}]),a}(),C(document).on(Ea.CLICK_DATA_API,'[data-toggle\x3d"collapse"]',function(a){"A"===a.currentTarget.tagName&&a.preventDefault();var b=C(this);a=K.getSelectorFromElement(this);a=[].slice.call(document.querySelectorAll(a));C(a).each(function(){var a=
C(this),f=a.data("bs.collapse")?"toggle":b.data();ba._jQueryInterface.call(a,f)})}),C.fn.collapse=ba._jQueryInterface,C.fn.collapse.Constructor=ba,C.fn.collapse.noConflict=function(){return C.fn.collapse=Db,ba._jQueryInterface},ba),Q="undefined"!=typeof window&&"undefined"!=typeof document,O=["Edge","Trident","Firefox"],Ga=0,ab=0;for(;ab<O.length;ab+=1)if(Q&&0<=navigator.userAgent.indexOf(O[ab])){Ga=1;break}var g=Q&&window.Promise?function(a){var b=!1;return function(){b||(b=!0,window.Promise.resolve().then(function(){b=
!1;a()}))}}:function(a){var b=!1;return function(){b||(b=!0,setTimeout(function(){b=!1;a()},Ga))}},Fb=Q&&!(!window.MSInputMethodContext||!document.documentMode),Fa=Q&&/MSIE 10/.test(navigator.userAgent),Ra=function(){function a(b,d){for(var f=0;f<d.length;f++){var e=d[f];e.enumerable=e.enumerable||!1;e.configurable=!0;"value"in e&&(e.writable=!0);Object.defineProperty(b,e.key,e)}}return function(b,d,f){return d&&a(b.prototype,d),f&&a(b,f),b}}(),Ia=function(a,b,d){return b in a?Object.defineProperty(a,
b,{value:d,enumerable:!0,configurable:!0,writable:!0}):a[b]=d,a},ma=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var d=arguments[b],f;for(f in d)Object.prototype.hasOwnProperty.call(d,f)&&(a[f]=d[f])}return a},tb="auto-start auto auto-end top-start top top-end right-start right right-end bottom-end bottom bottom-start left-end left left-start".split(" "),hb=tb.slice(3),Ja=function(){function a(b,d){var f=this,e=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(!(this instanceof
a))throw new TypeError("Cannot call a class as a function");!0;this.scheduleUpdate=function(){return requestAnimationFrame(f.update)};this.update=g(this.update.bind(this));this.options=ma({},a.Defaults,e);this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]};this.reference=b&&b.jquery?b[0]:b;this.popper=d&&d.jquery?d[0]:d;this.options.modifiers={};Object.keys(ma({},a.Defaults.modifiers,e.modifiers)).forEach(function(d){f.options.modifiers[d]=ma({},a.Defaults.modifiers[d]||{},e.modifiers?e.modifiers[d]:
{})});this.modifiers=Object.keys(this.options.modifiers).map(function(a){return ma({name:a},f.options.modifiers[a])}).sort(function(a,d){return a.order-d.order});this.modifiers.forEach(function(a){a.enabled&&l(a.onLoad)&&a.onLoad(f.reference,f.popper,f.options,a,f.state)});this.update();var h=this.options.eventsEnabled;h&&this.enableEventListeners();this.state.eventsEnabled=h}return Ra(a,[{key:"update",value:function(){if(!this.state.isDestroyed){var a={instance:this,styles:{},arrowStyles:{},attributes:{},
flipped:!1,offsets:{}};a.offsets.reference=ua(this.state,this.popper,this.reference,this.options.positionFixed);a.placement=wa(this.options.placement,a.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding);a.originalPlacement=a.placement;a.positionFixed=this.options.positionFixed;a.offsets.popper=lb(this.popper,a.offsets.reference,a.placement);a.offsets.popper.position=this.options.positionFixed?"fixed":"absolute";a=zb(this.modifiers,
a);this.state.isCreated?this.options.onUpdate(a):(this.state.isCreated=!0,this.options.onCreate(a))}}},{key:"destroy",value:function(){return this.state.isDestroyed=!0,mb(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[Ca("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&
this.popper.parentNode.removeChild(this.popper),this}},{key:"enableEventListeners",value:function(){this.state.eventsEnabled||(this.state=Wa(this.reference,this.options,this.state,this.scheduleUpdate))}},{key:"disableEventListeners",value:function(){return Bb.call(this)}}]),a}();Ja.Utils=("undefined"!=typeof window?window:global).PopperUtils;Ja.placements=tb;Ja.Defaults={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,
enabled:!0,fn:function(a){var b=a.placement,d=b.split("-")[0];if(b=b.split("-")[1]){var f=a.offsets,e=f.reference,f=f.popper,g=-1!==["bottom","top"].indexOf(d),d=g?"left":"top",g=g?"width":"height",e={start:Ia({},d,e[d]),end:Ia({},d,e[d]+e[g]-f[g])};a.offsets.popper=ma({},f,e[b])}return a}},offset:{order:200,enabled:!0,fn:function(a,b){var d=b.offset,f=a.offsets,e=f.popper,f=f.reference,g=a.placement.split("-")[0],h=void 0;return h=bb(+d)?[+d,0]:X(d,e,f,g),"left"===g?(e.top+=h[0],e.left-=h[1]):"right"===
g?(e.top+=h[0],e.left+=h[1]):"top"===g?(e.left+=h[0],e.top-=h[1]):"bottom"===g&&(e.left+=h[0],e.top+=h[1]),a.popper=e,a},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(a,b){var d=b.boundariesElement||y(a.instance.popper);a.instance.reference===d&&(d=y(d));var f=Ca("transform"),e=a.instance.popper.style,g=e.top,h=e.left,k=e[f];e.top="";e.left="";e[f]="";var l=T(a.instance.popper,a.instance.reference,b.padding,d,a.positionFixed);e.top=g;e.left=h;e[f]=k;b.boundaries=l;var n=a.offsets.popper,
p={primary:function(a){var d=n[a];return n[a]<l[a]&&!b.escapeWithReference&&(d=Math.max(n[a],l[a])),Ia({},a,d)},secondary:function(a){var d="right"===a?"left":"top",f=n[d];return n[a]>l[a]&&!b.escapeWithReference&&(f=Math.min(n[d],l[a]-("right"===a?n.width:n.height))),Ia({},d,f)}};return b.priority.forEach(function(a){var d=-1!==["left","top"].indexOf(a)?"primary":"secondary";n=ma({},n,p[d](a))}),a.offsets.popper=n,a},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},
keepTogether:{order:400,enabled:!0,fn:function(a){var b=a.offsets,d=b.popper,b=b.reference,f=a.placement.split("-")[0],e=Math.floor,g=-1!==["top","bottom"].indexOf(f),f=g?"right":"bottom",h=g?"left":"top",g=g?"width":"height";return d[f]<e(b[h])&&(a.offsets.popper[h]=e(b[h])-d[g]),d[h]>e(b[f])&&(a.offsets.popper[h]=e(b[f])),a}},arrow:{order:500,enabled:!0,fn:function(a,b){var d;if(!db(a.instance.modifiers,"arrow","keepTogether"))return a;var f=b.element;if("string"==typeof f){if(!(f=a.instance.popper.querySelector(f)))return a}else if(!a.instance.popper.contains(f))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),
a;var e=a.placement.split("-")[0],g=a.offsets,h=g.popper,l=g.reference,n=-1!==["left","right"].indexOf(e),e=n?"height":"width",p=n?"Top":"Left",g=p.toLowerCase(),r=n?"left":"top",w=n?"bottom":"right",n=Ba(f)[e];l[w]-n<h[g]&&(a.offsets.popper[g]-=h[g]-(l[w]-n));l[g]+n>h[w]&&(a.offsets.popper[g]+=l[g]+n-h[w]);a.offsets.popper=M(a.offsets.popper);var l=l[g]+l[e]/2-n/2,v=k(a.instance.popper),w=parseFloat(v["margin"+p],10),p=parseFloat(v["border"+p+"Width"],10),p=l-a.offsets.popper[g]-w-p;return p=Math.max(Math.min(h[e]-
n,p),0),a.arrowElement=f,a.offsets.arrow=(Ia(d={},g,Math.round(p)),Ia(d,r,""),d),a},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(a,b){if(mb(a.instance.modifiers,"inner")||a.flipped&&a.placement===a.originalPlacement)return a;var d=T(a.instance.popper,a.instance.reference,b.padding,b.boundariesElement,a.positionFixed),f=a.placement.split("-")[0],e=Oa(f),g=a.placement.split("-")[1]||"",h=[];switch(b.behavior){case "flip":h=[f,e];break;case "clockwise":h=qb(f);break;case "counterclockwise":h=
qb(f,!0);break;default:h=b.behavior}return h.forEach(function(k,l){if(f!==k||h.length===l+1)return a;f=a.placement.split("-")[0];e=Oa(f);var n,p=a.offsets.popper,r=a.offsets.reference,w=Math.floor,r="left"===f&&w(p.right)>w(r.left)||"right"===f&&w(p.left)<w(r.right)||"top"===f&&w(p.bottom)>w(r.top)||"bottom"===f&&w(p.top)<w(r.bottom),v=w(p.left)<w(d.left),y=w(p.right)>w(d.right),x=w(p.top)<w(d.top),w=w(p.bottom)>w(d.bottom),p="left"===f&&v||"right"===f&&y||"top"===f&&x||"bottom"===f&&w,F=-1!==["top",
"bottom"].indexOf(f),v=!!b.flipVariations&&(F&&"start"===g&&v||F&&"end"===g&&y||!F&&"start"===g&&x||!F&&"end"===g&&w);(r||p||v)&&(a.flipped=!0,(r||p)&&(f=h[l+1]),v&&(g="end"===(n=g)?"start":"start"===n?"end":n),a.placement=f+(g?"-"+g:""),a.offsets.popper=ma({},a.offsets.popper,lb(a.instance.popper,a.offsets.reference,a.placement)),a=zb(a.instance.modifiers,a,"flip"))}),a},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(a){var b=a.placement,d=b.split("-")[0],
f=a.offsets,e=f.popper,f=f.reference,g=-1!==["left","right"].indexOf(d),h=-1===["top","left"].indexOf(d);return e[g?"left":"top"]=f[d]-(h?e[g?"width":"height"]:0),a.placement=Oa(b),a.offsets.popper=M(e),a}},hide:{order:800,enabled:!0,fn:function(a){if(!db(a.instance.modifiers,"hide","preventOverflow"))return a;var b=a.offsets.reference,d=Va(a.instance.modifiers,function(a){return"preventOverflow"===a.name}).boundaries;if(b.bottom<d.top||b.left>d.right||b.top>d.bottom||b.right<d.left){if(!0===a.hide)return a;
a.hide=!0;a.attributes["x-out-of-boundaries"]=""}else{if(!1===a.hide)return a;a.hide=!1;a.attributes["x-out-of-boundaries"]=!1}return a}},computeStyle:{order:850,enabled:!0,fn:function(a,b){var d=b.x,f=b.y,e=a.offsets.popper,g=Va(a.instance.modifiers,function(a){return"applyStyle"===a.name}).gpuAcceleration;void 0!==g&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var g=void 0!==g?g:b.gpuAcceleration,h=
D(y(a.instance.popper)),k={position:e.position},l=Math.floor(e.left),n=Math.round(e.top),p=Math.round(e.bottom),e=Math.floor(e.right),d="bottom"===d?"top":"bottom",f="right"===f?"left":"right",r=Ca("transform"),w=void 0,v=void 0;(v="bottom"===d?-h.height+p:n,w="right"===f?-h.width+e:l,g&&r)?(k[r]="translate3d("+w+"px, "+v+"px, 0)",k[d]=0,k[f]=0,k.willChange="transform"):(k[d]=v*("bottom"===d?-1:1),k[f]=w*("right"===f?-1:1),k.willChange=d+", "+f);return a.attributes=ma({},{"x-placement":a.placement},
a.attributes),a.styles=ma({},k,a.styles),a.arrowStyles=ma({},a.offsets.arrow,a.arrowStyles),a},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(a){var b,d;return cb(a.instance.popper,a.styles),b=a.instance.popper,d=a.attributes,Object.keys(d).forEach(function(a){!1!==d[a]?b.setAttribute(a,d[a]):b.removeAttribute(a)}),a.arrowElement&&Object.keys(a.arrowStyles).length&&cb(a.arrowElement,a.arrowStyles),a},onLoad:function(a,b,d,f,e){f=ua(e,b,a,d.positionFixed);a=wa(d.placement,
f,b,a,d.modifiers.flip.boundariesElement,d.modifiers.flip.padding);return b.setAttribute("x-placement",a),cb(b,{position:d.positionFixed?"fixed":"absolute"}),d},gpuAcceleration:void 0}}};var L,Gb,ta,ha,ib,ra,ca,B,Za,G,fa,V,La,H,Ma,ka,Ua,ub,kb,vb,Na,na,la,yb,$a,Hb,Ib,Sa,Z,Jb,ob,Ab,Pa,xa,P,Kb,Ka,Ta,Lb=(Gb=(L=e).fn.dropdown,ta=/38|40|27/,ha={HIDE:"hide.bs.dropdown",HIDDEN:"hidden.bs.dropdown",SHOW:"show.bs.dropdown",SHOWN:"shown.bs.dropdown",CLICK:"click.bs.dropdown",CLICK_DATA_API:"click.bs.dropdown.data-api",
KEYDOWN_DATA_API:"keydown.bs.dropdown.data-api",KEYUP_DATA_API:"keyup.bs.dropdown.data-api"},ib={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},ra={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},ca=function(){function a(d,b){this._element=d;this._popper=null;this._config=this._getConfig(b);this._menu=this._getMenuElement();this._inNavbar=this._detectNavbar();this._addEventListeners()}var e=
a.prototype;return e.toggle=function(){if(!this._element.disabled&&!L(this._element).hasClass("disabled")){var d=a._getParentFromElement(this._element),b=L(this._menu).hasClass("show");if(a._clearMenus(),!b){var b={relatedTarget:this._element},e=L.Event(ha.SHOW,b);if(L(d).trigger(e),!e.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof Ja)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");e=this._element;"parent"===this._config.reference?e=d:K.isElement(this._config.reference)&&
(e=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(e=this._config.reference[0]));"scrollParent"!==this._config.boundary&&L(d).addClass("position-static");this._popper=new Ja(e,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===L(d).closest(".navbar-nav").length&&L(document.body).children().on("mouseover",null,L.noop);this._element.focus();this._element.setAttribute("aria-expanded",!0);L(this._menu).toggleClass("show");L(d).toggleClass("show").trigger(L.Event(ha.SHOWN,
b))}}}},e.dispose=function(){L.removeData(this._element,"bs.dropdown");L(this._element).off(".bs.dropdown");this._element=null;(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar();null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var a=this;L(this._element).on(ha.CLICK,function(b){b.preventDefault();b.stopPropagation();a.toggle()})},e._getConfig=function(a){return a=h({},this.constructor.Default,
L(this._element).data(),a),K.typeCheckConfig("dropdown",a,this.constructor.DefaultType),a},e._getMenuElement=function(){if(!this._menu){var d=a._getParentFromElement(this._element);d&&(this._menu=d.querySelector(".dropdown-menu"))}return this._menu},e._getPlacement=function(){var a=L(this._element.parentNode),b="bottom-start";return a.hasClass("dropup")?(b="top-start",L(this._menu).hasClass("dropdown-menu-right")&&(b="top-end")):a.hasClass("dropright")?b="right-start":a.hasClass("dropleft")?b="left-start":
L(this._menu).hasClass("dropdown-menu-right")&&(b="bottom-end"),b},e._detectNavbar=function(){return 0<L(this._element).closest(".navbar").length},e._getPopperConfig=function(){var a=this,b={};"function"==typeof this._config.offset?b.fn=function(b){return b.offsets=h({},b.offsets,a._config.offset(b.offsets)||{}),b}:b.offset=this._config.offset;b={placement:this._getPlacement(),modifiers:{offset:b,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===
this._config.display&&(b.modifiers.applyStyle={enabled:!1}),b},a._jQueryInterface=function(d){return this.each(function(){var b=L(this).data("bs.dropdown");if(b||(b=new a(this,"object"==typeof d?d:null),L(this).data("bs.dropdown",b)),"string"==typeof d){if("undefined"==typeof b[d])throw new TypeError('No method named "'+d+'"');b[d]()}})},a._clearMenus=function(d){if(!d||3!==d.which&&("keyup"!==d.type||9===d.which))for(var b=[].slice.call(document.querySelectorAll('[data-toggle\x3d"dropdown"]')),e=
0,g=b.length;e<g;e++){var h=a._getParentFromElement(b[e]),k=L(b[e]).data("bs.dropdown"),l={relatedTarget:b[e]};if(d&&"click"===d.type&&(l.clickEvent=d),k)if(k=k._menu,L(h).hasClass("show")&&!(d&&("click"===d.type&&/input|textarea/i.test(d.target.tagName)||"keyup"===d.type&&9===d.which)&&L.contains(h,d.target))){var n=L.Event(ha.HIDE,l);L(h).trigger(n);n.isDefaultPrevented()||("ontouchstart"in document.documentElement&&L(document.body).children().off("mouseover",null,L.noop),b[e].setAttribute("aria-expanded",
"false"),L(k).removeClass("show"),L(h).removeClass("show").trigger(L.Event(ha.HIDDEN,l)))}}},a._getParentFromElement=function(a){var b,e=K.getSelectorFromElement(a);return e&&(b=document.querySelector(e)),b||a.parentNode},a._dataApiKeydownHandler=function(d){if(!((/input|textarea/i.test(d.target.tagName)?32===d.which||27!==d.which&&(40!==d.which&&38!==d.which||L(d.target).closest(".dropdown-menu").length):!ta.test(d.which))||(d.preventDefault(),d.stopPropagation(),this.disabled||L(this).hasClass("disabled")))){var b=
a._getParentFromElement(this),e=L(b).hasClass("show");(e||27===d.which&&32===d.which)&&(!e||27!==d.which&&32!==d.which)?(b=[].slice.call(b.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")),0!==b.length&&(e=b.indexOf(d.target),38===d.which&&0<e&&e--,40===d.which&&e<b.length-1&&e++,0>e&&(e=0),b[e].focus())):(27===d.which&&(d=b.querySelector('[data-toggle\x3d"dropdown"]'),L(d).trigger("focus")),L(this).trigger("click"))}},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}},
{key:"Default",get:function(){return ib}},{key:"DefaultType",get:function(){return ra}}]),a}(),L(document).on(ha.KEYDOWN_DATA_API,'[data-toggle\x3d"dropdown"]',ca._dataApiKeydownHandler).on(ha.KEYDOWN_DATA_API,".dropdown-menu",ca._dataApiKeydownHandler).on(ha.CLICK_DATA_API+" "+ha.KEYUP_DATA_API,ca._clearMenus).on(ha.CLICK_DATA_API,'[data-toggle\x3d"dropdown"]',function(a){a.preventDefault();a.stopPropagation();ca._jQueryInterface.call(L(this),"toggle")}).on(ha.CLICK_DATA_API,".dropdown form",function(a){a.stopPropagation()}),
L.fn.dropdown=ca._jQueryInterface,L.fn.dropdown.Constructor=ca,L.fn.dropdown.noConflict=function(){return L.fn.dropdown=Gb,ca._jQueryInterface},ca),Cb=(Za=(B=e).fn.modal,G={backdrop:!0,keyboard:!0,focus:!0,show:!0},fa={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},V={HIDE:"hide.bs.modal",HIDDEN:"hidden.bs.modal",SHOW:"show.bs.modal",SHOWN:"shown.bs.modal",FOCUSIN:"focusin.bs.modal",RESIZE:"resize.bs.modal",CLICK_DISMISS:"click.dismiss.bs.modal",KEYDOWN_DISMISS:"keydown.dismiss.bs.modal",
MOUSEUP_DISMISS:"mouseup.dismiss.bs.modal",MOUSEDOWN_DISMISS:"mousedown.dismiss.bs.modal",CLICK_DATA_API:"click.bs.modal.data-api"},La=function(){function a(d,b){this._config=this._getConfig(b);this._element=d;this._dialog=d.querySelector(".modal-dialog");this._backdrop=null;this._ignoreBackdropClick=this._isBodyOverflowing=this._isShown=!1;this._scrollbarWidth=0}var e=a.prototype;return e.toggle=function(a){return this._isShown?this.hide():this.show(a)},e.show=function(a){var b=this;if(!this._isTransitioning&&
!this._isShown){B(this._element).hasClass("fade")&&(this._isTransitioning=!0);var e=B.Event(V.SHOW,{relatedTarget:a});B(this._element).trigger(e);this._isShown||e.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),B(document.body).addClass("modal-open"),this._setEscapeEvent(),this._setResizeEvent(),B(this._element).on(V.CLICK_DISMISS,'[data-dismiss\x3d"modal"]',function(a){return b.hide(a)}),B(this._dialog).on(V.MOUSEDOWN_DISMISS,function(){B(b._element).one(V.MOUSEUP_DISMISS,
function(a){B(a.target).is(b._element)&&(b._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return b._showElement(a)}))}},e.hide=function(a){var b=this;if(a&&a.preventDefault(),!this._isTransitioning&&this._isShown)if(a=B.Event(V.HIDE),B(this._element).trigger(a),this._isShown&&!a.isDefaultPrevented())this._isShown=!1,a=B(this._element).hasClass("fade"),(a&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),B(document).off(V.FOCUSIN),B(this._element).removeClass("show"),
B(this._element).off(V.CLICK_DISMISS),B(this._dialog).off(V.MOUSEDOWN_DISMISS),a)?(a=K.getTransitionDurationFromElement(this._element),B(this._element).one(K.TRANSITION_END,function(a){return b._hideModal(a)}).emulateTransitionEnd(a)):this._hideModal()},e.dispose=function(){B.removeData(this._element,"bs.modal");B(window,document,this._element,this._backdrop).off(".bs.modal");this._scrollbarWidth=this._ignoreBackdropClick=this._isBodyOverflowing=this._isShown=this._backdrop=this._dialog=this._element=
this._config=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(a){return a=h({},G,a),K.typeCheckConfig("modal",a,fa),a},e._showElement=function(a){var b=this,e=B(this._element).hasClass("fade");this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element);this._element.style.display="block";this._element.removeAttribute("aria-hidden");this._element.scrollTop=0;e&&K.reflow(this._element);B(this._element).addClass("show");
this._config.focus&&this._enforceFocus();var g=B.Event(V.SHOWN,{relatedTarget:a});a=function(){b._config.focus&&b._element.focus();b._isTransitioning=!1;B(b._element).trigger(g)};e?(e=K.getTransitionDurationFromElement(this._element),B(this._dialog).one(K.TRANSITION_END,a).emulateTransitionEnd(e)):a()},e._enforceFocus=function(){var a=this;B(document).off(V.FOCUSIN).on(V.FOCUSIN,function(b){document!==b.target&&a._element!==b.target&&0===B(a._element).has(b.target).length&&a._element.focus()})},e._setEscapeEvent=
function(){var a=this;this._isShown&&this._config.keyboard?B(this._element).on(V.KEYDOWN_DISMISS,function(b){27===b.which&&(b.preventDefault(),a.hide())}):this._isShown||B(this._element).off(V.KEYDOWN_DISMISS)},e._setResizeEvent=function(){var a=this;this._isShown?B(window).on(V.RESIZE,function(b){return a.handleUpdate(b)}):B(window).off(V.RESIZE)},e._hideModal=function(){var a=this;this._element.style.display="none";this._element.setAttribute("aria-hidden",!0);this._isTransitioning=!1;this._showBackdrop(function(){B(document.body).removeClass("modal-open");
a._resetAdjustments();a._resetScrollbar();B(a._element).trigger(V.HIDDEN)})},e._removeBackdrop=function(){this._backdrop&&(B(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(a){var b=this,e=B(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",e&&this._backdrop.classList.add(e),B(this._backdrop).appendTo(document.body),B(this._element).on(V.CLICK_DISMISS,
function(a){b._ignoreBackdropClick?b._ignoreBackdropClick=!1:a.target===a.currentTarget&&("static"===b._config.backdrop?b._element.focus():b.hide())}),e&&K.reflow(this._backdrop),B(this._backdrop).addClass("show"),a){if(!e)return void a();e=K.getTransitionDurationFromElement(this._backdrop);B(this._backdrop).one(K.TRANSITION_END,a).emulateTransitionEnd(e)}}else if(!this._isShown&&this._backdrop)if(B(this._backdrop).removeClass("show"),e=function(){b._removeBackdrop();a&&a()},B(this._element).hasClass("fade")){var g=
K.getTransitionDurationFromElement(this._backdrop);B(this._backdrop).one(K.TRANSITION_END,e).emulateTransitionEnd(g)}else e();else a&&a()},e._adjustDialog=function(){var a=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft=this._scrollbarWidth+"px");this._isBodyOverflowing&&!a&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="";this._element.style.paddingRight=
""},e._checkScrollbar=function(){var a=document.body.getBoundingClientRect();this._isBodyOverflowing=a.left+a.right<window.innerWidth;this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var a=this;if(this._isBodyOverflowing){var b=[].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")),e=[].slice.call(document.querySelectorAll(".sticky-top"));B(b).each(function(b,f){var e=f.style.paddingRight,g=B(f).css("padding-right");B(f).data("padding-right",
e).css("padding-right",parseFloat(g)+a._scrollbarWidth+"px")});B(e).each(function(b,f){var e=f.style.marginRight,g=B(f).css("margin-right");B(f).data("margin-right",e).css("margin-right",parseFloat(g)-a._scrollbarWidth+"px")});b=document.body.style.paddingRight;e=B(document.body).css("padding-right");B(document.body).data("padding-right",b).css("padding-right",parseFloat(e)+this._scrollbarWidth+"px")}},e._resetScrollbar=function(){var a=[].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));
B(a).each(function(a,d){var b=B(d).data("padding-right");B(d).removeData("padding-right");d.style.paddingRight=b||""});a=[].slice.call(document.querySelectorAll(".sticky-top"));B(a).each(function(a,d){var b=B(d).data("margin-right");"undefined"!=typeof b&&B(d).css("margin-right",b).removeData("margin-right")});a=B(document.body).data("padding-right");B(document.body).removeData("padding-right");document.body.style.paddingRight=a||""},e._getScrollbarWidth=function(){var a=document.createElement("div");
a.className="modal-scrollbar-measure";document.body.appendChild(a);var b=a.getBoundingClientRect().width-a.clientWidth;return document.body.removeChild(a),b},a._jQueryInterface=function(d,b){return this.each(function(){var e=B(this).data("bs.modal"),g=h({},G,B(this).data(),"object"==typeof d&&d?d:{});if(e||(e=new a(this,g),B(this).data("bs.modal",e)),"string"==typeof d){if("undefined"==typeof e[d])throw new TypeError('No method named "'+d+'"');e[d](b)}else g.show&&e.show(b)})},b(a,null,[{key:"VERSION",
get:function(){return"4.1.3"}},{key:"Default",get:function(){return G}}]),a}(),B(document).on(V.CLICK_DATA_API,'[data-toggle\x3d"modal"]',function(a){var b,d=this,f=K.getSelectorFromElement(this);f&&(b=document.querySelector(f));f=B(b).data("bs.modal")?"toggle":h({},B(b).data(),B(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||a.preventDefault();var e=B(b).one(V.SHOW,function(a){a.isDefaultPrevented()||e.one(V.HIDDEN,function(){B(d).is(":visible")&&d.focus()})});La._jQueryInterface.call(B(b),
f,this)}),B.fn.modal=La._jQueryInterface,B.fn.modal.Constructor=La,B.fn.modal.noConflict=function(){return B.fn.modal=Za,La._jQueryInterface},La),Xa=(Ma=(H=e).fn.tooltip,ka=RegExp("(^|\\s)bs-tooltip\\S+","g"),kb={animation:!0,template:'\x3cdiv class\x3d"tooltip" role\x3d"tooltip"\x3e\x3cdiv class\x3d"arrow"\x3e\x3c/div\x3e\x3cdiv class\x3d"tooltip-inner"\x3e\x3c/div\x3e\x3c/div\x3e',trigger:"hover focus",title:"",delay:0,html:!(ub={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),
selector:!(Ua={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},vb={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",
INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Na=function(){function a(d,b){if("undefined"==typeof Ja)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0;this._timeout=0;this._hoverState="";this._activeTrigger={};this._popper=null;this.element=d;this.config=this._getConfig(b);this.tip=null;this._setListeners()}
var e=a.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(a){if(this._isEnabled)if(a){var b=this.constructor.DATA_KEY,e=H(a.currentTarget).data(b);e||(e=new this.constructor(a.currentTarget,this._getDelegateConfig()),H(a.currentTarget).data(b,e));e._activeTrigger.click=!e._activeTrigger.click;e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(H(this.getTipElement()).hasClass("show"))return void this._leave(null,
this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout);H.removeData(this.element,this.constructor.DATA_KEY);H(this.element).off(this.constructor.EVENT_KEY);H(this.element).closest(".modal").off("hide.bs.modal");this.tip&&H(this.tip).remove();this._hoverState=this._timeout=this._isEnabled=null;(this._activeTrigger=null)!==this._popper&&this._popper.destroy();this.tip=this.config=this.element=this._popper=null},e.show=function(){var a=this;if("none"===H(this.element).css("display"))throw Error("Please use show on visible elements");
var b=H.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){H(this.element).trigger(b);var e=H.contains(this.element.ownerDocument.documentElement,this.element);if(!b.isDefaultPrevented()&&e){b=this.getTipElement();e=K.getUID(this.constructor.NAME);b.setAttribute("id",e);this.element.setAttribute("aria-describedby",e);this.setContent();this.config.animation&&H(b).addClass("fade");e="function"==typeof this.config.placement?this.config.placement.call(this,b,this.element):this.config.placement;
e=this._getAttachment(e);this.addAttachmentClass(e);var g=!1===this.config.container?document.body:H(document).find(this.config.container);H(b).data(this.constructor.DATA_KEY,this);H.contains(this.element.ownerDocument.documentElement,this.tip)||H(b).appendTo(g);H(this.element).trigger(this.constructor.Event.INSERTED);this._popper=new Ja(this.element,b,{placement:e,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},
onCreate:function(b){b.originalPlacement!==b.placement&&a._handlePopperPlacementChange(b)},onUpdate:function(b){a._handlePopperPlacementChange(b)}});H(b).addClass("show");"ontouchstart"in document.documentElement&&H(document.body).children().on("mouseover",null,H.noop);b=function(){a.config.animation&&a._fixTransition();var b=a._hoverState;a._hoverState=null;H(a.element).trigger(a.constructor.Event.SHOWN);"out"===b&&a._leave(null,a)};H(this.tip).hasClass("fade")?(e=K.getTransitionDurationFromElement(this.tip),
H(this.tip).one(K.TRANSITION_END,b).emulateTransitionEnd(e)):b()}}},e.hide=function(a){var b=this,e=this.getTipElement(),g=H.Event(this.constructor.Event.HIDE),h=function(){"show"!==b._hoverState&&e.parentNode&&e.parentNode.removeChild(e);b._cleanTipClass();b.element.removeAttribute("aria-describedby");H(b.element).trigger(b.constructor.Event.HIDDEN);null!==b._popper&&b._popper.destroy();a&&a()};(H(this.element).trigger(g),g.isDefaultPrevented())||((H(e).removeClass("show"),"ontouchstart"in document.documentElement&&
H(document.body).children().off("mouseover",null,H.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,H(this.tip).hasClass("fade"))?(g=K.getTransitionDurationFromElement(e),H(e).one(K.TRANSITION_END,h).emulateTransitionEnd(g)):h(),this._hoverState="")},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return!!this.getTitle()},e.addAttachmentClass=function(a){H(this.getTipElement()).addClass("bs-tooltip-"+a)},
e.getTipElement=function(){return this.tip=this.tip||H(this.config.template)[0],this.tip},e.setContent=function(){var a=this.getTipElement();this.setElementContent(H(a.querySelectorAll(".tooltip-inner")),this.getTitle());H(a).removeClass("fade show")},e.setElementContent=function(a,b){var e=this.config.html;"object"==typeof b&&(b.nodeType||b.jquery)?e?H(b).parent().is(a)||a.empty().append(b):a.text(H(b).text()):a[e?"html":"text"](b)},e.getTitle=function(){var a=this.element.getAttribute("data-original-title");
return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a},e._getAttachment=function(a){return ub[a.toUpperCase()]},e._setListeners=function(){var a=this;this.config.trigger.split(" ").forEach(function(b){if("click"===b)H(a.element).on(a.constructor.Event.CLICK,a.config.selector,function(b){return a.toggle(b)});else if("manual"!==b){var e="hover"===b?a.constructor.Event.MOUSEENTER:a.constructor.Event.FOCUSIN;b="hover"===b?a.constructor.Event.MOUSELEAVE:
a.constructor.Event.FOCUSOUT;H(a.element).on(e,a.config.selector,function(b){return a._enter(b)}).on(b,a.config.selector,function(b){return a._leave(b)})}H(a.element).closest(".modal").on("hide.bs.modal",function(){return a.hide()})});this.config.selector?this.config=h({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var a=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",
this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(a,b){var e=this.constructor.DATA_KEY;(b=b||H(a.currentTarget).data(e))||(b=new this.constructor(a.currentTarget,this._getDelegateConfig()),H(a.currentTarget).data(e,b));a&&(b._activeTrigger["focusin"===a.type?"focus":"hover"]=!0);H(b.getTipElement()).hasClass("show")||"show"===b._hoverState?b._hoverState="show":(clearTimeout(b._timeout),b._hoverState="show",b.config.delay&&b.config.delay.show?b._timeout=
setTimeout(function(){"show"===b._hoverState&&b.show()},b.config.delay.show):b.show())},e._leave=function(a,b){var e=this.constructor.DATA_KEY;(b=b||H(a.currentTarget).data(e))||(b=new this.constructor(a.currentTarget,this._getDelegateConfig()),H(a.currentTarget).data(e,b));a&&(b._activeTrigger["focusout"===a.type?"focus":"hover"]=!1);b._isWithActiveTrigger()||(clearTimeout(b._timeout),b._hoverState="out",b.config.delay&&b.config.delay.hide?b._timeout=setTimeout(function(){"out"===b._hoverState&&
b.hide()},b.config.delay.hide):b.hide())},e._isWithActiveTrigger=function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1},e._getConfig=function(a){return"number"==typeof(a=h({},this.constructor.Default,H(this.element).data(),"object"==typeof a&&a?a:{})).delay&&(a.delay={show:a.delay,hide:a.delay}),"number"==typeof a.title&&(a.title=a.title.toString()),"number"==typeof a.content&&(a.content=a.content.toString()),K.typeCheckConfig("tooltip",a,this.constructor.DefaultType),
a},e._getDelegateConfig=function(){var a={};if(this.config)for(var b in this.config)this.constructor.Default[b]!==this.config[b]&&(a[b]=this.config[b]);return a},e._cleanTipClass=function(){var a=H(this.getTipElement()),b=a.attr("class").match(ka);null!==b&&b.length&&a.removeClass(b.join(""))},e._handlePopperPlacementChange=function(a){this.tip=a.instance.popper;this._cleanTipClass();this.addAttachmentClass(this._getAttachment(a.placement))},e._fixTransition=function(){var a=this.getTipElement(),
b=this.config.animation;null===a.getAttribute("x-placement")&&(H(a).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=b)},a._jQueryInterface=function(b){return this.each(function(){var e=H(this).data("bs.tooltip"),g="object"==typeof b&&b;if((e||!/dispose|hide/.test(b))&&(e||(e=new a(this,g),H(this).data("bs.tooltip",e)),"string"==typeof b)){if("undefined"==typeof e[b])throw new TypeError('No method named "'+b+'"');e[b]()}})},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}},
{key:"Default",get:function(){return kb}},{key:"NAME",get:function(){return"tooltip"}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return vb}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ua}}]),a}(),H.fn.tooltip=Na._jQueryInterface,H.fn.tooltip.Constructor=Na,H.fn.tooltip.noConflict=function(){return H.fn.tooltip=Ma,Na._jQueryInterface},Na),Qa=(la=(na=e).fn.popover,yb=RegExp("(^|\\s)bs-popover\\S+","g"),$a=h({},
Xa.Default,{placement:"right",trigger:"click",content:"",template:'\x3cdiv class\x3d"popover" role\x3d"tooltip"\x3e\x3cdiv class\x3d"arrow"\x3e\x3c/div\x3e\x3ch3 class\x3d"popover-header"\x3e\x3c/h3\x3e\x3cdiv class\x3d"popover-body"\x3e\x3c/div\x3e\x3c/div\x3e'}),Hb=h({},Xa.DefaultType,{content:"(string|element|function)"}),Ib={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",
FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Sa=function(a){function e(){return a.apply(this,arguments)||this}e.prototype=Object.create(a.prototype);(e.prototype.constructor=e).__proto__=a;var d=e.prototype;return d.isWithContent=function(){return this.getTitle()||this._getContent()},d.addAttachmentClass=function(a){na(this.getTipElement()).addClass("bs-popover-"+a)},d.getTipElement=function(){return this.tip=this.tip||na(this.config.template)[0],
this.tip},d.setContent=function(){var a=na(this.getTipElement());this.setElementContent(a.find(".popover-header"),this.getTitle());var b=this._getContent();"function"==typeof b&&(b=b.call(this.element));this.setElementContent(a.find(".popover-body"),b);a.removeClass("fade show")},d._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},d._cleanTipClass=function(){var a=na(this.getTipElement()),b=a.attr("class").match(yb);null!==b&&0<b.length&&a.removeClass(b.join(""))},
e._jQueryInterface=function(a){return this.each(function(){var b=na(this).data("bs.popover"),d="object"==typeof a?a:null;if((b||!/destroy|hide/.test(a))&&(b||(b=new e(this,d),na(this).data("bs.popover",b)),"string"==typeof a)){if("undefined"==typeof b[a])throw new TypeError('No method named "'+a+'"');b[a]()}})},b(e,null,[{key:"VERSION",get:function(){return"4.1.3"}},{key:"Default",get:function(){return $a}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return"bs.popover"}},
{key:"Event",get:function(){return Ib}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Hb}}]),e}(Xa),na.fn.popover=Sa._jQueryInterface,na.fn.popover.Constructor=Sa,na.fn.popover.noConflict=function(){return na.fn.popover=la,Sa._jQueryInterface},Sa),eb=(Jb=(Z=e).fn.scrollspy,ob={offset:10,method:"auto",target:""},Ab={offset:"number",method:"string",target:"(string|element)"},Pa={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},
xa=function(){function a(b,e){var g=this;this._element=b;this._scrollElement="BODY"===b.tagName?window:b;this._config=this._getConfig(e);this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item";this._offsets=[];this._targets=[];this._activeTarget=null;this._scrollHeight=0;Z(this._scrollElement).on(Pa.SCROLL,function(a){return g._process(a)});this.refresh();this._process()}var e=a.prototype;return e.refresh=function(){var a=this,
b=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?b:this._config.method,g="position"===e?this._getScrollTop():0;this._offsets=[];this._targets=[];this._scrollHeight=this._getScrollHeight();[].slice.call(document.querySelectorAll(this._selector)).map(function(a){var b;a=K.getSelectorFromElement(a);if(a&&(b=document.querySelector(a)),b){var d=b.getBoundingClientRect();if(d.width||d.height)return[Z(b)[e]().top+g,a]}return null}).filter(function(a){return a}).sort(function(a,
b){return a[0]-b[0]}).forEach(function(b){a._offsets.push(b[0]);a._targets.push(b[1])})},e.dispose=function(){Z.removeData(this._element,"bs.scrollspy");Z(this._scrollElement).off(".bs.scrollspy");this._scrollHeight=this._activeTarget=this._targets=this._offsets=this._selector=this._config=this._scrollElement=this._element=null},e._getConfig=function(a){if("string"!=typeof(a=h({},ob,"object"==typeof a&&a?a:{})).target){var b=Z(a.target).attr("id");b||(b=K.getUID("scrollspy"),Z(a.target).attr("id",
b));a.target="#"+b}return K.typeCheckConfig("scrollspy",a,Ab),a},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var a=
this._getScrollTop()+this._config.offset,b=this._getScrollHeight(),e=this._config.offset+b-this._getOffsetHeight();if(this._scrollHeight!==b&&this.refresh(),e<=a)a=this._targets[this._targets.length-1],this._activeTarget!==a&&this._activate(a);else{if(this._activeTarget&&a<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(b=this._offsets.length;b--;)this._activeTarget!==this._targets[b]&&a>=this._offsets[b]&&("undefined"==typeof this._offsets[b+1]||a<this._offsets[b+
1])&&this._activate(this._targets[b])}},e._activate=function(a){this._activeTarget=a;this._clear();var b=this._selector.split(","),b=b.map(function(b){return b+'[data-target\x3d"'+a+'"],'+b+'[href\x3d"'+a+'"]'}),b=Z([].slice.call(document.querySelectorAll(b.join(","))));b.hasClass("dropdown-item")?(b.closest(".dropdown").find(".dropdown-toggle").addClass("active"),b.addClass("active")):(b.addClass("active"),b.parents(".nav, .list-group").prev(".nav-link, .list-group-item").addClass("active"),b.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active"));
Z(this._scrollElement).trigger(Pa.ACTIVATE,{relatedTarget:a})},e._clear=function(){var a=[].slice.call(document.querySelectorAll(this._selector));Z(a).filter(".active").removeClass("active")},a._jQueryInterface=function(b){return this.each(function(){var e=Z(this).data("bs.scrollspy");if(e||(e=new a(this,"object"==typeof b&&b),Z(this).data("bs.scrollspy",e)),"string"==typeof b){if("undefined"==typeof e[b])throw new TypeError('No method named "'+b+'"');e[b]()}})},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}},
{key:"Default",get:function(){return ob}}]),a}(),Z(window).on(Pa.LOAD_DATA_API,function(){for(var a=[].slice.call(document.querySelectorAll('[data-spy\x3d"scroll"]')),b=a.length;b--;){var d=Z(a[b]);xa._jQueryInterface.call(d,d.data())}}),Z.fn.scrollspy=xa._jQueryInterface,Z.fn.scrollspy.Constructor=xa,Z.fn.scrollspy.noConflict=function(){return Z.fn.scrollspy=Jb,xa._jQueryInterface},xa),Pb=(Kb=(P=e).fn.tab,Ka={HIDE:"hide.bs.tab",HIDDEN:"hidden.bs.tab",SHOW:"show.bs.tab",SHOWN:"shown.bs.tab",CLICK_DATA_API:"click.bs.tab.data-api"},
Ta=function(){function a(b){this._element=b}var e=a.prototype;return e.show=function(){var a=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&P(this._element).hasClass("active")||P(this._element).hasClass("disabled"))){var b,e,g=P(this._element).closest(".nav, .list-group")[0],h=K.getSelectorFromElement(this._element);if(g){var k="UL"===g.nodeName?"\x3e li \x3e .active":".active";e=(e=P.makeArray(P(g).find(k)))[e.length-1]}var k=P.Event(Ka.HIDE,{relatedTarget:this._element}),
l=P.Event(Ka.SHOW,{relatedTarget:e});(e&&P(e).trigger(k),P(this._element).trigger(l),l.isDefaultPrevented()||k.isDefaultPrevented())||(h&&(b=document.querySelector(h)),this._activate(this._element,g),g=function(){var b=P.Event(Ka.HIDDEN,{relatedTarget:a._element}),f=P.Event(Ka.SHOWN,{relatedTarget:e});P(e).trigger(b);P(a._element).trigger(f)},b?this._activate(b,b.parentNode,g):g())}},e.dispose=function(){P.removeData(this._element,"bs.tab");this._element=null},e._activate=function(a,b,e){var g=this,
h=("UL"===b.nodeName?P(b).find("\x3e li \x3e .active"):P(b).children(".active"))[0],k=e&&h&&P(h).hasClass("fade");b=function(){return g._transitionComplete(a,h,e)};h&&k?(k=K.getTransitionDurationFromElement(h),P(h).one(K.TRANSITION_END,b).emulateTransitionEnd(k)):b()},e._transitionComplete=function(a,b,e){if(b){P(b).removeClass("show active");var g=P(b.parentNode).find("\x3e .dropdown-menu .active")[0];g&&P(g).removeClass("active");"tab"===b.getAttribute("role")&&b.setAttribute("aria-selected",!1)}if(P(a).addClass("active"),
"tab"===a.getAttribute("role")&&a.setAttribute("aria-selected",!0),K.reflow(a),P(a).addClass("show"),a.parentNode&&P(a.parentNode).hasClass("dropdown-menu")){if(b=P(a).closest(".dropdown")[0])b=[].slice.call(b.querySelectorAll(".dropdown-toggle")),P(b).addClass("active");a.setAttribute("aria-expanded",!0)}e&&e()},a._jQueryInterface=function(b){return this.each(function(){var e=P(this),g=e.data("bs.tab");if(g||(g=new a(this),e.data("bs.tab",g)),"string"==typeof b){if("undefined"==typeof g[b])throw new TypeError('No method named "'+
b+'"');g[b]()}})},b(a,null,[{key:"VERSION",get:function(){return"4.1.3"}}]),a}(),P(document).on(Ka.CLICK_DATA_API,'[data-toggle\x3d"tab"], [data-toggle\x3d"pill"], [data-toggle\x3d"list"]',function(a){a.preventDefault();Ta._jQueryInterface.call(P(this),"show")}),P.fn.tab=Ta._jQueryInterface,P.fn.tab.Constructor=Ta,P.fn.tab.noConflict=function(){return P.fn.tab=Kb,Ta._jQueryInterface},Ta);!function(a){if("undefined"==typeof a)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
a=a.fn.jquery.split(" ")[0].split(".");if(2>a[0]&&9>a[1]||1===a[0]&&9===a[1]&&1>a[2]||4<=a[0])throw Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0");}(e);r.Util=K;r.Alert=xb;r.Button=gb;r.Carousel=Eb;r.Collapse=Ob;r.Dropdown=Lb;r.Modal=Cb;r.Popover=Qa;r.Scrollspy=eb;r.Tab=Pb;r.Tooltip=Xa;Object.defineProperty(r,"__esModule",{value:!0})});
(function(r){var e=r.tablesorter={version:"2.31.1",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,
sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",
cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"\x3e thead th, \x3e thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",
icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,
templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},
setup:function(a,b){if(a&&a.tHead&&0!==a.tBodies.length&&!0!==a.hasInitialized){var h="",l=r(a),k=r.metadata;a.hasInitialized=!1;a.isProcessing=!0;a.config=b;r.data(a,"tablesorter",b);e.debug(b,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+e.version),r.data(a,"startoveralltimer",new Date));b.supportsDataObject=function(a){a[0]=parseInt(a[0],10);return 1<a[0]||1===a[0]&&4<=parseInt(a[1],10)}(r.fn.jquery.split("."));b.emptyTo=b.emptyTo.toLowerCase();b.stringTo=b.stringTo.toLowerCase();
b.last={sortList:[],clickedIndex:-1};/tablesorter\-/.test(l.attr("class"))||(h=""!==b.theme?" tablesorter-"+b.theme:"");b.namespace=b.namespace?"."+b.namespace.replace(e.regex.nonWord,""):".tablesorter"+Math.random().toString(16).slice(2);b.table=a;b.$table=l.addClass(e.css.table+" "+b.tableClass+h+" "+b.namespace.slice(1)).attr("role","grid");b.$headers=l.find(b.selectorHeaders);b.$table.children().children("tr").attr("role","row");b.$tbodies=l.children("tbody:not(."+b.cssInfoBlock+")").attr({"aria-live":"polite",
"aria-relevant":"all"});b.$table.children("caption").length&&(h=b.$table.children("caption")[0],h.id||(h.id=b.namespace.slice(1)+"caption"),b.$table.attr("aria-labelledby",h.id));b.widgetInit={};b.textExtraction=b.$table.attr("data-text-extraction")||b.textExtraction||"basic";e.buildHeaders(b);e.fixColumnWidth(a);e.addWidgetFromClass(a);e.applyWidgetOptions(a);e.setupParsers(b);b.totalRows=0;b.debug&&e.validateOptions(b);b.delayInit||e.buildCache(b);e.bindEvents(a,b.$headers,!0);e.bindMethods(b);
b.supportsDataObject&&"undefined"!==typeof l.data().sortlist?b.sortList=l.data().sortlist:k&&l.metadata()&&l.metadata().sortlist&&(b.sortList=l.metadata().sortlist);e.applyWidget(a,!0);0<b.sortList.length?(b.last.sortList=b.sortList,e.sortOn(b,b.sortList,{},!b.initWidgets)):(e.setHeadersCss(b),b.initWidgets&&e.applyWidget(a,!1));b.showProcessing&&l.unbind("sortBegin"+b.namespace+" sortEnd"+b.namespace).bind("sortBegin"+b.namespace+" sortEnd"+b.namespace,function(h){clearTimeout(b.timerProcessing);
e.isProcessing(a);"sortBegin"===h.type&&(b.timerProcessing=setTimeout(function(){e.isProcessing(a,!0)},500))});a.hasInitialized=!0;a.isProcessing=!1;e.debug(b,"core")&&(console.log("Overall initialization time:"+e.benchmark(r.data(a,"startoveralltimer"))),e.debug(b,"core")&&console.groupEnd&&console.groupEnd());l.triggerHandler("tablesorter-initialized",a);"function"===typeof b.initialized&&b.initialized(a)}else e.debug(b,"core")&&(a.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):
console.error("Stopping initialization! No table, thead or tbody",a))},bindMethods:function(a){var b=a.$table,h=a.namespace,l="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(h+" ");b.unbind(l.replace(e.regex.spaces," ")).bind("sortReset"+h,function(a,b){a.stopPropagation();e.sortReset(this.config,function(a){a.isApplyingWidgets?setTimeout(function(){e.applyWidget(a,
"",b)},100):e.applyWidget(a,"",b)})}).bind("updateAll"+h,function(a,b,h){a.stopPropagation();e.updateAll(this.config,b,h)}).bind("update"+h+" updateRows"+h,function(a,b,h){a.stopPropagation();e.update(this.config,b,h)}).bind("updateHeaders"+h,function(a,b){a.stopPropagation();e.updateHeaders(this.config,b)}).bind("updateCell"+h,function(a,b,h,l){a.stopPropagation();e.updateCell(this.config,b,h,l)}).bind("addRows"+h,function(a,b,h,l){a.stopPropagation();e.addRows(this.config,b,h,l)}).bind("updateComplete"+
h,function(){this.isUpdating=!1}).bind("sorton"+h,function(a,b,h,l){a.stopPropagation();e.sortOn(this.config,b,h,l)}).bind("appendCache"+h,function(a,b,h){a.stopPropagation();e.appendCache(this.config,h);r.isFunction(b)&&b(this)}).bind("updateCache"+h,function(a,b,h){a.stopPropagation();e.updateCache(this.config,b,h)}).bind("applyWidgetId"+h,function(a,b){a.stopPropagation();e.applyWidgetId(this,b)}).bind("applyWidgets"+h,function(a,b){a.stopPropagation();e.applyWidget(this,!1,b)}).bind("refreshWidgets"+
h,function(a,b,h){a.stopPropagation();e.refreshWidgets(this,b,h)}).bind("removeWidget"+h,function(a,b,h){a.stopPropagation();e.removeWidget(this,b,h)}).bind("destroy"+h,function(a,b,h){a.stopPropagation();e.destroy(this,b,h)}).bind("resetToLoadState"+h,function(b){b.stopPropagation();e.removeWidget(this,!0,!1);b=r.extend(!0,{},a.originalSettings);a=r.extend(!0,{},e.defaults,b);a.originalSettings=b;this.hasInitialized=!1;e.setup(this,a)})},bindEvents:function(a,b,h){a=r(a)[0];var l=a.config,k=l.namespace,
n=null;!0!==h&&(b.addClass(k.slice(1)+"_extra_headers"),h=e.getClosest(b,"table"),h.length&&"TABLE"===h[0].nodeName&&h[0]!==a&&r(h[0]).addClass(k.slice(1)+"_extra_table"));h=(l.pointerDown+" "+l.pointerUp+" "+l.pointerClick+" sort keyup ").replace(e.regex.spaces," ").split(" ").join(k+" ");b.find(l.selectorSort).add(b.filter(l.selectorSort)).unbind(h).bind(h,function(a,b){var h,k;k=r(a.target);h=" "+a.type+" ";if(!(1!==(a.which||a.button)&&!h.match(" "+l.pointerClick+" | sort | keyup ")||" keyup "===
h&&a.which!==e.keyCodes.enter||h.match(" "+l.pointerClick+" ")&&"undefined"!==typeof a.which||h.match(" "+l.pointerUp+" ")&&n!==a.target&&!0!==b))if(h.match(" "+l.pointerDown+" "))n=a.target,k=k.jquery.split("."),"1"===k[0]&&4>k[1]&&a.preventDefault();else{n=null;h=e.getClosest(r(this),"."+e.css.header);if(e.regex.formElements.test(a.target.nodeName)||k.hasClass(l.cssNoSort)||0<k.parents("."+l.cssNoSort).length||h.hasClass("sorter-false")||0<k.parents("button").length)return!l.cancelSelection;l.delayInit&&
e.isEmptyObject(l.cache)&&e.buildCache(l);l.last.clickedIndex=h.attr("data-column")||h.index();(k=l.$headerIndexed[l.last.clickedIndex][0])&&!k.sortDisabled&&e.initSort(l,k,a)}});l.cancelSelection&&b.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(a){var b,h,l,k;a.headerList=[];a.headerContent=[];a.sortVars=[];e.debug(a,"core")&&(l=new Date);a.columns=e.computeColumnIndex(a.$table.children("thead, tfoot").children("tr"));h=a.cssIcon?
'\x3ci class\x3d"'+(a.cssIcon===e.css.icon?e.css.icon:a.cssIcon+" "+e.css.icon)+'"\x3e\x3c/i\x3e':"";a.$headers=r(r.map(a.$table.find(a.selectorHeaders),function(b,k){var l,y,v,x=r(b);if(!e.getClosest(x,"tr").hasClass(a.cssIgnoreRow))return/(th|td)/i.test(b.nodeName)||(v=e.getClosest(x,"th, td"),x.attr("data-column",v.attr("data-column"))),l=e.getColumnData(a.table,a.headers,k,!0),a.headerContent[k]=x.html(),""===a.headerTemplate||x.find("."+e.css.headerIn).length||(v=a.headerTemplate.replace(e.regex.templateContent,
x.html()).replace(e.regex.templateIcon,x.find("."+e.css.icon).length?"":h),a.onRenderTemplate&&(y=a.onRenderTemplate.apply(x,[k,v]))&&"string"===typeof y&&(v=y),x.html('\x3cdiv class\x3d"'+e.css.headerIn+'"\x3e'+v+"\x3c/div\x3e")),a.onRenderHeader&&a.onRenderHeader.apply(x,[k,a,a.$table]),y=parseInt(x.attr("data-column"),10),b.column=y,v=e.getOrder(e.getData(x,l,"sortInitialOrder")||a.sortInitialOrder),a.sortVars[y]={count:-1,order:v?a.sortReset?[1,0,2]:[1,0]:a.sortReset?[0,1,2]:[0,1],lockedOrder:!1,
sortedBy:""},v=e.getData(x,l,"lockedOrder")||!1,"undefined"!==typeof v&&!1!==v&&(a.sortVars[y].lockedOrder=!0,a.sortVars[y].order=e.getOrder(v)?[1,1]:[0,0]),a.headerList[k]=b,x.addClass(e.css.header+" "+a.cssHeader),e.getClosest(x,"tr").addClass(e.css.headerRow+" "+a.cssHeaderRow).attr("role","row"),a.tabIndex&&x.attr("tabindex",0),b}));a.$headerIndexed=[];for(k=0;k<a.columns;k++)e.isEmptyObject(a.sortVars[k])&&(a.sortVars[k]={}),b=a.$headers.filter('[data-column\x3d"'+k+'"]'),a.$headerIndexed[k]=
b.length?b.not(".sorter-false").length?b.not(".sorter-false").filter(":last"):b.filter(":last"):r();a.$table.find(a.selectorHeaders).attr({scope:"col",role:"columnheader"});e.updateHeader(a);e.debug(a,"core")&&(console.log("Built headers:"+e.benchmark(l)),console.log(a.$headers))},addInstanceMethods:function(a){r.extend(e.instanceMethods,a)},setupParsers:function(a,b){var h,l,k,n,p,r,y,v,x,z,I,R,F,M,D=a.table,A=0,W=e.debug(a,"core"),T={};a.$tbodies=a.$table.children("tbody:not(."+a.cssInfoBlock+")");
F="undefined"===typeof b?a.$tbodies:b;M=F.length;if(0===M)return W?console.warn("Warning: *Empty table!* Not building a parser cache"):"";W&&(R=new Date,console[console.group?"group":"log"]("Detecting parsers for each column"));h=[];for(l=[];A<M;){k=F[A].rows;if(k.length)for(r=0,p=a.columns,y=0;y<p;y++){if((n=a.$headerIndexed[r])&&n.length&&(v=e.getColumnData(D,a.headers,r),I=e.getParserById(e.getData(n,v,"extractor")),z=e.getParserById(e.getData(n,v,"sorter")),x="false"===e.getData(n,v,"parser"),
a.empties[r]=(e.getData(n,v,"empty")||a.emptyTo||(a.emptyToBottom?"bottom":"top")).toLowerCase(),a.strings[r]=(e.getData(n,v,"string")||a.stringTo||"max").toLowerCase(),x&&(z=e.getParserById("no-parser")),I||(I=!1),z||(z=e.detectParserForColumn(a,k,-1,r)),W&&(T["("+r+") "+n.text()]={parser:z.id,extractor:I?I.id:"none",string:a.strings[r],empty:a.empties[r]}),l[r]=z,h[r]=I,n=n[0].colSpan-1,0<n))for(r+=n,p+=n;0<n+1;)l[r-n]=z,h[r-n]=I,n--;r++}A+=l.length?M:1}if(W){if(e.isEmptyObject(T))console.warn(" No parsers detected!");
else console[console.table?"table":"log"](T);console.log("Completed detecting parsers"+e.benchmark(R));console.groupEnd&&console.groupEnd()}a.parsers=l;a.extractors=h},addParser:function(a){var b,h=e.parsers.length,l=!0;for(b=0;b<h;b++)e.parsers[b].id.toLowerCase()===a.id.toLowerCase()&&(l=!1);l&&(e.parsers[e.parsers.length]=a)},getParserById:function(a){if("false"==a)return!1;var b,h=e.parsers.length;for(b=0;b<h;b++)if(e.parsers[b].id.toLowerCase()===a.toString().toLowerCase())return e.parsers[b];
return!1},detectParserForColumn:function(a,b,h,l){for(var k,n,p=e.parsers.length,w=!1,y="",v=e.debug(a,"core"),x=!0;""===y&&x;)h++,(n=b[h])&&50>h?0>n.className.indexOf(e.cssIgnoreRow)&&(w=b[h].cells[l],y=e.getElementText(a,w,l),k=r(w),v&&console.log("Checking if value was empty on row "+h+", column: "+l+': "'+y+'"')):x=!1;for(;0<=--p;)if((b=e.parsers[p])&&"text"!==b.id&&b.is&&b.is(y,a.table,w,k))return b;return e.getParserById("text")},getElementText:function(a,b,h){if(!b)return"";var l,k=a.textExtraction||
"",n=b.jquery?b:r(b);return"string"===typeof k?"basic"===k&&"undefined"!==typeof(l=n.attr(a.textAttribute))?r.trim(l):r.trim(b.textContent||n.text()):"function"===typeof k?r.trim(k(n[0],a.table,h)):"function"===typeof(l=e.getColumnData(a.table,k,h))?r.trim(l(n[0],a.table,h)):r.trim(n[0].textContent||n.text())},getParsedText:function(a,b,h,l){"undefined"===typeof l&&(l=e.getElementText(a,b,h));var k=""+l,n=a.parsers[h],p=a.extractors[h];n&&(p&&"function"===typeof p.format&&(l=p.format(l,a.table,b,
h)),k="no-parser"===n.id?"":n.format(""+l,a.table,b,h),a.ignoreCase&&"string"===typeof k&&(k=k.toLowerCase()));return k},buildCache:function(a,b,h){var l,k,n,p,w,y,v,x,z,I,R,F,M,D,A,W,T,wa=a.table,ua=a.parsers,Ba=e.debug(a,"core");a.$tbodies=a.$table.children("tbody:not(."+a.cssInfoBlock+")");y="undefined"===typeof h?a.$tbodies:h;a.cache={};a.totalRows=0;if(!ua)return Ba?console.warn("Warning: *Empty table!* Not building a cache"):"";Ba&&(I=new Date);a.showProcessing&&e.isProcessing(wa,!0);for(w=
0;w<y.length;w++){M=[];h=a.cache[w]={normalized:[]};R=y[w]&&y[w].rows.length||0;for(n=0;n<R;++n)if(F={child:[],raw:[]},v=r(y[w].rows[n]),x=[],!v.hasClass(a.selectorRemove.slice(1)))if(v.hasClass(a.cssChildRow)&&0!==n)for(k=h.normalized.length-1,l=h.normalized[k][a.columns],l.$row=l.$row.add(v),v.prev().hasClass(a.cssChildRow)||v.prev().addClass(e.css.cssHasChild),v=v.children("th, td"),k=l.child.length,l.child[k]=[],A=0,W=a.columns,p=0;p<W;p++){if(z=v[p])l.child[k][p]=e.getParsedText(a,z,p),D=v[p].colSpan-
1,0<D&&(A+=D,W+=D);A++}else{F.$row=v;F.order=n;A=0;W=a.columns;for(p=0;p<W;++p){if((z=v[0].cells[p])&&A<a.columns&&(D="undefined"!==typeof ua[A],!D&&Ba&&console.warn("No parser found for row: "+n+", column: "+p+'; cell containing: "'+r(z).text()+'"; does it have a header?'),l=e.getElementText(a,z,A),F.raw[A]=l,k=e.getParsedText(a,z,A,l),x[A]=k,D&&"numeric"===(ua[A].type||"").toLowerCase()&&(M[A]=Math.max(Math.abs(k)||0,M[A]||0)),D=z.colSpan-1,0<D)){for(T=0;T<=D;)k=a.duplicateSpan||0===T?l:"string"!==
typeof a.textExtraction?e.getElementText(a,z,A+T)||"":"",F.raw[A+T]=k,x[A+T]=k,T++;A+=D;W+=D}A++}x[a.columns]=F;h.normalized[h.normalized.length]=x}h.colMax=M;a.totalRows+=h.normalized.length}a.showProcessing&&e.isProcessing(wa);if(Ba){k=Math.min(5,a.cache[0].normalized.length);console[console.group?"group":"log"]("Building cache for "+a.totalRows+" rows (showing "+k+" rows in log) and "+a.columns+" columns"+e.benchmark(I));l={};for(p=0;p<a.columns;p++)for(A=0;A<k;A++)l["row: "+A]||(l["row: "+A]=
{}),l["row: "+A][a.$headerIndexed[p].text()]=a.cache[0].normalized[A][p];console[console.table?"table":"log"](l);console.groupEnd&&console.groupEnd()}r.isFunction(b)&&b(wa)},getColumnText:function(a,b,h,l){a=r(a)[0];var k,n,p,w,y,v,x,z,I,R="function"===typeof h,F="all"===b,M={raw:[],parsed:[],$cell:[]},D=a.config;if(e.isEmptyObject(D))e.debug(D,"core")&&console.warn("No cache found - aborting getColumnText function!");else{w=D.$tbodies.length;for(a=0;a<w;a++)for(n=D.cache[a].normalized,y=n.length,
k=0;k<y;k++)if(p=n[k],!l||p[D.columns].$row.is(l))I=!0,x=F?p.slice(0,D.columns):p[b],p=p[D.columns],v=F?p.raw:p.raw[b],z=F?p.$row.children():p.$row.children().eq(b),R&&(I=h({tbodyIndex:a,rowIndex:k,parsed:x,raw:v,$row:p.$row,$cell:z})),!1!==I&&(M.parsed[M.parsed.length]=x,M.raw[M.raw.length]=v,M.$cell[M.$cell.length]=z);return M}},setHeadersCss:function(a){var b,h,l=a.sortList,k=l.length,n=e.css.sortNone+" "+a.cssNone,p=[e.css.sortAsc+" "+a.cssAsc,e.css.sortDesc+" "+a.cssDesc],w=[a.cssIconAsc,a.cssIconDesc,
a.cssIconNone],y=["ascending","descending"],v=function(a,b){a.removeClass(n).addClass(p[b]).attr("aria-sort",y[b]).find("."+e.css.icon).removeClass(w[2]).addClass(w[b])},x=a.$table.find("tfoot tr").children("td, th").add(r(a.namespace+"_extra_headers")).removeClass(p.join(" ")),z=a.$headers.add(r("thead "+a.namespace+"_extra_headers")).removeClass(p.join(" ")).addClass(n).attr("aria-sort","none").find("."+e.css.icon).removeClass(w.join(" ")).end();z.not(".sorter-false").find("."+e.css.icon).addClass(w[2]);
a.cssIconDisabled&&z.filter(".sorter-false").find("."+e.css.icon).addClass(a.cssIconDisabled);for(b=0;b<k;b++)if(2!==l[b][1]){z=a.$headers.filter(function(b){var h=!0,k=a.$headers.eq(b);b=parseInt(k.attr("data-column"),10);for(k=b+e.getClosest(k,"th, td")[0].colSpan;b<k;b++)h=h?h||-1<e.isValueInArray(b,a.sortList):!1;return h});z=z.not(".sorter-false").filter('[data-column\x3d"'+l[b][0]+'"]'+(1===k?":last":""));if(z.length)for(h=0;h<z.length;h++)z[h].sortDisabled||v(z.eq(h),l[b][1]);x.length&&v(x.filter('[data-column\x3d"'+
l[b][0]+'"]'),l[b][1])}k=a.$headers.length;for(b=0;b<k;b++)e.setColumnAriaLabel(a,a.$headers.eq(b))},getClosest:function(a,b){return r.fn.closest?a.closest(b):a.is(b)?a:a.parents(b).filter(":first")},setColumnAriaLabel:function(a,b,h){if(b.length){var l=parseInt(b.attr("data-column"),10);a=a.sortVars[l];var l=b.hasClass(e.css.sortAsc)?"sortAsc":b.hasClass(e.css.sortDesc)?"sortDesc":"sortNone",k=r.trim(b.text())+": "+e.language[l];b.hasClass("sorter-false")||!1===h?k+=e.language.sortDisabled:(l=(a.count+
1)%a.order.length,h=a.order[l],k+=e.language[0===h?"nextAsc":1===h?"nextDesc":"nextNone"]);b.attr("aria-label",k);a.sortedBy?b.attr("data-sortedBy",a.sortedBy):b.removeAttr("data-sortedBy")}},updateHeader:function(a){var b,h,l,k=a.table,n=a.$headers.length;for(b=0;b<n;b++)l=a.$headers.eq(b),h=e.getColumnData(k,a.headers,b,!0),h="false"===e.getData(l,h,"sorter")||"false"===e.getData(l,h,"parser"),e.setColumnSort(a,l,h)},setColumnSort:function(a,b,e){var l=a.table.id;b[0].sortDisabled=e;b[e?"addClass":
"removeClass"]("sorter-false").attr("aria-disabled",""+e);a.tabIndex&&(e?b.removeAttr("tabindex"):b.attr("tabindex","0"));l&&(e?b.removeAttr("aria-controls"):b.attr("aria-controls",l))},updateHeaderSortCount:function(a,b){var h,l,k,n,p,w,y=b||a.sortList,v=y.length;a.sortList=[];for(n=0;n<v;n++)if(l=y[n],h=parseInt(l[0],10),h<a.columns){a.sortVars[h].order||(w=e.getOrder(a.sortInitialOrder)?a.sortReset?[1,0,2]:[1,0]:a.sortReset?[0,1,2]:[0,1],a.sortVars[h].order=w,a.sortVars[h].count=0);w=a.sortVars[h].order;
l=(l=(""+l[1]).match(/^(1|d|s|o|n)/))?l[0]:"";switch(l){case "1":case "d":l=1;break;case "s":l=p||0;break;case "o":l=w[(p||0)%w.length];l=0===l?1:1===l?0:2;break;case "n":l=w[++a.sortVars[h].count%w.length];break;default:l=0}p=0===n?l:p;k=[h,parseInt(l,10)||0];a.sortList[a.sortList.length]=k;l=r.inArray(k[1],w);a.sortVars[h].count=0<=l?l:k[1]%w.length}},updateAll:function(a,b,h){var l=a.table;l.isUpdating=!0;e.refreshWidgets(l,!0,!0);e.buildHeaders(a);e.bindEvents(l,a.$headers,!0);e.bindMethods(a);
e.commonUpdate(a,b,h)},update:function(a,b,h){a.table.isUpdating=!0;e.updateHeader(a);e.commonUpdate(a,b,h)},updateHeaders:function(a,b){a.table.isUpdating=!0;e.buildHeaders(a);e.bindEvents(a.table,a.$headers,!0);e.resortComplete(a,b)},updateCell:function(a,b,h,l){if(r(b).closest("tr").hasClass(a.cssChildRow))console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');else if(e.isEmptyObject(a.cache))e.updateHeader(a),e.commonUpdate(a,h,l);else{a.table.isUpdating=
!0;a.$table.find(a.selectorRemove).remove();var k,n,p,w,y;p=a.$tbodies;k=r(b);y=p.index(e.getClosest(k,"tbody"));var v=a.cache[y],x=e.getClosest(k,"tr");b=k[0];if(p.length&&0<=y){p=p.eq(y).find("tr").not("."+a.cssChildRow).index(x);p=v.normalized[p];y=x[0].cells.length;if(y!==a.columns)for(w=0,k=!1,n=0;n<y;n++)k||x[0].cells[n]===b?k=!0:w+=x[0].cells[n].colSpan;else w=k.index();k=e.getElementText(a,b,w);p[a.columns].raw[w]=k;k=e.getParsedText(a,b,w,k);p[w]=k;"numeric"===(a.parsers[w].type||"").toLowerCase()&&
(v.colMax[w]=Math.max(Math.abs(k)||0,v.colMax[w]||0));k="undefined"!==h?h:a.resort;!1!==k?e.checkResort(a,k,l):e.resortComplete(a,l)}else e.debug(a,"core")&&console.error("updateCell aborted, tbody missing or not within the indicated table"),a.table.isUpdating=!1}},addRows:function(a,b,h,l){var k,n,p,w,y,v,x,z,I,R,F;n="string"===typeof b&&1===a.$tbodies.length&&/<tr/.test(b||"");p=a.table;if(n)b=r(b),a.$tbodies.append(b);else if(!(b&&b instanceof r)||e.getClosest(b,"table")[0]!==a.table)return e.debug(a,
"core")&&console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),!1;p.isUpdating=!0;if(e.isEmptyObject(a.cache))e.updateHeader(a),e.commonUpdate(a,h,l);else{w=b.filter("tr").attr("role","row").length;n=a.$tbodies.index(b.parents("tbody").filter(":first"));a.parsers&&a.parsers.length||e.setupParsers(a);for(p=0;p<w;p++){z=0;v=b[p].cells.length;x=a.cache[n].normalized.length;
R=[];I={child:[],raw:[],$row:b.eq(p),order:x};for(y=0;y<v;y++)F=b[p].cells[y],k=e.getElementText(a,F,z),I.raw[z]=k,k=e.getParsedText(a,F,z,k),R[z]=k,"numeric"===(a.parsers[z].type||"").toLowerCase()&&(a.cache[n].colMax[z]=Math.max(Math.abs(k)||0,a.cache[n].colMax[z]||0)),F=F.colSpan-1,0<F&&(z+=F),z++;R[a.columns]=I;a.cache[n].normalized[x]=R}e.checkResort(a,h,l)}},updateCache:function(a,b,h){a.parsers&&a.parsers.length||e.setupParsers(a,h);e.buildCache(a,b,h)},appendCache:function(a,b){var h,l,k,
n,p,r,y=a.table,v=a.$tbodies,x=[],z=a.cache;if(e.isEmptyObject(z))return a.appender?a.appender(y,x):y.isUpdating?a.$table.triggerHandler("updateComplete",y):"";e.debug(a,"core")&&(r=new Date);for(p=0;p<v.length;p++)if(h=v.eq(p),h.length){k=e.processTbody(y,h,!0);h=z[p].normalized;l=h.length;for(n=0;n<l;n++)x[x.length]=h[n][a.columns].$row,a.appender&&(!a.pager||a.pager.removeRows||a.pager.ajax)||k.append(h[n][a.columns].$row);e.processTbody(y,k,!1)}a.appender&&a.appender(y,x);e.debug(a,"core")&&console.log("Rebuilt table"+
e.benchmark(r));b||a.appender||e.applyWidget(y);y.isUpdating&&a.$table.triggerHandler("updateComplete",y)},commonUpdate:function(a,b,h){a.$table.find(a.selectorRemove).remove();e.setupParsers(a);e.buildCache(a);e.checkResort(a,b,h)},initSort:function(a,b,h){if(a.table.isUpdating)return setTimeout(function(){e.initSort(a,b,h)},50);var l,k,n,p,w=!h[a.sortMultiSortKey],y=a.table,v=a.$headers.length;p=e.getClosest(r(b),"th, td");var x=parseInt(p.attr("data-column"),10),z="mouseup"===h.type?"user":h.type,
I=a.sortVars[x].order;p=p[0];a.$table.triggerHandler("sortStart",y);n=(a.sortVars[x].count+1)%I.length;a.sortVars[x].count=h[a.sortResetKey]?2:n;if(a.sortRestart)for(l=0;l<v;l++)k=a.$headers.eq(l),n=parseInt(k.attr("data-column"),10),x!==n&&(w||k.hasClass(e.css.sortNone))&&(a.sortVars[n].count=-1);if(w){r.each(a.sortVars,function(b){a.sortVars[b].sortedBy=""});a.sortList=[];a.last.sortList=[];if(null!==a.sortForce)for(l=a.sortForce,k=0;k<l.length;k++)l[k][0]!==x&&(a.sortList[a.sortList.length]=l[k],
a.sortVars[l[k][0]].sortedBy="sortForce");n=I[a.sortVars[x].count];if(2>n&&(a.sortList[a.sortList.length]=[x,n],a.sortVars[x].sortedBy=z,1<p.colSpan))for(k=1;k<p.colSpan;k++)a.sortList[a.sortList.length]=[x+k,n],a.sortVars[x+k].count=r.inArray(n,I),a.sortVars[x+k].sortedBy=z}else if(a.sortList=r.extend([],a.last.sortList),0<=e.isValueInArray(x,a.sortList))for(a.sortVars[x].sortedBy=z,k=0;k<a.sortList.length;k++)n=a.sortList[k],n[0]===x&&(n[1]=I[a.sortVars[x].count],2===n[1]&&(a.sortList.splice(k,
1),a.sortVars[x].count=-1));else if(n=I[a.sortVars[x].count],a.sortVars[x].sortedBy=z,2>n&&(a.sortList[a.sortList.length]=[x,n],1<p.colSpan))for(k=1;k<p.colSpan;k++)a.sortList[a.sortList.length]=[x+k,n],a.sortVars[x+k].count=r.inArray(n,I),a.sortVars[x+k].sortedBy=z;a.last.sortList=r.extend([],a.sortList);if(a.sortList.length&&a.sortAppend&&(l=r.isArray(a.sortAppend)?a.sortAppend:a.sortAppend[a.sortList[0][0]],!e.isEmptyObject(l)))for(k=0;k<l.length;k++)if(l[k][0]!==x&&0>e.isValueInArray(l[k][0],
a.sortList)){n=l[k][1];if(p=(""+n).match(/^(a|d|s|o|n)/))switch(n=a.sortList[0][1],p[0]){case "d":n=1;break;case "s":break;case "o":n=0===n?1:0;break;case "n":n=(n+1)%I.length;break;default:n=0}a.sortList[a.sortList.length]=[l[k][0],n];a.sortVars[l[k][0]].sortedBy="sortAppend"}a.$table.triggerHandler("sortBegin",y);setTimeout(function(){e.setHeadersCss(a);e.multisort(a);e.appendCache(a);a.$table.triggerHandler("sortBeforeEnd",y);a.$table.triggerHandler("sortEnd",y)},1)},multisort:function(a){var b,
h,l,k,n=a.table,p=[],r=0,y=a.textSorter||"",v=a.sortList,x=v.length,z=a.$tbodies.length;if(!a.serverSideSorting&&!e.isEmptyObject(a.cache)){e.debug(a,"core")&&(h=new Date);if("object"===typeof y)for(l=a.columns;l--;)b=e.getColumnData(n,y,l),"function"===typeof b&&(p[l]=b);for(b=0;b<z;b++)l=a.cache[b].colMax,k=a.cache[b].normalized,k.sort(function(b,h){var k,z,D,A;for(k=0;k<x;k++){D=v[k][0];z=v[k][1];r=0===z;if(a.sortStable&&b[D]===h[D]&&1===x)break;(z=/n/i.test(e.getSortType(a.parsers,D)))&&a.strings[D]?
(z="boolean"===typeof e.string[a.strings[D]]?(r?1:-1)*(e.string[a.strings[D]]?-1:1):a.strings[D]?e.string[a.strings[D]]||0:0,D=a.numberSorter?a.numberSorter(b[D],h[D],r,l[D],n):e["sortNumeric"+(r?"Asc":"Desc")](b[D],h[D],z,l[D],D,a)):(z=r?b:h,A=r?h:b,D="function"===typeof y?y(z[D],A[D],r,D,n):"function"===typeof p[D]?p[D](z[D],A[D],r,D,n):e["sortNatural"+(r?"Asc":"Desc")](b[D]||"",h[D]||"",D,a));if(D)return D}return b[a.columns].order-h[a.columns].order});e.debug(a,"core")&&console.log("Applying sort "+
v.toString()+e.benchmark(h))}},resortComplete:function(a,b){a.table.isUpdating&&a.$table.triggerHandler("updateComplete",a.table);r.isFunction(b)&&b(a.table)},checkResort:function(a,b,h){var l=r.isArray(b)?b:a.sortList;!1===("undefined"===typeof b?a.resort:b)||a.serverSideSorting||a.table.isProcessing?(e.resortComplete(a,h),e.applyWidget(a.table,!1)):l.length?e.sortOn(a,l,function(){e.resortComplete(a,h)},!0):e.sortReset(a,function(){e.resortComplete(a,h);e.applyWidget(a.table,!1)})},sortOn:function(a,
b,h,l){var k,n=a.table;a.$table.triggerHandler("sortStart",n);for(k=0;k<a.columns;k++)a.sortVars[k].sortedBy=-1<e.isValueInArray(k,b)?"sorton":"";e.updateHeaderSortCount(a,b);e.setHeadersCss(a);a.delayInit&&e.isEmptyObject(a.cache)&&e.buildCache(a);a.$table.triggerHandler("sortBegin",n);e.multisort(a);e.appendCache(a,l);a.$table.triggerHandler("sortBeforeEnd",n);a.$table.triggerHandler("sortEnd",n);e.applyWidget(n);r.isFunction(h)&&h(n)},sortReset:function(a,b){a.sortList=[];var h;for(h=0;h<a.columns;h++)a.sortVars[h].count=
-1,a.sortVars[h].sortedBy="";e.setHeadersCss(a);e.multisort(a);e.appendCache(a);r.isFunction(b)&&b(a.table)},getSortType:function(a,b){return a&&a[b]?a[b].type||"":""},getOrder:function(a){return/^d/i.test(a)||1===a},sortNatural:function(a,b){if(a===b)return 0;a=(a||"").toString();b=(b||"").toString();var h,l,k,n,p,r;k=e.regex;if(k.hex.test(b)){h=parseInt(a.match(k.hex),16);l=parseInt(b.match(k.hex),16);if(h<l)return-1;if(h>l)return 1}h=a.replace(k.chunk,"\\0$1\\0").replace(k.chunks,"").split("\\0");
l=b.replace(k.chunk,"\\0$1\\0").replace(k.chunks,"").split("\\0");r=Math.max(h.length,l.length);for(p=0;p<r;p++){k=isNaN(h[p])?h[p]||0:parseFloat(h[p])||0;n=isNaN(l[p])?l[p]||0:parseFloat(l[p])||0;if(isNaN(k)!==isNaN(n))return isNaN(k)?1:-1;typeof k!==typeof n&&(k+="",n+="");if(k<n)return-1;if(k>n)return 1}return 0},sortNaturalAsc:function(a,b,h,l){if(a===b)return 0;h=e.string[l.empties[h]||l.emptyTo];return""===a&&0!==h?"boolean"===typeof h?h?-1:1:-h||-1:""===b&&0!==h?"boolean"===typeof h?h?1:-1:
h||1:e.sortNatural(a,b)},sortNaturalDesc:function(a,b,h,l){if(a===b)return 0;h=e.string[l.empties[h]||l.emptyTo];return""===a&&0!==h?"boolean"===typeof h?h?-1:1:h||1:""===b&&0!==h?"boolean"===typeof h?h?1:-1:-h||-1:e.sortNatural(b,a)},sortText:function(a,b){return a>b?1:a<b?-1:0},getTextValue:function(a,b,e){if(e){var l=a?a.length:0,k=e+b;for(e=0;e<l;e++)k+=a.charCodeAt(e);return b*k}return 0},sortNumericAsc:function(a,b,h,l,k,n){if(a===b)return 0;k=e.string[n.empties[k]||n.emptyTo];if(""===a&&0!==
k)return"boolean"===typeof k?k?-1:1:-k||-1;if(""===b&&0!==k)return"boolean"===typeof k?k?1:-1:k||1;isNaN(a)&&(a=e.getTextValue(a,h,l));isNaN(b)&&(b=e.getTextValue(b,h,l));return a-b},sortNumericDesc:function(a,b,h,l,k,n){if(a===b)return 0;k=e.string[n.empties[k]||n.emptyTo];if(""===a&&0!==k)return"boolean"===typeof k?k?-1:1:k||1;if(""===b&&0!==k)return"boolean"===typeof k?k?1:-1:-k||-1;isNaN(a)&&(a=e.getTextValue(a,h,l));isNaN(b)&&(b=e.getTextValue(b,h,l));return b-a},sortNumeric:function(a,b){return a-
b},addWidget:function(a){a.id&&!e.isEmptyObject(e.getWidgetById(a.id))&&console.warn('"'+a.id+'" widget was loaded more than once!');e.widgets[e.widgets.length]=a},hasWidget:function(a,b){a=r(a);return a.length&&a[0].config&&a[0].config.widgetInit[b]||!1},getWidgetById:function(a){var b,h,l=e.widgets.length;for(b=0;b<l;b++)if((h=e.widgets[b])&&h.id&&h.id.toLowerCase()===a.toLowerCase())return h},applyWidgetOptions:function(a){var b,h,l=a.config,k=l.widgets.length;if(k)for(a=0;a<k;a++)(b=e.getWidgetById(l.widgets[a]))&&
b.options&&(h=r.extend(!0,{},b.options),l.widgetOptions=r.extend(!0,h,l.widgetOptions),r.extend(!0,e.defaults.widgetOptions,b.options))},addWidgetFromClass:function(a){var b,h=a.config,l="^"+h.widgetClass.replace(e.regex.templateName,"(\\S+)+")+"$",l=new RegExp(l,"g"),k=(a.className||"").split(e.regex.spaces);if(k.length)for(a=k.length,b=0;b<a;b++)k[b].match(l)&&(h.widgets[h.widgets.length]=k[b].replace(l,"$1"))},applyWidgetId:function(a,b,h){a=r(a)[0];var l,k,n=a.config,p=n.widgetOptions,w=e.debug(n,
"core"),y=e.getWidgetById(b);if(y){k=y.id;b=!1;0>r.inArray(k,n.widgets)&&(n.widgets[n.widgets.length]=k);w&&(l=new Date);if(h||!n.widgetInit[k])if(n.widgetInit[k]=!0,a.hasInitialized&&e.applyWidgetOptions(a),"function"===typeof y.init){b=!0;if(w)console[console.group?"group":"log"]("Initializing "+k+" widget");y.init(a,y,n,p)}if(!h&&"function"===typeof y.format){b=!0;if(w)console[console.group?"group":"log"]("Updating "+k+" widget");y.format(a,n,p,!1)}w&&b&&(console.log("Completed "+(h?"initializing ":
"applying ")+k+" widget"+e.benchmark(l)),console.groupEnd&&console.groupEnd())}},applyWidget:function(a,b,h){a=r(a)[0];var l,k,n,p,w,y=a.config,v=e.debug(y,"core"),x=[];if(!1===b||!a.hasInitialized||!a.isApplyingWidgets&&!a.isUpdating){v&&(w=new Date);e.addWidgetFromClass(a);clearTimeout(y.timerReady);if(y.widgets.length){a.isApplyingWidgets=!0;y.widgets=r.grep(y.widgets,function(a,b){return r.inArray(a,y.widgets)===b});n=y.widgets||[];k=n.length;for(l=0;l<k;l++)(p=e.getWidgetById(n[l]))&&p.id?(p.priority||
(p.priority=10),x[l]=p):v&&console.warn('"'+n[l]+'" was enabled, but the widget code has not been loaded!');x.sort(function(a,b){return a.priority<b.priority?-1:a.priority===b.priority?0:1});k=x.length;if(v)console[console.group?"group":"log"]("Start "+(b?"initializing":"applying")+" widgets");for(l=0;l<k;l++)(p=x[l])&&p.id&&e.applyWidgetId(a,p.id,b);v&&console.groupEnd&&console.groupEnd()}y.timerReady=setTimeout(function(){a.isApplyingWidgets=!1;r.data(a,"lastWidgetApplication",new Date);y.$table.triggerHandler("tablesorter-ready");
b||"function"!==typeof h||h(a);v&&(p=y.widgets.length,console.log("Completed "+(!0===b?"initializing ":"applying ")+p+" widget"+(1!==p?"s":"")+e.benchmark(w)))},10)}},removeWidget:function(a,b,h){a=r(a)[0];var l,k,n,p,w=a.config;if(!0===b)for(b=[],p=e.widgets.length,n=0;n<p;n++)(k=e.widgets[n])&&k.id&&(b[b.length]=k.id);else b=(r.isArray(b)?b.join(","):b||"").toLowerCase().split(/[\s,]+/);p=b.length;for(l=0;l<p;l++)k=e.getWidgetById(b[l]),n=r.inArray(b[l],w.widgets),0<=n&&!0!==h&&w.widgets.splice(n,
1),k&&k.remove&&(e.debug(w,"core")&&console.log((h?"Refreshing":"Removing")+' "'+b[l]+'" widget'),k.remove(a,w,w.widgetOptions,h),w.widgetInit[b[l]]=!1);w.$table.triggerHandler("widgetRemoveEnd",a)},refreshWidgets:function(a,b,h){a=r(a)[0];var l,k,n=a.config.widgets,p=e.widgets,w=p.length,y=[],v=function(a){r(a).triggerHandler("refreshComplete")};for(l=0;l<w;l++)(k=p[l])&&k.id&&(b||0>r.inArray(k.id,n))&&(y[y.length]=k.id);e.removeWidget(a,y.join(","),!0);!0!==h?(e.applyWidget(a,b||!1,v),b&&e.applyWidget(a,
!1,v)):v(a)},benchmark:function(a){return" ("+((new Date).getTime()-a.getTime())+" ms)"},log:function(){console.log(arguments)},debug:function(a,b){return a&&(!0===a.debug||"string"===typeof a.debug&&-1<a.debug.indexOf(b))},isEmptyObject:function(a){for(var b in a)return!1;return!0},isValueInArray:function(a,b){var e,l=b&&b.length||0;for(e=0;e<l;e++)if(b[e][0]===a)return e;return-1},formatFloat:function(a,b){if("string"!==typeof a||""===a)return a;var h;a=(b&&b.config?!1!==b.config.usNumberFormat:
"undefined"!==typeof b?b:1)?a.replace(e.regex.comma,""):a.replace(e.regex.digitNonUS,"").replace(e.regex.comma,".");e.regex.digitNegativeTest.test(a)&&(a=a.replace(e.regex.digitNegativeReplace,"-$1"));h=parseFloat(a);return isNaN(h)?r.trim(a):h},isDigit:function(a){return isNaN(a)?e.regex.digitTest.test(a.toString().replace(e.regex.digitReplace,"")):""!==a},computeColumnIndex:function(a,b){var h,l,k,n,p,w,y,v,x,z=b&&b.columns||0,I=[],R=Array(z);for(h=0;h<a.length;h++)for(p=a[h].cells,l=0;l<p.length;l++){n=
p[l];w=h;y=n.rowSpan||1;v=n.colSpan||1;"undefined"===typeof I[w]&&(I[w]=[]);for(k=0;k<I[w].length+1;k++)if("undefined"===typeof I[w][k]){x=k;break}z&&n.cellIndex===x||(n.setAttribute?n.setAttribute("data-column",x):r(n).attr("data-column",x));for(k=w;k<w+y;k++)for("undefined"===typeof I[k]&&(I[k]=[]),R=I[k],n=x;n<x+v;n++)R[n]="x"}e.checkColumnCount(a,I,R.length);return R.length},checkColumnCount:function(a,b,e){var l,k,n=!0,p=[];for(l=0;l<b.length;l++)if(b[l]&&(k=b[l].length,b[l].length!==e)){n=!1;
break}n||(a.each(function(a,b){var e=b.parentElement.nodeName;0>p.indexOf(e)&&p.push(e)}),console.error("Invalid or incorrect number of columns in the "+p.join(" or ")+"; expected "+e+", but found "+k+" columns"))},fixColumnWidth:function(a){a=r(a)[0];var b,h,l,k,n=a.config,p=n.$table.children("colgroup");p.length&&p.hasClass(e.css.colgroup)&&p.remove();if(n.widthFixed&&0===n.$table.children("colgroup").length){p=r('\x3ccolgroup class\x3d"'+e.css.colgroup+'"\x3e');a=n.$table.width();h=n.$tbodies.find("tr:first").children(":visible");
l=h.length;for(k=0;k<l;k++)b=parseInt(h.eq(k).width()/a*1E3,10)/10+"%",p.append(r("\x3ccol\x3e").css("width",b));n.$table.prepend(p)}},getData:function(a,b,e){var l,k="",n=r(a);if(!n.length)return"";a=r.metadata?n.metadata():!1;l=" "+(n.attr("class")||"");"undefined"!==typeof n.data(e)||"undefined"!==typeof n.data(e.toLowerCase())?k+=n.data(e)||n.data(e.toLowerCase()):a&&"undefined"!==typeof a[e]?k+=a[e]:b&&"undefined"!==typeof b[e]?k+=b[e]:" "!==l&&l.match(" "+e+"-")&&(k=l.match(new RegExp("\\s"+
e+"-([\\w-]+)"))[1]||"");return r.trim(k)},getColumnData:function(a,b,e,l,k){if("object"!==typeof b||null===b)return b;a=r(a)[0];var n;a=a.config;k=k||a.$headers;a=a.$headerIndexed&&a.$headerIndexed[e]||k.find('[data-column\x3d"'+e+'"]:last');if("undefined"!==typeof b[e])return l?b[e]:b[k.index(a)];for(n in b)if("string"===typeof n&&(e=a.filter(n).add(a.find(n)),e.length))return b[n]},isProcessing:function(a,b,h){a=r(a);var l=a[0].config,k=h||a.find("."+e.css.header);b?("undefined"!==typeof h&&0<
l.sortList.length&&(k=k.filter(function(){return this.sortDisabled?!1:0<=e.isValueInArray(parseFloat(r(this).attr("data-column")),l.sortList)})),a.add(k).addClass(e.css.processing+" "+l.cssProcessing)):a.add(k).removeClass(e.css.processing+" "+l.cssProcessing)},processTbody:function(a,b,e){a=r(a)[0];if(e)return a.isProcessing=!0,b.before('\x3ccolgroup class\x3d"tablesorter-savemyplace"/\x3e'),r.fn.detach?b.detach():b.remove();e=r(a).find("colgroup.tablesorter-savemyplace");b.insertAfter(e);e.remove();
a.isProcessing=!1},clearTableBody:function(a){r(a)[0].config.$tbodies.children().detach()},characterEquivalents:{a:"\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5",A:"\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5",c:"\u00e7\u0107\u010d",C:"\u00c7\u0106\u010c",e:"\u00e9\u00e8\u00ea\u00eb\u011b\u0119",E:"\u00c9\u00c8\u00ca\u00cb\u011a\u0118",i:"\u00ed\u00ec\u0130\u00ee\u00ef\u0131",I:"\u00cd\u00cc\u0130\u00ce\u00cf",o:"\u00f3\u00f2\u00f4\u00f5\u00f6\u014d",O:"\u00d3\u00d2\u00d4\u00d5\u00d6\u014c",ss:"\u00df",
SS:"\u1e9e",u:"\u00fa\u00f9\u00fb\u00fc\u016f",U:"\u00da\u00d9\u00db\u00dc\u016e"},replaceAccents:function(a){var b,h="[",l=e.characterEquivalents;if(!e.characterRegex){e.characterRegexArray={};for(b in l)"string"===typeof b&&(h+=l[b],e.characterRegexArray[b]=new RegExp("["+l[b]+"]","g"));e.characterRegex=new RegExp(h+"]")}if(e.characterRegex.test(a))for(b in l)"string"===typeof b&&(a=a.replace(e.characterRegexArray[b],b));return a},validateOptions:function(a){var b,h,l,k,n=["headers","sortForce",
"sortList","sortAppend","widgets"],p=a.originalSettings;if(p){e.debug(a,"core")&&(k=new Date);for(b in p)if(l=typeof e.defaults[b],"undefined"===l)console.warn('Tablesorter Warning! "table.config.'+b+'" option not recognized');else if("object"===l)for(h in p[b])l=e.defaults[b]&&typeof e.defaults[b][h],0>r.inArray(b,n)&&"undefined"===l&&console.warn('Tablesorter Warning! "table.config.'+b+"."+h+'" option not recognized');e.debug(a,"core")&&console.log("validate options time:"+e.benchmark(k))}},restoreHeaders:function(a){var b,
h=r(a)[0].config,l=h.$table.find(h.selectorHeaders),k=l.length;for(a=0;a<k;a++)b=l.eq(a),b.find("."+e.css.headerIn).length&&b.html(h.headerContent[a])},destroy:function(a,b,h){a=r(a)[0];if(a.hasInitialized){e.removeWidget(a,!0,!1);var l,k=r(a),n=a.config;l=k.find("thead:first");var p=l.find("tr."+e.css.headerRow).removeClass(e.css.headerRow+" "+n.cssHeaderRow),w=k.find("tfoot:first \x3e tr").children("th, td");!1===b&&0<=r.inArray("uitheme",n.widgets)&&(k.triggerHandler("applyWidgetId",["uitheme"]),
k.triggerHandler("applyWidgetId",["zebra"]));l.find("tr").not(p).remove();l="sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave "+["keypress","sortBegin","sortEnd","resetToLoadState",""].join(n.namespace+" ");k.removeData("tablesorter").unbind(l.replace(e.regex.spaces," "));n.$headers.add(w).removeClass([e.css.header,n.cssHeader,n.cssAsc,n.cssDesc,e.css.sortAsc,
e.css.sortDesc,e.css.sortNone].join(" ")).removeAttr("data-column").removeAttr("aria-label").attr("aria-disabled","true");p.find(n.selectorSort).unbind(["mousedown","mouseup","keypress",""].join(n.namespace+" ").replace(e.regex.spaces," "));e.restoreHeaders(a);k.toggleClass(e.css.table+" "+n.tableClass+" tablesorter-"+n.theme,!1===b);k.removeClass(n.namespace.slice(1));a.hasInitialized=!1;delete a.config.cache;"function"===typeof h&&h(a);e.debug(n,"core")&&console.log("tablesorter has been removed")}}};
r.fn.tablesorter=function(a){return this.each(function(){var b=r.extend(!0,{},e.defaults,a,e.instanceMethods);b.originalSettings=a;!this.hasInitialized&&e.buildTable&&"TABLE"!==this.nodeName?e.buildTable(this,b):e.setup(this,b)})};window.console&&window.console.log||(e.logs=[],console={},console.log=console.warn=console.error=console.table=function(){var a=1<arguments.length?arguments:arguments[0];e.logs[e.logs.length]={date:Date.now(),log:a}});e.addParser({id:"no-parser",is:function(){return!1},
format:function(){return""},type:"text"});e.addParser({id:"text",is:function(){return!0},format:function(a,b){var h=b.config;a&&(a=r.trim(h.ignoreCase?a.toLocaleLowerCase():a),a=h.sortLocaleCompare?e.replaceAccents(a):a);return a},type:"text"});e.regex.nondigit=/[^\w,. \-()]/g;e.addParser({id:"digit",is:function(a){return e.isDigit(a)},format:function(a,b){var h=e.formatFloat((a||"").replace(e.regex.nondigit,""),b);return a&&"number"===typeof h?h:a?r.trim(a&&b.config.ignoreCase?a.toLocaleLowerCase():
a):a},type:"numeric"});e.regex.currencyReplace=/[+\-,. ]/g;e.regex.currencyTest=/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/;e.addParser({id:"currency",is:function(a){a=(a||"").replace(e.regex.currencyReplace,"");return e.regex.currencyTest.test(a)},format:function(a,b){var h=e.formatFloat((a||"").replace(e.regex.nondigit,""),b);return a&&"number"===typeof h?h:a?r.trim(a&&b.config.ignoreCase?a.toLocaleLowerCase():a):a},type:"numeric"});e.regex.urlProtocolTest=
/^(https?|ftp|file):\/\//;e.regex.urlProtocolReplace=/(https?|ftp|file):\/\/(www\.)?/;e.addParser({id:"url",is:function(a){return e.regex.urlProtocolTest.test(a)},format:function(a){return a?r.trim(a.replace(e.regex.urlProtocolReplace,"")):a},type:"text"});e.regex.dash=/-/g;e.regex.isoDate=/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/;e.addParser({id:"isoDate",is:function(a){return e.regex.isoDate.test(a)},format:function(a){var b=a?new Date(a.replace(e.regex.dash,"/")):a;return b instanceof Date&&isFinite(b)?
b.getTime():a},type:"numeric"});e.regex.percent=/%/g;e.regex.percentTest=/(\d\s*?%|%\s*?\d)/;e.addParser({id:"percent",is:function(a){return e.regex.percentTest.test(a)&&15>a.length},format:function(a,b){return a?e.formatFloat(a.replace(e.regex.percent,""),b):a},type:"numeric"});e.addParser({id:"image",is:function(a,b,e,l){return 0<l.find("img").length},format:function(a,b,e){return r(e).find("img").attr(b.config.imgAttr||"alt")||a},parsed:!0,type:"text"});e.regex.dateReplace=/(\S)([AP]M)$/i;e.regex.usLongDateTest1=
/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i;e.regex.usLongDateTest2=/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i;e.addParser({id:"usLongDate",is:function(a){return e.regex.usLongDateTest1.test(a)||e.regex.usLongDateTest2.test(a)},format:function(a){var b=a?new Date(a.replace(e.regex.dateReplace,"$1 $2")):a;return b instanceof Date&&isFinite(b)?b.getTime():a},type:"numeric"});e.regex.shortDateTest=/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/;e.regex.shortDateReplace=
/[\-.,]/g;e.regex.shortDateXXY=/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/;e.regex.shortDateYMD=/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/;e.convertFormat=function(a,b){a=(a||"").replace(e.regex.spaces," ").replace(e.regex.shortDateReplace,"/");"mmddyyyy"===b?a=a.replace(e.regex.shortDateXXY,"$3/$1/$2"):"ddmmyyyy"===b?a=a.replace(e.regex.shortDateXXY,"$3/$2/$1"):"yyyymmdd"===b&&(a=a.replace(e.regex.shortDateYMD,"$1/$2/$3"));var h=new Date(a);return h instanceof Date&&isFinite(h)?h.getTime():""};e.addParser({id:"shortDate",
is:function(a){a=(a||"").replace(e.regex.spaces," ").replace(e.regex.shortDateReplace,"/");return e.regex.shortDateTest.test(a)},format:function(a,b,h,l){if(a){var k=b.config;h=k.$headerIndexed[l];b=h.length&&h.data("dateFormat")||e.getData(h,e.getColumnData(b,k.headers,l),"dateFormat")||k.dateFormat;h.length&&h.data("dateFormat",b);return e.convertFormat(a,b)||a}return a},type:"numeric"});e.regex.timeTest=/^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i;e.regex.timeMatch=
/(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i;e.addParser({id:"time",is:function(a){return e.regex.timeTest.test(a)},format:function(a){var b=(a||"").match(e.regex.timeMatch),h=new Date(a),b=(b=a&&(null!==b?b[0]:"00:00 AM"))?new Date("2000/01/01 "+b.replace(e.regex.dateReplace,"$1 $2")):b;return b instanceof Date&&isFinite(b)?(a=h instanceof Date&&isFinite(h)?h.getTime():0)?parseFloat(b.getTime()+"."+h.getTime()):b.getTime():a},type:"numeric"});e.addParser({id:"metadata",is:function(){return!1},
format:function(a,b,e){a=b.config;a=a.parserMetadataName?a.parserMetadataName:"sortValue";return r(e).metadata()[a]},type:"numeric"});e.addWidget({id:"zebra",priority:90,format:function(a,b,e){var l,k,n,p,w,y,v=new RegExp(b.cssChildRow,"i"),x=b.$tbodies.add(r(b.namespace+"_extra_table").children("tbody:not(."+b.cssInfoBlock+")"));for(p=0;p<x.length;p++)for(k=0,a=x.eq(p).children("tr:visible").not(b.selectorRemove),y=a.length,w=0;w<y;w++)l=a.eq(w),v.test(l[0].className)||k++,n=0===k%2,l.removeClass(e.zebra[n?
1:0]).addClass(e.zebra[n?0:1])},remove:function(a,b,h,l){if(!l){b=b.$tbodies;var k=(h.zebra||["even","odd"]).join(" ");for(h=0;h<b.length;h++)l=e.processTbody(a,b.eq(h),!0),l.children().removeClass(k),e.processTbody(a,l,!1)}}})})(jQuery);
var ajaxManager=function(r){var e=function(a,b,e){403===a.status?a=r('\x3cdiv class\x3d"fleet-alert fleet-alert--warning"\x3e\x3ci class\x3d"fas fa-exclamation-triangle text-warning"\x3e\x3c/i\x3e Permission denied. Has your session expired?\x3c/div\x3e'):(a=JSON.parse(a.responseText).data,a=r('\x3cdiv class\x3d"fleet-alert fleet-alert--warning"\x3e\x3ci class\x3d"fas fa-exclamation-triangle text-warning"\x3e\x3c/i\x3e '+a+"\x3c/div\x3e"));r(".fleet-notifications").append(a);a.delay(3E3).fadeOut(2E3,
function(){r(this).remove()})};return{call:function(a,b){return r.ajax(a).done(b).fail(e)}}}(jQuery),repositoryManager=function(r){var e=function(){var a=r(this),e=a.parents("tr").data("repository-id"),a=a.is(":checked");ajaxManager.call({url:"/admin/api/manageRepository",method:"POST",data:{repositoryId:e,action:a?"ENABLE_SYNC":"DISABLE_SYNC"}},function(a){console.log("Updated")})},a=function(){var a=r(this),e=a.parents("tr").data("repository-id"),a=a.val();ajaxManager.call({url:"/admin/api/manageRepository",
method:"POST",data:{repositoryId:e,action:"MASK",versionMask:a}},function(a){console.log("Updated")})};return{init:function(){r(".sync-repository").on("change",e);r(".version-mask").on("blur",a)}}}(jQuery),imageListManager=function(r){var e=function(){var a=r(this),b=z(a),e=I(b),e=y("SHOW",e);ajaxManager.call(e,function(e){b.removeClass("hidden-image");a.replaceWith(r('\x3cbutton type\x3d"button" class\x3d"image--hide dropdown-item btn-clickable"\x3e\x3ci class\x3d"fas fa-eye-slash"\x3e\x3c/i\x3e Hide from list\x3c/button\x3e'))})},
a=function(){var a=r(this),b=z(a),e=I(b),e=y("HIDE",e);ajaxManager.call(e,function(e){b.addClass("hidden-image");a.replaceWith(r('\x3cbutton type\x3d"button" class\x3d"image--show dropdown-item btn-clickable"\x3e\x3ci class\x3d"fas fa-eye"\x3e\x3c/i\x3e Show in list\x3c/button\x3e'))})},b=function(){var a=r(this),b=z(a),e=I(b),e=y("UNSTABLE",e);ajaxManager.call(e,function(e){b.find(".image-status").find("i.fas").replaceWith(r('\x3ci class\x3d"fas fa-exclamation-triangle text-warning" title\x3d"Potentially unstable"\x3e\x3c/i\x3e'));
a.replaceWith(r('\x3cbutton type\x3d"button" class\x3d"image--mark-stable dropdown-item btn-clickable"\x3e\x3ci class\x3d"fas fa-check"\x3e\x3c/i\x3e Mark as stable\x3c/button\x3e'))})},h=function(){var a=r(this),b=z(a),e=I(b),e=y("STABLE",e);ajaxManager.call(e,function(e){b.find(".image-status").find("i.fas").replaceWith(r('\x3ci class\x3d"fas fa-check text-success" title\x3d"No issues reported"\x3e\x3c/i\x3e'));a.replaceWith(r('\x3cbutton type\x3d"button" class\x3d"image--mark-unstable dropdown-item btn-clickable"\x3e\x3ci class\x3d"fas fa-exclamation-triangle"\x3e\x3c/i\x3e Mark as unstable\x3c/button\x3e'))})},
l=function(){var a=r(this),b=z(a),e=I(b),h=y("RESTORE",e);ajaxManager.call(h,function(h){b.removeClass("deprecated-image");b.find(".deprecation-message").remove();a.replaceWith(v(e.split(":")[1]))})},k=function(a){var b=r(this);a=r(a.relatedTarget);a=z(a);var e=I(a);b.find("#selected-mask-image-name").text("Version mask for "+a.data("image-name"));b.find("#submit-version-mask-change").data("image-key",e);R(e,function(a){b.find("#image-version-mask").val(a.data.versionMask)})},n=function(){var a=r(this),
a=y("MASK",a.data("image-key"));a.data.versionMask=r("#image-version-mask").val();ajaxManager.call(a,function(){r("#update-image-version-mask").modal("hide")})},p=function(a){var b=r(this);a=r(a.relatedTarget);var e=z(a),h=I(e);b.find("#image-deprecation-reason").val("");b.find("#selected-deprecation-image-name").text("Deprecation notice for "+e.data("image-name"));b.find("#submit-deprecation-change").data("image-key",h);b.find("#submit-deprecation-change").data("trigger-option",a.attr("id"))},w=
function(){var a=r(this),b=a.data("image-key"),b=y("DEPRECATE",b);b.data.deprecationReason=r("#image-deprecation-reason").val();ajaxManager.call(b,function(b){var e=r("#"+a.data("trigger-option")),h=z(e);h.addClass("deprecated-image");h.find(".image-name").append(x(b.data.deprecationReason));e.replaceWith(r('\x3cbutton type\x3d"button" class\x3d"image--remove-deprecation-notice dropdown-item btn-clickable"\x3e\x3ci class\x3d"fas fa-thumbs-up"\x3e\x3c/i\x3e Remove deprecation notice\x3c/button\x3e'));
r("#update-image-deprecation").modal("hide")})},y=function(a,b){return{url:"/admin/api/manageImage",method:"POST",data:{action:a,imageKey:b}}},v=function(a){return r('\x3cbutton id\x3d"deprecate-image_'+a+'" type\x3d"button" class\x3d"dropdown-item btn-clickable" data-toggle\x3d"modal" data-target\x3d"#update-image-deprecation"\x3e\x3ci class\x3d"fas fa-exclamation-circle"\x3e\x3c/i\x3e Mark as deprecated\x3c/button\x3e')},x=function(a){return r('\x3cspan class\x3d"deprecation-message"\x3e\x3ci class\x3d"fas fa-exclamation-circle"\x3e\x3c/i\x3e\x3c/span\x3e').attr("title",
r("\x3cspan /\x3e").html("This image has been deprecated: "+a).text())},z=function(a){return a.parents("tr")},I=function(a){return a.data("image-key")},R=function(a,b){ajaxManager.call({url:"/admin/api/getImage?imageKey\x3d"+a,method:"GET"},b)};return{init:function(){r(".admin-actions").on("click",".image--show",e);r(".admin-actions").on("click",".image--hide",a);r(".admin-actions").on("click",".image--mark-stable",h);r(".admin-actions").on("click",".image--mark-unstable",b);r(".admin-actions").on("click",
".image--remove-deprecation-notice",l);r("#update-image-version-mask").on("show.bs.modal",k);r("#update-image-deprecation").on("show.bs.modal",p);r("#submit-version-mask-change").on("click",n);r("#submit-deprecation-change").on("click",w)}}}(jQuery),imageSearchManager=function(r){var e=function(){var a=r(this),b=r.trim(a.val()).toLowerCase();r("#"+a.data("repository-id")+"_images").find("tbody tr").each(function(a,e){var k=r(e);k.data("image-name").toLowerCase().startsWith(b)||0===b.length?k.show():
k.hide()})};return{init:function(){r("input.image-search").on("keyup",e)}}}(jQuery),synchronisationManager=function(r){var e=function(a){a=JSON.parse(a.data);"SYNC_START"===a.messageType&&(r("#force-sync").prop("disabled",!0),r(".progress--sync__currentImage").text("Synchronisation started."));"IMAGE_UPDATED"===a.messageType?(r("#force-sync").prop("disabled",!0),r(".progress--sync").show(),r(".progress--sync__bar").css("width",a.data.currentPosition/a.data.totalImages*100+"%"),r(".progress--sync__currentImage").text("("+
a.data.currentPosition+"/"+a.data.totalImages+") "+a.data.image.name)):"SYNC_END"===a.messageType&&(r(".progress--sync").hide(),r(".progress--sync__currentImage").empty(),r("#force-sync").prop("disabled",!1))},a=function(){ajaxManager.call({url:"/admin/api/forceSync",method:"POST"},function(){console.log("Trigger complete.")})};return{init:function(){var b=WebSocket,h=window.location,l;l="https:"===h.protocol?"wss:":"ws:";l+="//"+h.host+"/admin/ws/sync";(new b(l)).onmessage=e;r("#force-sync").on("click",
a)}}}(jQuery),passwordValidationManager=function(r){var e=function(a,b){a.val()!==b.val()?b.get(0).setCustomValidity("Mismatch"):b.get(0).setCustomValidity("")};return{init:function(){var a=r("#verify-password");if(a.length){var b=r("#password");b.on("keyup",function(){e(b,a)});a.on("keyup",function(){e(b,a)})}}}}(jQuery);

View File

@ -184,7 +184,12 @@ var appManager = (function($) {
});
$body.on('click', '.has-switchable .switchable.field .is-accept-switchable', function() {
$(this).parents('.has-switchable').removeClass('is-active');
var $parent = $(this).parents('.has-switchable');
var $editableField = $parent.find('.switchable.field').find('.input');
var $plainTextField = $parent.find('.switchable.plaintext');
$plainTextField.text($editableField.val());
$parent.removeClass('is-active');
});
};
@ -260,3 +265,58 @@ var imageSearchManager = (function($) {
}
}(jQuery));
var chartManager = (function($) {
var populateChart = function(imageKey, groupMode) {
var request = {
url: '/internalapi/image/stats?imageKey=' + imageKey + '&groupMode=' + groupMode,
method: 'get'
};
ajaxManager.call(request, function(history) {
var ctx = document.getElementById('ImagePullHistory').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels: history.pullDifferential.labels,
datasets: [{
data: history.pullDifferential.pulls,
borderColor: 'rgba(0, 209, 178, 1)',
backgroundColor: 'rgba(0, 209, 178, 0.3)'
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
legend: {
display: false
},
scales: {
fill: false,
xAxes: [
{
gridLines: { display: false },
display: false
}
],
yAxes: [
{
gridLines: { display: false },
display: false
}
]
}
}
});
});
};
return {
populateChart: populateChart
}
}(jQuery));

View File

@ -1,5 +1,5 @@
#Sat Dec 28 15:55:32 GMT 2019
app.build.date=2019-12-28T15\:55\:32
#Fri Jan 03 17:22:49 GMT 2020
app.build.date=2020-01-03T17\:22\:49
app.build.os=Linux
app.build.user=josh
app.version=2.0.0

View File

@ -56,7 +56,7 @@
${image.name}
</td>
<td class="editable-image-version-mask is-vcentered" style="width: 300px; min-width: 300px;">
<@input.switchable id="VersionMask_${repository.key.id}" icon="mask" value=repository.versionMask size="small" acceptClass="update-image-trigger" />
<@input.switchable id="VersionMask_${repository.key.id}" icon="mask" value=image.versionMask size="small" acceptClass="update-image-trigger" />
</td>
<td class="editable-image-sync-enabled is-vcentered has-text-centered" style="width: 100px; max-width: 100px;">
<@input.toggle id="Enabled_${image.key.id}" size="small" inputClasses="update-image-trigger" isToggled=(repository.syncEnabled && image.syncEnabled) isDisabled=(!repository.syncEnabled) title="${(!repository.syncEnabled)?string('Repository sync has been disabled.', '')}" />
@ -72,7 +72,7 @@
</td>
<td style="min-width: 100px; width: 100px;">
<@button.buttons isGrouped=true isRightAligned=true>
<@button.button id="ForceResync_${image.key.id}" size="small" title="Force resync" colour="normal-colour" extraClasses="force-resync">
<@button.button id="ForceResync_${image.key.id}" size="small" title="Force resync" colour="normal-colour" extraAttributes='data-image-key="${image.key}"' extraClasses="sync-image">
<i class="fas fa-sync-alt is-marginless"></i>
</@button.button>
<@button.link size="small" title="Edit image metadata" colour="normal-colour" link="/admin/image?key=${image.fullName}">

View File

@ -23,66 +23,104 @@
<#import "../ui/elements/table.ftl" as table />
<#import "../ui/elements/tag.ftl" as tag />
<@base.base title="${image.fullName}" context="image">
<@base.base title="${(image.fullName)!'Unknown Image'}" context="image">
<@section.section>
<@container.container>
<#if image?has_content>
<div class="columns is-multiline">
<@section.section>
<@container.container>
<div class="column is-12">
<div class="columns is-multiline">
<@title.title icon="cube" thinValue=image.repositoryName boldValue=image.name separator="/">
<#if image.deprecated>
<@tag.tag colour="warning" value="Deprecated" />
</#if>
</@title.title>
<div class="column is-12">
<div class="tags is-right">
<@title.title icon="cube" thinValue=image.repositoryName boldValue=image.name separator="/" subtitle=image.description>
<#if image.deprecated>
<@tag.tag colour="warning" value="Deprecated" />
</#if>
</@title.title>
<#assign latestBranch=image.findTagBranchByName("latest") />
<#if latestBranch?has_content>
<#list latestBranch.latestTag.digests as digest>
<@tag.tag colour="light" value='<i class="fas fa-microchip"></i> ${digest.architecture}' extraAttributes='title="Architecture"' />
</#list>
</#if>
<div class="tags is-right">
<@tag.tag colour="light" value='<i class="fas fa-download"></i> ${image.pullCount}' extraAttributes='title="Pulls"' />
<@tag.tag colour="light" value='<i class="fas fa-star"></i> ${image.starCount}' extraAttributes='title="Stars"' />
<#assign latestBranch=image.findTagBranchByName("latest") />
<#if latestBranch?has_content>
<#list latestBranch.latestTag.digests as digest>
<@tag.tag colour="light" value='<i class="fas fa-microchip"></i> ${digest.architecture}' extraAttributes='title="Architecture"' />
</#list>
</#if>
<@tag.tag colour="light" value='<i class="fas fa-download"></i> ${image.pullCount}' extraAttributes='title="Pulls"' />
<@tag.tag colour="light" value='<i class="fas fa-star"></i> ${image.starCount}' extraAttributes='title="Stars"' />
</div>
</div>
</div>
<div class="column is-6-desktop is-12-tablet">
<@box.box extraClasses="is-paddingless is-clipped">
<div class="column is-6-desktop is-12-tablet">
<@box.box extraClasses="is-paddingless is-clipped">
<h2 class="title is-5 has-text-centered has-margin-top">Build Information</h2>
<@table.table isFullWidth=true isNarrow=true isStriped=true>
<tbody>
<h2 class="title is-5 has-text-centered has-margin-top">Build Information</h2>
<@table.table isFullWidth=true isNarrow=true isStriped=true>
<tbody>
<@table.halfDisplayRow title="Repository" value=image.repositoryName link="/?key=${image.repositoryKey}" />
<@table.halfDisplayRow title="Build Time" value=image.lastUpdatedAsString />
<@table.halfDisplayRow title="Synchronised" value=image.syncEnabled?string("Yes", "No") />
<@table.halfDisplayRow title="Stable" value=image.stable?string("Yes", "No") />
<@table.halfDisplayRow title="Deprecated" value=image.deprecated?string("Yes", "No") />
</tbody>
</@table.table>
</tbody>
</@table.table>
<h2 class="title is-5 has-text-centered has-margin-top">Tracked Tags</h2>
<@table.table isFullWidth=true isNarrow=true isStriped=true>
<tbody>
<h2 class="title is-5 has-text-centered has-margin-top">Tracked Tags</h2>
<@table.table isFullWidth=true isNarrow=true isStriped=true>
<tbody>
<#list image.tagBranches as tagBranch>
<@table.halfDisplayRow title=tagBranch.branchName value='<i class="fas fa-tag"></i> ${image.getMaskedVersion(tagBranch.latestTag)}' />
</#list>
</tbody>
</@table.table>
</tbody>
</@table.table>
</@box.box>
</div>
<div class="column is-6-desktop is-12-tablet">
<@box.box extraClasses="is-paddingless is-clipped is-relative">
<h2 class="title is-5 has-text-centered has-margin-top">Pull Activity</h2>
<div class="tabs is-toggle is-centered is-small is-marginless">
<ul class="is-marginless">
<li data-group-mode="Day">
<a><span>1d</span></a>
</li>
<li class="is-active" data-group-mode="Week">
<a><span>1w</span></a>
</li>
<li data-group-mode="Month">
<a><span>1m</span></a>
</li>
</ul>
</div>
<div class="chart-container" style="position: relative; width: 100%; height: 200px">
<canvas id="ImagePullHistory"></canvas>
</div>
</@box.box>
</div>
</@box.box>
</div>
</div>
</@container.container>
</@section.section>
</@container.container>
</@section.section>
<#else>
<@section.section>
<@container.container>
Could not find image.
</@container.container>
</@section.section>
</#if>
</@base.base>

View File

@ -95,6 +95,7 @@
<#nested>
<script type="text/javascript" src="/assets/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="/assets/js/Chart.bundle.min.js"></script>
<script type="text/javascript" src="/assets/js/jquery.tablesorter.js"></script>
<script type="text/javascript" src="/assets/js/app.js"></script>
<#if context?starts_with("admin")>
@ -110,10 +111,14 @@
formValidationManager.init();
</#if>
<#if context=='image'>
chartManager.populateChart('${image.key}', 'Week');
</#if>
appManager.init();
<#if context?starts_with("admin")>
adminManager.init();
adminManager.init();
</#if>
<#if context=='home'>
@ -136,6 +141,12 @@
});
}, false);
window.addEventListener('beforeprint', function(e) {
for (var id in Chart.instances) {
Chart.instances[id].resize();
}
});
})();
</script>