From 3c898f36de4107912fe87adf0aa67414291c5dfd Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 4 Jul 2025 14:00:46 +0200 Subject: [PATCH] ported legacy functions --- .../umbrella/backend/Application.java | 4 +- .../srsoftware/umbrella/core/BaseHandler.java | 13 +- .../de/srsoftware/umbrella/core/Paths.java | 1 + .../de/srsoftware/umbrella/core/Token.java | 1 - frontend/src/App.svelte | 1 + frontend/src/routes/user/User.svelte | 6 + legacy/build.gradle.kts | 14 + .../srsoftware/umbrella/legacy/LegacyApi.java | 200 +++++- legacy/src/main/resources/css/basic/style.css | 19 + .../main/resources/css/bloodshed/colors.css | 84 +++ .../main/resources/css/bloodshed/style.css | 584 +++++++++++++++++ .../resources/css/bloodshed/svg_colors.css | 41 ++ .../src/main/resources/css/comfort/colors.css | 76 +++ .../src/main/resources/css/comfort/style.css | 526 +++++++++++++++ .../main/resources/css/comfort/svg_colors.css | 37 ++ .../resources/css/fontawesome-webfont.woff | Bin 0 -> 86876 bytes legacy/src/main/resources/css/style.css | 23 + legacy/src/main/resources/css/svg_common.css | 21 + .../src/main/resources/css/winter/colors.css | 80 +++ .../src/main/resources/css/winter/style.css | 597 ++++++++++++++++++ .../main/resources/css/winter/svg_colors.css | 37 ++ legacy/src/main/resources/edit.cur | Bin 0 -> 4286 bytes legacy/src/main/resources/js/common.js | 171 +++++ .../src/main/resources/js/jquery-3.2.1.min.js | 4 + legacy/src/main/resources/js/umbrella.js | 124 ++++ legacy/src/main/resources/umbrella100px.png | Bin 0 -> 6601 bytes user/build.gradle.kts | 1 + .../srsoftware/umbrella/user/Constants.java | 2 - .../srsoftware/umbrella/user/UserModule.java | 1 - .../srsoftware/umbrella/user/api/UserDb.java | 2 +- .../umbrella/user/model/Session.java | 1 - .../umbrella/user/sqlite/SqliteDB.java | 2 +- 32 files changed, 2640 insertions(+), 33 deletions(-) create mode 100644 legacy/build.gradle.kts create mode 100644 legacy/src/main/resources/css/basic/style.css create mode 100644 legacy/src/main/resources/css/bloodshed/colors.css create mode 100644 legacy/src/main/resources/css/bloodshed/style.css create mode 100644 legacy/src/main/resources/css/bloodshed/svg_colors.css create mode 100644 legacy/src/main/resources/css/comfort/colors.css create mode 100644 legacy/src/main/resources/css/comfort/style.css create mode 100644 legacy/src/main/resources/css/comfort/svg_colors.css create mode 100644 legacy/src/main/resources/css/fontawesome-webfont.woff create mode 100644 legacy/src/main/resources/css/style.css create mode 100644 legacy/src/main/resources/css/svg_common.css create mode 100644 legacy/src/main/resources/css/winter/colors.css create mode 100644 legacy/src/main/resources/css/winter/style.css create mode 100644 legacy/src/main/resources/css/winter/svg_colors.css create mode 100644 legacy/src/main/resources/edit.cur create mode 100644 legacy/src/main/resources/js/common.js create mode 100644 legacy/src/main/resources/js/jquery-3.2.1.min.js create mode 100644 legacy/src/main/resources/js/umbrella.js create mode 100644 legacy/src/main/resources/umbrella100px.png diff --git a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java index 9823d0c..9f846ef 100644 --- a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java +++ b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java @@ -3,7 +3,6 @@ package de.srsoftware.umbrella.backend; import static de.srsoftware.umbrella.core.Constants.UMBRELLA; import static de.srsoftware.umbrella.core.Util.mapLogLevel; -import static java.lang.System.Logger.Level.DEBUG; import static java.lang.System.Logger.Level.INFO; import com.sun.net.httpserver.HttpServer; @@ -16,11 +15,10 @@ import de.srsoftware.umbrella.translations.Translations; import de.srsoftware.umbrella.user.UserModule; import de.srsoftware.umbrella.user.sqlite.SqliteDB; import de.srsoftware.umbrella.web.WebHandler; -import org.json.JSONObject; - import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.Executors; +import org.json.JSONObject; public class Application { private static final System.Logger LOG = System.getLogger("Umbrella"); diff --git a/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java b/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java index 66d9804..d1d3b39 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java @@ -1,19 +1,18 @@ +/* © SRSoftware 2025 */ package de.srsoftware.umbrella.core; +import static de.srsoftware.tools.Optionals.nullable; +import static java.lang.System.Logger.Level.DEBUG; +import static java.lang.System.Logger.Level.WARNING; +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; + import com.sun.net.httpserver.HttpExchange; import de.srsoftware.tools.Path; import de.srsoftware.tools.PathHandler; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; -import static de.srsoftware.tools.MimeType.MIME_JSON; -import static de.srsoftware.tools.Optionals.nullable; -import static java.lang.System.Logger.Level.DEBUG; -import static java.lang.System.Logger.Level.WARNING; -import static java.net.HttpURLConnection.HTTP_NOT_FOUND; - public abstract class BaseHandler extends PathHandler { private static HttpExchange addCors(HttpExchange ex){ diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Paths.java b/core/src/main/java/de/srsoftware/umbrella/core/Paths.java index 1601f86..dd4e955 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Paths.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Paths.java @@ -6,6 +6,7 @@ public class Paths { public static final String ADD = "add"; public static final String CSS = "css"; + public static final String COMMON_TEMPLATES = "common_templates"; public static final String JSON = "json"; public static final String LEGACY = "legacy"; public static final String LIST = "list"; diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Token.java b/core/src/main/java/de/srsoftware/umbrella/core/Token.java index 8dde201..e396690 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Token.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Token.java @@ -4,7 +4,6 @@ package de.srsoftware.umbrella.core; import static de.srsoftware.umbrella.core.Constants.TOKEN; import de.srsoftware.tools.SessionToken; - import java.util.UUID; public class Token implements CharSequence{ diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 09aea23..f32a149 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -32,6 +32,7 @@ + diff --git a/frontend/src/routes/user/User.svelte b/frontend/src/routes/user/User.svelte index c5dc718..d933336 100644 --- a/frontend/src/routes/user/User.svelte +++ b/frontend/src/routes/user/User.svelte @@ -6,6 +6,12 @@ import LoginServiceList from './LoginServices.svelte'; import Profile from './Profile.svelte'; import UserList from './List.svelte'; + + let params = new URLSearchParams(location.search); + let redirect = params.get('returnTo'); + if (redirect && user.name){ + location.href = redirect; + }

{t('user.user_module')}

diff --git a/legacy/build.gradle.kts b/legacy/build.gradle.kts new file mode 100644 index 0000000..687068d --- /dev/null +++ b/legacy/build.gradle.kts @@ -0,0 +1,14 @@ +description = "Umbrella : Legacy API" + +dependencies{ + implementation(project(":core")) + implementation(project(":user")) + implementation("de.srsoftware:configuration.api:1.0.2") + implementation("de.srsoftware:tools.jdbc:1.3.2") + implementation("de.srsoftware:tools.mime:1.1.2") + implementation("de.srsoftware:tools.optionals:1.0.0") + implementation("de.srsoftware:tools.util:2.0.3") + implementation("org.bitbucket.b_c:jose4j:0.9.6") + implementation("org.json:json:20240303") + implementation("org.xerial:sqlite-jdbc:3.49.0.0") +} \ No newline at end of file diff --git a/legacy/src/main/java/de/srsoftware/umbrella/legacy/LegacyApi.java b/legacy/src/main/java/de/srsoftware/umbrella/legacy/LegacyApi.java index 2298323..d912dc6 100644 --- a/legacy/src/main/java/de/srsoftware/umbrella/legacy/LegacyApi.java +++ b/legacy/src/main/java/de/srsoftware/umbrella/legacy/LegacyApi.java @@ -1,5 +1,20 @@ +/* © SRSoftware 2025 */ package de.srsoftware.umbrella.legacy; +import static de.srsoftware.tools.MimeType.MIME_FORM_URL; +import static de.srsoftware.tools.Query.decode; +import static de.srsoftware.umbrella.core.Constants.*; +import static de.srsoftware.umbrella.core.Constants.TOKEN; +import static de.srsoftware.umbrella.core.Paths.*; +import static de.srsoftware.umbrella.core.Util.request; +import static de.srsoftware.umbrella.user.Paths.NOTIFY; +import static de.srsoftware.umbrella.user.Paths.VALIDATE_TOKEN; +import static java.lang.Long.parseLong; +import static java.lang.System.Logger.Level.*; +import static java.lang.System.Logger.Level.DEBUG; +import static java.net.HttpURLConnection.*; +import static java.time.temporal.ChronoUnit.DAYS; + import com.sun.net.httpserver.HttpExchange; import de.srsoftware.configuration.Configuration; import de.srsoftware.tools.Path; @@ -7,39 +22,36 @@ import de.srsoftware.tools.SessionToken; import de.srsoftware.umbrella.core.BaseHandler; import de.srsoftware.umbrella.core.Token; import de.srsoftware.umbrella.core.UmbrellaException; +import de.srsoftware.umbrella.user.model.Session; +import de.srsoftware.umbrella.user.model.UmbrellaUser; import de.srsoftware.umbrella.user.sqlite.SqliteDB; - -import static de.srsoftware.tools.MimeType.MIME_FORM_URL; -import static de.srsoftware.umbrella.core.ResponseCode.HTTP_SERVER_ERROR; -import static de.srsoftware.umbrella.core.Constants.*; -import static de.srsoftware.umbrella.core.Constants.KEY; -import static de.srsoftware.umbrella.core.Paths.LOGOUT; -import static de.srsoftware.umbrella.core.Paths.SEARCH; -import static de.srsoftware.umbrella.core.Util.request; -import static java.net.HttpURLConnection.*; -import static java.time.temporal.ChronoUnit.DAYS; - import java.io.IOException; import java.time.Instant; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; import java.util.Map; -import java.util.Optional; +import java.util.stream.Collectors; +import org.json.JSONObject; public class LegacyApi extends BaseHandler { private final SqliteDB users; private final Configuration config; + private final String messageUrl; public LegacyApi(SqliteDB userDb, Configuration config) { users = userDb; this.config = config.subset("umbrella.modules").orElseThrow(() -> new RuntimeException("Missing configuration: umbrella.modules")); + this.messageUrl = null; } @Override public boolean doGet(Path path, HttpExchange ex) throws IOException { var head = path.pop(); return switch (head){ - case null -> sendRedirect(ex, url(ex).replaceAll("/api/.*","")); - case "common_templates" -> { + case null -> sendRedirect(ex, url(ex).replaceAll("/legacy/.*","")); + case COMMON_TEMPLATES -> { allowOrigin(ex, "*"); // add CORS header yield load(path,ex); } @@ -109,7 +121,7 @@ public class LegacyApi extends BaseHandler { var token = SessionToken.from(ex).map(SessionToken::sessionId) .or(() -> getBearer(ex)) .map(Token::of); - if (token.isEmpty()) return sendEmptyResponse(HTTP_UNAUTHORIZED,ex); + if (token.isEmpty()) return sendRedirect(ex,"/user/login?returnTo="+url); return sendRedirect(ex, url + (url.contains("?") ? "&" : "?") + "token=" + token.get()); } @@ -121,6 +133,162 @@ public class LegacyApi extends BaseHandler { @Override public boolean doPost(Path path, HttpExchange ex) throws IOException { - return super.doPost(path, ex); + try { + return switch (path.pop()) { + case JSON -> legacyJson(ex); + case NOTIFY -> legacyNotify(ex); + case VALIDATE_TOKEN -> validateToken(ex); + default -> super.doPost(path,ex); + }; + } catch (UmbrellaException e){ + return send(ex,e); + } + } + + private static String stripTrailingSlash(Object o){ + String url = o.toString(); + if (url.endsWith("/")) return url.substring(0,url.length()-1); + return url; + } + + private boolean validateToken(HttpExchange ex) throws UmbrellaException, IOException { + String body; + try { + body = body(ex); + } catch (Exception e){ + throw new UmbrellaException(400,"Failed to read request body").causedBy(e); + } + var map = decode(body); + LOG.log(DEBUG,"validateToken(…, {0}), data: {1}",map); + + String domain = stripTrailingSlash(map.get(DOMAIN) instanceof String s ? s : ""); + var keys = config.keys(); + var match = false; + for (var key : keys){ + var baseUrl = config.get(key + ".baseUrl").map(LegacyApi::stripTrailingSlash).orElse(null); + if (domain.equals(baseUrl)){ + match = true; + break; + } + } + if (!match) throw new UmbrellaException(500,"Failed to verify request domain!"); + + var o = map.get(TOKEN); + if (!(o instanceof String token)) throw new UmbrellaException(500,"Request did not contain token!"); + var session = users.load(Token.of(token)); + var user = users.load(session); + var userMap = user.toMap(); + userMap.put(TOKEN,Map.of(TOKEN,token,EXPIRATION,session.expiration().getEpochSecond())); + return sendContent(ex,userMap); + } + + private boolean legacyJson(HttpExchange ex) throws UmbrellaException, IOException { + Map data = null; + try { + data = decode(body(ex)); + } catch (IOException e) { + LOG.log(ERROR,"Failed to extract body of request"); + throw new UmbrellaException(400,"Failed to extract body of request").causedBy(e); + } + var arrayPassed = false; + var ids = new ArrayList(); + for (var entry : data.entrySet()){ + var key = entry.getKey(); + var val = entry.getValue(); + if (key.startsWith("ids[") && (arrayPassed = true)) ids.add(parseLong(entry.getValue().toString())); + if ("ids".equals(key) && val instanceof Map idMap) { + for (var o : idMap.values()){ + ids.add(Long.parseLong(o.toString())); + } + arrayPassed = true; + } + } + if (ids.isEmpty() && data.get("id") instanceof String idString) ids.add(parseLong(idString)); + var related = "true".equals(data.get("related")); + if (related) { + LOG.log(WARNING,"Fetching related users not implemented, yet!"); + throw new UmbrellaException(400,"Fetching related users not implemented, yet!"); + } + + List userList = new ArrayList<>(); + if (ids.isEmpty()) { + userList = users.list(0, null); + } else { + for (var id : ids){ + try { + userList.add(users.load(id)); + } catch (UmbrellaException ignored) { + } + } + } + if (arrayPassed || userList.size() != 1) { + Map> userData = userList.stream().collect(Collectors.toMap(UmbrellaUser::id, UmbrellaUser::toMap)); + return sendContent(ex,userData); + } + return sendContent(ex, userList.getFirst().toMap()); + } + + protected Session requestSession(Token token) throws UmbrellaException { + var session = users.load(token); + session = users.extend(session); + return session; + } + + private boolean legacyNotify(HttpExchange ex) throws UmbrellaException, IOException { + if (messageUrl == null) throw new UmbrellaException(500,"missing configuration: umbrella.modules.message.baseUrl"); + var mime = contentType(ex).orElse(null); + JSONObject data; + try { + data = switch (mime) { + case MIME_FORM_URL -> new JSONObject(decode(body(ex))); + case null, default -> json(ex); + }; + } catch (Exception e){ + throw new UmbrellaException(400,"Failed to fetch content of request").causedBy(e); + } + if (!data.has(TOKEN)) throw new UmbrellaException(400,"token missing in request data!"); + var dropKeys = new HashSet(); + dropKeys.add(TOKEN); + var token = Token.of(data.getString(TOKEN)); + var userSession = requestSession(token); + var user = userSession.user(); + LOG.log(DEBUG,"Token belongs to {0}.",user); + + // recipients is a field used by legacy code. + // it may be a single user id or a list of user ids. + var recipients = new HashSet(); + for (var key : data.keySet()){ + if (key.startsWith("recipients[")) { + recipients.add(data.getLong(key)); + dropKeys.add(key); + break; + } + if (key.equals("recipients")){ + var list = data.getJSONObject(key); + for (var idx : list.keySet()){ + var id = list.getLong(idx); + recipients.add(id); + } + dropKeys.add(key); + break; + } + } + if (!recipients.isEmpty()){ // replace legacy user ids by user objects in receivers field + List resp = users.list(0, null, recipients.toArray(new Long[0])); + data.put("receivers",resp.stream().map(UmbrellaUser::toMap).toList()); + } + + if (!data.has(SENDER)) data.put(SENDER,user.toMap()); + + dropKeys.forEach(data::remove); + + LOG.log(DEBUG,"received legacy notification: {0}",data); + + var messageList = Map.of("messages",List.of(data.toMap())); + var resp = request(messageUrl, messageList, null, token.asBearer()); + if (!(resp instanceof JSONObject json)) throw new UmbrellaException(500,"{0} did not return JSON!",messageUrl); + + // TODO: should we return json? + return sendEmptyResponse(HTTP_OK,ex); } } diff --git a/legacy/src/main/resources/css/basic/style.css b/legacy/src/main/resources/css/basic/style.css new file mode 100644 index 0000000..49dfb00 --- /dev/null +++ b/legacy/src/main/resources/css/basic/style.css @@ -0,0 +1,19 @@ +@font-face { + font-family: "awesome"; + src: url("../fontawesome-webfont.woff"); +} +.symbol{ + font-family: awesome; + text-decoration: none; +} + +.completed > a::before { + content: " ✓"; +} + +.canceled a, +.children .inactive, +.requirements .inactive, +.tasks .inactive{ + text-decoration: line-through; +} diff --git a/legacy/src/main/resources/css/bloodshed/colors.css b/legacy/src/main/resources/css/bloodshed/colors.css new file mode 100644 index 0000000..6fd3cba --- /dev/null +++ b/legacy/src/main/resources/css/bloodshed/colors.css @@ -0,0 +1,84 @@ +body{ + color: red; + background-color: black; +} +a{ + color: red; +} + +.tasks .pending>a{ + color: gray; +} + +.completed>a, +.started>a{ + color: #5bc500; +} + +.canceled>a{ + color: gray; +} + +tr{ + background-color: #52525270; +} +tr:nth-child(2n+1){ + background-color: #a7a7a740; +} + +fieldset { + border-color: red; +} + +.button, +input, +button { + background-color: red; + color: #303030; +} +.hover{ + background-color: black; + border-color: red; +} + +form.invoice textarea { + background-color: red; + color: black; +} + +.infos span{ + background-color: #00ad00; + color: black; +} +.errors span{ + background-color: #ff9847; + color: black; +} + +.warnings span{ + background-color: #ffff00; + color: black; +} + +#announce{ + background-color: black; +} + +#main_menu .button:hover { + color: red; + background-color: gray; +} + +tr:hover td{ + background-color: #160202; +} + +code { + background-color: black; + color: orange; +} + +.description img, +#preview img{ + background: lightcyan; +} diff --git a/legacy/src/main/resources/css/bloodshed/style.css b/legacy/src/main/resources/css/bloodshed/style.css new file mode 100644 index 0000000..1c55c3f --- /dev/null +++ b/legacy/src/main/resources/css/bloodshed/style.css @@ -0,0 +1,584 @@ +@font-face { + font-family: "awesome"; + src: url("../fontawesome-webfont.woff"); +} +*{ + max-width:100%; + min-width:auto; +} +a{ + text-decoration: none; +} +body{ + font-family: sans-serif; +} +code { + display: inline-block; + padding: 5px; + margin: 5px 0; +} +textarea { + min-height: 60px; + width: 100%; + font-size: 16px; +} + +textarea:hover{ + min-height: 400px; + width: 100%; +} + +input[type=text],input[type=email]{ + width: 100%; +} + +td.connectors form input{ + width: 200px; +} + +img#logo{ + position: fixed; + top: 10px; + right: 10px; + z-index: -1; +} + +blockquote{ + font-style: italic; +} +#main_menu, +#main_menu form{ + display: inline; +} + +#main_menu .button { + font-size: 12px; + font-weight: normal; + margin-top: 7px; + vertical-align: bottom; +} + +.hidden{ + display: none !important; +} + +.hover:hover .hidden{ + display: inherit !important; +} + +.emphasized{ + font-weight: bold; +} + +.add_positions, +.requirements{ + max-height: 60px; + max-width: 66%; + overflow: hidden; +} +.add_positions:hover, +.requirements:hover{ + max-height: 999999px; + max-width: 999999px; +} + +.add_positions > ul > li{ + max-height: 20px; + overflow: hidden; + padding-top: 20px; +} + +.add_positions > ul > li:hover{ + max-height: 999999px; +} + +fieldset.add.document:hover { + max-height: unset; +} + +fieldset.add.document { + max-height: 5px; + overflow: hidden; +} + +fieldset.options label, +.add_positions label span, +.poll_status label, +.requirements label{ + display: block; +} + +.tasks .canceled a, +.children .inactive, +.requirements .inactive, +.tasks .inactive{ + text-decoration: line-through; +} + +.tasks .navi a{ + display: inline-table; +} + +blockquote a, +p a, +.description a{ + text-decoration: underline; +} + +table { + border-collapse: collapse; +} +tr > *{ + padding: 5px 10px; +} + +label.street:after, +label.location::after { + content: "\a "; + white-space: pre; +} + +.poll.evaluate table tr:nth-child(n+2) th, +.poll.evaluate table td{ + text-align: right; +} + +.poll .disabled{ + text-decoration: line-through; +} + +.company div > fieldset, +.company > table{ + margin-right: 10px; + float: left; +} + +table.time h2{ + margin-right: 60px; +} + +.file label, +.document .dates label{ + display: block +} +.document .header, +.document .tags{ + clear: both; +} + +fieldset { + border-radius: 10px; + border-width: 1px; +} + +.contacts fieldset, +.document .customer, +.document .document_type, +.document .sender, +.document .court, +.document .dates, +.document .template, +fieldset.del_note, +fieldset.login_service_list, +fieldset.userlist, +fieldset.document.list{ + float: left; +} + +.document .dates label{ + text-align: right; +} + +.button, +input, +button { + border: 0 none; + font-weight: bold; + margin: 0 2px; + padding: 3px; + display: inline-block; +} + +.change_state, +td.connectors button[type="submit"], +.prop_action, +input[type="submit"] { + clear: both; + float: right; +} + +.symbol{ + font-family: awesome; + font-size: 20px; + font-weight: normal; +} + +#main_menu .symbol{ + font-size: 14px; +} + +.right{ + float: right; + margin: 0 0 0 5px; +} + +.tasks .project { + font-weight: bold; +} + +.right-abs { + position: absolute; + right: 5px; + top: 5px; +} +.right-fix { + position: fixed; + right: 5px; + top: 5px; +} +.hover { + border-width: 1px; + border-style: solid; + border-radius: 5px; + max-height: 35px; + overflow: hidden; + z-index: 10; +} + + +.hover:hover { + max-height: unset; +} + +.hover_h > a:nth-child(n+2){ + display: none; +} + +.hover_h:hover { + padding: 5px 0 20px; +} + +.hover_h:hover > a:nth-child(n+2){ + display: inherit; +} + +form.document textarea { + font-weight: bold; + min-height: 90px; + width: 100%; +} + +.pos_price, +form.document input.price, +form.document input.amount{ + max-width: 60px; + text-align: right; +} + +form.document .tax{ + min-width: 70px; +} +form.document .tax input{ + max-width: 40px; + text-align: right; +} + +td > h1{ + display: inline-block; + margin: 0 10px 0 0; +} + +.center, +.infos, +.errors, +.warnings{ + text-align: center; +} + +.infos span, +.errors span, +.warnings span{ + margin: 5px 0 0; + padding: 5px; + border-radius: 10px; + display: inline-block; +} + +.tags span{ + display: inline-block; + vertical-align: top; +} +.bookmark .share, +.bookmark .tags{ + display: inline-block; +} + +.bookmark form .share{ + height: 20px; + overflow: hidden; +} + +.bookmark form .share:hover{ + height: initial; +} + +fieldset.bookmark > fieldset{ + max-height: 14px; + overflow: hidden; +} + +fieldset.bookmark > fieldset.tags{ + max-height: unset; +} + +fieldset.bookmark > fieldset:hover{ + max-height: unset; +} +.bookmark>fieldset>a{ + word-wrap: break-word; + display: block; + min-width: auto; +} + +.bookmark>fieldset>a.button{ + display: inline-block; +} + +.copytext{ + position:fixed; + width: 100px; + left: -1000px; +} + +img[src*="pos=right"] { + float:right; + margin: 5px 0 5px 5px; +} + +img[src*="pos=left"] { + float:left; + margin: 5px 5px 5px 0; +} + +img[src*="width=100"]{ + max-width: 100px; +} +img[src*="width=200"]{ + max-width: 200px; +} +img[src*="width=300"]{ + max-width: 300px; +} +img[src*="width=400"]{ + max-width: 400px; +} +img[src*="width=500"]{ + max-width: 500px; +} +img[src*="width=600"]{ + max-width: 600px; +} +img[src*="width=700"]{ + max-width: 700px; +} +img[src*="width=800"]{ + max-width: 800px; +} +img[src*="width=900"]{ + max-width: 900px; +} +img[src*="width=50%"]{ + max-width: 50%; +} + +img[src*="width=33%"]{ + max-width: 33%; +} + +img[src$="width=25%"]{ + max-width: 25%; +} + +#announce{ + position: fixed; + bottom: 0; + right: 0; + padding: 3px 5px 0; + border-top-left-radius: 7px; +} + +fieldset.scrolling{ + overflow: scroll; + max-height: 80%; +} + +svg#gantt{ + max-width: unset; +} + +svg .row{ + fill: none; + pointer-events: all; +} + +svg .row:hover{ + fill: #333333; +} + +svg .duration{ + fill:rgba(255,0,255,0.4); + stroke:none; +} + +svg .schedule{ + fill:none; + stroke-width:1; + stroke: yellow; +} + +svg .start{ + stroke-dasharray: 10,30,40; +} + +svg .stop{ + stroke-dasharray: 50,30; +} + +svg text{ + stroke: none; + fill: red; +} + +div.search{ + display: inline-block; + max-width: 150px; +} + +div.search input, +div.search label{ + display: none; +} + +div.search:hover input, +div.search:hover label{ + display: initial; +} + +.note td.code { + width: 50%; +} + +.note td.code textarea { + min-height: 200px; +} + +.project-index td .users{ + max-height: 30px; + overflow: hidden; +} + +.project-index tr:hover td .users{ + max-height: none; +} + +.easylist fieldset a.button { + width: 80%; + padding: 30px; + text-align: center; +} + +#preview, +#preview-source{ + display: inline-block; + max-width: calc(50% - 20px); + vertical-align: bottom; +} + +table #preview, +table #preview-source{ + display: inherit; + max-width: unset; + vertical-align: inherit; +} + +#preview.loading{ + opacity: 0.2; +} + +.completed > a::before { + content: " ✓"; +} + +@media (max-width:1199px) { + *[hide="12"]{ + display: none; + } + table.document input{ + max-width: 100px; + } +} + +@media (max-width: 900px){ + *[hide="9"]{ + display: none; + } + table.document input{ + max-width: 60px; + } + table.document .tax input, + table.document input.amount{ + max-width: 25px; + } +} + +@media (max-width: 800px){ + *[hide="8"]{ + display: none; + } +} + +@media (max-width: 700px){ + *[hide="7"]{ + display: none; + } + fieldset.bookmark > fieldset{ + max-height: 50px; + } + #preview, + #preview-source{ + display: block; + max-width: unset; + } +} + +@media (max-width: 600px){ + *[hide="6"]{ + display: none; + } + + .easylist fieldset a.button { + width: 60%; + } +} +@media (max-width: 500px){ + *[hide="5"]{ + display: none; + } +} +@media (max-width: 400px){ + *[hide="4"]{ + display: none; + } +} +@media print{ + fieldset.note span.right, + #logo, #main_menu { + display: none; + } + fieldset.process, fieldset.database{ + page-break-after: always; + } + .export>fieldset{ + border: 0 none; + } +} diff --git a/legacy/src/main/resources/css/bloodshed/svg_colors.css b/legacy/src/main/resources/css/bloodshed/svg_colors.css new file mode 100644 index 0000000..361d1f8 --- /dev/null +++ b/legacy/src/main/resources/css/bloodshed/svg_colors.css @@ -0,0 +1,41 @@ +.arrow{ + stroke: red; +} +circle, ellipse, rect{ + stroke: black; +} +ellipse, +circle.process{ + fill: rgba(255,255,255,0.5); +} +rect.terminal{ + fill: white; +} +circle.connector{ + fill: rgba(0,0,0,0.05); + stroke: none; +} +circle.connector:hover{ + fill: rgba(0,0,0,0.6); +} + +#backdrop{ + fill: transparent; +} + +.arrow circle{ + stroke: none; + fill: rgba(128,128,128,0.5); +} +.arrow text{ + fill: black; + stroke: none; +} + +.arrow:hover circle{ + fill: rgba(255,0,0,0.3); +} + +.process text{ + fill: black; +} \ No newline at end of file diff --git a/legacy/src/main/resources/css/comfort/colors.css b/legacy/src/main/resources/css/comfort/colors.css new file mode 100644 index 0000000..389a122 --- /dev/null +++ b/legacy/src/main/resources/css/comfort/colors.css @@ -0,0 +1,76 @@ +body{ + background: #0f3a09; +} +a{ + color: #0c0061; +} + +code{ + background: #cccccc; + border-color: #0f3a09; +} + +.pending a{ + color: #45513a; +} +.open>a{ + color: #0f3a09; +} + +.completed>a:after{ + content: " ✓"; +} + +.canceled>a{ + color: #414141; +} + +li:hover > a, +a:hover{ + color: red; +} + +fieldset,table{ + background: rgba(255,255,255,0.49); +} + +legend{ + background: #82987f; +} + +.share, .share>legend{ + background:#8cff7e; +} + +.button{ + background: white; +} + +#announce a{ + color:black; +} + +table.diagram .step, +body > a.symbol { + background: white; +} + +.right a { + background: white; + color: red; +} + +.infos span{ + background: lime; +} +.warnings span{ + background: yellow; +} + +.errors span{ + background: orange; +} + +.search label{ + color: white; +} diff --git a/legacy/src/main/resources/css/comfort/style.css b/legacy/src/main/resources/css/comfort/style.css new file mode 100644 index 0000000..69c315a --- /dev/null +++ b/legacy/src/main/resources/css/comfort/style.css @@ -0,0 +1,526 @@ +@font-face { + font-family: "awesome"; + src: url("../fontawesome-webfont.woff"); +} +a{ + text-decoration:none; +} +body{ + margin-left: 160px; + margin-top: 25px; + font-family: sans-serif; + position: relative; +} +code{ + display: inline-block; + padding: 5px; + border: 1px solid; + border-radius: 5px; +} + +body > a.symbol { + padding: 5px; + border-radius: 5px; +} + +body > h2{ + color: #67a05f; +} + +body.user.login{ + width: 100%; + max-width: 400px; + margin: 0 auto; + text-align: center; +} +img#logo{ + position: fixed; + top: 10px; + right: 10px; + z-index: -1; +} + +blockquote{ + font-style: italic; +} + + + +#main_menu{ + position: fixed; + top:0; + left:0; + bottom:0; + width: 150px; +} + +#main_menu a{ + display: block; + text-align: center; + overflow: hidden; +} + +.hidden{ + display: none; +} + +td{ + position: relative; +} + +fieldset{ + position: relative; + margin-top: 5px; + vertical-align: top; +} + +.hover:hover .hidden{ + display: inherit; +} + +.button{ + padding:2px; + margin: 1px 0; + border-radius: 5px; + border: 1px solid black; + white-space: pre; + display: inline-block; +} + +.symbol{ + font-family: awesome; + font-size: 22px; +} + +.right{ + position: absolute; + right: 0; + top: 0; +} + +.right a { + border: 1px solid; + border-radius: 5px; + padding: 0 5px; +} + + +.right-fix{ + position: fixed; + right: 0; + top: 0; + overflow: hidden; + max-height: 25px; + border: 1px solid red; + border-radius: 5px; + background: white; + z-index: 10; +} + +.canceled{ + text-decoration: line-through +} + +.hover:hover{ + max-height: unset !important; + max-width: unset !important; +} + +fieldset textarea{ + width: 100%; + height: 200px; + font-size: 16px; +} +img{ + max-width: 100%; +} + +.infos { + margin: 5px; +} + +.errors span, +.infos span{ + margin: 2px; + padding: 5px; +} + +.copytext{ + position: fixed; + width: 90px; + left: -100px; +} + +.poll td>*{ + margin: 15px; + padding: 15px; +} + +.poll td.poll_status>*{ + margin: 5px; + padding: 5px; +} + +.poll td.poll_status>a{ + display: inline-block; +} + +.poll table{ + border-spacing: 0; +} + +.poll tr{ + border-spacing: 0; +} + +.poll td{ + border-style: solid; + border-width: 1px 0 0 0; + border-color: black; +} + +.poll .disabled{ + text-decoration: line-through; +} + +img[src*="pos=right"] { + float:right; + margin: 5px 0 5px 5px; +} + +img[src*="pos=left"] { + float:left; + margin: 5px 5px 5px 0; +} + +img[src*="width=100"]{ + max-width: 100px; +} +img[src*="width=200"]{ + max-width: 200px; +} +img[src*="width=300"]{ + max-width: 300px; +} +img[src*="width=400"]{ + max-width: 400px; +} +img[src*="width=500"]{ + max-width: 500px; +} +img[src*="width=600"]{ + max-width: 600px; +} +img[src*="width=700"]{ + max-width: 700px; +} +img[src*="width=800"]{ + max-width: 800px; +} +img[src*="width=900"]{ + max-width: 900px; +} +img[src*="width=50%"]{ + max-width: 50%; +} + +img[src*="width=33%"]{ + max-width: 33%; +} + +img[src$="width=25%"]{ + max-width: 25%; +} + +#announce{ + position: absolute; + right: 3px; + bottom: -40px; +} + +span.hover_h { + display: block; +} + +label{ + display: block; + position: relative; +} + +legend{ + padding: 0 5px; + border-radius: 5px; +} + +.search input { + margin: 5px 0 0 5px; + width: 62%; +} + +.search label input{ + width: 10px; +} + +.search label{ + display: none; +} + +.search:hover label{ + display: block; +} + +.search button{ + width: 40px; + font-size: 14px; + padding: 0; +} + +.share{ + height: 35px; + overflow: hidden; +} + +.share:hover{ + height: inherit; +} + +.bookmark textarea[name=comment]{ + max-height: 50px; +} + +.bookmark textarea[name=comment]:hover{ + max-height: unset; +} + +.bookmark fieldset input{ + width: 100%; +} + +.notes .note{ + border: 1px solid; + border-radius: 5px; +} + +.warnings span{ + background: yellow; +} + +.errors span{ + background: orange; +} + +.tasks li{ + margin: 5px; + padding-right: 80px; +} +.project-view{ + min-width: 100%; +} +.project-view span.hover_h{ + position: absolute; + right: 0; +} + +.note td.code { + width: 50%; +} + +.note td.code textarea { + min-height: 200px; + width: 100%; +} + +.add_positions > ul, +.requirements > ul { + max-height: 400px; + overflow: auto; +} + +td input, +table.vertical{ + width: 100%; +} + +.document td label{ + width: unset; +} + +.document.view .add_positions img{ + display: none; +} + +td input[type=checkbox]{ + width: unset; +} + +table.vertical span.right{ + position: fixed; + top: 25px; + left: 60px; + right: 5px; + text-align: right; +} + +img[src*="pos=right"] { + float:right; + margin: 5px 0 5px 5px; +} + +img[src*="pos=left"] { + float:left; + margin: 5px 5px 5px 0; +} + +img[src*="width=100"]{ + max-width: 100px; +} +img[src*="width=200"]{ + max-width: 200px; +} +img[src*="width=300"]{ + max-width: 300px; +} +img[src*="width=400"]{ + max-width: 400px; +} +img[src*="width=500"]{ + max-width: 500px; +} +img[src*="width=600"]{ + max-width: 600px; +} +img[src*="width=700"]{ + max-width: 700px; +} +img[src*="width=800"]{ + max-width: 800px; +} +img[src*="width=900"]{ + max-width: 900px; +} +img[src*="width=50%"]{ + max-width: 50%; +} + +img[src*="width=33%"]{ + max-width: 33%; +} + +img[src$="width=25%"]{ + max-width: 25%; +} + +#preview, +#preview-source{ + display: inline-block; + max-width: calc(50% - 20px); + vertical-align: bottom; +} + +table #preview, +table #preview-source{ + display: inherit; + max-width: unset; + vertical-align: inherit; +} + +#preview.loading{ + opacity: 0.2; +} + +.easylist fieldset a.button { + width: 70%; + display: inline-block; + text-align: center; + padding: 10px; +} + +@media (min-width: 1100px){ + .share{ + position: absolute; + right: 0; + top: 8px; + } +} + +@media (max-width: 1000px){ + *[hide="12"]{ + display: none; + } +} + +@media (max-width: 900px){ + *[hide="11"]{ + display: none; + } + #preview, + #preview-source{ + display: block; + max-width: unset; + } +} + +@media (max-width: 800px){ + *[hide="10"]{ + display: none; + } +} + +@media (max-width: 700px){ + *[hide="9"]{ + display: none; + } + body{ + margin-left: 50px; + margin-top: 60px; + } + #main_menu{ + max-width: 50px; + z-index: 10; + overflow: hidden; + background: inherit; + } + #main_menu:hover{ + max-width: unset; + } + #main_menu .button{ + padding: 6px 0; + } + .search button{ + display: none; + } + .search:hover button{ + display: inline; + } +} + +@media (max-width: 600px){ + *[hide="8"]{ + display: none; + } +} + +@media (max-width: 500px){ + *[hide="7"]{ + display: none; + } +} + +@media (max-width: 400px){ + *[hide="6"]{ + display: none; + } +} + +@media print{ + fieldset.note span.right, + #logo, #main_menu { + display: none; + } + fieldset.process, fieldset.database{ + page-break-after: always; + } + .export>fieldset{ + border: 0 none; + } +} diff --git a/legacy/src/main/resources/css/comfort/svg_colors.css b/legacy/src/main/resources/css/comfort/svg_colors.css new file mode 100644 index 0000000..79a44c7 --- /dev/null +++ b/legacy/src/main/resources/css/comfort/svg_colors.css @@ -0,0 +1,37 @@ +.arrow{ + stroke: blue; +} +circle, ellipse, rect{ + stroke: black; +} +ellipse, +circle.process{ + fill: rgba(255,255,255,0.5); +} +rect.terminal{ + fill: white; +} +circle.connector{ + fill: rgba(0,0,0,0.05); + stroke: none; +} +circle.connector:hover{ + fill: rgba(0,0,0,0.6); +} + +#backdrop{ + fill: transparent; +} + +.arrow circle{ + stroke: none; + fill: white; +} +.arrow text{ + fill: blue; + stroke: none; +} + +.arrow:hover circle{ + fill: rgba(0,0,255,0.3); +} diff --git a/legacy/src/main/resources/css/fontawesome-webfont.woff b/legacy/src/main/resources/css/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..839528cca03223e0ffa395073755a7cfb93917be GIT binary patch literal 86876 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�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%0DX`?L?5P)&`0TG^l|zGeUd&!pQg{yXX$hFdHMo< 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 + color: #888888; +} + +.completed>a, +.started>a{ + color: #53822c; +} + +.canceled>a{ + color: gray; +} + +tr{ + background-color: #dadada91; +} +tr:nth-child(2n+1){ + background-color: #b9b9b982; +} + +fieldset { + border-color: black; +} + +.button, +input, +button { + background-color: black; + color: #d3d3d3; +} +.hover{ + background-color: white; + border-color: black; +} + +form.invoice textarea { + background-color: black; + color: white; +} + +.infos span{ + background-color: #00ad00; + color: white; +} +.errors span{ + background-color: #ff9847; + color: white; +} + +.hit, +.warnings span{ + background-color: #ffff00; + color: black; +} + +#announce{ + background-color: white; +} + +#main_menu .button:hover { + color: white; + background-color: gray; +} + +tr:hover td{ + background-color: #edf9f9; +} + +code { + background-color: black; + color: lime; +} diff --git a/legacy/src/main/resources/css/winter/style.css b/legacy/src/main/resources/css/winter/style.css new file mode 100644 index 0000000..4119f16 --- /dev/null +++ b/legacy/src/main/resources/css/winter/style.css @@ -0,0 +1,597 @@ +@font-face { + font-family: "awesome"; + src: url("../fontawesome-webfont.woff"); +} +*{ + max-width:100%; + min-width:auto; +} +a{ + text-decoration: none; +} +body{ + font-family: sans-serif; +} +code { + display: inline-block; + padding: 5px; + margin: 5px 0; +} +textarea { + min-height: 60px; + width: 100%; + font-size: 16px; +} + +textarea:hover{ + min-height: 400px; + width: 100%; +} + +input[type=text]{ + width: 100%; +} + +td.connectors form input{ + width: 200px; +} + +img#logo{ + position: fixed; + top: 10px; + right: 10px; + z-index: -1; +} + +blockquote{ + font-style: italic; +} +#main_menu, +#main_menu form{ + display: block; +} + +#main_menu .button { + font-size: 12px; + font-weight: normal; + margin-top: 7px; + vertical-align: bottom; +} + +.hidden{ + display: none !important; +} + +.hover:hover .hidden{ + display: inherit !important; +} + +.emphasized{ + font-weight: bold; +} + +.add_positions, +.requirements{ + max-height: 60px; + max-width: 66%; + overflow: hidden; +} +.add_positions:hover, +.requirements:hover{ + max-height: 999999px; + max-width: 999999px; +} + +.add_positions > ul > li{ + max-height: 20px; + overflow: hidden; + padding-top: 20px; +} + +.add_positions > ul > li:hover{ + max-height: 999999px; +} + +fieldset.add.document:hover { + max-height: unset; +} + +fieldset.add.document { + max-height: 5px; + overflow: hidden; +} + +fieldset.options label, +.add_positions label span, +.poll_status label, +.requirements label{ + display: block; +} + +.tasks .canceled a, +.children .inactive, +.requirements .inactive, +.tasks .inactive{ + text-decoration: line-through; +} + +.tasks .navi a{ + display: inline-table; +} + +blockquote a, +p a, +.description a{ + text-decoration: underline; +} + +table { + border-collapse: collapse; +} +tr > *{ + padding: 5px 10px; +} + +label.street:after, +label.location::after { + content: "\a "; + white-space: pre; +} + +.poll.evaluate table tr:nth-child(n+2) th, +.poll.evaluate table td{ + text-align: right; +} + +.poll .disabled{ + text-decoration: line-through; +} + +.company div > fieldset, +.company > table{ + margin-right: 10px; + float: left; +} + +table.time h2{ + margin-right: 60px; +} + +.file label, +.document .dates label{ + display: block +} +.clear, +.document .header, +.document .tags{ + clear: both; +} + +fieldset { + border-radius: 10px; + border-width: 1px; +} + +.contacts fieldset, +.document .customer, +.document .document_type, +.document .sender, +.document .court, +.document .dates, +.document .template, +fieldset.del_note, +fieldset.login_service_list, +fieldset.userlist, +fieldset.document.list{ + float: left; +} + +.document .dates label{ + text-align: right; +} + +.button, +input, +button { + border: 0 none; + font-weight: bold; + margin: 0 2px; + padding: 3px; + display: inline-block; +} + +.change_state, +td.connectors button[type="submit"], +.prop_action, +input[type="submit"] { + clear: both; + float: right; +} + +.symbol{ + font-family: awesome; + font-size: 20px; + font-weight: normal; +} + +#main_menu .symbol{ + font-size: 14px; +} + +.right{ + float: right; + margin: 0 0 0 5px; +} + +.tasks .project { + font-weight: bold; +} + +.right-abs { + position: absolute; + right: 5px; + top: 5px; +} +.right-fix { + position: fixed; + right: 5px; + top: 5px; +} +.hover { + border-width: 1px; + border-style: solid; + border-radius: 5px; + max-height: 35px; + overflow: hidden; + z-index: 10; +} + + +.hover:hover { + max-height: unset; +} + +.hover_h > a:nth-child(n+2){ + display: none; +} + +.hover_h:hover { + padding: 5px 0 20px; +} + +.hover_h:hover > a:nth-child(n+2){ + display: inherit; +} + +form.document textarea { + font-weight: bold; + min-height: 90px; + width: 100%; +} + +.pos_price, +form.document input.price, +form.document input.amount{ + max-width: 60px; + text-align: right; +} + +form.document .tax{ + min-width: 70px; +} +form.document .tax input{ + max-width: 40px; + text-align: right; +} + +td > h1{ + display: inline-block; + margin: 0 10px 0 0; +} + +.center, +.infos, +.errors, +.warnings{ + text-align: center; +} + +.infos span, +.errors span, +.warnings span{ + margin: 5px 0 0; + padding: 5px; + border-radius: 10px; + display: inline-block; +} + +.tags span{ + display: inline-block; + vertical-align: top; +} +.bookmark .share, +.bookmark .tags{ + display: inline-block; +} + +.bookmark form .share{ + height: 20px; + overflow: hidden; +} + +.bookmark form .share:hover{ + height: initial; +} + +fieldset.bookmark > fieldset{ + max-height: 14px; + overflow: hidden; +} + +fieldset.bookmark > fieldset.tags{ + max-height: unset; +} + +fieldset.bookmark > fieldset:hover{ + max-height: unset; +} +.bookmark>fieldset>a{ + word-wrap: break-word; + display: block; + min-width: auto; +} + +.bookmark>fieldset>a.button{ + display: inline-block; +} + +.copytext{ + position:fixed; + width: 100px; + left: -1000px; +} + +img[src*="pos=right"] { + float:right; + margin: 5px 0 5px 5px; +} + +img[src*="pos=left"] { + float:left; + margin: 5px 5px 5px 0; +} + +img[src*="width=100"]{ + max-width: 100px; +} +img[src*="width=200"]{ + max-width: 200px; +} +img[src*="width=300"]{ + max-width: 300px; +} +img[src*="width=400"]{ + max-width: 400px; +} +img[src*="width=500"]{ + max-width: 500px; +} +img[src*="width=600"]{ + max-width: 600px; +} +img[src*="width=700"]{ + max-width: 700px; +} +img[src*="width=800"]{ + max-width: 800px; +} +img[src*="width=900"]{ + max-width: 900px; +} +img[src*="width=50%"]{ + max-width: 50%; +} + +img[src*="width=33%"]{ + max-width: 33%; +} + +img[src$="width=25%"]{ + max-width: 25%; +} + +#announce{ + position: fixed; + bottom: 0; + right: 0; + padding: 3px 5px 0; + border-top-left-radius: 7px; +} + +fieldset.scrolling{ + overflow: scroll; + max-height: 80%; +} + +svg#gantt{ + max-width: unset; +} + +svg .row{ + fill: none; + pointer-events: all; +} + +svg .row:hover{ + fill: #333333; +} + +svg .duration{ + fill:rgba(255,0,255,0.4); + stroke:none; +} + +svg .schedule{ + fill:none; + stroke-width:1; + stroke: yellow; +} + +svg .start{ + stroke-dasharray: 10,30,40; +} + +svg .stop{ + stroke-dasharray: 50,30; +} + +svg text{ + stroke: none; + fill: red; +} + +div.search{ + display: inline-block; + max-width: 150px; +} + +div.search input, +div.search label{ + display: none; +} + +div.search:hover input, +div.search:hover label{ + display: initial; +} + +.note td.code { + width: 50%; +} + +.note td.code textarea { + min-height: 200px; +} + +.project-index td .users{ + max-height: 30px; + overflow: hidden; +} + +.project-index tr:hover td .users{ + max-height: none; +} + +.easylist fieldset a.button { + width: 80%; + padding: 30px; + text-align: center; +} + +#preview, +#preview-source{ + display: inline-block; + max-width: calc(50% - 20px); + vertical-align: bottom; +} + +table #preview, +table #preview-source{ + display: inherit; + max-width: unset; + vertical-align: inherit; +} + +#preview.loading{ + opacity: 0.2; +} + +.completed > a::before { + content: " ✓"; +} + +@media (max-width:1199px) { + *[hide="12"]{ + display: none; + } + table.document input{ + max-width: 100px; + } +} + +@media (max-width: 1100px){ + *[hide="11"]{ + display: none; + } +} + +@media (max-width: 1000px){ + *[hide="10"]{ + display: none; + } +} + +@media (max-width: 900px){ + *[hide="9"]{ + display: none; + } + table.document input{ + max-width: 60px; + } + table.document .tax input, + table.document input.amount{ + max-width: 25px; + } +} + +@media (max-width: 800px){ + *[hide="8"]{ + display: none; + } +} + +@media (max-width: 700px){ + *[hide="7"]{ + display: none; + } + fieldset.bookmark > fieldset{ + max-height: 50px; + } + #preview, + #preview-source{ + display: block; + max-width: unset; + } +} + +@media (max-width: 600px){ + *[hide="6"]{ + display: none; + } + + .easylist fieldset a.button { + width: 60%; + } +} +@media (max-width: 500px){ + *[hide="5"]{ + display: none; + } +} +@media (max-width: 400px){ + *[hide="4"]{ + display: none; + } +} +@media print{ + fieldset.note span.right, + #logo, #main_menu { + display: none; + } + fieldset.process, fieldset.database{ + page-break-after: always; + } + .export>fieldset{ + border: 0 none; + } +} diff --git a/legacy/src/main/resources/css/winter/svg_colors.css b/legacy/src/main/resources/css/winter/svg_colors.css new file mode 100644 index 0000000..79a44c7 --- /dev/null +++ b/legacy/src/main/resources/css/winter/svg_colors.css @@ -0,0 +1,37 @@ +.arrow{ + stroke: blue; +} +circle, ellipse, rect{ + stroke: black; +} +ellipse, +circle.process{ + fill: rgba(255,255,255,0.5); +} +rect.terminal{ + fill: white; +} +circle.connector{ + fill: rgba(0,0,0,0.05); + stroke: none; +} +circle.connector:hover{ + fill: rgba(0,0,0,0.6); +} + +#backdrop{ + fill: transparent; +} + +.arrow circle{ + stroke: none; + fill: white; +} +.arrow text{ + fill: blue; + stroke: none; +} + +.arrow:hover circle{ + fill: rgba(0,0,255,0.3); +} diff --git a/legacy/src/main/resources/edit.cur b/legacy/src/main/resources/edit.cur new file mode 100644 index 0000000000000000000000000000000000000000..5c9d2cd7a91cc279d1db8f505cf608857f4fb3a1 GIT binary patch literal 4286 zcmds&F^>{a5XYZa7y|`X*H8#lCRkZm>Q+$k4J^b@U?^?mVxb`>wo=)N9ThDx5E+y_DWRph*8^C{Rw(1j5v#~NlZoeq~w3|Ja1Vpm;ETit{Y`BcI`>Qzs%)wtNDDc7mI~< z)nX6iMPt{V6#Tc%W^;v_y4&p@%eP&&P@Q zuN#eqMs3~i_vPMSC*j-dxcr#;r^tT}(S8mFgFnKr*XwfjFKe|LM|FDSgwH&$U5PP# zozLfQuupn;R;g6{^?I!*lZl-BFX%pW@coI_mmDg(#yE~Y91hvTb*Izuk*`~=mdySU zq8;r4NwIu#4}DNNxYyD{u~_tHvzcBlm%30W$o!=sWA}5k2hN$)Z_5UJnVA}mM)KUr z{I;gs{BTah|9UMYLoWHYx9*K6$#-C}{4=m+94G%wY$yMW>;wLp*?as9*dae7cEHb& z9q_mBe@}u8Ox|@~2Heb%c+VPxuZ;N(O`#ud@gpDyC6W)5=nK>qy@K9A51@iE?MKiH S=p6*a74#nZ0DXqOLSnbNV;gJ$ literal 0 HcmV?d00001 diff --git a/legacy/src/main/resources/js/common.js b/legacy/src/main/resources/js/common.js new file mode 100644 index 0000000..c7584a0 --- /dev/null +++ b/legacy/src/main/resources/js/common.js @@ -0,0 +1,171 @@ +const DEL = 'DELETE'; +const PATCH = 'PATCH'; +const POST = 'POST'; + +// remove all children from element, leave only the first children +function clearElement(key,keep = 1){ + var elem = key instanceof Element ? key : get(key); + while (elem.childElementCount > keep) elem.removeChild(elem.lastChild); + return elem; +} + +function create(type,code){ + var elem = document.createElement(type); + if (code) elem.innerHTML = code; + return elem; +} + +function disable(id){ + var elem = get(id); + elem.setAttribute('disabled','disabled'); + return elem; +} + +function enable(id){ + var elem = get(id); + elem.removeAttribute('disabled'); + return elem; +} + +function get(id){ + return document.getElementById(id); +} + +function getCookie(cname) { + let name = cname + "="; + let decodedCookie = decodeURIComponent(document.cookie); + let arr = decodedCookie.split(';'); + for(let i = 0; i -1) elems[i].style.display = 'none'; + } +} + +function isChecked(id){ + return get(id).checked; +} + +function menu(){ + fetch('').then(showMenu); +} + +// Replacement for Object.toEntries(…) +function paramsToObject(entries) { + const result = {}; + for(var key of entries) { // each 'entry' is a [key, value] tupple + result[key[0]] = key[1]; + } + return result; +} + +function redirect(page){ + window.location.href = page; +} + +function setText(id, text){ + var elem = get(id); + elem.innerHTML = text; + return elem; +} + +function setValue(id,newVal){ + var elem = get(id); + if (elem) elem.value = newVal; + return elem; +} + +function show(id){ + var elem = get(id); + if (elem) elem.style.display = ''; + return elem; +} + +function showAll(clazz){ + var elems = document.getElementsByTagName('*'), i; + for (i in elems) { + if((' ' + elems[i].className + ' ').indexOf(' ' + clazz + ' ') > -1) elems[i].style.display = ''; + } +} + +function showError(json){ + var message = json.message; + var box = show('error'); + box.innerHTML = message; + + var button = document.createElement('button'); + button.innerText = 'ok'; + button.addEventListener('click',() => hide('error')) + box.appendChild(button); + box.scrollIntoView(); +} + +async function showMenu(resp){ + if (resp.ok){ + var menu = get('main_menu'); + var json = await resp.json(); + var entries = json.entries; + entries.sort((a,b) => a.index - b.index); + for (var idx in entries){ + var entry = entries[idx]; + menu.insertAdjacentHTML('beforeend',''+entry.caption+''); + } + } +} + +function sortTableColumn(column){ + var table = column; + var columnIndex = [...column.parentNode.children].indexOf(column); + while (table.localName != 'table'){ + if (!table.parentNode) return; + table = table.parentNode; + } + var rows = Array.from(table.tBodies[0].rows); + var asc = table.getAttribute("data-sort-dir") !== "desc"; + table.setAttribute("data-sort-dir", asc ? "desc" : "asc"); + rows.sort(function(a, b) { + var cellA = a.cells[columnIndex].innerText.trim(); + var cellB = b.cells[columnIndex].innerText.trim(); + var numA = parseFloat(cellA); + var numB = parseFloat(cellB); + if (!isNaN(numA) && !isNaN(numB)) return asc ? numA - numB : numB - numA; + return asc ? cellA.localeCompare(cellB) : cellB.localeCompare(cellA); + }); + + // Append sorted rows back to the tbody + rows.forEach(function(row) { + table.tBodies[0].appendChild(row); + }); +} + +function spread(json,prefix){ + for (var key in json){ + var val = json[key]; + var id = prefix+"."+key; + if (typeof val === 'object'){ + spread(val,id); + continue; + } + if (typeof val === 'string') val = val.replaceAll("\n","
\n"); + var tag = get(id); + if (tag) tag.innerHTML = val; + } +} diff --git a/legacy/src/main/resources/js/jquery-3.2.1.min.js b/legacy/src/main/resources/js/jquery-3.2.1.min.js new file mode 100644 index 0000000..644d35e --- /dev/null +++ b/legacy/src/main/resources/js/jquery-3.2.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("