diff --git a/client/gulpfile.js b/client/gulpfile.js index 0937af7ee90..23fbd0ac9f3 100644 --- a/client/gulpfile.js +++ b/client/gulpfile.js @@ -13,16 +13,22 @@ const glob = require("glob"); const STATIC_PLUGIN_BUILD_IDS = [ "annotate_image", "chiraviz", + "cytoscape", + "drawrna", "editor", + "example", "heatmap/heatmap_default", "hyphyvision", + "jqplot/jqplot_bar", "media_player", "mvpapp", "ngl", + "nvd3/nvd3_bar", "openlayers", "openseadragon", "pv", "nora", + "venn", ]; const DIST_PLUGIN_BUILD_IDS = ["new_user"]; diff --git a/client/src/bundleEntries.js b/client/src/bundleEntries.js index 139d859a3d4..42ba563d815 100644 --- a/client/src/bundleEntries.js +++ b/client/src/bundleEntries.js @@ -76,20 +76,10 @@ export { default as async_save_text } from "utils/async-save-text"; // Previously "chart" import Client from "mvc/visualization/chart/chart-client"; -import Datasets from "mvc/visualization/chart/utilities/datasets"; -import Series from "mvc/visualization/chart/utilities/series"; -import Jobs from "mvc/visualization/chart/utilities/jobs"; - export function chart(options) { return new Client(options); } -export const chartUtilities = { - Datasets: Datasets, - Jobs: Jobs, - Series: Series, -}; - export { initMasthead } from "components/Masthead/initMasthead"; export { panelManagement } from "onload/globalInits/panelManagement"; export { mountMakoTags } from "components/Tags"; diff --git a/client/src/mvc/visualization/chart/utilities/datasets.js b/client/src/mvc/visualization/chart/utilities/datasets.js deleted file mode 100644 index 08a96b24710..00000000000 --- a/client/src/mvc/visualization/chart/utilities/datasets.js +++ /dev/null @@ -1,176 +0,0 @@ -/** This class handles, formats and caches datasets. */ -import _ from "underscore"; -import { getAppRoot } from "onload/loadConfig"; -import Utils from "utils/utils"; - -/** Assists in assigning the viewport panels */ -var requestPanels = function (options) { - var process = options.process; - var chart = options.chart; - var render = options.render; - var targets = options.targets; - var dataset_id = options.dataset_id || options.chart.get("dataset_id"); - var dataset_groups = options.dataset_groups || options.chart.groups; - request({ - chart: chart, - dataset_id: dataset_id, - dataset_groups: dataset_groups, - success: function (result) { - try { - if (targets.length == result.length) { - var valid = true; - for (var group_index in result) { - var group = result[group_index]; - if (!render(targets[group_index], [group])) { - valid = false; - break; - } - } - if (valid) { - chart.state("ok", "Multi-panel chart drawn."); - } - } else if (targets.length == 1) { - if (render(targets[0], result)) { - chart.state("ok", "Chart drawn."); - } - } else { - chart.state("failed", "Invalid panel count."); - } - process.resolve(); - } catch (err) { - console.debug("FAILED: tabular-utilities::panelHelper() - " + err); - chart.state("failed", err); - process.reject(); - } - }, - }); -}; - -/** Fills request dictionary with data from cache/response */ -var _cache = {}; -var request = function (options) { - var groups = options.dataset_groups; - var dataset_id = options.dataset_id; - // identify columns needed to fulfill request - var column_list = []; - groups.each(function (group) { - _.each(group.get("__data_columns"), function (column_def, column_name) { - var column = group.get(column_name); - var block_id = _block_id(dataset_id, column); - if ( - column_list.indexOf(column) === -1 && - !_cache[block_id] && - column != "auto" && - column != "zero" && - column !== undefined - ) { - column_list.push(column); - } - }); - }); - if (column_list.length === 0) { - _fillFromCache(options); - return; - } - // Fetch data columns into dataset object - Utils.get({ - url: getAppRoot() + "api/datasets/" + dataset_id, - data: { - data_type: "raw_data", - provider: "dataset-column", - indeces: column_list.toString(), - }, - success: function (response) { - var column_length = column_list.length; - var results = new Array(column_length); - for (let i = 0; i < results.length; i++) { - results[i] = []; - } - for (const i in response.data) { - var row = response.data[i]; - for (const j in row) { - var v = row[j]; - if (v !== undefined && v != 2147483647 && j < column_length) { - results[j].push(v); - } - } - } - console.debug("tabular-datasets::_fetch() - Fetching complete."); - for (const i in results) { - var column = column_list[i]; - var block_id = _block_id(dataset_id, column); - _cache[block_id] = results[i]; - } - _fillFromCache(options); - }, - }); -}; - -/** Fill data from cache */ -var _fillFromCache = function (options) { - var groups = options.dataset_groups; - var dataset_id = options.dataset_id; - console.debug("tabular-datasets::_fillFromCache() - Filling request from cache."); - var limit = 0; - groups.each(function (group) { - _.each(group.get("__data_columns"), function (column_def, column_name) { - var column = group.get(column_name); - var block_id = _block_id(dataset_id, column); - var column_data = _cache[block_id]; - if (column_data) { - limit = Math.max(limit, column_data.length); - } - }); - }); - if (limit === 0) { - console.debug("tabular-datasets::_fillFromCache() - No data available."); - if (options.chart) { - options.chart.state("failed", "No data available."); - } - } - var results = []; - groups.each(function (group, group_index) { - var dict = Utils.merge({ key: group_index + ":" + group.get("key"), values: [] }, group.attributes); - for (let j = 0; j < limit; j++) { - dict.values[j] = { x: parseInt(j) }; - } - results.push(dict); - }); - groups.each(function (group, group_index) { - var values = results[group_index].values; - _.each(group.get("__data_columns"), function (column_def, column_name) { - var column = group.get(column_name); - switch (column) { - case "auto": - for (let j = 0; j < limit; j++) { - values[j][column_name] = parseInt(j); - } - break; - case "zero": - for (let j = 0; j < limit; j++) { - values[j][column_name] = 0; - } - break; - default: - var block_id = _block_id(dataset_id, column); - var column_data = _cache[block_id]; - for (let j = 0; j < limit; j++) { - var value = values[j]; - var v = column_data[j]; - if (isNaN(v) && !column_def.is_label) { - v = 0; - } - value[column_name] = v; - } - } - }); - }); - options.success(results); -}; - -/** Get block id */ -var _block_id = function (dataset_id, column) { - return dataset_id + "_" + "_" + column; -}; - -export default { request: request, requestPanels: requestPanels }; diff --git a/client/src/mvc/visualization/chart/utilities/jobs.js b/client/src/mvc/visualization/chart/utilities/jobs.js deleted file mode 100644 index 3b9dce7aaf3..00000000000 --- a/client/src/mvc/visualization/chart/utilities/jobs.js +++ /dev/null @@ -1,158 +0,0 @@ -/** This class handles job submissions to the Galaxy API. */ -import _ from "underscore"; -import { getAppRoot } from "onload/loadConfig"; -import Utils from "utils/utils"; -import { getGalaxyInstance } from "app"; - -/** Time to wait before refreshing to check if job has completed */ -const WAITTIME = 1000; - -/** build job dictionary */ -var requestCharts = function (chart, module) { - var settings_string = ""; - var columns_string = ""; - var group_index = 0; - for (var key in chart.settings.attributes) { - var settings_value = chart.settings.get(key); - _.each( - [ - [" ", " "], - [",", ","], - [":", ":"], - ], - function (pair) { - settings_value = settings_value.replace(new RegExp(pair[0], "g"), pair[1]); - } - ); - settings_string += key + ":" + settings_value + ", "; - } - settings_string = settings_string.substring(0, settings_string.length - 2); - chart.groups.each(function (group) { - group_index++; - _.each(group.get("__data_columns"), function (data_columns, name) { - columns_string += name + "_" + group_index + ":" + (parseInt(group.get(name)) + 1) + ", "; - }); - }); - columns_string = columns_string.substring(0, columns_string.length - 2); - return { - tool_id: "toolshed.g2.bx.psu.edu/repos/iuc/charts/charts/1.0.1", - inputs: { - input: { - id: chart.get("dataset_id"), - src: "hda", - }, - module: module, - columns: columns_string, - settings: settings_string, - }, - }; -}; - -/** Submit job request to charts tool */ -var request = function (chart, parameters, success, error) { - chart.state("wait", "Requesting job results..."); - if (chart.get("modified") && chart.get("dataset_id_job")) { - Utils.request({ - type: "PUT", - url: getAppRoot() + "api/histories/none/contents/" + chart.get("dataset_id_job"), - data: { deleted: true }, - success: () => { - refreshHdas(); - }, - }); - chart.set("dataset_id_job", null); - chart.set("modified", false); - } - if (chart.get("dataset_id_job")) { - wait(chart, success, error); - } else { - chart.state("wait", "Sending job request..."); - Utils.request({ - type: "POST", - url: getAppRoot() + "api/tools", - data: parameters, - success: function (response) { - if (!response.outputs || response.outputs.length === 0) { - chart.state("failed", "Job submission failed. No response."); - if (error) { - error(); - } - } else { - refreshHdas(); - var job = response.outputs[0]; - chart.state( - "wait", - "Your job has been queued. You may close the browser window. The job will run in the background." - ); - chart.set("dataset_id_job", job.id); - chart.save(); - wait(chart, success, error); - } - }, - error: function (response) { - var message = ""; - if (response && response.message && response.message.data && response.message.data.input) { - message = response.message.data.input + "."; - } - chart.state( - "failed", - "This visualization requires the '" + - parameters.tool_id + - "' tool. Please make sure it is installed. " + - message - ); - if (error) { - error(); - } - }, - }); - } -}; - -/** Request job details */ -var wait = function (chart, success, error) { - Utils.request({ - type: "GET", - url: getAppRoot() + "api/datasets/" + chart.get("dataset_id_job"), - data: {}, - success: function (dataset) { - var ready = false; - switch (dataset.state) { - case "ok": - chart.state("wait", "Job completed successfully..."); - if (success) { - success(dataset); - } - ready = true; - break; - case "error": - chart.state("failed", "Job has failed. Please check the history for details."); - if (error) { - error(dataset); - } - ready = true; - break; - case "running": - chart.state( - "wait", - "Your job is running in the background and you may close the browser tab. Results will be available in your saved visualizations list." - ); - } - if (!ready) { - window.setTimeout(function () { - wait(chart, success, error); - }, WAITTIME); - } - }, - }); -}; - -/** Refresh history panel */ -var refreshHdas = function () { - const Galaxy = getGalaxyInstance(); - if (Galaxy && Galaxy.currHistoryPanel) { - Galaxy.currHistoryPanel.refreshContents(); - } -}; - -export default { request: request, requestCharts: requestCharts }; diff --git a/client/src/mvc/visualization/chart/utilities/series.js b/client/src/mvc/visualization/chart/utilities/series.js deleted file mode 100644 index 2a48bf5faf0..00000000000 --- a/client/src/mvc/visualization/chart/utilities/series.js +++ /dev/null @@ -1,227 +0,0 @@ -import _ from "underscore"; -import * as d3 from "d3"; - -/** Get domain boundaries value */ -function getDomains(groups, keys) { - function _apply(operator, key) { - let value; - for (const group_index in groups) { - const value_sub = d3[operator](groups[group_index].values, function (d) { - return d[key]; - }); - value = value === undefined ? value_sub : Math[operator](value, value_sub); - } - return value; - } - var result = {}; - for (var index in keys) { - var key = keys[index]; - result[key] = { - min: _apply("min", key), - max: _apply("max", key), - }; - } - return result; -} - -/** Default series maker */ -function makeSeries(groups, keys) { - var plot_data = []; - for (var group_index in groups) { - var group = groups[group_index]; - var data = []; - for (var value_index in group.values) { - var point = []; - if (keys) { - for (var key_index in keys) { - const column_index = keys[key_index]; - point.push(group.values[value_index][column_index]); - } - } else { - for (const column_index in group.values[value_index]) { - point.push(group.values[value_index][column_index]); - } - } - data.push(point); - } - plot_data.push(data); - } - return plot_data; -} - -/** Default category maker */ -function makeCategories(groups, column_keys) { - var array = {}; - var data_columns = groups[0].__data_columns; - _.each(column_keys, function (key) { - const data_entry = data_columns && data_columns[key]; - if (data_entry && data_entry.is_label) { - array[key] = []; - } - }); - if (groups && groups[0]) { - _.each(groups[0].values, function (value_dict) { - for (var key in array) { - array[key].push(String(value_dict[key])); - } - }); - } - mapCategories(array, groups); - return { array: array }; -} - -/** Apply default mapping index all values contained in label columns (for all groups) */ -function mapCategories(array, groups) { - _.each(groups, function (group) { - _.each(group.values, function (value_dict, i) { - for (var key in array) { - value_dict[key] = parseInt(i); - } - }); - }); -} - -/** Category make for unique category labels */ -function makeUniqueCategories(groups, with_index) { - var categories = {}; - var array = {}; - var counter = {}; - var data_columns = groups[0].__data_columns; - _.each(data_columns, function (column_def, key) { - if (column_def.is_label) { - categories[key] = {}; - array[key] = []; - counter[key] = 0; - } - }); - // index all values contained in label columns (for all groups) - for (var i in groups) { - var group = groups[i]; - for (var j in group.values) { - var value_dict = group.values[j]; - for (var key in categories) { - var value = String(value_dict[key]); - if (categories[key][value] === undefined) { - categories[key][value] = counter[key]; - array[key].push(with_index ? [counter[key], value] : value); - counter[key]++; - } - } - } - } - // convert group values into category indeces - for (const i in groups) { - const group = groups[i]; - for (const j in group.values) { - const value_dict = group.values[j]; - for (const key in categories) { - const value = String(value_dict[key]); - value_dict[key] = categories[key][value]; - } - } - } - return { - categories: categories, - array: array, - counter: counter, - }; -} - -/** Make axis */ -function makeTickFormat(options) { - var type = options.type; - var precision = options.precision; - var categories = options.categories; - var formatter = options.formatter; - if (type == "hide") { - formatter(function () { - return ""; - }); - } else if (type == "auto") { - if (categories) { - formatter(function (value) { - return categories[value] || ""; - }); - } - } else { - var d3format = function (d) { - switch (type) { - case "s": - var prefix = d3.formatPrefix(d); - return prefix.scale(d).toFixed() + prefix.symbol; - default: - return d3.format("." + precision + type)(d); - } - }; - if (categories) { - formatter(function (value) { - var label = categories[value]; - if (label) { - if (isNaN(label)) { - return label; - } else { - try { - return d3format(label); - } catch (err) { - return label; - } - } - } else { - return ""; - } - }); - } else { - formatter(function (value) { - return d3format(value); - }); - } - } -} - -/** Add zoom handler */ -function addZoom(options) { - var scaleExtent = 100; - var yAxis = options.yAxis; - var xAxis = options.xAxis; - var xDomain = options.xDomain || xAxis.scale().domain; - var yDomain = options.yDomain || yAxis.scale().domain; - var redraw = options.redraw; - var svg = options.svg; - var xScale = xAxis.scale(); - var yScale = yAxis.scale(); - var x_boundary = xScale.domain().slice(); - var y_boundary = yScale.domain().slice(); - var d3zoom = d3.behavior.zoom(); - xScale.nice(); - yScale.nice(); - function fixDomain(domain, boundary) { - domain[0] = Math.min(Math.max(domain[0], boundary[0]), boundary[1] - boundary[1] / scaleExtent); - domain[1] = Math.max(boundary[0] + boundary[1] / scaleExtent, Math.min(domain[1], boundary[1])); - return domain; - } - function zoomed() { - yDomain(fixDomain(yScale.domain(), y_boundary)); - xDomain(fixDomain(xScale.domain(), x_boundary)); - redraw(); - } - function unzoomed() { - xDomain(x_boundary); - yDomain(y_boundary); - redraw(); - d3zoom.scale(1); - d3zoom.translate([0, 0]); - } - d3zoom.x(xScale).y(yScale).scaleExtent([1, scaleExtent]).on("zoom", zoomed); - svg.call(d3zoom).on("dblclick.zoom", unzoomed); - return d3zoom; -} - -export default { - makeCategories: makeCategories, - makeUniqueCategories: makeUniqueCategories, - makeSeries: makeSeries, - getDomains: getDomains, - mapCategories: mapCategories, - makeTickFormat: makeTickFormat, - addZoom: addZoom, -}; diff --git a/client/src/mvc/visualization/chart/views/settings.js b/client/src/mvc/visualization/chart/views/settings.js index be5a11818cd..3889893269f 100644 --- a/client/src/mvc/visualization/chart/views/settings.js +++ b/client/src/mvc/visualization/chart/views/settings.js @@ -17,18 +17,6 @@ export default Backbone.View.extend({ render: function () { var self = this; var inputs = Utils.clone(this.chart.plugin.settings) || []; - var panel_option = this.chart.plugin.specs.use_panels; - if (panel_option == "optional") { - inputs.push({ - name: "__use_panels", - type: "boolean", - label: "Use multi-panels", - help: "Would you like to separate your data into individual panels?", - value: false, - }); - } else { - this.chart.settings.set("__use_panels", panel_option == "yes" ? "true" : "false"); - } this.$el.empty(); if (inputs.length > 0) { visitInputs(inputs, function (input, name) { diff --git a/client/src/mvc/visualization/chart/views/viewer.js b/client/src/mvc/visualization/chart/views/viewer.js index e8ac3d29446..1e2e72eee14 100644 --- a/client/src/mvc/visualization/chart/views/viewer.js +++ b/client/src/mvc/visualization/chart/views/viewer.js @@ -5,6 +5,7 @@ import $ from "jquery"; import Backbone from "backbone"; import Utils from "utils/utils"; +import { getAppRoot } from "onload/loadConfig"; export default Backbone.View.extend({ initialize: function (app, options) { @@ -12,6 +13,7 @@ export default Backbone.View.extend({ this.app = app; this.chart = this.app.chart; this.options = options; + this.$container = $("
").css("height", "100%").attr("id", "charts-container"); this.setElement( $("
") .addClass("charts-viewer") @@ -21,12 +23,12 @@ export default Backbone.View.extend({ .append($("").addClass("icon")) .append($("").addClass("text")) ) + .append(this.$container) ); this.$info = this.$(".info"); this.$icon = this.$(".icon"); this.$text = this.$(".text"); this._fullscreen(this.$el, 20); - this._createContainer("div"); this.chart.on("redraw", function (confirmed) { if (!self.chart.get("modified") || !self._asBoolean(self.chart.plugin.specs.confirm) || confirmed) { self.app.deferred.execute(function (process) { @@ -79,29 +81,17 @@ export default Backbone.View.extend({ }); }, - /** A chart may contain multiple sub charts/containers which are created here */ - _createContainer: function (tag, n) { - tag = tag || "div"; - n = n || 1; - this.$(".charts-viewer-container").remove(); - this.targets = []; - for (var i = 0; i < n; i++) { - var container_id = Utils.uid(); - var container_el = $("
") - .addClass("charts-viewer-container") - .width(parseInt(100 / n) + "%") - .append($("<" + tag + " class='charts-viewer-canvas' />").attr("id", container_id)); - this.$el.append(container_el); - this.targets.push(container_id); - } - }, - /** Draws a new chart by loading and executing the corresponding chart wrapper */ _draw: function (process, chart) { - var n_panels = this._asBoolean(chart.settings.get("__use_panels")) ? chart.groups.length : 1; - this._createContainer(chart.plugin.specs.tag, n_panels); chart.set("date", Utils.time()); chart.state("wait", "Please wait..."); - this.app.chart_load({ process: process, chart: chart, dataset: this.app.dataset, targets: this.targets }); + this.$container.empty(); + this.app.chart_load({ + process: process, + chart: chart, + target: "charts-container", + dataset: this.app.dataset, + root: getAppRoot(), + }); }, }); diff --git a/config/plugins/visualizations/annotate_image/package.json b/config/plugins/visualizations/annotate_image/package.json index 83c6fe6d2f7..10db5307044 100644 --- a/config/plugins/visualizations/annotate_image/package.json +++ b/config/plugins/visualizations/annotate_image/package.json @@ -18,6 +18,8 @@ "underscore": "^1.8.3" }, "scripts": { - "build": "parcel build src/script.js -d static --no-source-maps" + "build": "yarn build-css && yarn build-js", + "build-css": "cp 'node_modules/jquery-contextmenu/dist/jquery.contextMenu.css' 'static/'", + "build-js": "parcel build src/script.js -d static --no-source-maps" } } diff --git a/config/plugins/visualizations/annotate_image/src/script.js b/config/plugins/visualizations/annotate_image/src/script.js index a2f1492e5a4..2b031ad8295 100644 --- a/config/plugins/visualizations/annotate_image/src/script.js +++ b/config/plugins/visualizations/annotate_image/src/script.js @@ -54,417 +54,416 @@ const generateUUID = function() { return uuid; }; -_.extend(window.bundleEntries || {}, { - load: function(opt) { - const chart = opt.chart; - const dataset = opt.dataset; - const defaults = { color: "red", width: 4, opacity: 0.5 }; - $.fn.createCanvas = function(options) { - let settings = $.extend({}, defaults, options || {}); - const self = this; +window.bundleEntries = window.bundleEntries || {}; +window.bundleEntries.load = function (opt) { + const chart = opt.chart; + const dataset = opt.dataset; + const defaults = { color: "red", width: 4, opacity: 0.5 }; + $.fn.createCanvas = function(options) { + let settings = $.extend({}, defaults, options || {}); + const self = this; - this.setOptions = function(options) { - settings = $.extend(settings, options); - }; + this.setOptions = function(options) { + settings = $.extend(settings, options); + }; - $(document).ready(function() { - $(self).each(function(eachIndex, eachItem) { - self.paths = []; - const img = eachItem; - // Get a reference to the canvas object - const canvas = $("") - .attr({ - width: options.img_width + "px", - height: options.img_height + "px" - }) - .addClass("image-canvas") - .css({ - position: "absolute", - top: "0px", - left: "0px" - }); - $(img).after(canvas); - $(img).data("paths", []); - // Create an empty project and a view for the canvas - paper.setup(canvas[0]); - canvas[0].width = options.img_width; - canvas[0].height = options.img_height; - - $(canvas).mouseenter(function() { - paper.projects[eachIndex].activate(); + $(document).ready(function() { + $(self).each(function(eachIndex, eachItem) { + self.paths = []; + const img = eachItem; + // Get a reference to the canvas object + const canvas = $("") + .attr({ + width: options.img_width + "px", + height: options.img_height + "px" + }) + .addClass("image-canvas") + .css({ + position: "absolute", + top: "0px", + left: "0px" }); - // Create a simple drawing tool: - const tool = new paper.Tool(); + $(img).after(canvas); + $(img).data("paths", []); + // Create an empty project and a view for the canvas + paper.setup(canvas[0]); + canvas[0].width = options.img_width; + canvas[0].height = options.img_height; - tool.onMouseMove = function(event) { - if (!$(".context-menu-list").is(":visible")) { - paper.project.activeLayer.selected = false; - self.setPenColor(settings.color); - if (event.item) { - event.item.selected = true; - selectedItem = event.item; - self.setCursorHandOpen(); - } else { - selectedItem = null; + $(canvas).mouseenter(function() { + paper.projects[eachIndex].activate(); + }); + // Create a simple drawing tool: + const tool = new paper.Tool(); + + tool.onMouseMove = function(event) { + if (!$(".context-menu-list").is(":visible")) { + paper.project.activeLayer.selected = false; + self.setPenColor(settings.color); + if (event.item) { + event.item.selected = true; + selectedItem = event.item; + self.setCursorHandOpen(); + } else { + selectedItem = null; + } + } + }; + + tool.onMouseDown = function(event) { + switch (event.event.button) { + // leftclick + case 0: + // If we produced a path before, deselect it: + if (path) { + path.selected = false; } - } - }; - tool.onMouseDown = function(event) { - switch (event.event.button) { - // leftclick - case 0: - // If we produced a path before, deselect it: - if (path) { - path.selected = false; + path = new paper.Path(); + path.data.id = generateUUID(); + path.strokeColor = settings.color; + path.strokeWidth = settings.width; + path.opacity = settings.opacity; + break; + // rightclick + case 2: + break; + } + }; + + tool.onMouseDrag = function(event) { + switch (event.event.button) { + // leftclick + case 0: + // Every drag event, add a point to the path at the current + // position of the mouse: + if (selectedItem) { + if (!mouseDownPoint) { + mouseDownPoint = selectedItem.position; } + self.setCursorHandClose(); + selectedItem.position = new paper.Point( + selectedItem.position.x + event.delta.x, + selectedItem.position.y + event.delta.y + ); + } else if (path) { + path.add(event.point); + } + break; + // rightclick + case 2: + break; + } + }; - path = new paper.Path(); - path.data.id = generateUUID(); - path.strokeColor = settings.color; - path.strokeWidth = settings.width; - path.opacity = settings.opacity; - break; - // rightclick - case 2: - break; - } - }; - - tool.onMouseDrag = function(event) { - switch (event.event.button) { - // leftclick - case 0: - // Every drag event, add a point to the path at the current - // position of the mouse: - if (selectedItem) { - if (!mouseDownPoint) { - mouseDownPoint = selectedItem.position; - } - self.setCursorHandClose(); - selectedItem.position = new paper.Point( - selectedItem.position.x + event.delta.x, - selectedItem.position.y + event.delta.y - ); - } else if (path) { - path.add(event.point); - } - break; - // rightclick - case 2: - break; - } - }; - - tool.onMouseUp = function(event) { - switch (event.event.button) { - // leftclick - case 0: - if (selectedItem) { - if (mouseDownPoint) { - const selectedItemId = selectedItem.id; - const draggingStartPoint = { x: mouseDownPoint.x, y: mouseDownPoint.y }; - CommandManager.execute({ - execute: function() { - //item was already moved, so do nothing - }, - unexecute: function() { - $(paper.project.activeLayer.children).each(function(index, item) { - if (item.id == selectedItemId) { - if (item.segments) { - new paper.Point( - (item.segments[item.segments.length - 1].point.x - - item.segments[0].point.x) / - 2, - (item.segments[item.segments.length - 1].point.y - - item.segments[0].point.y) / - 2 - ); - item.position = new paper.Point( - draggingStartPoint.x, - draggingStartPoint.y - ); - } else { - item.position = draggingStartPoint; - } - return false; - } - }); - } - }); - mouseDownPoint = null; - } - } else { - // When the mouse is released, simplify it: - path.simplify(); - path.remove(); - const strPath = path.exportJSON({ asString: true }); - const uid = generateUUID(); + tool.onMouseUp = function(event) { + switch (event.event.button) { + // leftclick + case 0: + if (selectedItem) { + if (mouseDownPoint) { + const selectedItemId = selectedItem.id; + const draggingStartPoint = { x: mouseDownPoint.x, y: mouseDownPoint.y }; CommandManager.execute({ execute: function() { - path = new paper.Path(); - path.importJSON(strPath); - path.data.uid = uid; + //item was already moved, so do nothing }, unexecute: function() { $(paper.project.activeLayer.children).each(function(index, item) { - if (item.data && item.data.uid) { - if (item.data.uid == uid) { - item.remove(); + if (item.id == selectedItemId) { + if (item.segments) { + new paper.Point( + (item.segments[item.segments.length - 1].point.x - + item.segments[0].point.x) / + 2, + (item.segments[item.segments.length - 1].point.y - + item.segments[0].point.y) / + 2 + ); + item.position = new paper.Point( + draggingStartPoint.x, + draggingStartPoint.y + ); + } else { + item.position = draggingStartPoint; } + return false; } }); } }); + mouseDownPoint = null; } - break; - // rightclick - case 2: - contextPoint = event.point; - //Unused? - //contextSelectedItemId = selectedItem ? selectedItem.data.id : ""; - break; - } - }; - - tool.onKeyUp = function(event) { - if (selectedItem) { - // When a key is released, set the content of the text item: - if (selectedItem.content) { - if (event.key == "backspace") selectedItem.content = selectedItem.content.slice(0, -1); } else { - selectedItem.content = selectedItem.content.replace("", ""); - if (event.key == "space") selectedItem.content += " "; - else if (event.key.length == 1) selectedItem.content += event.key; + // When the mouse is released, simplify it: + path.simplify(); + path.remove(); + const strPath = path.exportJSON({ asString: true }); + const uid = generateUUID(); + CommandManager.execute({ + execute: function() { + path = new paper.Path(); + path.importJSON(strPath); + path.data.uid = uid; + }, + unexecute: function() { + $(paper.project.activeLayer.children).each(function(index, item) { + if (item.data && item.data.uid) { + if (item.data.uid == uid) { + item.remove(); + } + } + }); + } + }); } + break; + // rightclick + case 2: + contextPoint = event.point; + //Unused? + //contextSelectedItemId = selectedItem ? selectedItem.data.id : ""; + break; + } + }; + + tool.onKeyUp = function(event) { + if (selectedItem) { + // When a key is released, set the content of the text item: + if (selectedItem.content) { + if (event.key == "backspace") selectedItem.content = selectedItem.content.slice(0, -1); + } else { + selectedItem.content = selectedItem.content.replace("", ""); + if (event.key == "space") selectedItem.content += " "; + else if (event.key.length == 1) selectedItem.content += event.key; + } + } + }; + paper.view.draw(); + }); + }); + + let path; + let contextPoint; + //let contextSelectedItemId; + let selectedItem; + let mouseDownPoint; + this.downloadCanvas = function(canvas, filename) { + /// create an "off-screen" anchor tag + const lnk = document.createElement("a"); + + /// the key here is to set the download attribute of the a tag + lnk.download = filename; + + /// convert canvas content to data-uri for link. When download + /// attribute is set the content pointed to by link will be + /// pushed as "download" in HTML5 capable browsers + lnk.href = canvas.toDataURL(); + + /// create a "fake" click-event to trigger the download + if (document.createEvent) { + const e = document.createEvent("MouseEvents"); + e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + lnk.dispatchEvent(e); + } else if (lnk.fireEvent) { + lnk.fireEvent("onclick"); + } + }; + + this.download = function() { + const canvas = paper.project.activeLayer.view.element; + const img = $(canvas)[0]; + const mergeCanvas = $("").attr({ + width: img.width, + height: img.height + }); + const mergedContext = mergeCanvas[0].getContext("2d"); + mergedContext.clearRect(0, 0, img.width, img.height); + mergedContext.drawImage(img, 0, 0); + mergedContext.drawImage(canvas, 0, 0); + self.downloadCanvas(mergeCanvas[0], "only-annotations.png"); + + // create canvas for original and annotations + const annotated_img = $(canvas) + .parent() + .find("img")[0]; + const mergeCanvasAnnotated = $("").attr({ + width: $(annotated_img).width(), + height: $(annotated_img).height() + }); + const mergedContextAnnotated = mergeCanvasAnnotated[0].getContext("2d"); + mergedContextAnnotated.clearRect(0, 0, $(annotated_img).width(), $(annotated_img).height()); + mergedContextAnnotated.drawImage(annotated_img, 0, 0); + mergedContextAnnotated.drawImage(canvas, 0, 0); + self.downloadCanvas(mergeCanvasAnnotated[0], "original-with-annotations.png"); + }; + + this.setText = function() { + const uid = generateUUID(); + const pos = contextPoint; + CommandManager.execute({ + execute: function() { + const TXT_DBL_CLICK = "<>"; + const txt = TXT_DBL_CLICK; + const text = new paper.PointText(pos); + text.content = txt; + text.fillColor = settings.color; + text.fontSize = 14; + text.fontFamily = "sans-serif"; + text.data.uid = uid; + text.opacity = settings.opacity; + text.onDoubleClick = function(event) { + if (this.className == "PointText") { + const txt = window.prompt("Type in your text", this.content.replace(TXT_DBL_CLICK, "")); + if (txt.length > 0) this.content = txt; } }; - paper.view.draw(); - }); - }); - - let path; - let contextPoint; - //let contextSelectedItemId; - let selectedItem; - let mouseDownPoint; - this.downloadCanvas = function(canvas, filename) { - /// create an "off-screen" anchor tag - const lnk = document.createElement("a"); - - /// the key here is to set the download attribute of the a tag - lnk.download = filename; - - /// convert canvas content to data-uri for link. When download - /// attribute is set the content pointed to by link will be - /// pushed as "download" in HTML5 capable browsers - lnk.href = canvas.toDataURL(); - - /// create a "fake" click-event to trigger the download - if (document.createEvent) { - const e = document.createEvent("MouseEvents"); - e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - lnk.dispatchEvent(e); - } else if (lnk.fireEvent) { - lnk.fireEvent("onclick"); - } - }; - - this.download = function() { - const canvas = paper.project.activeLayer.view.element; - const img = $(canvas)[0]; - const mergeCanvas = $("").attr({ - width: img.width, - height: img.height - }); - const mergedContext = mergeCanvas[0].getContext("2d"); - mergedContext.clearRect(0, 0, img.width, img.height); - mergedContext.drawImage(img, 0, 0); - mergedContext.drawImage(canvas, 0, 0); - self.downloadCanvas(mergeCanvas[0], "only-annotations.png"); - - // create canvas for original and annotations - const annotated_img = $(canvas) - .parent() - .find("img")[0]; - const mergeCanvasAnnotated = $("").attr({ - width: $(annotated_img).width(), - height: $(annotated_img).height() - }); - const mergedContextAnnotated = mergeCanvasAnnotated[0].getContext("2d"); - mergedContextAnnotated.clearRect(0, 0, $(annotated_img).width(), $(annotated_img).height()); - mergedContextAnnotated.drawImage(annotated_img, 0, 0); - mergedContextAnnotated.drawImage(canvas, 0, 0); - self.downloadCanvas(mergeCanvasAnnotated[0], "original-with-annotations.png"); - }; - - this.setText = function() { - const uid = generateUUID(); - const pos = contextPoint; - CommandManager.execute({ - execute: function() { - const TXT_DBL_CLICK = "<>"; - const txt = TXT_DBL_CLICK; - const text = new paper.PointText(pos); - text.content = txt; - text.fillColor = settings.color; - text.fontSize = 14; - text.fontFamily = "sans-serif"; - text.data.uid = uid; - text.opacity = settings.opacity; - text.onDoubleClick = function(event) { - if (this.className == "PointText") { - const txt = window.prompt("Type in your text", this.content.replace(TXT_DBL_CLICK, "")); - if (txt.length > 0) this.content = txt; - } - }; - }, - unexecute: function() { - $(paper.project.activeLayer.children).each(function(index, item) { - if (item.data && item.data.uid) { - if (item.data.uid == uid) { - item.remove(); - } - } - }); - } - }); - }; - - this.setPenColor = function(color) { - self.setOptions({ color: color }); - $(".image-canvas").css( - "cursor", - "url(/static/plugins/visualizations/annotate_image/static/images/" + color + "-pen.png) 14 50, auto" - ); - }; - - this.setCursorHandOpen = function() { - $(".image-canvas").css( - "cursor", - "url(/static/plugins/visualizations/annotate_image/static/images/hand-open.png) 25 25, auto" - ); - }; - - this.setCursorHandClose = function() { - $(".image-canvas").css( - "cursor", - "url(/static/plugins/visualizations/annotate_image/static/images/hand-close.png) 25 25, auto" - ); - }; - - $.contextMenu({ - selector: ".image-canvas", - callback: function(key, options) { - switch (key) { - //COMMANDS - case "undo": - CommandManager.undo(); - break; - case "redo": - CommandManager.redo(); - break; - case "download": - self.download(); - break; - //TOOLS - case "text": - self.setText(); - break; - //PENS - case "blackPen": - self.setPenColor("black"); - break; - case "redPen": - self.setPenColor("red"); - break; - case "greenPen": - self.setPenColor("green"); - break; - case "bluePen": - self.setPenColor("blue"); - break; - case "yellowPen": - self.setPenColor("yellow"); - break; - } }, - items: { - undo: { name: "Undo", icon: "undo" }, - redo: { name: "Redo", icon: "redo" }, - download: { name: "Download", icon: "download" }, - sep1: "---------", - text: { name: "Text", icon: "text" }, - sep2: "---------", - blackPen: { name: "Black Pen", icon: "blackpen" }, - redPen: { name: "Red Pen", icon: "redpen" }, - greenPen: { name: "Green Pen", icon: "greenpen" }, - bluePen: { name: "Blue Pen", icon: "bluepen" }, - yellowPen: { name: "Yellow Pen", icon: "yellowpen" } + unexecute: function() { + $(paper.project.activeLayer.children).each(function(index, item) { + if (item.data && item.data.uid) { + if (item.data.uid == uid) { + item.remove(); + } + } + }); } }); - - const $menuList = $(".context-menu-list"); - $menuList.find(".context-menu-icon-text").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/text.png)", - "background-repeat": "no-repeat", - "background-position": "right 96% bottom 45%" - }); - $menuList.find(".context-menu-icon-blackpen").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/blackpen.png)", - "background-repeat": "no-repeat", - "background-position": "right 97% bottom 48%" - }); - $menuList.find(".context-menu-icon-redpen").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/redpen.png)", - "background-repeat": "no-repeat", - "background-position": "right 97% bottom 48%" - }); - $menuList.find(".context-menu-icon-greenpen").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/greenpen.png)", - "background-repeat": "no-repeat", - "background-position": "right 97% bottom 48%" - }); - $menuList.find(".context-menu-icon-bluepen").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/bluepen.png)", - "background-repeat": "no-repeat", - "background-position": "right 97% bottom 48%" - }); - $menuList.find(".context-menu-icon-yellowpen").css({ - "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/yellowpen.png)", - "background-repeat": "no-repeat", - "background-position": "right 97% bottom 48%" - }); }; - $.ajax({ - url: dataset.download_url, - success: function(content) { - const $chartViewer = $("#" + opt.targets[0]); - $chartViewer.html(""); - $chartViewer.css("overflow", "auto"); - $chartViewer.css("position", "relative"); - const $image = $chartViewer.find("img"); - $image.on("load", function() { - const width = $(this).width(); - const height = $(this).height(); - $image.width(width); - $image.height(height); - $image.createCanvas({ - color: "red", - width: 2, - opacity: 0.5, - img_width: width, - img_height: height - }); - }); - chart.state("ok", "Chart drawn."); - opt.process.resolve(); + this.setPenColor = function(color) { + self.setOptions({ color: color }); + $(".image-canvas").css( + "cursor", + "url(/static/plugins/visualizations/annotate_image/static/images/" + color + "-pen.png) 14 50, auto" + ); + }; + + this.setCursorHandOpen = function() { + $(".image-canvas").css( + "cursor", + "url(/static/plugins/visualizations/annotate_image/static/images/hand-open.png) 25 25, auto" + ); + }; + + this.setCursorHandClose = function() { + $(".image-canvas").css( + "cursor", + "url(/static/plugins/visualizations/annotate_image/static/images/hand-close.png) 25 25, auto" + ); + }; + + $.contextMenu({ + selector: ".image-canvas", + callback: function(key, options) { + switch (key) { + //COMMANDS + case "undo": + CommandManager.undo(); + break; + case "redo": + CommandManager.redo(); + break; + case "download": + self.download(); + break; + //TOOLS + case "text": + self.setText(); + break; + //PENS + case "blackPen": + self.setPenColor("black"); + break; + case "redPen": + self.setPenColor("red"); + break; + case "greenPen": + self.setPenColor("green"); + break; + case "bluePen": + self.setPenColor("blue"); + break; + case "yellowPen": + self.setPenColor("yellow"); + break; + } }, - error: function() { - chart.state("failed", "Failed to access dataset."); - opt.process.resolve(); + items: { + undo: { name: "Undo", icon: "undo" }, + redo: { name: "Redo", icon: "redo" }, + download: { name: "Download", icon: "download" }, + sep1: "---------", + text: { name: "Text", icon: "text" }, + sep2: "---------", + blackPen: { name: "Black Pen", icon: "blackpen" }, + redPen: { name: "Red Pen", icon: "redpen" }, + greenPen: { name: "Green Pen", icon: "greenpen" }, + bluePen: { name: "Blue Pen", icon: "bluepen" }, + yellowPen: { name: "Yellow Pen", icon: "yellowpen" } } }); - } -}); + + const $menuList = $(".context-menu-list"); + $menuList.find(".context-menu-icon-text").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/text.png)", + "background-repeat": "no-repeat", + "background-position": "right 96% bottom 45%" + }); + $menuList.find(".context-menu-icon-blackpen").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/blackpen.png)", + "background-repeat": "no-repeat", + "background-position": "right 97% bottom 48%" + }); + $menuList.find(".context-menu-icon-redpen").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/redpen.png)", + "background-repeat": "no-repeat", + "background-position": "right 97% bottom 48%" + }); + $menuList.find(".context-menu-icon-greenpen").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/greenpen.png)", + "background-repeat": "no-repeat", + "background-position": "right 97% bottom 48%" + }); + $menuList.find(".context-menu-icon-bluepen").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/bluepen.png)", + "background-repeat": "no-repeat", + "background-position": "right 97% bottom 48%" + }); + $menuList.find(".context-menu-icon-yellowpen").css({ + "background-image": "url(/static/plugins/visualizations/annotate_image/static/images/yellowpen.png)", + "background-repeat": "no-repeat", + "background-position": "right 97% bottom 48%" + }); + }; + + $.ajax({ + url: dataset.download_url, + success: function(content) { + const $chartViewer = $("#" + opt.target); + $chartViewer.html(""); + $chartViewer.css("overflow", "auto"); + $chartViewer.css("position", "relative"); + const $image = $chartViewer.find("img"); + $image.on("load", function() { + const width = $(this).width(); + const height = $(this).height(); + $image.width(width); + $image.height(height); + $image.createCanvas({ + color: "red", + width: 2, + opacity: 0.5, + img_width: width, + img_height: height + }); + }); + chart.state("ok", "Chart drawn."); + opt.process.resolve(); + }, + error: function() { + chart.state("failed", "Failed to access dataset."); + opt.process.resolve(); + } + }); +} diff --git a/config/plugins/visualizations/cytoscape/src/script.js b/config/plugins/visualizations/cytoscape/src/script.js index 186d0186a27..a64ce291ce6 100644 --- a/config/plugins/visualizations/cytoscape/src/script.js +++ b/config/plugins/visualizations/cytoscape/src/script.js @@ -156,122 +156,118 @@ function run_traversal_type( cytoscape, root_id, type ) { node_collection.nodes().addClass( 'searchpath' ); }; -_.extend(window.bundleEntries || {}, { - load: function(options) { - var self = this, - chart = options.chart, - dataset = options.dataset, - settings = options.chart.settings, - data_content = null, - cytoscape = null, - astar_root = "", - astar_destination = "", - sif_file_ext = "sif", - highlighted_color = settings.get( 'color_picker_highlighted' ); - $.ajax({ - url : dataset.download_url, - success : function( content ) { - // Select data for the graph - if( dataset.file_ext === sif_file_ext ) { - data_content = parse_sif( content ).content; - } - else { - data_content = content.elements ? content.elements : content; - } - try { - cytoscape = Cytoscape({ - container: document.getElementById( options.targets[ 0 ] ), - layout: { - name: settings.get( 'layout_name' ), - idealEdgeLength: 100, - nodeOverlap: 20 - }, - minZoom: 0.1, - maxZoom: 20, - style: [{ - selector: 'node', - style: { - 'background-color': settings.get( 'color_picker_nodes' ), - 'opacity': 1, - 'content': 'data(id)', - 'text-valign': 'center', - } - }, - { - selector: 'core', - style: { - 'selection-box-color':'#AAD8FF', - 'selection-box-border-color':'#8BB0D0', - 'selection-box-opacity':'0.5' - } - }, - { - selector: 'edge', - style: { - 'curve-style': settings.get( 'curve_style' ), - 'haystack-radius': 0, - 'width': 3, - 'opacity': 1, - 'line-color': settings.get( 'color_picker_edges' ), - 'target-arrow-shape': settings.get( 'directed' ), - "overlay-padding":"3px" - } - }, - { - selector:'node:selected', - style: { - "border-width": "6px", - "border-color": "#AAD8FF", - "border-opacity": "0.5", - "background-color": "#77828C", - "text-outline-color": "#77828C" - } - }, - { - selector: '.searchpath', - style: { - 'background-color': highlighted_color, - 'line-color': highlighted_color, - 'target-arrow-color': highlighted_color, - 'transition-property': 'background-color, line-color, target-arrow-color', - 'transition-duration': '0.5s' - } - }], - elements: data_content // Set the JSON data for viewing - }); - - // Highlight the minimum spanning tree found using Kruskal algorithm - if( settings.get( 'search_algorithm' ) === "kruskal" ) { - var kruskal = cytoscape.elements().kruskal(); - kruskal.edges().addClass( 'searchpath' ); - } - // Register tap (clicking a node) event on graph nodes - // On tapping any node, BFS or DFS start from that node - cytoscape.$( 'node' ).on('tap', function( e ) { - var ele = e.cyTarget, - search_algorithm = settings.get( 'search_algorithm' ), - traversal_type = settings.get( 'graph_traversal' ); - // If search algorithm and traversal both are chosen, - // search algorithm will take preference - if( settings.get( 'search_algorithm' ) !== "" ) { - run_search_algorithm( cytoscape, ele.id(), search_algorithm, self ); - } - else if( settings.get( 'graph_traversal' ) !== "" ) { - run_traversal_type( cytoscape, ele.id(), traversal_type ); - } - }); - chart.state( 'ok', 'Chart drawn.' ); - // Re-renders the graph view when window is resized - $( window ).resize( function() { cytoscape.layout(); } ); - } catch( err ) { - chart.state( 'failed', err ); - } - options.process.resolve(); - }, - error: function() { - chart.state( 'failed', 'Failed to access dataset.' ); - options.process.resolve(); +window.bundleEntries = window.bundleEntries || {}; +window.bundleEntries.load = function (options) { + var self = this, + chart = options.chart, + dataset = options.dataset, + settings = options.chart.settings, + data_content = null, + cytoscape = null, + sif_file_ext = "sif", + highlighted_color = settings.get( 'color_picker_highlighted' ); + $.ajax({ + url : dataset.download_url, + success : function( content ) { + // Select data for the graph + if( dataset.file_ext === sif_file_ext ) { + data_content = parse_sif( content ).content; } - }); - } -}); + else { + data_content = content.elements ? content.elements : content; + } + try { + cytoscape = Cytoscape({ + container: document.getElementById( options.target ), + layout: { + name: settings.get( 'layout_name' ), + idealEdgeLength: 100, + nodeOverlap: 20 + }, + minZoom: 0.1, + maxZoom: 20, + style: [{ + selector: 'node', + style: { + 'background-color': settings.get( 'color_picker_nodes' ), + 'opacity': 1, + 'content': 'data(id)', + 'text-valign': 'center', + } + }, + { + selector: 'core', + style: { + 'selection-box-color':'#AAD8FF', + 'selection-box-border-color':'#8BB0D0', + 'selection-box-opacity':'0.5' + } + }, + { + selector: 'edge', + style: { + 'curve-style': settings.get( 'curve_style' ), + 'haystack-radius': 0, + 'width': 3, + 'opacity': 1, + 'line-color': settings.get( 'color_picker_edges' ), + 'target-arrow-shape': settings.get( 'directed' ), + "overlay-padding":"3px" + } + }, + { + selector:'node:selected', + style: { + "border-width": "6px", + "border-color": "#AAD8FF", + "border-opacity": "0.5", + "background-color": "#77828C", + "text-outline-color": "#77828C" + } + }, + { + selector: '.searchpath', + style: { + 'background-color': highlighted_color, + 'line-color': highlighted_color, + 'target-arrow-color': highlighted_color, + 'transition-property': 'background-color, line-color, target-arrow-color', + 'transition-duration': '0.5s' + } + }], + elements: data_content // Set the JSON data for viewing + }); + // Highlight the minimum spanning tree found using Kruskal algorithm + if( settings.get( 'search_algorithm' ) === "kruskal" ) { + var kruskal = cytoscape.elements().kruskal(); + kruskal.edges().addClass( 'searchpath' ); + } + // Register tap (clicking a node) event on graph nodes + // On tapping any node, BFS or DFS start from that node + cytoscape.$( 'node' ).on('tap', function( e ) { + var ele = e.cyTarget, + search_algorithm = settings.get( 'search_algorithm' ), + traversal_type = settings.get( 'graph_traversal' ); + // If search algorithm and traversal both are chosen, + // search algorithm will take preference + if( settings.get( 'search_algorithm' ) !== "" ) { + run_search_algorithm( cytoscape, ele.id(), search_algorithm, self ); + } + else if( settings.get( 'graph_traversal' ) !== "" ) { + run_traversal_type( cytoscape, ele.id(), traversal_type ); + } + }); + chart.state( 'ok', 'Chart drawn.' ); + // Re-renders the graph view when window is resized + $( window ).resize( function() { cytoscape.layout(); } ); + } catch( err ) { + chart.state( 'failed', err ); + } + options.process.resolve(); + }, + error: function() { + chart.state( 'failed', 'Failed to access dataset.' ); + options.process.resolve(); + } + }); +}; diff --git a/config/plugins/visualizations/cytoscape/static/script.js b/config/plugins/visualizations/cytoscape/static/script.js deleted file mode 100644 index 7834e144a54..00000000000 --- a/config/plugins/visualizations/cytoscape/static/script.js +++ /dev/null @@ -1,15 +0,0 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c=n||e<0||l&&t-s>=u}function O(){var t=y();if(g(t))return x(t);c=setTimeout(O,function(t){var e=n-(t-a);return l?m(e,u-(t-s)):e}(t))}function x(t){return c=void 0,p&&i?d(t):(i=o=void 0,f)}function T(){var t=y(),e=g(t);if(i=arguments,o=this,a=t,e){if(void 0===c)return function(t){return s=t,c=setTimeout(O,n),v?d(t):f}(a);if(l)return c=setTimeout(O,n),d(a)}return void 0===c&&(c=setTimeout(O,n)),f}return n=h(n)||0,j(r)&&(v=!!r.leading,u=(l="maxWait"in r)?b(h(r.maxWait)||0,n):u,p="trailing"in r?!!r.trailing:p),T.cancel=function(){void 0!==c&&clearTimeout(c),s=0,i=a=o=c=void 0},T.flush=function(){return void 0===c?f:x(y())},T}function j(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function g(t){return!!t&&"object"==typeof t}function O(t){return"symbol"==typeof t||g(t)&&p.call(t)==r}function h(t){if("number"==typeof t)return t;if(O(t))return n;if(j(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=j(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var r=u.test(t);return r||f.test(t)?c(t.slice(2),r?2:8):o.test(t)?n:+t}module.exports=d; -},{}],"W3yK":[function(require,module,exports) { -var define; -var t;(function(){var n,e,o,r,p,u,i,s,l,c,h,f,a,y,d,g,v;o=Math.floor,c=Math.min,e=function(t,n){return tn?1:0},l=function(t,n,r,p,u){var i;if(null==r&&(r=0),null==u&&(u=e),r<0)throw new Error("lo must be non-negative");for(null==p&&(p=t.length);re;0<=e?n++:n--)l.push(n);return l}.apply(this).reverse()).length;pd;0<=d?++f:--f)g.push(p(t,o));return g},y=function(t,n,o,r){var p,u,i;for(null==r&&(r=e),p=t[o];o>n&&r(p,u=t[i=o-1>>1])<0;)t[o]=u,o=i;return t[o]=p},d=function(t,n,o){var r,p,u,i,s;for(null==o&&(o=e),p=t.length,s=n,u=t[n],r=2*n+1;rt?1:0},Q=function(e,t){return-1*$(e,t)},J=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+G+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(i=parseFloat(c[3]))<0||i>100)return;if(i/=100,void 0!==(a=c[4])&&((a=parseFloat(a))<0||a>1))return;if(0===r)o=s=l=Math.round(255*i);else{var h=i<.5?i*(1+r):i+r-i*r,d=2*i-h;o=Math.round(255*u(d,h,n+1/3)),s=Math.round(255*u(d,h,n)),l=Math.round(255*u(d,h,n-1/3))}t=[o,s,l,a]}return t},ne=function(e){var t,n=new RegExp("^"+W+"$").exec(e);if(n){t=[];for(var r=[],i=1;i<=3;i++){var a=n[i];if("%"===a[a.length-1]&&(r[i]=!0),a=parseFloat(a),r[i]&&(a=a/100*255),a<0||a>255)return;t.push(Math.floor(a))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t},re=function(e){return ae[e.toLowerCase()]},ie=function(e){return(E(e)?e:null)||re(e)||ee(e)||ne(e)||te(e)},ae={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},oe=function(e){for(var t=e.map,n=e.keys,r=n.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:pe;!(t=e.next()).done;)n=n*fe+t.value|0;return n},ye=function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:pe)*fe+e|0},me=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ge;return(t<<5)+t+e|0},be=function(e,t){return 2097152*e+t},xe=function(e){return 2097152*e[0]+e[1]},we=function(e,t){return[ye(e[0],t[0]),me(e[1],t[1])]},Ee=function(e,t){var n={value:0,done:!1},r=0,i=e.length;return ve({next:function(){return r=0&&(e[r]!==t||(e.splice(r,1),n));r--);},We=function(e){e.splice(0,e.length)},He=function(e,t){for(var n=0;n2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&_(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new Je,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==i.position.x&&(i.position.x=0),null==i.position.y&&(i.position.y=0),t.renderedPosition){var a=t.renderedPosition,o=e.pan(),s=e.zoom();i.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}var l=[];E(t.classes)?l=t.classes:x(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;u0;){var C=m.pop(),D=v(C),S=C.id();if(d[S]=D,D!==1/0)for(var T=C.neighborhood().intersect(f),P=0;P0)for(n.unshift(t);h[i];){var a=h[i];n.unshift(a.edge),n.unshift(a.node),i=(r=a.node).id()}return s.spawn(n)}}}},at={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,i=n.length,a=new Array(i),o=n,s=function(e){for(var t=0;t0;){if(u=v.pop(),c=u.id(),y.delete(c),E++,c===d){for(var k=[],C=a,D=d,S=b[D];k.unshift(C),null!=S&&k.unshift(S),null!=(C=m[D]);)S=b[D=C.id()];return{found:!0,distance:p[c],path:this.spawn(k),steps:E}}g[c]=!0;for(var T=u._private.edges,P=0;PT&&(p[S]=T,y[S]=D,m[S]=w),!i){var P=D*u+C;!i&&p[P]>T&&(p[P]=T,y[P]=C,m[P]=w)}}}for(var M=0;M1&&void 0!==arguments[1]?arguments[1]:a,r=[],i=y(e);;){if(null==i)return t.spawn();var o=v(i),l=o.edge,u=o.pred;if(r.unshift(i[0]),i.same(n)&&r.length>0)break;null!=l&&r.unshift(l),i=u}return s.spawn(r)},hasNegativeWeightCycle:f,negativeWeightCycles:[]}}},dt=Math.sqrt(2),pt=function(e,t,n){0===n.length&&Ie("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],i=r[1],a=r[2],o=t[i],s=t[a],l=n,u=l.length-1;u>=0;u--){var c=l[u],h=c[1],d=c[2];(t[h]===o&&t[d]===s||t[h]===s&&t[d]===o)&&l.splice(u,1)}for(var p=0;pr;){var i=Math.floor(Math.random()*t.length);t=pt(i,e,t),n--}return t},gt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy(function(e){return e.isLoop()});var i=n.length,a=r.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),s=Math.floor(i/dt);if(!(i<2)){for(var l=[],u=0;u1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,i=0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];r?e=e.slice(t,n):(n0&&e.splice(0,t));for(var o=0,s=e.length-1;s>=0;s--){var l=e[s];a?isFinite(l)||(e[s]=-1/0,o++):e.splice(s,1)}i&&e.sort(function(e,t){return e-t});var u=e.length,c=Math.floor(u/2);return u%2!=0?e[c+1+o]:(e[c-1+o]+e[c+o])/2},Ct=function(e){return Math.PI*e/180},Dt=function(e,t){return Math.atan2(t,e)-Math.PI/2},St=Math.log2||function(e){return Math.log(e)/Math.log(2)},Tt=function(e){return e>0?1:e<0?-1:0},Pt=function(e,t){return Math.sqrt(Mt(e,t))},Mt=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},Bt=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},zt=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},Ot=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},Rt=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},Vt=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},Ft=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},qt=function(e){var t,n,r,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===a.length)t=n=r=i=a[0];else if(2===a.length)t=r=a[0],i=n=a[1];else if(4===a.length){var o=l(a,4);t=o[0],n=o[1],r=o[2],i=o[3]}return e.x1-=i,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Xt=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},Yt=function(e,t){e.x1+=t.x,e.x2+=t.x,e.y1+=t.y,e.y2+=t.y},jt=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},Wt=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},Ht=function(e,t){return Wt(e,t.x,t.y)},Gt=function(e,t){return Wt(e,t.x1,t.y1)&&Wt(e,t.x2,t.y2)},Kt=function(e,t,n,r,i,a,o){var s,l=mn(i,a),u=i/2,c=a/2,h=r-c-o;if((s=hn(e,t,n,r,n-u+l-o,h,n+u-l+o,h,!1)).length>0)return s;var d=n+u+o;if((s=hn(e,t,n,r,d,r-c+l-o,d,r+c-l+o,!1)).length>0)return s;var p=r+c+o;if((s=hn(e,t,n,r,n-u+l-o,p,n+u-l+o,p,!1)).length>0)return s;var f,g=n-u-o;if((s=hn(e,t,n,r,g,r-c+l-o,g,r+c-l+o,!1)).length>0)return s;var v=n-u+l,y=r-c+l;if((f=un(e,t,n,r,v,y,l+o)).length>0&&f[0]<=v&&f[1]<=y)return[f[0],f[1]];var m=n+u-l,b=r-c+l;if((f=un(e,t,n,r,m,b,l+o)).length>0&&f[0]>=m&&f[1]<=b)return[f[0],f[1]];var x=n+u-l,w=r+c-l;if((f=un(e,t,n,r,x,w,l+o)).length>0&&f[0]>=x&&f[1]>=w)return[f[0],f[1]];var E=n-u+l,k=r+c-l;return(f=un(e,t,n,r,E,k,l+o)).length>0&&f[0]<=E&&f[1]>=k?[f[0],f[1]]:[]},Ut=function(e,t,n,r,i,a,o){var s=o,l=Math.min(n,i),u=Math.max(n,i),c=Math.min(r,a),h=Math.max(r,a);return l-s<=e&&e<=u+s&&c-s<=t&&t<=h+s},Zt=function(e,t,n,r,i,a,o,s,l){var u=Math.min(n,o,i)-l,c=Math.max(n,o,i)+l,h=Math.min(r,s,a)-l,d=Math.max(r,s,a)+l;return!(ec||td)},$t=function(e,t,n,r){var i=t*t-4*e*(n-=r);if(i<0)return[];var a=Math.sqrt(i),o=2*e;return[(-t+a)/o,(-t-a)/o]},Qt=function(e,t,n,r,i){var a,o,s,l,u,c,h,d;return 0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),a=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,i[1]=0,h=t/3,a>0?(u=(u=s+Math.sqrt(a))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(a))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-h+u+c,h+=(u+c)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-c+u)/2,i[3]=h,void(i[5]=-h)):(i[5]=i[3]=0,0===a?(d=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),i[0]=2*d-h,void(i[4]=i[2]=-(d+h))):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),d=2*Math.sqrt(o),i[0]=-h+d*Math.cos(l/3),i[2]=-h+d*Math.cos((l+2*Math.PI)/3),void(i[4]=-h+d*Math.cos((l+4*Math.PI)/3))))},Jt=function(e,t,n,r,i,a,o,s){var l=[];Qt(1*n*n-4*n*i+2*n*o+4*i*i-4*i*o+o*o+r*r-4*r*a+2*r*s+4*a*a-4*a*s+s*s,9*n*i-3*n*n-3*n*o-6*i*i+3*i*o+9*r*a-3*r*r-3*r*s-6*a*a+3*a*s,3*n*n-6*n*i+n*o-n*e+2*i*i+2*i*e-o*e+3*r*r-6*r*a+r*s-r*t+2*a*a+2*a*t-s*t,1*n*i-n*n+n*e-i*e+r*a-r*r+r*t-a*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var h,d,p,f=-1,g=0;g=0?pl?(e-i)*(e-i)+(t-a)*(t-a):u-h},tn=function(e,t,n){for(var r,i,a,o,s=0,l=0;l=e&&e>=a||r<=e&&e<=a))continue;(e-r)/(a-r)*(o-i)+i>t&&s++}return s%2!=0},nn=function(e,t,n,r,i,a,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var h,d=Math.cos(-u),p=Math.sin(-u),f=0;f0){var g=on(c,-l);h=an(g)}else h=c;return tn(e,t,h)},rn=function(e,t,n,r,i,a,o){for(var s=new Array(n.length),l=a/2,u=o/2,c=bn(a,o),h=c*c,d=0;d=0&&f<=1&&v.push(f),g>=0&&g<=1&&v.push(g),0===v.length)return[];var y=v[0]*s[0]+e,m=v[0]*s[1]+t;return v.length>1?v[0]==v[1]?[y,m]:[y,m,v[1]*s[0]+e,v[1]*s[1]+t]:[y,m]},cn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},hn=function(e,t,n,r,i,a,o,s,l){var u=e-i,c=n-e,h=o-i,d=t-a,p=r-t,f=s-a,g=h*d-f*u,v=c*d-p*u,y=f*c-h*p;if(0!==y){var m=g/y,b=v/y;return-.001<=m&&m<=1.001&&-.001<=b&&b<=1.001?[e+m*c,t+m*p]:l?[e+m*c,t+m*p]:[]}return 0===g||0===v?cn(e,n,o)===o?[o,s]:cn(e,n,i)===i?[i,a]:cn(i,o,n)===n?[n,r]:[]:[]},dn=function(e,t,n,r,i,a,o,s){var l,u,c,h,d,p,f=[],g=new Array(n.length),v=!0;if(null==a&&(v=!1),v){for(var y=0;y0){var m=on(g,-s);u=an(m)}else u=g}else u=n;for(var b=0;b2){for(var P=[u[0],u[1]],M=Math.pow(P[0]-e,2)+Math.pow(P[1]-t,2),B=1;Bc&&(c=t)},d=function(e){return u[e]},p=0;p0?x.edgesTo(b)[0]:b.edgesTo(x)[0];var E=i(w);b=b.id(),p[b]>p[y]+E&&(p[b]=p[y]+E,f.nodes.indexOf(b)<0?f.push(b):f.updateItem(b),c[b]=0,u[b]=[]),p[b]==p[y]+E&&(c[b]=c[b]+c[y],u[b].push(y))}else for(var k=0;k0;){for(var T=r.pop(),P=0;P0&&o.push(n[s]);0!==o.length&&i.push(r.collection(o))}return i},qn=function(e,t){for(var n=0;n5&&void 0!==arguments[5]?arguments[5]:Wn,o=r,s=0;s=2?$n(e,t,n,0,Kn,Un):$n(e,t,n,0,Gn)},squaredEuclidean:function(e,t,n){return $n(e,t,n,0,Kn)},manhattan:function(e,t,n){return $n(e,t,n,0,Gn)},max:function(e,t,n){return $n(e,t,n,-1/0,Zn)}};function Jn(e,t,n,r,i,a){var o;return o=w(e)?e:Qn[e]||Qn.euclidean,0===t&&w(e)?o(i,a):o(t,n,r,i,a)}Qn["squared-euclidean"]=Qn.squaredEuclidean,Qn.squaredeuclidean=Qn.squaredEuclidean;var er=Ye({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),tr=function(e){return er(e)},nr=function(e,t,n,r,i){var a="kMedoids"!==i?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return Jn(e,r.length,a,function(e){return r[e](t)},o,s)},rr=function(e,t,n){for(var r=n.length,i=new Array(r),a=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},lr=function(e,t,n){for(var r=0;ri&&(i=t[l][u],a=u);o[a].push(e[l])}for(var c=0;c=i.threshold||"dendrogram"===i.mode&&1===e.length)return!1;var p,f=t[o],g=t[r[o]];p="dendrogram"===i.mode?{left:f,right:g,key:f.key}:{value:f.value.concat(g.value),key:f.key},e[f.index]=p,e.splice(g.index,1),t[f.key]=p;for(var v=0;vn[g.key][y.key]&&(a=n[g.key][y.key])):"max"===i.linkage?(a=n[f.key][y.key],n[f.key][y.key]0&&r.push(i);return r},Nr=function(e,t,n){for(var r=[],i=0;io&&(a=l,o=t[i*e+l])}a>0&&r.push(a)}for(var u=0;ul&&(s=u,l=c)}n[i]=a[s]}return r=Nr(e,t,n)},Ir=function(e){for(var t,n,r,i,a,o,s=this.cy(),l=this.nodes(),u=Pr(e),c={},h=0;h=S?(T=S,S=M,P=B):M>T&&(T=M);for(var _=0;_0?1:0;k[E%u.minIterations*t+O]=R,z+=R}if(z>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F1||o>1)&&(l=!0),u[t]=[],e.outgoers().forEach(function(e){e.isEdge()&&u[t].push(e.id())})}else c[t]=[void 0,e.target().id()]}):this.forEach(function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?l=!0:r=t:n=t),u[t]=[],e.connectedEdges().forEach(function(e){return u[t].push(e.id())})):c[t]=[e.source().id(),e.target().id()]});var h={found:!1,trail:void 0};if(l)return h;if(r&&n)if(s){if(i&&r!=i)return h;i=r}else{if(i&&r!=i&&n!=i)return h;i||(i=r)}else i||(i=this[0].id());var d=function(e){for(var t,n,r,i=e,a=[e];u[i].length;)t=u[i].shift(),n=c[t][0],i!=(r=c[t][1])?(u[r]=u[r].filter(function(e){return e!=t}),i=r):s||i==n||(u[n]=u[n].filter(function(e){return e!=t}),i=n),a.unshift(t),a.unshift(i);return a},p=[],f=[];for(f=d(i);1!=f.length;)0==u[f[0]].length?(p.unshift(this.getElementById(f.shift())),p.unshift(this.getElementById(f.shift()))):f=d(f.shift()).concat(f);for(var g in p.unshift(this.getElementById(f.shift())),u)if(u[g].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},Rr=function(){var e=this,t={},n=0,r=0,i=[],a=[],o={},s=function s(l,u,c){l===c&&(r+=1),t[u]={id:n,low:n++,cutVertex:!1};var h,d,p,f,g=e.getElementById(u).connectedEdges().intersection(e);0===g.size()?i.push(e.spawn(e.getElementById(u))):g.forEach(function(n){h=n.source().id(),d=n.target().id(),(p=h===u?d:h)!==c&&(f=n.id(),o[f]||(o[f]=!0,a.push({x:u,y:p,edge:n})),p in t?t[u].low=Math.min(t[u].low,t[p].id):(s(l,p,u),t[u].low=Math.min(t[u].low,t[p].low),t[u].id<=t[p].low&&(t[u].cutVertex=!0,function(n,r){for(var o=a.length-1,s=[],l=e.spawn();a[o].x!=n||a[o].y!=r;)s.push(a.pop().edge),o--;s.push(a.pop().edge),s.forEach(function(n){var r=n.connectedNodes().intersection(e);l.merge(n),r.forEach(function(n){var r=n.id(),i=n.connectedEdges().intersection(e);l.merge(n),t[r].cutVertex?l.merge(i.filter(function(e){return e.isLoop()})):l.merge(i)})}),i.push(l)}(u,p))))})};e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||(r=0,s(n,n),t[n].cutVertex=r>1)}});var l=Object.keys(t).filter(function(e){return t[e].cutVertex}).map(function(t){return e.getElementById(t)});return{cut:e.spawn(l),components:i}},Vr={hopcroftTarjanBiconnected:Rr,htbc:Rr,htb:Rr,hopcroftTarjanBiconnectedComponents:Rr},Fr=function(){var e=this,t={},n=0,r=[],i=[],a=e.spawn(e);return e.forEach(function(o){if(o.isNode()){var s=o.id();s in t||function o(s){if(i.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach(function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))}),t[s].index===t[s].low){for(var l=e.spawn();;){var u=i.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),h=l.merge(c);r.push(h),a=a.difference(h)}}(s)}}),{cut:a,components:r}},qr={tarjanStronglyConnected:Fr,tsc:Fr,tscc:Fr,tarjanStronglyConnectedComponents:Fr},Xr={};[nt,it,at,st,ut,ht,gt,Cn,Sn,Pn,Bn,jn,yr,Sr,Lr,Or,Vr,qr].forEach(function(e){J(Xr,e)});var Yr=0,jr=1,Wr=2,Hr=function e(t){if(!(this instanceof e))return new e(t);this.id="Thenable/1.0.7",this.state=Yr,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof t&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))};Hr.prototype={fulfill:function(e){return Gr(this,jr,"fulfillValue",e)},reject:function(e){return Gr(this,Wr,"rejectReason",e)},then:function(e,t){var n=new Hr;return this.onFulfilled.push(Zr(e,n,"fulfill")),this.onRejected.push(Zr(t,n,"reject")),Kr(this),n.proxy}};var Gr=function(e,t,n,r){return e.state===Yr&&(e.state=t,e[n]=r,Kr(e)),e},Kr=function(e){e.state===jr?Ur(e,"onFulfilled",e.fulfillValue):e.state===Wr&&Ur(e,"onRejected",e.rejectReason)},Ur=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var i=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=void 0!==this.length?this:[this];if(!(this._private.cy||this).styleEnabled())return this;for(var t=0;t0&&this.spawn(n).updateStyle().emit("class"),this},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){E(e)||(e=e.match(/\S+/g)||[]);for(var n=void 0===t,r=[],i=0,a=this.length;i0&&this.spawn(r).updateStyle().emit("class"),this},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};oi.className=oi.classNames=oi.classes;var si={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:'"(?:\\\\"|[^"])*"|'+"'(?:\\\\'|[^'])*'",number:j,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};si.variable="(?:[\\w-]|(?:\\\\"+si.metaChar+"))+",si.value=si.string+"|"+si.number,si.className=si.variable,si.id=si.variable,function(){var e,t,n;for(e=si.comparatorOp.split("|"),n=0;n=0||"="!==t&&(si.comparatorOp+="|\\!"+t)}();var li=function(){return{checks:[]}},ui={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},ci=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(e,t){return Q(e.selector,t.selector)}),hi=function(){for(var e,t={},n=0;n0&&l.edgeCount>0)return ze("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(l.edgeCount>1)return ze("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===l.edgeCount&&ze("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},xi=function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return x(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,a){var o=r.type,s=r.value;switch(o){case ui.GROUP:var l=e(s);return l.substring(0,l.length-1);case ui.DATA_COMPARE:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case ui.DATA_BOOL:var h=r.operator,d=r.field;return"["+e(h)+d+"]";case ui.DATA_EXIST:return"["+r.field+"]";case ui.META_COMPARE:var p=r.operator;return"[["+r.field+n(e(p))+t(s)+"]]";case ui.STATE:return s;case ui.ID:return"#"+s;case ui.CLASS:return"."+s;case ui.PARENT:case ui.CHILD:return i(r.parent,a)+n(">")+i(r.child,a);case ui.ANCESTOR:case ui.DESCENDANT:return i(r.ancestor,a)+" "+i(r.descendant,a);case ui.COMPOUND_SPLIT:var f=i(r.left,a),g=i(r.subject,a),v=i(r.right,a);return f+(f.length>0?" ":"")+g+v;case ui.TRUE:return""}},i=function(e,t){return e.checks.reduce(function(n,i,a){return n+(t===e&&0===a?"$":"")+r(i,t)},"")},a="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(i=o||s?""+e:"",a=""+n),u&&(e=i=i.toLowerCase(),n=a=a.toLowerCase()),t){case"*=":r=i.indexOf(a)>=0;break;case"$=":r=i.indexOf(a,i.length-a.length)>=0;break;case"^=":r=0===i.indexOf(a);break;case"=":r=e===n;break;case">":h=!0,r=e>n;break;case">=":h=!0,r=e>=n;break;case"<":h=!0,r=e0;){var u=i.shift();t(u),a.add(u.id()),o&&r(i,a,u)}return e}function Fi(e,t,n){if(n.isParent())for(var r=n._private.children,i=0;i1&&void 0!==arguments[1])||arguments[1],Fi)},Ri.forEachUp=function(e){return Vi(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],qi)},Ri.forEachUpAndDown=function(e){return Vi(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Xi)},Ri.ancestors=Ri.parents,(Li=zi={data:ii.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:ii.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:ii.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:ii.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:ii.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:ii.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=Li.data,Li.removeAttr=Li.removeData;var Yi,ji,Wi=zi,Hi={};function Gi(e){return function(t){if(void 0===t&&(t=!0),0!==this.length&&this.isNode()&&!this.removed()){for(var n=0,r=this[0],i=r._private.edges,a=0;at}),minIndegree:Ki("indegree",function(e,t){return et}),minOutdegree:Ki("outdegree",function(e,t){return et})}),J(Hi,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var h=c?l.position():{x:0,y:0};return i={x:s.x-h.x,y:s.y-h.y},void 0===e?i:i[e]}for(var d=0;d0,v=g;g&&(f=f[0]);var y=v?f.position():{x:0,y:0};void 0!==t?p.position(e,t+y[e]):void 0!==i&&p.position({x:i.x+y.x,y:i.y+y.y})}}else if(!a)return;return this}}).modelPosition=Yi.point=Yi.position,Yi.modelPositions=Yi.points=Yi.positions,Yi.renderedPoint=Yi.renderedPosition,Yi.relativePoint=Yi.relativePosition;var $i,Qi,Ji=ji;$i=Qi={},Qi.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),i=n.pan(),a=t.x1*r+i.x,o=t.x2*r+i.x,s=t.y1*r+i.y,l=t.y2*r+i.y;return{x1:a,x2:o,y1:s,y2:l,w:o-a,h:l-s}},Qi.dirtyCompoundBoundsCache=function(){var e=this.cy();return e.styleEnabled()&&e.hasCompoundNodes()?(this.forEachUp(function(e){if(e.isParent()){var t=e._private;t.compoundBoundsClean=!1,t.bbCache=null,e.emitAndNotify("bounds")}}),this):this},Qi.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,i={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},a=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==a.w&&0!==a.h||((a={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-a.w/2,a.x2=o.x+a.w/2,a.y1=o.y-a.h/2,a.y2=o.y+a.h/2);var s=i.width.left.value;"px"===i.width.left.units&&i.width.val>0&&(s=100*s/i.width.val);var l=i.width.right.value;"px"===i.width.right.units&&i.width.val>0&&(l=100*l/i.width.val);var u=i.height.top.value;"px"===i.height.top.units&&i.height.val>0&&(u=100*u/i.height.val);var c=i.height.bottom.value;"px"===i.height.bottom.units&&i.height.val>0&&(c=100*c/i.height.val);var h=y(i.width.val-a.w,s,l),d=h.biasDiff,p=h.biasComplementDiff,f=y(i.height.val-a.h,u,c),g=f.biasDiff,v=f.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(a.w,a.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(a.w,i.width.val),o.x=(-d+a.x1+a.x2+p)/2,t.autoHeight=Math.max(a.h,i.height.val),o.y=(-g+a.y1+a.y2+v)/2}function y(e,t,n){var r=0,i=0,a=t+n;return e>0&&a>0&&(r=t/a*e,i=n/a*e),{biasDiff:r,biasComplementDiff:i}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},na=function(e,t){return null==t?e:ta(e,t.x1,t.y1,t.x2,t.y2)},ra=function(e,t,n){return Ge(e,t,n)},ia=function(e,t,n){if(!t.cy().headless()){var r,i,a=t._private,o=a.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,i=o.srcY):"target"===n?(r=o.tgtX,i=o.tgtY):(r=o.midX,i=o.midY);var l=a.arrowBounds=a.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=i-s,u.x2=r+s,u.y2=i+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,Ft(u,1),ta(e,u.x1,u.y1,u.x2,u.y2)}}},aa=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var i=t._private,a=i.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),h=t.pstyle("text-valign"),d=ra(a,"labelWidth",n),p=ra(a,"labelHeight",n),f=ra(a,"labelX",n),g=ra(a,"labelY",n),v=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=p,C=d,D=C/2,S=k/2;if(m)o=f-D,s=f+D,l=g-S,u=g+S;else{switch(c.value){case"left":o=f-C,s=f;break;case"center":o=f-D,s=f+D;break;case"right":o=f,s=f+C}switch(h.value){case"top":l=g-k,u=g;break;case"center":l=g-S,u=g+S;break;case"bottom":l=g,u=g+k}}o+=v-Math.max(x,w)-E,s+=v+Math.max(x,w)+E,l+=y-Math.max(x,w)-E,u+=y+Math.max(x,w)+E;var T=n||"main",P=i.labelBounds,M=P[T]=P[T]||{};M.x1=o,M.y1=l,M.x2=s,M.y2=u,M.w=s-o,M.h=u-l,Ft(M,1);var B=m&&"autorotate"===b.strValue,_=null!=b.pfValue&&0!==b.pfValue;if(B||_){var N=B?ra(i.rstyle,"labelAngle",n):b.pfValue,A=Math.cos(N),I=Math.sin(N),L=(o+s)/2,z=(l+u)/2;if(!m){switch(c.value){case"left":L=s;break;case"right":L=o}switch(h.value){case"top":z=u;break;case"bottom":z=l}}var O=function(e,t){return{x:(e-=L)*A-(t-=z)*I+L,y:e*I+t*A+z}},R=O(o,l),V=O(o,u),F=O(s,l),q=O(s,u);o=Math.min(R.x,V.x,F.x,q.x),s=Math.max(R.x,V.x,F.x,q.x),l=Math.min(R.y,V.y,F.y,q.y),u=Math.max(R.y,V.y,F.y,q.y)}var X=T+"Rot",Y=P[X]=P[X]||{};Y.x1=o,Y.y1=l,Y.x2=s,Y.y2=u,Y.w=s-o,Y.h=u-l,ta(e,o,l,s,u),ta(i.labelBounds.all,o,l,s,u)}return e}},oa=function(e,t){var n,r,i,a,o,s,l=e._private.cy,u=l.styleEnabled(),c=l.headless(),h=Lt(),d=e._private,p=e.isNode(),f=e.isEdge(),g=d.rstyle,v=p&&u?e.pstyle("bounds-expansion").pfValue:[0],y=function(e){return"none"!==e.pstyle("display").value},m=!u||y(e)&&(!f||y(e.source())&&y(e.target()));if(m){var b=0;u&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(b=e.pstyle("overlay-padding").value);var x=0;if(u&&(x=e.pstyle("width").pfValue/2),p&&t.includeNodes){var w=e.position();o=w.x,s=w.y;var E=e.outerWidth()/2,k=e.outerHeight()/2;ta(h,n=o-E,i=s-k,r=o+E,a=s+k)}else if(f&&t.includeEdges)if(u&&!c){var C=e.pstyle("curve-style").strValue;if(n=Math.min(g.srcX,g.midX,g.tgtX),r=Math.max(g.srcX,g.midX,g.tgtX),i=Math.min(g.srcY,g.midY,g.tgtY),a=Math.max(g.srcY,g.midY,g.tgtY),ta(h,n-=x,i-=x,r+=x,a+=x),"haystack"===C){var D=g.haystackPts;if(D&&2===D.length){if(n=D[0].x,i=D[0].y,n>(r=D[1].x)){var S=n;n=r,r=S}if(i>(a=D[1].y)){var T=i;i=a,a=T}ta(h,n-x,i-x,r+x,a+x)}}else if("bezier"===C||"unbundled-bezier"===C||"segments"===C||"taxi"===C){var P;switch(C){case"bezier":case"unbundled-bezier":P=g.bezierPts;break;case"segments":case"taxi":P=g.linePts}if(null!=P)for(var M=0;M(r=N.x)){var A=n;n=r,r=A}if((i=_.y)>(a=N.y)){var I=i;i=a,a=I}ta(h,n-=x,i-=x,r+=x,a+=x)}if(u&&t.includeEdges&&f&&(ia(h,e,"mid-source"),ia(h,e,"mid-target"),ia(h,e,"source"),ia(h,e,"target")),u)if("yes"===e.pstyle("ghost").value){var L=e.pstyle("ghost-offset-x").pfValue,z=e.pstyle("ghost-offset-y").pfValue;ta(h,h.x1+L,h.y1+z,h.x2+L,h.y2+z)}var O=d.bodyBounds=d.bodyBounds||{};Xt(O,h),qt(O,v),Ft(O,1),u&&(n=h.x1,r=h.x2,i=h.y1,a=h.y2,ta(h,n-b,i-b,r+b,a+b));var R=d.overlayBounds=d.overlayBounds||{};Xt(R,h),qt(R,v),Ft(R,1);var V=d.labelBounds=d.labelBounds||{};null!=V.all?Ot(V.all):V.all=Lt(),u&&t.includeLabels&&(t.includeMainLabels&&aa(h,e,null),f&&(t.includeSourceLabels&&aa(h,e,"source"),t.includeTargetLabels&&aa(h,e,"target")))}return h.x1=ea(h.x1),h.y1=ea(h.y1),h.x2=ea(h.x2),h.y2=ea(h.y2),h.w=ea(h.x2-h.x1),h.h=ea(h.y2-h.y1),h.w>0&&h.h>0&&m&&(qt(h,v),Ft(h,1)),h},sa=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:Oa,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},Va.removeAllListeners=function(){return this.removeListener("*")},Va.emit=Va.trigger=function(e,t,n){var r=this.listeners,i=r.length;return this.emitting++,E(t)||(t=[t]),Xa(this,function(e,a){null!=n&&(r=[{event:a.event,type:a.type,namespace:a.namespace,callback:n}],i=r.length);for(var o=function(n){var i=r[n];if(i.type===a.type&&(!i.namespace||i.namespace===a.namespace||i.namespace===Ia)&&e.eventMatches(e.context,i,a)){var o=[a];null!=t&&He(o,t),e.beforeEmit(e.context,i,a),i.conf&&i.conf.one&&(e.listeners=e.listeners.filter(function(e){return e!==i}));var s=e.callbackContext(e.context,i,a),l=i.callback.apply(s,o);e.afterEmit(e.context,i,a),!1===l&&(a.stopPropagation(),a.preventDefault())}},s=0;s1&&!r){var i=this.length-1,a=this[i],o=a._private.data.id;this[i]=void 0,this[e]=a,n.set(o,{ele:a,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var i=r.index;return this.unmergeAt(i),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&x(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=0;rr&&(r=o,n=a)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,i=0;i=0&&i1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n),n.emitAndNotify("style"));var i=n._private.style[e];return null!=i?i:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=n.style();if(k(e)){var i=e;r.applyBypass(this,i,!1),this.emitAndNotify("style")}else if(x(e)){if(void 0===t){var a=this[0];return a?r.getStylePropertyValue(a,e):void 0}r.applyBypass(this,e,t,!1),this.emitAndNotify("style")}else if(void 0===e){var o=this[0];return o?r.getRawStyle(o):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=t.style();if(void 0===e)for(var r=0;r0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),go.neighbourhood=go.neighborhood,go.closedNeighbourhood=go.closedNeighborhood,go.openNeighbourhood=go.openNeighborhood,J(go,{source:Oi(function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t},"source"),target:Oi(function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t},"target"),sources:bo({attr:"source"}),targets:bo({attr:"target"})}),J(go,{edgesWith:Oi(xo(),"edgesWith"),edgesTo:Oi(xo({thisIsSrc:!0}),"edgesTo")}),J(go,{connectedEdges:Oi(function(e){for(var t=[],n=0;n0);return a},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),go.componentsOf=go.components;var Eo=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0!==e){var r=new Ze,i=!1;if(t){if(t.length>0&&k(t[0])&&!M(t[0])){i=!0;for(var a=[],o=new Je,s=0,l=t.length;s0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.cy(),a=i._private,o=[],s=[],l=0,u=this.length;l0){for(var z=e.length===this.length?this:new Eo(i,e),O=0;O0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=[],r={},i=this._private.cy;function a(e){var i=r[e.id()];t&&e.removed()||i||(r[e.id()]=!0,e.isNode()?(n.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?E.emitAndNotify("remove"):t&&E.emit("remove"));for(var k=0;k=a?function(t,r){for(var a=0;a0?i=l:r=l}while(Math.abs(a)>o&&++u1e-4&&Math.abs(s.v)>1e-4;);return a?function(e){return u[e*(u.length-1)|0]}:c}}(),To=function(e,t,n,r){var i=Do(e,t,n,r);return function(e,t,n){return e+(t-e)*i(n)}},Po={linear:function(e,t,n){return e+(t-e)*n},ease:To(.25,.1,.25,1),"ease-in":To(.42,0,1,1),"ease-out":To(0,0,.58,1),"ease-in-out":To(.42,0,.58,1),"ease-in-sine":To(.47,0,.745,.715),"ease-out-sine":To(.39,.575,.565,1),"ease-in-out-sine":To(.445,.05,.55,.95),"ease-in-quad":To(.55,.085,.68,.53),"ease-out-quad":To(.25,.46,.45,.94),"ease-in-out-quad":To(.455,.03,.515,.955),"ease-in-cubic":To(.55,.055,.675,.19),"ease-out-cubic":To(.215,.61,.355,1),"ease-in-out-cubic":To(.645,.045,.355,1),"ease-in-quart":To(.895,.03,.685,.22),"ease-out-quart":To(.165,.84,.44,1),"ease-in-out-quart":To(.77,0,.175,1),"ease-in-quint":To(.755,.05,.855,.06),"ease-out-quint":To(.23,1,.32,1),"ease-in-out-quint":To(.86,0,.07,1),"ease-in-expo":To(.95,.05,.795,.035),"ease-out-expo":To(.19,1,.22,1),"ease-in-out-expo":To(1,0,0,1),"ease-in-circ":To(.6,.04,.98,.335),"ease-out-circ":To(.075,.82,.165,1),"ease-in-out-circ":To(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Po.linear;var r=So(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":To};function Mo(e,t,n,r,i){if(1===r)return n;if(t===n)return n;var a=i(t,n,r);return null==e?a:((e.roundValue||e.color)&&(a=Math.round(a)),void 0!==e.min&&(a=Math.max(a,e.min)),void 0!==e.max&&(a=Math.min(a,e.max)),a)}function Bo(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function _o(e,t,n,r,i){var a=null!=i?i.type:null;n<0?n=0:n>1&&(n=1);var o=Bo(e,i),s=Bo(t,i);if(D(o)&&D(s))return Mo(a,o,s,n,r);if(E(o)&&E(s)){for(var l=[],u=0;u0?("spring"===h&&d.push(o.duration),o.easingImpl=Po[h].apply(null,d)):o.easingImpl=Po[h]}var p,f=o.easingImpl;if(p=0===o.duration?1:(n-l)/o.duration,o.applying&&(p=o.progress),p<0?p=0:p>1&&(p=1),null==o.delay){var g=o.startPosition,v=o.position;if(v&&i&&!e.locked()){var y={};Ao(g.x,v.x)&&(y.x=_o(g.x,v.x,p,f)),Ao(g.y,v.y)&&(y.y=_o(g.y,v.y,p,f)),e.position(y)}var m=o.startPan,b=o.pan,w=a.pan,E=null!=b&&r;E&&(Ao(m.x,b.x)&&(w.x=_o(m.x,b.x,p,f)),Ao(m.y,b.y)&&(w.y=_o(m.y,b.y,p,f)),e.emit("pan"));var k=o.startZoom,C=o.zoom,D=null!=C&&r;D&&(Ao(k,C)&&(a.zoom=It(a.minZoom,_o(k,C,p,f),a.maxZoom)),e.emit("zoom")),(E||D)&&e.emit("viewport");var S=o.style;if(S&&S.length>0&&i){for(var T=0;T=0;t--){(0,e[t])()}e.splice(0,e.length)},c=a.length-1;c>=0;c--){var h=a[c],d=h._private;d.stopped?(a.splice(c,1),d.hooked=!1,d.playing=!1,d.started=!1,u(d.frames)):(d.playing||d.applying)&&(d.playing&&d.applying&&(d.applying=!1),d.started||Io(t,h,e),No(t,h,e,n),d.applying&&(d.applying=!1),u(d.frames),null!=d.step&&d.step(e),h.completed()&&(a.splice(c,1),d.hooked=!1,d.playing=!1,d.started=!1,u(d.completes)),s=!0)}return n||0!==a.length||0!==o.length||r.push(t),s}for(var a=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var zo={animate:ii.animate(),animation:ii.animation(),animated:ii.animated(),clearQueue:ii.clearQueue(),delay:ii.delay(),delayAnimation:ii.delayAnimation(),stop:ii.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender(function(t,n){Lo(n,e)},t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&he(function(n){Lo(n,e),t()})}()}}},Oo={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&M(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},Ro=function(e){return x(e)?new Ni(e):e},Vo={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Ra(Oo,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,Ro(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,Ro(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,Ro(t),n),this},once:function(e,t,n){return this.emitter().one(e,Ro(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};ii.eventAliasesOn(Vo);var Fo={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Fo.jpeg=Fo.jpg;var qo={layout:function(e){if(null!=e)if(null!=e.name){var t=e.name,n=this.extension("layout",t);if(null!=n){var r;r=x(e.eles)?this.$(e.eles):null!=e.eles?e.eles:this.$();var i=new n(J({},e,{cy:this,eles:r}));return i}Ie("No such layout `"+t+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ie("A `name` must be specified to make a layout");else Ie("Layout options must be specified to make a layout")}};qo.createLayout=qo.makeLayout=qo.layout;var Xo={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var i=this.renderer();!this.destroyed()&&i&&i.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)e.removeChild(e.childNodes[0]);this._private.renderer=null,this.mutableElements().forEach(function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};jo.invalidateDimensions=jo.resize;var Wo={collection:function(e,t){return x(e)?this.$(e):P(e)?e.collection():E(e)?new Eo(this,e,t):new Eo(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};Wo.elements=Wo.filter=Wo.$;var Ho={},Go="t",Ko="f";Ho.apply=function(e){for(var t=this._private.cy.collection(),n=0;n0;if(h||c&&d){var p=void 0;h&&d?p=l.properties:h?p=l.properties:d&&(p=l.mappedProperties);for(var f=0;f1&&(g=1),s.color){var x=i.valueMin[0],w=i.valueMax[0],E=i.valueMin[1],k=i.valueMax[1],C=i.valueMin[2],S=i.valueMax[2],T=null==i.valueMin[3]?1:i.valueMin[3],P=null==i.valueMax[3]?1:i.valueMax[3],M=[Math.round(x+(w-x)*g),Math.round(E+(k-E)*g),Math.round(C+(S-C)*g),Math.round(T+(P-T)*g)];n={bypass:i.bypass,name:i.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else{if(!s.number)return!1;var B=i.valueMin+(i.valueMax-i.valueMin)*g;n=this.parse(i.name,B,i.bypass,"mapping")}if(!n)return f(),!1;n.mapping=i,i=n;break;case o.data:for(var _=i.field.split("."),N=h.data,A=0;A<_.length&&N;A++){N=N[_[A]]}if(null!=N&&(n=this.parse(i.name,N,i.bypass,"mapping")),!n)return f(),!1;n.mapping=i,i=n;break;case o.fn:var I=i.value,L=null!=i.fnValue?i.fnValue:I(e);if(i.prevFnValue=L,null==L)return ze("Custom function mappers may not return null (i.e. `"+i.name+"` for ele `"+e.id()+"` is null)"),!1;if(!(n=this.parse(i.name,L,i.bypass,"mapping")))return ze("Custom function mappers may not return invalid values for the property type (i.e. `"+i.name+"` for ele `"+e.id()+"` is invalid)"),!1;n.mapping=Re(i),i=n;break;case void 0:break;default:return!1}return l?(i.bypassed=c?u.bypassed:u,a[i.name]=i):c?u.bypassed=i:a[i.name]=i,p(),!0},Ho.cleanElements=function(e,t){for(var n=0;n0&&a>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()}).then(function(){return e.animation({style:s,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){n.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1})}else r.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1)},Ho.checkTrigger=function(e,t,n,r,i,a){var o=this.properties[t],s=i(o);null!=s&&s(n,r)&&a(o)},Ho.checkZOrderTrigger=function(e,t,n,r){var i=this;this.checkTrigger(e,t,n,r,function(e){return e.triggersZOrder},function(){i._private.cy.notify("zorder",e)})},Ho.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBounds},function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache(),"curve-style"!==t||"bezier"!==n&&"bezier"!==r||!i.triggersBoundsOfParallelBeziers||e.parallelEdges().forEach(function(e){e.isBundledBezier()&&e.dirtyBoundingBoxCache()})})},Ho.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r)};var Uo={applyBypass:function(e,t,n,r){var i=[];if("*"===t||"**"===t){if(void 0!==n)for(var a=0;at.length?i.substr(t.length):""}function o(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var s=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!s){ze("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=s[0];var l=s[1];if("core"!==l)if(new Ni(l).invalid){ze("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),a();continue}var u=s[2],c=!1;n=u;for(var h=[];;){if(n.match(/^\s*$/))break;var d=n.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!d){ze("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+u),c=!0;break}r=d[0];var p=d[1],f=d[2];if(this.properties[p])this.parse(p,f)?(h.push({name:p,val:f}),o()):(ze("Skipping property: Invalid property definition in: "+r),o());else ze("Skipping property: Invalid property name in: "+r),o()}if(c){a();break}this.selector(l);for(var g=0;g=7&&"d"===t[0]&&(l=new RegExp(o.data.regex).exec(t))){if(n)return!1;var h=o.data;return{name:e,value:l,strValue:""+t,mapped:h,field:l[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(u=new RegExp(o.mapData.regex).exec(t))){if(n)return!1;if(c.multiple)return!1;var d=o.mapData;if(!c.color&&!c.number)return!1;var p=this.parse(e,u[4]);if(!p||p.mapped)return!1;var f=this.parse(e,u[5]);if(!f||f.mapped)return!1;if(p.pfValue===f.pfValue||p.strValue===f.strValue)return ze("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(c.color){var g=p.value,v=f.value;if(!(g[0]!==v[0]||g[1]!==v[1]||g[2]!==v[2]||g[3]!==v[3]&&(null!=g[3]&&1!==g[3]||null!=v[3]&&1!==v[3])))return!1}return{name:e,value:u,strValue:""+t,mapped:d,field:u[1],fieldMin:parseFloat(u[2]),fieldMax:parseFloat(u[3]),valueMin:p.value,valueMax:f.value,bypass:n}}}if(c.multiple&&"multiple"!==r){var y;if(y=s?t.split(/\s+/):E(t)?t:[t],c.evenMultiple&&y.length%2!=0)return null;for(var m=[],b=[],k=[],C="",D=!1,T=0;T0?" ":"")+P.strValue}return c.validate&&!c.validate(m,b)?null:c.singleEnum&&D?1===m.length&&x(m[0])?{name:e,value:m[0],strValue:m[0],bypass:n}:null:{name:e,value:m,pfValue:k,strValue:C,bypass:n,units:b}}var M=function(){for(var r=0;rc.max||c.strictMax&&t===c.max))return null;var I={name:e,value:t,strValue:""+t+(B||""),units:B,bypass:n};return c.unitless||"px"!==B&&"em"!==B?I.pfValue=t:I.pfValue="px"!==B&&B?this.getEmSizeInPixels()*t:t,"ms"!==B&&"s"!==B||(I.pfValue="ms"===B?t:1e3*t),"deg"!==B&&"rad"!==B||(I.pfValue="rad"===B?t:Ct(t)),"%"===B&&(I.pfValue=t/100),I}if(c.propList){var L=[],z=""+t;if("none"===z);else{for(var O=z.split(/\s*,\s*|\s+/),R=0;R0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:a=(a=(a=Math.min((o-2*t)/n.w,(s-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:a)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,i=r.pan,a=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),D(e)?n=e:k(e)&&(n=e.level,null!=e.position?t=yt(e.position,a,i):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?a=!0:(t.zoom=s,i.push("zoom"))}if(r&&(!a||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;D(l.x)&&(t.pan.x=l.x,o=!1),D(l.y)&&(t.pan.y=l.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(x(e)){var n=e;e=this.mutableElements().filter(n)}else P(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),i=this.width(),a=this.height();return{x:(i-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(a-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(e=d.getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}}};os.centre=os.center,os.autolockNodes=os.autolock,os.autoungrabifyNodes=os.autoungrabify;var ss={data:ii.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0}),removeData:ii.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0}),scratch:ii.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0}),removeScratch:ii.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0})};ss.attr=ss.data,ss.removeAttr=ss.removeData;var ls=function(e){var t=this,n=(e=J({},e)).container;n&&!T(n)&&T(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var i=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var a=void 0!==d&&void 0!==n&&!e.headless,o=e;o.layout=J({name:a?"grid":"null"},o.layout),o.renderer=J({name:a?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Eo(this),listeners:[],aniEles:new Eo(this),data:{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?a:o.styleEnabled,zoom:D(o.zoom)?o.zoom:1,pan:{x:k(o.pan)&&D(o.pan.x)?o.pan.x:0,y:k(o.pan)&&D(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=J({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(O))return Qr.all(e).then(t);t(e)}([o.style,o.elements],function(e){var n=e[0],a=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var i=t.mutableElements();i.length>0&&i.remove(),null!=e&&(k(e)||E(e))&&t.add(e),t.one("layoutready",function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",r),t.emit("done")});var a=J({},t._private.options.layout);a.eles=t.elements(),t.layout(a).run()}(a,function(){t.startAnimationLoop(),l.ready=!0,w(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,u=Lt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(P(n.roots))e=n.roots;else if(E(n.roots)){for(var c=[],h=0;h0;){var N=M.shift(),A=T(N,B);if(A)N.outgoers().filter(function(e){return e.isNode()&&i.has(e)}).forEach(_);else if(null===A){ze("Detected double maximal shift for node `"+N.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}S();var I=0;if(n.avoidOverlap)for(var L=0;L0&&y[0].length<=3?l/2:0),h=2*Math.PI/y[r].length*i;return 0===r&&1===y[0].length&&(c=1),{x:G+c*Math.cos(h),y:K+c*Math.sin(h)}}return{x:G+(i+1-(a+1)/2)*o,y:(r+1)*s}}),this};var fs={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function gs(e){this.options=J({},fs,e)}gs.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,i=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var o,s=Lt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/a.length:t.sweep)/Math.max(1,a.length-1),h=0,d=0;d1&&t.avoidOverlap){h*=1.75;var v=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(h*h/(v*v+y*y));o=Math.max(m,o)}return a.layoutPositions(this,t,function(e,n){var r=t.startAngle+n*c*(i?1:-1),a=o*Math.cos(r),s=o*Math.sin(r);return{x:l+a,y:u+s}}),this};var vs,ys={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ms(e){this.options=J({},ys,e)}ms.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,i=t.eles.nodes().not(":parent"),a=Lt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o=a.x1+a.w/2,s=a.y1+a.h/2,l=[],u=0,c=0;c0)Math.abs(y[0].value-b.value)>=g&&(y=[],v.push(y));y.push(b)}var x=u+t.minNodeSpacing;if(!t.avoidOverlap){var w=v.length>0&&v[0].length>1,E=(Math.min(a.w,a.h)/2-x)/(v.length+w?1:0);x=Math.min(x,E)}for(var k=0,C=0;C1&&t.avoidOverlap){var P=Math.cos(T)-Math.cos(0),M=Math.sin(T)-Math.sin(0),B=Math.sqrt(x*x/(P*P+M*M));k=Math.max(B,k)}D.r=k,k+=x}if(t.equidistant){for(var _=0,N=0,A=0;A=e.numIter)&&(Ps(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&a(),he(t)):(Fs(r,e),s())}()}else{for(;u;)u=o(l),l++;Fs(r,e),s()}return this},xs.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},xs.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var ws,Es=function(e,t,n){for(var r=n.eles.edges(),i=n.eles.nodes(),a={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:Lt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},o=n.eles.components(),s={},l=0;l0){a.graphSet.push(x);for(l=0;lr.count?0:r.graph},Cs=function e(t,n,r,i){var a=i.graphSet[r];if(-10)var s=(u=r.nodeOverlap*o)*i/(g=Math.sqrt(i*i+a*a)),l=u*a/g;else{var u,c=As(e,i,a),h=As(t,-1*i,-1*a),d=h.x-c.x,p=h.y-c.y,f=d*d+p*p,g=Math.sqrt(f);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/f)*d/g,l=u*p/g}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Ns=function(e,t,n,r){if(n>0)var i=e.maxX-t.minX;else i=t.maxX-e.minX;if(r>0)var a=e.maxY-t.minY;else a=t.maxY-e.minY;return i>=0&&a>=0?Math.sqrt(i*i+a*a):0},As=function(e,t,n){var r=e.positionX,i=e.positionY,a=e.height||1,o=e.width||1,s=n/t,l=a/o,u={};return 0===t&&0n?(u.x=r,u.y=i+a/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=i-o*n/2/t,u):0=l)?(u.x=r+a*t/2/n,u.y=i+a/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-a*t/2/n,u.y=i-a/2,u):u},Is=function(e,t){for(var n=0;n1){var f=t.gravity*h/p,g=t.gravity*d/p;c.offsetX+=f,c.offsetY+=g}}}}},zs=function(e,t){var n=[],r=0,i=-1;for(n.push.apply(n,e.graphSet[0]),i+=e.graphSet[0].length;r<=i;){var a=n[r++],o=e.idToIndex[a],s=e.layoutNodes[o],l=s.children;if(0n)var i={x:n*e/r,y:n*t/r};else i={x:e,y:t};return i},Vs=function e(t,n){var r=t.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],a=!1;return(null==i.maxX||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(null==i.minX||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(null==i.minY||t.minY-i.padTopf&&(h+=p+t.componentSpacing,c=0,d=0,p=0)}}},qs={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Xs(e){this.options=J({},qs,e)}Xs.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles.nodes().not(":parent");t.sort&&(r=r.sort(t.sort));var i=Lt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.layoutPositions(this,t,function(e){return{x:i.x1,y:i.y1}});else{var a=r.size(),o=Math.sqrt(a*i.h/i.w),s=Math.round(o),l=Math.round(i.w/i.h*o),u=function(e){if(null==e)return Math.min(s,l);Math.min(s,l)==s?s=e:l=e},c=function(e){if(null==e)return Math.max(s,l);Math.max(s,l)==s?s=e:l=e},h=t.rows,d=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=d)s=h,l=d;else if(null!=h&&null==d)s=h,l=Math.ceil(a/s);else if(null==h&&null!=d)l=d,s=Math.ceil(a/l);else if(l*s>a){var p=u(),f=c();(p-1)*f>=a?u(p-1):(f-1)*p>=a&&c(f-1)}else for(;l*s=a?c(v+1):u(g+1)}var y=i.w/l,m=i.h/s;if(t.condense&&(y=0,m=0),t.avoidOverlap)for(var b=0;b=l&&(B=0,M++)},N={},A=0;A(r=en(e,t,x[w],x[w+1],x[w+2],x[w+3])))return v(n,r),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(x=a.allpts,w=0;w+5(r=Jt(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return v(n,r),!0;m=m||i.source,b=b||i.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return Ge(e,t,n)}function x(n,r){var i,a=n._private,o=f;i=r?r+"-":"",n.boundingBox();var s=a.labelBounds[r||"main"],l=n.pstyle(i+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=a.rstyle,c=b(u,"labelX",r),h=b(u,"labelY",r),d=b(a.rscratch,"labelAngle",r),p=s.x1-o,g=s.x2+o,y=s.y1-o,m=s.y2+o;if(d){var x=Math.cos(d),w=Math.sin(d),E=function(e,t){return{x:(e-=c)*x-(t-=h)*w+c,y:e*w+t*x+h}},k=E(p,y),C=E(p,m),D=E(g,y),S=E(g,m),T=[k.x,k.y,D.x,D.y,S.x,S.y,C.x,C.y];if(tn(e,t,T))return v(n),!0}else if(Wt(s,e,t))return v(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){for(var i=this.getCachedZSortedEles().interactive,a=[],o=Math.min(e,n),s=Math.max(e,n),l=Math.min(t,r),u=Math.max(t,r),c=Lt({x1:e=o,y1:t=l,x2:n=s,y2:r=u}),h=0;h0?Math.max(e-t,0):Math.min(e+t,0)},w=x(m,v),E=x(b,y),k=!1;"auto"===c?u=Math.abs(w)>Math.abs(E)?"horizontal":"vertical":"upward"===c||"downward"===c?(u="vertical",k=!0):"leftward"!==c&&"rightward"!==c||(u="horizontal",k=!0);var C,D="vertical"===u,S=D?E:w,T=D?b:m,P=Tt(T),M=!1;(k&&(d||f)||!("downward"===c&&T<0||"upward"===c&&T>0||"leftward"===c&&T>0||"rightward"===c&&T<0)||(S=(P*=-1)*Math.abs(S),M=!0),d)?C=(p<0?1+p:p)*S:C=(p<0?S:0)+p*P;var B=function(e){return Math.abs(e)=Math.abs(S)},_=B(C),N=B(Math.abs(S)-Math.abs(C));if((_||N)&&!M)if(D){var A=Math.abs(T)<=a/2,I=Math.abs(m)<=o/2;if(A){var L=(r.x1+r.x2)/2,z=r.y1,O=r.y2;n.segpts=[L,z,L,O]}else if(I){var R=(r.y1+r.y2)/2,V=r.x1,F=r.x2;n.segpts=[V,R,F,R]}else n.segpts=[r.x1,r.y2]}else{var q=Math.abs(T)<=i/2,X=Math.abs(b)<=s/2;if(q){var Y=(r.y1+r.y2)/2,j=r.x1,W=r.x2;n.segpts=[j,Y,W,Y]}else if(X){var H=(r.x1+r.x2)/2,G=r.y1,K=r.y2;n.segpts=[H,G,H,K]}else n.segpts=[r.x2,r.y1]}else if(D){var U=r.y1+C+(l?a/2*P:0),Z=r.x1,$=r.x2;n.segpts=[Z,U,$,U]}else{var Q=r.x1+C+(l?i/2*P:0),J=r.y1,ee=r.y2;n.segpts=[Q,J,Q,ee]}},nl.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,i=t.tgtPos,a=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,h=!D(n.startX)||!D(n.startY),d=!D(n.arrowStartX)||!D(n.arrowStartY),p=!D(n.endX)||!D(n.endY),f=!D(n.arrowEndX)||!D(n.arrowEndY),g=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),v=Pt({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),y=vd.poolIndex()){var p=h;h=d,d=p}var f=s.srcPos=h.position(),g=s.tgtPos=d.position(),v=s.srcW=h.outerWidth(),y=s.srcH=h.outerHeight(),m=s.tgtW=d.outerWidth(),b=s.tgtH=d.outerHeight(),x=s.srcShape=n.nodeShapes[t.getNodeShape(h)],w=s.tgtShape=n.nodeShapes[t.getNodeShape(d)];s.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var E=0;E0){var X=u,Y=Mt(X,bt(t)),j=Mt(X,bt(q)),W=Y;if(j2)Mt(X,{x:q[2],y:q[3]})0){var ie=c,ae=Mt(ie,bt(t)),oe=Mt(ie,bt(re)),se=ae;if(oe2)Mt(ie,{x:re[2],y:re[3]})=c||b){h={cp:v,segment:m};break}}if(h)break}var x=h.cp,w=h.segment,E=(c-p)/w.length,k=w.t1-w.t0,C=u?w.t0+k*E:w.t1-k*E;C=It(0,C,1),t=Nt(x.p0,x.p1,x.p2,C),l=cl(x.p0,x.p1,x.p2,C);break;case"straight":case"segments":case"haystack":for(var D,S,T,P,M=0,B=r.allpts.length,_=0;_+3=c));_+=2);var N=(c-S)/D;N=It(0,N,1),t=At(T,P,N),l=ul(T,P)}o("labelX",s,t.x),o("labelY",s,t.y),o("labelAutoAngle",s,l)}};l("source"),l("target"),this.applyLabelDimensions(e)}},sl.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},sl.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),i=this.calculateLabelDimensions(e,r),a=e.pstyle("line-height").pfValue,o=e.pstyle("text-wrap").strValue,s=Ge(n.rscratch,"labelWrapCachedLines",t)||[],l="wrap"!==o?1:Math.max(s.length,1),u=i.height/l,c=u*a,h=i.width,d=i.height+(l-1)*(a-1)*u;Ke(n.rstyle,"labelWidth",t,h),Ke(n.rscratch,"labelWidth",t,h),Ke(n.rstyle,"labelHeight",t,d),Ke(n.rscratch,"labelHeight",t,d),Ke(n.rscratch,"labelLineHeight",t,c)},sl.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",i=e.pstyle(r+"label").strValue,a=e.pstyle("text-transform").value,o=function(e,r){return r?(Ke(n.rscratch,e,t,r),r):Ge(n.rscratch,e,t)};if(!i)return"";"none"==a||("uppercase"==a?i=i.toUpperCase():"lowercase"==a&&(i=i.toLowerCase()));var s=e.pstyle("text-wrap").value;if("wrap"===s){var l=o("labelKey");if(null!=l&&o("labelWrapKey")===l)return o("labelWrapCachedText");for(var u=i.split("\n"),c=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,d=[],p=/[\s\u200b]+/,f=h?"":" ",g=0;gc){for(var b=v.split(p),x="",w=0;wC)break;D+=i[T],T===i.length-1&&(S=!0)}return S||(D+="…"),D}return i},sl.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},sl.calculateLabelDimensions=function(e,t){var n=ke(t,e._private.labelDimsKey),r=this.labelDimCache||(this.labelDimCache=[]),i=r[n];if(null!=i)return i;var a=e.pstyle("font-style").strValue,o=e.pstyle("font-size").pfValue,s=e.pstyle("font-family").strValue,l=e.pstyle("font-weight").strValue,u=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!u){u=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=u.getContext("2d");var h=u.style;h.position="absolute",h.left="-9999px",h.top="-9999px",h.zIndex="-1",h.visibility="hidden",h.pointerEvents="none"}c.font="".concat(a," ").concat(l," ").concat(o,"px ").concat(s);for(var d=0,p=0,f=t.split("\n"),g=0;g1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var T=i(t);v&&(e.hoverData.tapholdCancelled=!0);n=!0,r(g,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var P=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:c[0],y:c[1]}}),f[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(v){var M={originalEvent:t,type:"cxtdrag",position:{x:c[0],y:c[1]}};b?b.emit(M):o.emit(M),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&g===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:c[0],y:c[1]}}),e.hoverData.cxtOver=g,g&&g.emit({originalEvent:t,type:"cxtdragover",position:{x:c[0],y:c[1]}}))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var B;if(e.hoverData.justStartedPan){var _=e.hoverData.mdownPos;B={x:(c[0]-_[0])*s,y:(c[1]-_[1])*s},e.hoverData.justStartedPan=!1}else B={x:x[0]*s,y:x[1]*s};o.panBy(B),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=f[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||g==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),g&&r(g,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=g),b)if(v){if(o.boxSelectionEnabled()&&T)b&&b.grabbed()&&(h(w),b.emit("freeon"),w.emit("free"),e.dragData.didDrag&&(b.emit("dragfreeon"),w.emit("dragfree"))),P();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var N=!e.dragData.didDrag;N&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var A=o.collection();e.hoverData.draggingEles||u(w,{inDragLayer:!0});var I={x:0,y:0};if(D(x[0])&&D(x[1])&&(I.x+=x[0],I.y+=x[1],N)){var L=e.hoverData.dragDelta;L&&D(L[0])&&D(L[1])&&(I.x+=L[0],I.y+=L[1])}for(var z=0;z0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=a.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===a.selectionType()||d?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):d||(a.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=a.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),a.emit({type:"boxend",originalEvent:t,position:{x:o[0],y:o[1]}});var v=function(e){return e.selectable()&&!e.selected()};"additive"===a.selectionType()?g.emit("box").stdFilter(v).select().emit("boxselect"):(d||a.$(n).unmerge(g).unselect(),g.emit("box").stdFilter(v).select().emit("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var y=c&&c.grabbed();h(u),y&&(c.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(c.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}},!1);var b,x,w,E,k,C,S,T,P,M,B,_,N,A=function(t){if(!e.scrollingPage){var n=e.cy,r=n.zoom(),i=n.pan(),a=e.projectIntoViewport(t.clientX,t.clientY),o=[a[0]*r+i.x,a[1]*r+i.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(n.panningEnabled()&&n.userPanningEnabled()&&n.zoomingEnabled()&&n.userZoomingEnabled()){var s;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150),s=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,s*=e.wheelSensitivity,1===t.deltaMode&&(s*=33);var l=n.zoom()*Math.pow(10,s);"gesturechange"===t.type&&(l=e.gestureStartZoom*t.scale),n.zoom({level:l,renderedPosition:{x:o[0],y:o[1]}})}}};e.registerBinding(e.container,"wheel",A,!0),e.registerBinding(window,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"gesturestart",function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()},!0),e.registerBinding(e.container,"gesturechange",function(t){e.hasTouchStarted||A(t)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var I,L,z,O,R=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},V=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",I=function(t){if(e.hasTouchStarted=!0,m(t)){p(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,i=e.touchData.now,a=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);i[0]=o[0],i[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);i[2]=o[0],i[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);i[4]=o[0],i[5]=o[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,h(e.dragData.touchDragEles);var l=e.findContainerClientCoords();P=l[0],M=l[1],B=l[2],_=l[3],b=t.touches[0].clientX-P,x=t.touches[0].clientY-M,w=t.touches[1].clientX-P,E=t.touches[1].clientY-M,N=0<=b&&b<=B&&0<=w&&w<=B&&0<=x&&x<=_&&0<=E&&E<=_;var d=n.pan(),f=n.zoom();k=R(b,x,w,E),C=V(b,x,w,E),T=[((S=[(b+w)/2,(x+E)/2])[0]-d.x)/f,(S[1]-d.y)/f];if(C<4e4&&!t.touches[2]){var g=e.findNearestElement(i[0],i[1],!0,!0),v=e.findNearestElement(i[2],i[3],!0,!0);return g&&g.isNode()?(g.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=g):v&&v.isNode()?(v.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=v):n.emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var y=e.findNearestElements(i[0],i[1],!0,!0),D=y[0];if(null!=D&&(D.activate(),e.touchData.start=D,e.touchData.starts=y,e.nodeIsGrabbable(D))){var A=e.dragData.touchDragEles=n.collection(),I=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),D.selected()?(I=n.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),u(I,{addToList:A})):c(D,{addToList:A}),s(D);var L=function(e){return{originalEvent:t,type:e,position:{x:i[0],y:i[1]}}};D.emit(L("grabon")),I?I.forEach(function(e){e.emit(L("grab"))}):D.emit(L("grab"))}r(D,["touchstart","tapstart","vmousedown"],t,{x:i[0],y:i[1]}),null==D&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:i[0],y:i[1]})},e.tapholdDuration)}if(t.touches.length>=1){for(var z=e.touchData.startPosition=[],O=0;O=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var _=t.touches[0].clientX-P,A=t.touches[0].clientY-M,I=t.touches[1].clientX-P,L=t.touches[1].clientY-M,z=V(_,A,I,L);if(z/C>=2.25||z>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var O={originalEvent:t,type:"cxttapend",position:{x:s[0],y:s[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(O),e.touchData.start=null):o.emit(O)}}if(n&&e.touchData.cxt){O={originalEvent:t,type:"cxtdrag",position:{x:s[0],y:s[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(O):o.emit(O),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var F=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&F===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:s[0],y:s[1]}}),e.touchData.cxtOver=F,F&&F.emit({originalEvent:t,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:s[0],y:s[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,i[4]=1,i&&0!==i.length&&void 0!==i[0]?(i[2]=(s[0]+s[2]+s[4])/3,i[3]=(s[1]+s[3]+s[5])/3):(i[0]=(s[0]+s[2]+s[4])/3,i[1]=(s[1]+s[3]+s[5])/3,i[2]=(s[0]+s[2]+s[4])/3+1,i[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var q=0;q0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",z=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(window,"touchend",O=function(t){var i=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var a=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o,s=e.cy,l=s.zoom(),u=e.touchData.now,c=e.touchData.earlier;if(t.touches[0]){var d=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);u[0]=d[0],u[1]=d[1]}if(t.touches[1]){d=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);u[2]=d[0],u[3]=d[1]}if(t.touches[2]){d=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);u[4]=d[0],u[5]=d[1]}if(i&&i.unactivate(),e.touchData.cxt){if(o={originalEvent:t,type:"cxttapend",position:{x:u[0],y:u[1]}},i?i.emit(o):s.emit(o),!e.touchData.cxtDragged){var p={originalEvent:t,type:"cxttap",position:{x:u[0],y:u[1]}};i?i.emit(p):s.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&s.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var f=s.collection(e.getAllInBox(a[0],a[1],a[2],a[3]));a[0]=void 0,a[1]=void 0,a[2]=void 0,a[3]=void 0,a[4]=0,e.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:t,position:{x:u[0],y:u[1]}});f.emit("box").stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit("boxselect"),f.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=i&&i.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=i){var v=i._private.grabbed;h(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&(i.emit("freeon"),g.emit("free"),e.dragData.didDrag&&(i.emit("dragfreeon"),g.emit("dragfree"))),r(i,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]}),i.unactivate(),e.touchData.start=null}else{var y=e.findNearestElement(u[0],u[1],!0,!0);r(y,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]})}var m=e.touchData.startPosition[0]-u[0],b=m*m,x=e.touchData.startPosition[1]-u[1],w=(b+x*x)*l*l;e.touchData.singleTouchMoved||(i||s.$(":selected").unselect(["tapunselect"]),r(i,["tap","vclick"],t,{x:u[0],y:u[1]})),null!=i&&!e.dragData.didDrag&&i._private.selectable&&w0)return p[0]}return null},d=Object.keys(c),p=0;p0?l:Kt(i,a,e,t,n,r,o)},checkPoint:function(e,t,n,r,i,a,o){var s=mn(r,i),l=2*s;if(nn(e,t,this.points,a,o,r,i-l,[0,-1],n))return!0;if(nn(e,t,this.points,a,o,r-l,i,[0,-1],n))return!0;var u=r/2+2*n,c=i/2+2*n;return!!tn(e,t,[a-u,o-c,a-u,o,a+u,o,a+u,o-c])||(!!ln(e,t,l,l,a+r/2-s,o+i/2-s,n)||!!ln(e,t,l,l,a-r/2+s,o+i/2-s,n))}}},registerNodeShapes:function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",gn(3,0)),this.generateRoundPolygon("round-triangle",gn(3,0)),this.generatePolygon("rectangle",gn(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",gn(5,0)),this.generateRoundPolygon("round-pentagon",gn(5,0)),this.generatePolygon("hexagon",gn(6,0)),this.generateRoundPolygon("round-hexagon",gn(6,0)),this.generatePolygon("heptagon",gn(7,0)),this.generateRoundPolygon("round-heptagon",gn(7,0)),this.generatePolygon("octagon",gn(8,0)),this.generateRoundPolygon("round-octagon",gn(8,0));var r=new Array(20),i=yn(5,0),a=yn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*g)break}else if(t){if(p>=e.deqCost*l||p>=e.deqAvgCost*s)break}else if(f>=e.deqNoDrawCost*Dl)break;var v=e.deq(n,h,c);if(!(v.length>0))break;for(var y=0;y0&&(e.onDeqd(n,u),!t&&e.shouldRedraw(n,u,h,c)&&i())},a(n))}}}},Tl=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_e;i(this,e),this.idsByKey=new Ze,this.keyForId=new Ze,this.cachesByLvl=new Ze,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n}return o(e,[{key:"getIdsFor",value:function(e){null==e&&Ie("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new Je,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new Ze,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach(function(n){return t.deleteCache(e,n)})}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}]),e}(),Pl=25,Ml=50,Bl=-4,_l=3,Nl=7.99,Al=8,Il=1024,Ll=1024,zl=1024,Ol=.2,Rl=.8,Vl=10,Fl=.15,ql=.1,Xl=.9,Yl=.9,jl=100,Wl=1,Hl={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Gl=Ye({getKey:null,doesEleInvalidateKey:_e,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Be,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Kl=function(e,t){this.renderer=e,this.onDequeues=[];var n=Gl(t);J(this,n),this.lookup=new Tl(n.getKey,n.doesEleInvalidateKey),this.setupDequeueing()},Ul=Kl.prototype;Ul.reasons=Hl,Ul.getTextureQueue=function(e){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[e]=this.eleImgCaches[e]||[]},Ul.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},Ul.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new n(function(e,t){return t.reqs-e.reqs})},Ul.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},Ul.getElement=function(e,t,n,r,i){var a=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible())return null;if(!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(St(s*n))),r=Nl||r>_l)return null;var u=Math.pow(2,r),c=t.h*u,h=t.w*u,d=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,d))return null;var p,f=l.get(e,r);if(f&&f.invalidated&&(f.invalidated=!1,f.texture.invalidatedWidth-=f.width),f)return f;if(p=c<=Pl?Pl:c<=Ml?Ml:Math.ceil(c/Ml)*Ml,c>zl||h>Ll)return null;var g=a.getTextureQueue(p),v=g[g.length-2],y=function(){return a.recycleTexture(p,h)||a.addTexture(p,h)};v||(v=g[g.length-1]),v||(v=y()),v.width-v.usedWidthr;T--)D=a.getElement(e,t,n,T,Hl.downscale);S()}else{var P;if(!x&&!w&&!E)for(var M=r-1;M>=Bl;M--){var B=l.get(e,M);if(B){P=B;break}}if(b(P))return a.queueElement(e,r),P;v.context.translate(v.usedWidth,0),v.context.scale(u,u),this.drawElement(v.context,e,t,d,!1),v.context.scale(1/u,1/u),v.context.translate(-v.usedWidth,0)}return f={x:v.usedWidth,texture:v,level:r,scale:u,width:h,height:c,scaledLabelShown:d},v.usedWidth+=Math.ceil(h+Al),v.eleCaches.push(f),l.set(e,r,f),a.checkTextureFullness(v),f},Ul.invalidateElements=function(e){for(var t=0;t=Ol*e.width&&this.retireTexture(e)},Ul.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>Rl&&e.fullnessChecks>=Vl?je(t,e):e.fullnessChecks++},Ul.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;je(n,e),e.retired=!0;for(var i=e.eleCaches,a=0;a=t)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,We(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),je(r,a),n.push(a),a}},Ul.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),i=this.getKey(e),a=r[i];if(a)a.level=Math.max(a.level,t),a.eles.merge(e),a.reqs++,n.updateItem(a);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:i};n.push(o),r[i]=o}},Ul.dequeue=function(e){for(var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=[],i=this.lookup,a=0;a0;a++){var o=t.pop(),s=o.key,l=o.eles[0],u=i.hasCache(l,o.level);if(n[s]=null,!u){r.push(o);var c=this.getBoundingBox(l);this.getElement(l,c,e,o.level,Hl.dequeue)}}return r},Ul.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),i=n[r];null!=i&&(1===i.eles.length?(i.reqs=Me,t.updateItem(i),t.pop(),n[r]=null):i.eles.unmerge(e))},Ul.onDequeue=function(e){this.onDequeues.push(e)},Ul.offDequeue=function(e){je(this.onDequeues,e)},Ul.setupDequeueing=Sl.setupDequeueing({deqRedrawThreshold:jl,deqCost:Fl,deqAvgCost:ql,deqNoDrawCost:Xl,deqFastCost:Yl,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=Jl||n>Ql)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},i=function(e){if(!s)for(var r=n+e;$l<=r&&r<=Ql&&!t(r);r+=e);};i(1),i(-1);for(var a=c.length-1;a>=0;a--){var o=c[a];o.invalid&&je(c,o)}}();var h=function(t){var i=(t=t||{}).after;if(function(){if(!o){o=Lt();for(var t=0;tlu)return null;var a=r.makeLayer(o,n);if(null!=i){var s=c.indexOf(i)+1;c.splice(s,0,a)}else(void 0===t.insert||t.insert)&&c.unshift(a);return a};if(r.skipping&&!a)return null;for(var d=null,p=e.length/Zl,f=!a,g=0;g=p||!Gt(d.bb,v.boundingBox()))&&!(d=h({insert:!0,after:d})))return null;s||f?r.queueLayer(d,v):r.drawEleInLayer(d,v,n,t),d.eles.push(v),m[n]=d}}return s||(f?null:c)},hu.getEleLevelForLayerLevel=function(e,t){return e},hu.drawEleInLayer=function(e,t,n,r){var i=this.renderer,a=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),i.setImgSmoothing(a,!1),i.drawCachedElement(a,t,null,null,n,uu),i.setImgSmoothing(a,!0))},hu.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(a.invalid)return!1;r+=a.eles.length}return r===t.length},hu.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},hu.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=de(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)}))},hu.invalidateLayer=function(e){if(this.lastInvalidationTime=de(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];je(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!a||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=a?t.pstyle("opacity").value:1,c=t.pstyle("line-style").value,h=t.pstyle("width").pfValue,d=t.pstyle("line-cap").value,p=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;e.lineWidth=h,e.lineCap=d,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,c),e.lineCap="butt"},f=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var g=t.pstyle("ghost-offset-x").pfValue,v=t.pstyle("ghost-offset-y").pfValue,y=t.pstyle("ghost-opacity").value,m=u*y;e.translate(g,v),p(m),f(m),e.translate(-g,-v)}p(),f(),i&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}},drawEdgeOverlay:function(e,t){if(t.visible()){var n=t.pstyle("overlay-opacity").value;if(0!==n){var r=this,i=r.usePaths(),a=t._private.rscratch,o=2*t.pstyle("overlay-padding").pfValue,s=t.pstyle("overlay-color").value;e.lineWidth=o,"self"!==a.edgeType||i?e.lineCap="round":e.lineCap="butt",r.colorStrokeStyle(e,s[0],s[1],s[2],n),r.drawEdgePath(t,e,a.allpts,"solid")}}},drawEdgePath:function(e,t,n,r){var i,a=e._private.rscratch,o=t,s=!1,l=this.usePaths(),u=e.pstyle("line-dash-pattern").pfValue,c=e.pstyle("line-dash-offset").pfValue;if(l){var h=n.join("$");a.pathCacheKey&&a.pathCacheKey===h?(i=t=a.pathCache,s=!0):(i=t=new Path2D,a.pathCacheKey=h,a.pathCache=i)}if(o.setLineDash)switch(r){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash(u),o.lineDashOffset=c;break;case"solid":o.setLineDash([])}if(!s&&!a.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var d=2;d+35&&void 0!==arguments[5]?arguments[5]:5;e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath(),e.fill()}Bu.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),i=Math.ceil(St(n*r));t=Math.pow(2,i)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(a&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),h=t.pstyle("source-label"),d=t.pstyle("target-label");if(u||(!c||!c.value)&&(!h||!h.value)&&(!d||!d.value))return;e.textAlign="center",e.textBaseline="bottom"}var p,f=!n;n&&(p=n,e.translate(-p.x1,-p.y1)),null==i?(o.drawText(e,t,null,f,a),t.isEdge()&&(o.drawText(e,t,"source",f,a),o.drawText(e,t,"target",f,a))):o.drawText(e,t,i,f,a),n&&e.translate(p.x1,p.y1)},Bu.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Bu.getTextAngle=function(e,t){var n=e._private.rscratch,r=t?t+"-":"",i=e.pstyle(r+"text-rotation"),a=Ge(n,"labelAngle",t);return"autorotate"===i.strValue?e.isEdge()?a:0:"none"===i.strValue?0:i.pfValue},Bu.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=t._private.rscratch,o=i?t.effectiveOpacity():1;if(!i||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=Ge(a,"labelX",n),c=Ge(a,"labelY",n),h=this.getLabelText(t,n);if(null!=h&&""!==h&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,i);var d,p=n?n+"-":"",f=Ge(a,"labelWidth",n),g=Ge(a,"labelHeight",n),v=t.pstyle(p+"text-margin-x").pfValue,y=t.pstyle(p+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=v,c+=y,0!==(d=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(d),u=0,c=0),x){case"top":break;case"center":c+=g/2;break;case"bottom":c+=g}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,C=t.pstyle("text-background-padding").pfValue;if(w>0||k>0&&E>0){var D=u-C;switch(b){case"left":D-=f;break;case"center":D-=f/2}var S=c-g-C,T=f+2*C,P=g+2*C;if(w>0){var M=e.fillStyle,B=t.pstyle("text-background-color").value;e.fillStyle="rgba("+B[0]+","+B[1]+","+B[2]+","+w*o+")",0===t.pstyle("text-background-shape").strValue.indexOf("round")?_u(e,D,S,T,P,2):e.fillRect(D,S,T,P),e.fillStyle=M}if(k>0&&E>0){var _=e.strokeStyle,N=e.lineWidth,A=t.pstyle("text-border-color").value,I=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+A[0]+","+A[1]+","+A[2]+","+E*o+")",e.lineWidth=k,e.setLineDash)switch(I){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(D,S,T,P),"double"===I){var L=k/2;e.strokeRect(D+L,S+L,T-2*L,P-2*L)}e.setLineDash&&e.setLineDash([]),e.lineWidth=N,e.strokeStyle=_}}var z=2*t.pstyle("text-outline-width").pfValue;if(z>0&&(e.lineWidth=z),"wrap"===t.pstyle("text-wrap").value){var O=Ge(a,"labelWrapCachedLines",n),R=Ge(a,"labelLineHeight",n),V=f/2,F=this.getLabelJustification(t);switch("auto"===F||("left"===b?"left"===F?u+=-f:"center"===F&&(u+=-V):"center"===b?"left"===F?u+=-V:"right"===F&&(u+=V):"right"===b&&("center"===F?u+=V:"right"===F&&(u+=f))),x){case"top":c-=(O.length-1)*R;break;case"center":case"bottom":c-=(O.length-1)*R}for(var q=0;q0&&e.strokeText(O[q],u,c),e.fillText(O[q],u,c),c+=R}else z>0&&e.strokeText(h,u,c),e.fillText(h,u,c);0!==d&&(e.rotate(-d),e.translate(-s,-l))}}};var Nu={drawNode:function(e,t,n){var r,i,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,h=t.position();if(D(h.x)&&D(h.y)&&(!s||t.visible())){var d,p,f=s?t.effectiveOpacity():1,g=l.usePaths(),v=!1,y=t.padding();r=t.width()+2*y,i=t.height()+2*y,n&&(p=n,e.translate(-p.x1,-p.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:P;l.eleFillStyle(e,t,n)},A=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_;l.colorStrokeStyle(e,M[0],M[1],M[2],t)},I=t.pstyle("shape").strValue,L=t.pstyle("shape-polygon-points").pfValue;if(g){e.translate(h.x,h.y);var z=l.nodePathCache=l.nodePathCache||[],O=Ce("polygon"===I?I+","+L.join(","):I,""+i,""+r),R=z[O];null!=R?(d=R,v=!0,c.pathCache=d):(d=new Path2D,z[O]=c.pathCache=d)}var V=function(){if(!v){var n=h;g&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(d||e,n.x,n.y,r,i)}g?e.fill(d):e.fill()},F=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=u.backgrounding,i=0,a=0;a0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;l.hasPie(t)&&(l.drawPie(e,t,a),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,h.x,h.y,r,i)))},X=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(S>0?S:-S)*t,r=S>0?0:255;0!==S&&(l.colorFillStyle(e,r,r,r,n),g?e.fill(d):e.fill())},Y=function(){if(T>0){if(e.lineWidth=T,e.lineCap="butt",e.setLineDash)switch(B){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(g?e.stroke(d):e.stroke(),"double"===B){e.lineWidth=T/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",g?e.stroke(d):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}};if("yes"===t.pstyle("ghost").value){var j=t.pstyle("ghost-offset-x").pfValue,W=t.pstyle("ghost-offset-y").pfValue,H=t.pstyle("ghost-opacity").value,G=H*f;e.translate(j,W),N(H*P),V(),F(G),q(0!==S||0!==T),X(G),A(H*_),Y(),e.translate(-j,-W)}N(),V(),F(),q(0!==S||0!==T),X(),A(),Y(),g&&e.translate(-h.x,-h.y),l.drawElementText(e,t,null,a),o&&l.drawNodeOverlay(e,t,h,r,i),n&&e.translate(p.x1,p.y1)}},drawNodeOverlay:function(e,t,n,r,i){if(t.visible()){var a=t.pstyle("overlay-padding").pfValue,o=t.pstyle("overlay-opacity").value,s=t.pstyle("overlay-color").value;if(o>0){if(n=n||t.position(),null==r||null==i){var l=t.padding();r=t.width()+2*l,i=t.height()+2*l}this.colorFillStyle(e,s[0],s[1],s[2],o),this.nodeShapes.roundrectangle.draw(e,n.x,n.y,r+2*a,i+2*a),e.fill()}}},hasPie:function(e){return(e=e[0])._private.hasPie},drawPie:function(e,t,n,r){t=t[0],r=r||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),o=r.x,s=r.y,l=t.width(),u=t.height(),c=Math.min(l,u)/2,h=0;this.usePaths()&&(o=0,s=0),"%"===a.units?c*=a.pfValue:void 0!==a.pfValue&&(c=a.pfValue/2);for(var d=1;d<=i.pieBackgroundN;d++){var p=t.pstyle("pie-"+d+"-background-size").value,f=t.pstyle("pie-"+d+"-background-color").value,g=t.pstyle("pie-"+d+"-background-opacity").value*n,v=p/100;v+h>1&&(v=1-h);var y=1.5*Math.PI+2*Math.PI*h,m=y+2*Math.PI*v;0===p||h>=1||h+v>1||(e.beginPath(),e.moveTo(o,s),e.arc(o,s,c,y,m),e.closePath(),this.colorFillStyle(e,f[0],f[1],f[2],g),e.fill(),h+=v)}}},Au={},Iu=100;Au.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},Au.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;io.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!h&&(c[o.NODE]=!0,c[o.SELECT_BOX]=!0);var m=l.style(),b=l.zoom(),x=void 0!==i?i:b,w=l.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},C=o.prevViewport;void 0===C||k.zoom!==C.zoom||k.pan.x!==C.pan.x||k.pan.y!==C.pan.y||g&&!f||(o.motionBlurPxRatio=1),a&&(E=a),x*=s,E.x*=s,E.y*=s;var D=o.getCachedZSortedEles();function S(e,t,n,r,i){var a=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",o.colorFillStyle(e,255,255,255,o.motionBlurTransparency),e.fillRect(t,n,r,i),e.globalCompositeOperation=a}function T(e,r){var s,l,c,h;o.clearingMotionBlur||e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]?(s=E,l=x,c=o.canvasWidth,h=o.canvasHeight):(s={x:w.x*p,y:w.y*p},l=b*p,c=o.canvasWidth*p,h=o.canvasHeight*p),e.setTransform(1,0,0,1,0,0),"motionBlur"===r?S(e,0,0,c,h):t||void 0!==r&&!r||e.clearRect(0,0,c,h),n||(e.translate(s.x,s.y),e.scale(l,l)),a&&e.translate(a.x,a.y),i&&e.scale(i,i)}if(h||(o.textureDrawLastFrame=!1),h){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=l.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var P=o.data.bufferContexts[o.TEXTURE_BUFFER];P.setTransform(1,0,0,1,0,0),P.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:P,drawOnlyNodeLayer:!0,forcedPxRatio:s*o.textureMult}),(k=o.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:o.canvasWidth,height:o.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[o.DRAG]=!1,c[o.NODE]=!1;var M=u.contexts[o.NODE],B=o.textureCache.texture;k=o.textureCache.viewport;M.setTransform(1,0,0,1,0,0),d?S(M,0,0,k.width,k.height):M.clearRect(0,0,k.width,k.height);var _=m.core("outside-texture-bg-color").value,N=m.core("outside-texture-bg-opacity").value;o.colorFillStyle(M,_[0],_[1],_[2],N),M.fillRect(0,0,k.width,k.height);b=l.zoom();T(M,!1),M.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/s,k.height/k.zoom/s),M.drawImage(B,k.mpan.x,k.mpan.y,k.width/k.zoom/s,k.height/k.zoom/s)}else o.textureOnViewport&&!t&&(o.textureCache=null);var A=l.extent(),I=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),L=o.hideEdgesOnViewport&&I,z=[];if(z[o.NODE]=!c[o.NODE]&&d&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,z[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),z[o.DRAG]=!c[o.DRAG]&&d&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,z[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),c[o.NODE]||n||r||z[o.NODE]){var O=d&&!z[o.NODE]&&1!==p;T(M=t||(O?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:u.contexts[o.NODE]),d&&!O?"motionBlur":void 0),L?o.drawCachedNodes(M,D.nondrag,s,A):o.drawLayeredElements(M,D.nondrag,s,A),o.debug&&o.drawDebugPoints(M,D.nondrag),n||d||(c[o.NODE]=!1)}if(!r&&(c[o.DRAG]||n||z[o.DRAG])){O=d&&!z[o.DRAG]&&1!==p;T(M=t||(O?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:u.contexts[o.DRAG]),d&&!O?"motionBlur":void 0),L?o.drawCachedNodes(M,D.drag,s,A):o.drawCachedElements(M,D.drag,s,A),o.debug&&o.drawDebugPoints(M,D.drag),n||d||(c[o.DRAG]=!1)}if(o.showFps||!r&&c[o.SELECT_BOX]&&!n){if(T(M=t||u.contexts[o.SELECT_BOX]),1==o.selection[4]&&(o.hoverData.selecting||o.touchData.selecting)){b=o.cy.zoom();var R=m.core("selection-box-border-width").value/b;M.lineWidth=R,M.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",M.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),R>0&&(M.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",M.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(u.bgActivePosistion&&!o.hoverData.selecting){b=o.cy.zoom();var V=u.bgActivePosistion;M.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",M.beginPath(),M.arc(V.x,V.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),M.fill()}var F=o.lastRedrawTime;if(o.showFps&&F){F=Math.round(F);var q=Math.round(1e3/F);M.setTransform(1,0,0,1,0,0),M.fillStyle="rgba(255, 0, 0, 0.75)",M.strokeStyle="rgba(255, 0, 0, 0.75)",M.lineWidth=1,M.fillText("1 frame = "+F+" ms = "+q+" fps",0,20);M.strokeRect(0,30,250,20),M.fillRect(0,30,250*Math.min(q/60,1),20)}n||(c[o.SELECT_BOX]=!1)}if(d&&1!==p){var X=u.contexts[o.NODE],Y=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],j=u.contexts[o.DRAG],W=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],H=function(e,t,n){e.setTransform(1,0,0,1,0,0),n||!y?e.clearRect(0,0,o.canvasWidth,o.canvasHeight):S(e,0,0,o.canvasWidth,o.canvasHeight);var r=p;e.drawImage(t,0,0,o.canvasWidth*r,o.canvasHeight*r,0,0,o.canvasWidth,o.canvasHeight)};(c[o.NODE]||z[o.NODE])&&(H(X,Y,z[o.NODE]),c[o.NODE]=!1),(c[o.DRAG]||z[o.DRAG])&&(H(j,W,z[o.DRAG]),c[o.DRAG]=!1)}o.prevViewport=k,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),d&&(o.motionBlurTimeout=setTimeout(function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!h,o.mbFrames=0,c[o.NODE]=!0,c[o.DRAG]=!0,o.redraw()},Iu)),t||l.emit("render")};for(var Lu={drawPolygonPath:function(e,t,n,r,i,a){var o=r/2,s=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*a[0],n+s*a[1]);for(var l=1;l0&&a>0){d.clearRect(0,0,i,a),d.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(e.full)d.translate(-n.x1*l,-n.y1*l),d.scale(l,l),this.drawElements(d,p),d.scale(1/l,1/l),d.translate(n.x1*l,n.y1*l);else{var f=t.pan(),g={x:f.x*l,y:f.y*l};l*=t.zoom(),d.translate(g.x,g.y),d.scale(l,l),this.drawElements(d,p),d.scale(1/l,1/l),d.translate(-g.x,-g.y)}e.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=e.bg,d.rect(0,0,i,a),d.fill())}return h},Xu.png=function(e){return Wu(e,this.bufferCanvasImage(e),"image/png")},Xu.jpg=function(e){return Wu(e,this.bufferCanvasImage(e),"image/jpeg")};var Hu={nodeShapeImpl:function(e,t,n,r,i,a,o){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,i,a);case"polygon":return this.drawPolygonPath(t,n,r,i,a,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,i,a,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,i,a);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,i,a);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,i,a);case"barrel":return this.drawBarrelPath(t,n,r,i,a)}}},Gu=Uu,Ku=Uu.prototype;function Uu(e){var t=this;t.data={canvases:new Array(Ku.CANVAS_LAYERS),contexts:new Array(Ku.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Ku.CANVAS_LAYERS),bufferCanvases:new Array(Ku.BUFFER_COUNT),bufferContexts:new Array(Ku.CANVAS_LAYERS)};t.data.canvasContainer=document.createElement("div");var n=t.data.canvasContainer.style;t.data.canvasContainer.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",n.position="relative",n.zIndex="0",n.overflow="hidden";var r=e.cy.container();r.appendChild(t.data.canvasContainer),r.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)";var i={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};R()&&(i["-ms-touch-action"]="none",i["touch-action"]="none");for(var a=0;a1?e.split("\t"):e.split(" "),r=s(e[0]),a=e[1]?e[1]:"",e.length&&e.length>0&&""!==e[0])if(""!==a){for(n=2,c=e.length;n=0&&r<=x};function w(n){return function(r,t,e,u){t=y(t,u,4);var i=!j(r)&&v.keys(r),o=(i||r).length,a=n>0?0:o-1;return arguments.length<3&&(e=r[i?i[a]:a],a+=n),function(r,t,e,u,i,o){for(;i>=0&&i=0},v.invoke=function(n,r){var t=o.call(arguments,2),e=v.isFunction(r);return v.map(n,function(n){var u=e?r:n[r];return null==u?u:u.apply(n,t)})},v.pluck=function(n,r){return v.map(n,v.property(r))},v.where=function(n,r){return v.filter(n,v.matcher(r))},v.findWhere=function(n,r){return v.find(n,v.matcher(r))},v.max=function(n,r,t){var e,u,i=-1/0,o=-1/0;if(null==r&&null!=n)for(var a=0,c=(n=j(n)?n:v.values(n)).length;ai&&(i=e);else r=d(r,t),v.each(n,function(n,t,e){((u=r(n,t,e))>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},v.min=function(n,r,t){var e,u,i=1/0,o=1/0;if(null==r&&null!=n)for(var a=0,c=(n=j(n)?n:v.values(n)).length;ae||void 0===t)return 1;if(t0?0:u-1;i>=0&&i0?a=i>=0?i:Math.max(i+c,a):c=i>=0?Math.min(i+1,c):i+c+1;else if(t&&i&&c)return e[i=t(e,u)]===u?i:-1;if(u!=u)return(i=r(o.call(e,a,c),v.isNaN))>=0?i+a:-1;for(i=n>0?a:c-1;i>=0&&ir?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||!1===t.trailing||(o=setTimeout(c,l)),i}},v.debounce=function(n,r,t){var e,u,i,o,a,c=function(){var f=v.now()-o;f=0?e=setTimeout(c,r-f):(e=null,t||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=v.now();var f=t&&!e;return e||(e=setTimeout(c,r)),f&&(a=n.apply(i,u),i=u=null),a}},v.wrap=function(n,r){return v.partial(r,n)},v.negate=function(n){return function(){return!n.apply(this,arguments)}},v.compose=function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},v.after=function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},v.before=function(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}},v.once=v.partial(v.before,2);var E=!{toString:null}.propertyIsEnumerable("toString"),M=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];function I(n,r){var t=M.length,u=n.constructor,i=v.isFunction(u)&&u.prototype||e,o="constructor";for(v.has(n,o)&&!v.contains(r,o)&&r.push(o);t--;)(o=M[t])in n&&n[o]!==i[o]&&!v.contains(r,o)&&r.push(o)}v.keys=function(n){if(!v.isObject(n))return[];if(l)return l(n);var r=[];for(var t in n)v.has(n,t)&&r.push(t);return E&&I(n,r),r},v.allKeys=function(n){if(!v.isObject(n))return[];var r=[];for(var t in n)r.push(t);return E&&I(n,r),r},v.values=function(n){for(var r=v.keys(n),t=r.length,e=Array(t),u=0;u":">",'"':""","'":"'","`":"`"},T=v.invert(B),R=function(n){var r=function(r){return n[r]},t="(?:"+v.keys(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}};v.escape=R(B),v.unescape=R(T),v.result=function(n,r,t){var e=null==n?void 0:n[r];return void 0===e&&(e=t),v.isFunction(e)?e.call(n):e};var q=0;v.uniqueId=function(n){var r=++q+"";return n?n+r:r},v.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};v.template=function(n,r,t){!r&&t&&(r=t),r=v.defaults({},r,v.templateSettings);var e=RegExp([(r.escape||K).source,(r.interpolate||K).source,(r.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(r,t,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+r.length,t?i+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),r}),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(r.variable||"obj","_",i)}catch(n){throw n.source=i,n}var a=function(n){return o.call(this,n,v)},c=r.variable||"obj";return a.source="function("+c+"){\n"+i+"}",a},v.chain=function(n){var r=v(n);return r._chain=!0,r};var P=function(n,r){return n._chain?v(r).chain():r};v.mixin=function(n){v.each(v.functions(n),function(r){var t=v[r]=n[r];v.prototype[r]=function(){var n=[this._wrapped];return i.apply(n,arguments),P(this,t.apply(v,n))}})},v.mixin(v),v.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var r=t[n];v.prototype[n]=function(){var t=this._wrapped;return r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0],P(this,t)}}),v.each(["concat","join","slice"],function(n){var r=t[n];v.prototype[n]=function(){return P(this,r.apply(this._wrapped,arguments))}}),v.prototype.value=function(){return this._wrapped},v.prototype.valueOf=v.prototype.toJSON=v.prototype.value,v.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return v})}).call(this); -},{}],8:[function(require,module,exports) { - -var t,e,n=module.exports={};function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}function u(t){if(e===clearTimeout)return clearTimeout(t);if((e===o||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(t);try{return e(t)}catch(n){try{return e.call(null,t)}catch(n){return e.call(this,t)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:r}catch(e){t=r}try{e="function"==typeof clearTimeout?clearTimeout:o}catch(t){e=o}}();var c,s=[],l=!1,a=-1;function f(){l&&c&&(l=!1,c.length?s=c.concat(s):a=-1,s.length&&h())}function h(){if(!l){var t=i(f);l=!0;for(var e=s.length;e;){for(c=s,s=[];++a1)for(var n=1;n0&&t-1 in e)}b.fn=b.prototype={jquery:"3.3.1",constructor:b,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return b.each(this,e)},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!v||!v.test(e))){if(1!==T)m=t,y=e;else if("object"!==t.nodeName.toLowerCase()){for((c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;s--;)h[s]="#"+c+" "+ye(h[s]);y=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(y)try{return L.apply(r,m.querySelectorAll(y)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||v.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=be(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):L.apply(a,y)})}function Te(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ye(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument===d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=j.call(u));b=be(b)}L.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}(o,i))).selector=e}return s},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=V.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ye(u)))return L.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);b.find=C,b.expr=C.selectors,b.expr[":"]=b.expr.pseudos,b.uniqueSort=b.unique=C.uniqueSort,b.text=C.getText,b.isXMLDoc=C.isXML,b.contains=C.contains,b.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&b(e).is(n))break;r.push(e)}return r},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=b.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(e,t,n){return g(t)?b.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?b.grep(e,function(e){return e===t!==n}):"string"!=typeof t?b.grep(e,function(e){return u.call(t,e)>-1!==n}):b.filter(t,e,n)}b.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?b.find.matchesSelector(r,e)?[r]:[]:b.find.matches(e,b.grep(t,function(e){return 1===e.nodeType}))},b.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(b(e).filter(function(){for(t=0;t1?b.uniqueSort(n):n},filter:function(e){return this.pushStack(A(this,e||[],!1))},not:function(e){return this.pushStack(A(this,e||[],!0))},is:function(e){return!!A(this,"string"==typeof e&&S.test(e)?b(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(b.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof b?t[0]:t,b.merge(this,b.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),N.test(i[1])&&b.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(b):b.makeArray(e,this)}).prototype=b.fn,j=b(r);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}b.fn.extend({has:function(e){var t=b(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&b.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(b(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,"parentNode")},parentsUntil:function(e,t,n){return E(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return E(e,"nextSibling")},prevAll:function(e){return E(e,"previousSibling")},nextUntil:function(e,t,n){return E(e,"nextSibling",n)},prevUntil:function(e,t,n){return E(e,"previousSibling",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return D(e,"iframe")?e.contentDocument:(D(e,"template")&&(e=e.content||e),b.merge([],e.childNodes))}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),this.length>1&&(H[e]||b.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}});var P=/[^\x20\t\r\n\f]+/g;function M(e){return e}function R(e){throw e}function I(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}b.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return b.each(e.match(P)||[],function(e,n){t[n]=!0}),t}(e):b.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?b.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},b.extend({Deferred:function(t){var n=[["notify","progress",b.Callbacks("memory"),b.Callbacks("memory"),2],["resolve","done",b.Callbacks("once memory"),b.Callbacks("once memory"),0,"resolved"],["reject","fail",b.Callbacks("once memory"),b.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return b.Deferred(function(t){b.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==R&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),e.setTimeout(c))}}return b.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:M,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:M)),n[2][3].add(a(0,e,g(r)?r:R))}).promise()},promise:function(e){return null!=e?b.extend(e,i):i}},o={};return b.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=b.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();for(;n--;)I(i[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},b.readyException=function(t){e.setTimeout(function(){throw t})};var $=b.Deferred();function B(){r.removeEventListener("DOMContentLoaded",B),e.removeEventListener("load",B),b.ready()}b.fn.ready=function(e){return $.then(e).catch(function(e){b.readyException(e)}),this},b.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==e&&--b.readyWait>0||$.resolveWith(r,[b]))}}),b.ready.then=$.then,"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(b.ready):(r.addEventListener("DOMContentLoaded",B),e.addEventListener("load",B));var F=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)F(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(b(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),b.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,b.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){b.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:b.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),b.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,fe=/^$|^module$|\/(?:java|ecma)script/i,pe={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function de(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?b.merge([e],n):n}function he(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=b.contains(o.ownerDocument,o),a=de(f.appendChild(o),"script"),l&&he(a),n)for(c=0;o=a[c++];)fe.test(o.type||"")&&n.push(o);return f}ge=r.createDocumentFragment().appendChild(r.createElement("div")),(ve=r.createElement("input")).setAttribute("type","radio"),ve.setAttribute("checked","checked"),ve.setAttribute("name","t"),ge.appendChild(ve),h.checkClone=ge.cloneNode(!0).cloneNode(!0).lastChild.checked,ge.innerHTML="",h.noCloneChecked=!!ge.cloneNode(!0).lastChild.defaultValue;var xe=r.documentElement,be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function ke(){try{return r.activeElement}catch(e){}}function Se(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return b().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=b.guid++)),e.each(function(){b.event.add(this,t,i,r,n)})}b.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&b.find.matchesSelector(xe,i),n.guid||(n.guid=b.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==b&&b.event.triggered!==t.type?b.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(P)||[""]).length;l--;)d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=b.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=b.event.special[d]||{},c=b.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&b.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),b.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(P)||[""]).length;l--;)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=b.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||b.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=b.event.fix(e),u=new Array(arguments.length),l=(Y.get(this,"events")||{})[s.type]||[],c=b.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:b.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/\s*$/g;function qe(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&b(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Y.hasData(e)&&(o=Y.access(e),a=Y.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n1&&"string"==typeof v&&!h.checkClone&&Ae.test(v))return e.each(function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Pe(o,t,n,r)});if(p&&(o=(i=me(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=b.map(de(i,"script"),Le)).length;f")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=b.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(a=de(c),r=0,i=(o=de(e)).length;r0&&he(a,!f&&de(e,"script")),c},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),b.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return F(this,function(e){return void 0===e?b.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(b.cleanData(de(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return F(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!pe[(ce.exec(e)||["",""])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function Je(e,t,n){var r=Ie(e),i=$e(e,t,r),o="border-box"===b.css(e,"boxSizing",!1,r),a=o;if(Re.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===b.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Qe(e,t,n||(o?"border":"content"),a,r,i)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=$e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=U(t),u=_e.test(t),l=e.style;if(u||(t=Ge(s)),a=b.cssHooks[t]||b.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=oe(e,t,i),o="number"),null!=n&&n==n&&("number"===o&&(n+=i&&i[3]||(b.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=U(t);return _e.test(t)||(t=Ge(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=$e(e,t,r)),"normal"===i&&t in Xe&&(i=Xe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each(["height","width"],function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Fe.test(b.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,t,r):ie(e,ze,function(){return Je(e,t,r)})},set:function(e,n,r){var i,o=Ie(e),a="border-box"===b.css(e,"boxSizing",!1,o),s=r&&Qe(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Qe(e,t,"border",!1,o)-.5)),s&&(i=te.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=b.css(e,t)),Ye(0,n,s)}}}),b.cssHooks.marginLeft=Be(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat($e(e,"marginLeft"))||e.getBoundingClientRect().left-ie(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(b.cssHooks[e+t].set=Ye)}),b.fn.extend({css:function(e,t){return F(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a1)}}),b.Tween=Ke,Ke.prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}},Ke.prototype.init.prototype=Ke.prototype,Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=b.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[b.cssProps[e.prop]]&&!b.cssHooks[e.prop]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},Ke.propHooks.scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},b.fx=Ke.prototype.init,b.fx.step={};var Ze,et,tt=/^(?:toggle|show|hide)$/,nt=/queueHooks$/;function rt(){et&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(rt):e.setTimeout(rt,b.fx.interval),b.fx.tick())}function it(){return e.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function ot(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function at(e,t,n){for(var r,i=(st.tweeners[t]||[]).concat(st.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?ut:void 0)),void 0!==n?null===n?void b.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ut={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\w+/g),function(e,t){var n=lt[t]||b.find.attr;lt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=lt[a],lt[a]=i,i=null!=n(e,t,r)?a:null,lt[a]=o),i}});var ct=/^(?:input|select|textarea|button)$/i,ft=/^(?:a|area)$/i;function pt(e){return(e.match(P)||[]).join(" ")}function dt(e){return e.getAttribute&&e.getAttribute("class")||""}function ht(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}b.fn.extend({prop:function(e,t){return F(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[b.propFix[e]||e]})}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=b.find.attr(e,"tabindex");return t?parseInt(t,10):ct.test(e.nodeName)||ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),h.optSelected||(b.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),b.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){b.propFix[this.toLowerCase()]=this}),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){b(this).addClass(e.call(this,t,dt(this)))});if((t=ht(e)).length)for(;n=this[u++];)if(i=dt(n),r=1===n.nodeType&&" "+pt(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=pt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){b(this).removeClass(e.call(this,t,dt(this)))});if(!arguments.length)return this.attr("class","");if((t=ht(e)).length)for(;n=this[u++];)if(i=dt(n),r=1===n.nodeType&&" "+pt(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=pt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,dt(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=ht(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=dt(this))&&Y.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+pt(dt(n))+" ").indexOf(t)>-1)return!0;return!1}});var gt=/\r/g;b.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,b(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=b.map(i,function(e){return null==e?"":e+""})),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(gt,""):null==n?"":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,"value");return null!=t?t:pt(b.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},h.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var vt=/^(?:focusinfocus|focusoutblur)$/,yt=function(e){e.stopPropagation()};b.extend(b.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,y=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!vt.test(m+b.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,(t=t[b.expando]?t:new b.Event(m,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:b.makeArray(n,[t]),d=b.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!v(i)){for(l=d.delegateType||m,vt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)y.push(s),u=s;u===(i.ownerDocument||r)&&y.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=y[a++])&&!t.isPropagationStopped();)h=s,t.type=a>1?l:d.bindType||m,(p=(Y.get(s,"events")||{})[t.type]&&Y.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&V(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(y.pop(),n)||!V(i)||c&&g(i[m])&&!v(i)&&((u=i[c])&&(i[c]=null),b.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,yt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,yt),b.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),h.focusin||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}});var mt=e.location,xt=Date.now(),bt=/\?/;b.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+t),n};var wt=/\[\]$/,Tt=/\r?\n/g,Ct=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function kt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,function(t,i){n||wt.test(e)?r(e,i):kt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)kt(e+"["+i+"]",t[i],n,r)}b.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){i(this.name,this.value)});else for(n in e)kt(n,e[n],t,i);return r.join("&")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&Et.test(this.nodeName)&&!Ct.test(e)&&(this.checked||!le.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(Tt,"\r\n")}}):{name:t.name,value:n.replace(Tt,"\r\n")}}).get()}});var St=/%20/g,Dt=/#.*$/,Nt=/([?&])_=[^&]*/,At=/^(.*?):[ \t]*([^\r\n]*)$/gm,jt=/^(?:GET|HEAD)$/,qt=/^\/\//,Lt={},Ht={},Ot="*/".concat("*"),Pt=r.createElement("a");function Mt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(P)||[];if(g(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Rt(e,t,n,r){var i={},o=e===Ht;function a(s){var u;return i[s]=!0,b.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function It(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}Pt.href=mt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:mt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(mt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ot,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":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?It(It(e,b.ajaxSettings),t):It(b.ajaxSettings,e)},ajaxPrefilter:Mt(Lt),ajaxTransport:Mt(Ht),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=b.ajaxSetup({},n),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?b(g):b.event,y=b.Deferred(),m=b.Callbacks("once memory"),x=h.statusCode||{},w={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=At.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(y.promise(E),h.url=((t||h.url||mt.href)+"").replace(qt,mt.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(P)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Pt.protocol+"//"+Pt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=b.param(h.data,h.traditional)),Rt(Lt,h,n,E),c)return E;for(p in(f=b.event&&h.global)&&0==b.active++&&b.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!jt.test(h.type),o=h.url.replace(Dt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(St,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(bt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Nt,"$1"),d=(bt.test(o)?"&":"?")+"_="+xt+++d),h.url=o+d),h.ifModified&&(b.lastModified[o]&&E.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&E.setRequestHeader("If-None-Match",b.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ot+"; q=0.01":""):h.accepts["*"]),h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=Rt(Ht,h,n,E)){if(E.readyState=1,f&&v.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(w,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,w,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(h,E,r)),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(h,w,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(b.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(b.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=w.state,p=w.data,l=!(d=w.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?y.resolveWith(g,[p,C,E]):y.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&v.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(v.trigger("ajaxComplete",[E,h]),--b.active||b.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,"json")},getScript:function(e,t){return b.get(e,void 0,t,"script")}}),b.each(["get","post"],function(e,t){b[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}}),b._evalUrl=function(e){return b.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=b(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){b(this).replaceWith(this.childNodes)}),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},$t=b.ajaxSettings.xhr();h.cors=!!$t&&"withCredentials"in $t,h.ajax=$t=!!$t,b.ajaxTransport(function(t){var n,r;if(h.cors||$t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Wt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),b.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),b.ajaxTransport("script",function(e){var t,n;if(e.crossDomain)return{send:function(i,o){t=b("