From f7f032df0c88bc0988113c26275eb85bc437a7b1 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 2 Oct 2014 10:03:36 +0200 Subject: [PATCH] Replaced all `arr instanceof Array` with `Array.isArray(arr)` --- dist/vis.js | 10157 ++++++++++--------- dist/vis.map | 2 +- dist/vis.min.js | 28 +- lib/network/Network.js | 4 +- lib/network/dotparser.js | 6 +- lib/network/mixins/physics/PhysicsMixin.js | 2 +- lib/timeline/Graph2d.js | 2 +- lib/timeline/Timeline.js | 2 +- lib/util.js | 4 +- 9 files changed, 5156 insertions(+), 5051 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index 1a321aa9..8e7d0545 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.5.0 - * @date 2014-09-26 + * @date 2014-10-02 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -583,7 +583,7 @@ return /******/ (function(modules) { // webpackBootstrap if (object instanceof String) { return 'String'; } - if (object instanceof Array) { + if (Array.isArray(object)) { return 'Array'; } if (object instanceof Date) { @@ -663,7 +663,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.forEach = function(object, callback) { var i, len; - if (object instanceof Array) { + if (Array.isArray(object)) { // array for (i = 0, len = object.length; i < len; i++) { callback(object[i], i, object); @@ -1083,6 +1083,63 @@ return /******/ (function(modules) { // webpackBootstrap return {h:hue,s:saturation,v:value}; }; + var cssUtil = { + // split a string with css styles into an object with key/values + split: function (cssText) { + var styles = {}; + + cssText.split(';').forEach(function (style) { + if (style.trim() != '') { + var parts = style.split(':'); + var key = parts[0].trim(); + var value = parts[1].trim(); + styles[key] = value; + } + }); + + return styles; + }, + + // build a css text string from an object with key/values + join: function (styles) { + return Object.keys(styles) + .map(function (key) { + return key + ': ' + styles[key]; + }) + .join('; '); + } + }; + + /** + * Append a string with css styles to an element + * @param {Element} element + * @param {String} cssText + */ + exports.addCssText = function (element, cssText) { + var currentStyles = cssUtil.split(element.style.cssText); + var newStyles = cssUtil.split(cssText); + var styles = exports.extend(currentStyles, newStyles); + + element.style.cssText = cssUtil.join(styles); + }; + + /** + * Remove a string with css styles from an element + * @param {Element} element + * @param {String} cssText + */ + exports.removeCssText = function (element, cssText) { + var styles = cssUtil.split(element.style.cssText); + var removeStyles = cssUtil.split(cssText); + + for (var key in removeStyles) { + if (removeStyles.hasOwnProperty(key)) { + delete styles[key]; + } + } + + element.style.cssText = cssUtil.join(styles); + }; /** * https://gist.github.com/mjijackson/5311256 @@ -1647,14 +1704,18 @@ return /******/ (function(modules) { // webpackBootstrap * @param className */ exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { - // if (height != 0) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); rect.setAttributeNS(null, "x", x - 0.5 * width); rect.setAttributeNS(null, "y", y); rect.setAttributeNS(null, "width", width); rect.setAttributeNS(null, "height", height); rect.setAttributeNS(null, "class", className); - // } + } }; /***/ }, @@ -2960,8 +3021,10 @@ return /******/ (function(modules) { // webpackBootstrap this.yLabel = 'y'; this.zLabel = 'z'; - this.xValueLabel = function(v) { return v; }; - this.yValueLabel = function(v) { return v; }; + var passValueFn = function(v) { return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; this.filterLabel = 'time'; this.legendLabel = 'value'; @@ -3758,6 +3821,7 @@ return /******/ (function(modules) { // webpackBootstrap if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; if (options.style !== undefined) { var styleNumber = this._getStyleNumber(options.style); @@ -4193,7 +4257,7 @@ return /******/ (function(modules) { // webpackBootstrap ctx.textAlign = 'right'; ctx.textBaseline = 'middle'; ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent() + ' ', from.x - 5, from.y); + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); step.next(); } @@ -6198,7 +6262,7 @@ return /******/ (function(modules) { // webpackBootstrap } // if the third element is options, the forth is groups (optionally); - if (!(groups instanceof Array || groups instanceof vis.DataSet) && groups instanceof Object) { + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { var forthArgument = options; options = groups; groups = forthArgument; @@ -6508,7 +6572,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function Graph2d (container, items, groups, options) { // if the third element is options, the forth is groups (optionally); - if (!(groups instanceof Array || groups instanceof vis.DataSet) && groups instanceof Object) { + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { var forthArgument = options; options = groups; groups = forthArgument; @@ -9349,6 +9413,16 @@ return /******/ (function(modules) { // webpackBootstrap util.addClassName(this.dom.axis, className); this.className = className; } + + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; + } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } }; /** @@ -12993,7 +13067,7 @@ return /******/ (function(modules) { // webpackBootstrap // determine the char width and height on the major axis if (!this.dom.measureCharMajor) { this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text minor measure'; + this.dom.measureCharMajor.className = 'text major measure'; this.dom.measureCharMajor.style.position = 'absolute'; this.dom.measureCharMajor.appendChild(document.createTextNode('0')); @@ -13021,6 +13095,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Hammer = __webpack_require__(42); + var util = __webpack_require__(1); /** * @constructor Item @@ -13253,6 +13328,25 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Update custom styles of the element + * @param element + * @private + */ + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; + } + + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } + }; + module.exports = Item; @@ -13359,6 +13453,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.content); this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); // update class var className = (this.data.className ? (' ' + this.data.className) : '') + @@ -13418,6 +13513,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Item = __webpack_require__(28); + var util = __webpack_require__(1); /** * @constructor BoxItem @@ -13526,6 +13622,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.box); this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); // update class var className = (this.data.className? ' ' + this.data.className : '') + @@ -13744,6 +13841,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.point); this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); // update class var className = (this.data.className? ' ' + this.data.className : '') + @@ -13927,6 +14025,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.box); this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); // update class var className = (this.data.className ? (' ' + this.data.className) : '') + @@ -14133,7 +14232,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(50); var Hammer = __webpack_require__(42); - var mousetrap = __webpack_require__(53); + var mousetrap = __webpack_require__(51); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(44); var DataSet = __webpack_require__(3); @@ -15474,7 +15573,7 @@ return /******/ (function(modules) { // webpackBootstrap if (nodes instanceof DataSet || nodes instanceof DataView) { this.nodesData = nodes; } - else if (nodes instanceof Array) { + else if (Array.isArray(nodes)) { this.nodesData = new DataSet(); this.nodesData.add(nodes); } @@ -15605,7 +15704,7 @@ return /******/ (function(modules) { // webpackBootstrap if (edges instanceof DataSet || edges instanceof DataView) { this.edgesData = edges; } - else if (edges instanceof Array) { + else if (Array.isArray(edges)) { this.edgesData = new DataSet(); this.edgesData.add(edges); } @@ -19102,11 +19201,17 @@ return /******/ (function(modules) { // webpackBootstrap }; /** - * Set the text for the popup window. This can be HTML code - * @param {string} text + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content */ - Popup.prototype.setText = function(text) { - this.frame.innerHTML = text; + Popup.prototype.setText = function(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } + else { + this.frame.innerHTML = content; // string containing text or HTML + } }; /** @@ -19865,9 +19970,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {function} fn */ function forEach2(array1, array2, fn) { - if (array1 instanceof Array) { + if (Array.isArray(array1)) { array1.forEach(function (elem1) { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(elem1, elem2); }); @@ -19878,7 +19983,7 @@ return /******/ (function(modules) { // webpackBootstrap }); } else { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(array1, elem2); }); @@ -20062,7 +20167,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(51); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(52); /***/ }, @@ -20072,7 +20177,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(52); + module.exports = window['Hammer'] || __webpack_require__(53); } else { module.exports = function () { @@ -21445,7 +21550,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 49 */ /***/ function(module, exports, __webpack_require__) { - var mousetrap = __webpack_require__(53); + var mousetrap = __webpack_require__(51); var Emitter = __webpack_require__(50); var Hammer = __webpack_require__(42); var util = __webpack_require__(1); @@ -21767,4122 +21872,4289 @@ return /******/ (function(modules) { // webpackBootstrap /* 51 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.8.3 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + /** + * Copyright 2012 Craig Campbell + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Mousetrap is a simple keyboard shortcut library for Javascript with + * no external dependencies + * + * @version 1.1.2 + * @url craig.is/killing/mice + */ - (function (undefined) { - /************************************ - Constants - ************************************/ + /** + * mapping of special keycodes to their corresponding keys + * + * everything in this dictionary cannot use keypress events + * so it has to be here to map to the correct keycodes for + * keyup/keydown events + * + * @type {Object} + */ + var _MAP = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'ctrl', + 18: 'alt', + 20: 'capslock', + 27: 'esc', + 32: 'space', + 33: 'pageup', + 34: 'pagedown', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 45: 'ins', + 46: 'del', + 91: 'meta', + 93: 'meta', + 224: 'meta' + }, - var moment, - VERSION = '2.8.3', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * mapping for special characters so they can support + * + * this dictionary is only used incase you want to bind a + * keyup or keydown event to one of these keys + * + * @type {Object} + */ + _KEYCODE_MAP = { + 106: '*', + 107: '+', + 109: '-', + 110: '.', + 111 : '/', + 186: ';', + 187: '=', + 188: ',', + 189: '-', + 190: '.', + 191: '/', + 192: '`', + 219: '[', + 220: '\\', + 221: ']', + 222: '\'' + }, - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * this is a mapping of keys that require shift on a US keypad + * back to the non shift equivelents + * + * this is so you can use keyup events with these keys + * + * note that this will only work reliably on US keyboards + * + * @type {Object} + */ + _SHIFT_MAP = { + '~': '`', + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0', + '_': '-', + '+': '=', + ':': ';', + '\"': '\'', + '<': ',', + '>': '.', + '?': '/', + '|': '\\' + }, - // internal storage for locale config files - locales = {}, + /** + * this is a list of special strings you can use to map + * to modifier keys when you specify your keyboard shortcuts + * + * @type {Object} + */ + _SPECIAL_ALIASES = { + 'option': 'alt', + 'command': 'meta', + 'return': 'enter', + 'escape': 'esc' + }, - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * variable to store the flipped version of _MAP from above + * needed to check if we should use keypress or not when no action + * is specified + * + * @type {Object|undefined} + */ + _REVERSE_MAP, - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + /** + * a list of all the callbacks setup via Mousetrap.bind() + * + * @type {Object} + */ + _callbacks = {}, - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * direct map of string combinations to callbacks used for trigger() + * + * @type {Object} + */ + _direct_map = {}, - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + /** + * keeps track of what level each sequence is at since multiple + * sequences can start out with the same sequence + * + * @type {Object} + */ + _sequence_levels = {}, - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + /** + * variable to store the setTimeout call + * + * @type {null|number} + */ + _reset_timer, - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - parseTokenOrdinal = /\d{1,2}/, + /** + * temporary state where we will ignore the next keyup + * + * @type {boolean|string} + */ + _ignore_next_keyup = false, - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + /** + * are we currently inside of a sequence? + * type of action ("keyup" or "keydown" or "keypress") or false + * + * @type {boolean|string} + */ + _inside_sequence = false; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * loop through the f keys, f1 to f19 and add them to the map + * programatically + */ + for (var i = 1; i < 20; ++i) { + _MAP[111 + i] = 'f' + i; + } - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * loop through to map numbers on the numeric keypad + */ + for (i = 0; i <= 9; ++i) { + _MAP[i + 96] = i; + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + /** + * cross browser add event method + * + * @param {Element|HTMLDocument} object + * @param {string} type + * @param {Function} callback + * @returns void + */ + function _addEvent(object, type, callback) { + if (object.addEventListener) { + return object.addEventListener(type, callback, false); + } - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + object.attachEvent('on' + type, callback); + } - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * takes the event and returns the key character + * + * @param {Event} e + * @return {string} + */ + function _characterFromEvent(e) { - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + // for keypress events we should return the character as is + if (e.type == 'keypress') { + return String.fromCharCode(e.which); + } - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + // for non keypress events the special maps are needed + if (_MAP[e.which]) { + return _MAP[e.which]; + } - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + if (_KEYCODE_MAP[e.which]) { + return _KEYCODE_MAP[e.which]; + } - // format function strings - formatFunctions = {}, + // if it is not in the special map + return String.fromCharCode(e.which).toLowerCase(); + } - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + /** + * should we stop this event before firing off callbacks + * + * @param {Event} e + * @return {boolean} + */ + function _stop(e) { + var element = e.target || e.srcElement, + tag_name = element.tagName; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + // if the element has the class "mousetrap" then no need to stop + if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { + return false; + } - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + // stop for input, select, and textarea + return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); + } - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } + /** + * checks if two arrays are equal + * + * @param {Array} modifiers1 + * @param {Array} modifiers2 + * @returns {boolean} + */ + function _modifiersMatch(modifiers1, modifiers2) { + return modifiers1.sort().join(',') === modifiers2.sort().join(','); + } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + /** + * resets all sequence counters except for the ones passed in + * + * @param {Object} do_not_reset + * @returns void + */ + function _resetSequences(do_not_reset) { + do_not_reset = do_not_reset || {}; - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } + var active_sequences = false, + key; - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + for (key in _sequence_levels) { + if (do_not_reset[key]) { + active_sequences = true; + continue; + } + _sequence_levels[key] = 0; + } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + if (!active_sequences) { + _inside_sequence = false; + } + } - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + /** + * finds all callbacks that match based on the keycode, modifiers, + * and action + * + * @param {string} character + * @param {Array} modifiers + * @param {string} action + * @param {boolean=} remove - should we remove any matches + * @param {string=} combination + * @returns {Array} + */ + function _getMatches(character, modifiers, action, remove, combination) { + var i, + callback, + matches = []; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } + // if there are no events related to this keycode + if (!_callbacks[character]) { + return []; + } - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + // if a modifier key is coming up on its own we should allow it + if (action == 'keyup' && _isModifier(character)) { + modifiers = [character]; + } + // loop through all callbacks for the key that was pressed + // and see if any of them match + for (i = 0; i < _callbacks[character].length; ++i) { + callback = _callbacks[character][i]; - /************************************ - Constructors - ************************************/ + // if this is a sequence but it is not at the right level + // then move onto the next match + if (callback.seq && _sequence_levels[callback.seq] != callback.level) { + continue; + } - function Locale() { - } + // if the action we are looking for doesn't match the action we got + // then we should keep going + if (action != callback.action) { + continue; + } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - } + // if this is a keypress event that means that we need to only + // look at the character, otherwise check the modifiers as + // well + if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + // remove is used so if you change your mind and call bind a + // second time with a new function the first one is overwritten + if (remove && callback.combo == combination) { + _callbacks[character].splice(i, 1); + } - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + matches.push(callback); + } + } - this._data = {}; + return matches; + } - this._locale = moment.localeData(); + /** + * takes a key event and figures out what the modifiers are + * + * @param {Event} e + * @returns {Array} + */ + function _eventModifiers(e) { + var modifiers = []; - this._bubble(); - } + if (e.shiftKey) { + modifiers.push('shift'); + } - /************************************ - Helpers - ************************************/ + if (e.altKey) { + modifiers.push('alt'); + } + if (e.ctrlKey) { + modifiers.push('ctrl'); + } - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + if (e.metaKey) { + modifiers.push('meta'); + } - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + return modifiers; + } - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + /** + * actually calls the callback function + * + * if your callback function returns false this will use the jquery + * convention - prevent default and stop propogation on the event + * + * @param {Function} callback + * @param {Event} e + * @returns void + */ + function _fireCallback(callback, e) { + if (callback(e) === false) { + if (e.preventDefault) { + e.preventDefault(); + } - return a; - } + if (e.stopPropagation) { + e.stopPropagation(); + } - function copyConfig(to, from) { - var i, prop, val; + e.returnValue = false; + e.cancelBubble = true; + } + } - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } + /** + * handles a character key event + * + * @param {string} character + * @param {Event} e + * @returns void + */ + function _handleCharacter(character, e) { - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + // if this event should not happen stop here + if (_stop(e)) { + return; + } - return to; - } + var callbacks = _getMatches(character, _eventModifiers(e), e.type), + i, + do_not_reset = {}, + processed_sequence_callback = false; - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + // loop through matching callbacks for this key event + for (i = 0; i < callbacks.length; ++i) { - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + // fire for all sequence callbacks + // this is because if for example you have multiple sequences + // bound such as "g i" and "g t" they both need to fire the + // callback for matching g cause otherwise you can only ever + // match the first one + if (callbacks[i].seq) { + processed_sequence_callback = true; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + // keep a list of which sequences were matches for later + do_not_reset[callbacks[i].seq] = 1; + _fireCallback(callbacks[i].callback, e); + continue; + } - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + // if there were no sequence matches but we are still here + // that means this is a regular match so we should fire that + if (!processed_sequence_callback && !_inside_sequence) { + _fireCallback(callbacks[i].callback, e); + } + } - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + // if you are inside of a sequence and the key you are pressing + // is not a modifier key then we should reset all sequences + // that were not matched by this key event + if (e.type == _inside_sequence && !_isModifier(character)) { + _resetSequences(do_not_reset); + } + } - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * handles a keydown event + * + * @param {Event} e + * @returns void + */ + function _handleKey(e) { - return res; - } + // normalize e.which for key events + // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion + e.which = typeof e.which == "number" ? e.which : e.keyCode; - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } + var character = _characterFromEvent(e); - return res; - } + // no character found then stop + if (!character) { + return; + } - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + if (e.type == 'keyup' && _ignore_next_keyup == character) { + _ignore_next_keyup = false; + return; + } - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } + _handleCharacter(character, e); + } - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + /** + * determines if the keycode specified is a modifier key or not + * + * @param {string} key + * @returns {boolean} + */ + function _isModifier(key) { + return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; + } - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } + /** + * called to set a 1 second timeout on the specified sequence + * + * this is so after each key press in the sequence you have 1 second + * to press the next key before you have to start over + * + * @returns void + */ + function _resetSequenceTimer() { + clearTimeout(_reset_timer); + _reset_timer = setTimeout(_resetSequences, 1000); + } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + /** + * reverses the map lookup so that we can look for specific keys + * to see what can and can't use keypress + * + * @return {Object} + */ + function _getReverseMap() { + if (!_REVERSE_MAP) { + _REVERSE_MAP = {}; + for (var key in _MAP) { - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + // pull out the numeric keypad from here cause keypress should + // be able to detect the keys from the character + if (key > 95 && key < 112) { + continue; + } - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + if (_MAP.hasOwnProperty(key)) { + _REVERSE_MAP[_MAP[key]] = key; + } + } + } + return _REVERSE_MAP; + } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + /** + * picks the best action based on the key combination + * + * @param {string} key - character for key + * @param {Array} modifiers + * @param {string=} action passed in + */ + function _pickBestAction(key, modifiers, action) { - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + // if no action was picked in we should try to pick the one + // that we think would work best for this key + if (!action) { + action = _getReverseMap()[key] ? 'keydown' : 'keypress'; + } - return normalizedInput; - } + // modifier keys don't work as expected with keypress, + // switch to keydown + if (action == 'keypress' && modifiers.length) { + action = 'keydown'; + } - function makeList(field) { - var count, setter; + return action; + } - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + /** + * binds a key sequence to an event + * + * @param {string} combo - combo specified in bind call + * @param {Array} keys + * @param {Function} callback + * @param {string=} action + * @returns void + */ + function _bindSequence(combo, keys, callback, action) { - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + // start off by adding a sequence level record for this combination + // and setting the level to 0 + _sequence_levels[combo] = 0; - if (typeof format === 'number') { - index = format; - format = undefined; - } + // if there is no action pick the best one for the first key + // in the sequence + if (!action) { + action = _pickBestAction(keys[0], []); + } - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + /** + * callback to increase the sequence level for this sequence and reset + * all other sequences that were active + * + * @param {Event} e + * @returns void + */ + var _increaseSequence = function(e) { + _inside_sequence = action; + ++_sequence_levels[combo]; + _resetSequenceTimer(); + }, - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + /** + * wraps the specified callback inside of another function in order + * to reset all sequence counters as soon as this sequence is done + * + * @param {Event} e + * @returns void + */ + _callbackAndReset = function(e) { + _fireCallback(callback, e); - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + // we should ignore the next key up if the action is key down + // or keypress. this is so if you finish a sequence and + // release the key the final key will not trigger a keyup + if (action !== 'keyup') { + _ignore_next_keyup = _characterFromEvent(e); + } - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } + // weird race condition if a sequence ends with the key + // another sequence begins with + setTimeout(_resetSequences, 10); + }, + i; - return value; - } + // loop through keys one at a time and bind the appropriate callback + // function. for any key leading up to the final one it should + // increase the sequence. after the final, it should reset all sequences + for (i = 0; i < keys.length; ++i) { + _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); + } + } - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * binds a single keyboard combination + * + * @param {string} combination + * @param {Function} callback + * @param {string=} action + * @param {string=} sequence_name - name of sequence if part of sequence + * @param {number=} level - what part of the sequence the command is + * @returns void + */ + function _bindSingle(combination, callback, action, sequence_name, level) { - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + // make sure multiple spaces in a row become a single space + combination = combination.replace(/\s+/g, ' '); - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + var sequence = combination.split(' '), + i, + key, + keys, + modifiers = []; - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + // if this pattern is a sequence of keys then run through this method + // to reprocess each pattern one key at a time + if (sequence.length > 1) { + return _bindSequence(combination, sequence, callback, action); + } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + // take the keys from this pattern and figure out what the actual + // pattern is all about + keys = combination === '+' ? ['+'] : combination.split('+'); - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + for (i = 0; i < keys.length; ++i) { + key = keys[i]; - m._pf.overflow = overflow; - } - } + // normalize key names + if (_SPECIAL_ALIASES[key]) { + key = _SPECIAL_ALIASES[key]; + } - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + // if this is not a keypress event then we should + // be smart about using shift keys + // this will only work for US keyboards however + if (action && action != 'keypress' && _SHIFT_MAP[key]) { + key = _SHIFT_MAP[key]; + modifiers.push('shift'); + } - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } + // if this key is a modifier then add it to the list of modifiers + if (_isModifier(key)) { + modifiers.push(key); + } + } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + // depending on what the key combination is + // we will try to pick the best event for it + action = _pickBestAction(key, modifiers, action); - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + // make sure to initialize array if this is the first time + // a callback is added for this key + if (!_callbacks[key]) { + _callbacks[key] = []; + } - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + // remove an existing match if there is one + _getMatches(key, modifiers, action, !sequence_name, combination); - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + // add this call back to the array + // if it is a sequence put it at the beginning + // if not put it at the end + // + // this is important because the way these are processed expects + // the sequence ones to come first + _callbacks[key][sequence_name ? 'unshift' : 'push']({ + callback: callback, + modifiers: modifiers, + action: action, + seq: sequence_name, + level: level, + combo: combination + }); + } - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); - } + /** + * binds multiple combinations to the same callback + * + * @param {Array} combinations + * @param {Function} callback + * @param {string|undefined} action + * @returns void + */ + function _bindMultiple(combinations, callback, action) { + for (var i = 0; i < combinations.length; ++i) { + _bindSingle(combinations[i], callback, action); + } + } - /************************************ - Locale - ************************************/ + // start! + _addEvent(document, 'keypress', _handleKey); + _addEvent(document, 'keydown', _handleKey); + _addEvent(document, 'keyup', _handleKey); + var mousetrap = { - extend(Locale.prototype, { + /** + * binds an event to mousetrap + * + * can be a single key, a combination of keys separated with +, + * a comma separated list of keys, an array of keys, or + * a sequence of keys separated by spaces + * + * be sure to list the modifier keys first to make sure that the + * correct key ends up getting bound (the last key in the pattern) + * + * @param {string|Array} keys + * @param {Function} callback + * @param {string=} action - 'keypress', 'keydown', or 'keyup' + * @returns void + */ + bind: function(keys, callback, action) { + _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); + _direct_map[keys + ':' + action] = callback; + return this; + }, - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, + /** + * unbinds an event to mousetrap + * + * the unbinding sets the callback function of the specified key combo + * to an empty function and deletes the corresponding key in the + * _direct_map dict. + * + * the keycombo+action has to be exactly the same as + * it was defined in the bind method + * + * TODO: actually remove this from the _callbacks dictionary instead + * of binding an empty function + * + * @param {string|Array} keys + * @param {string} action + * @returns void + */ + unbind: function(keys, action) { + if (_direct_map[keys + ':' + action]) { + delete _direct_map[keys + ':' + action]; + this.bind(keys, function() {}, action); + } + return this; + }, - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + /** + * triggers an event that has already been bound + * + * @param {string} keys + * @param {string=} action + * @returns void + */ + trigger: function(keys, action) { + _direct_map[keys + ':' + action](); + return this; + }, - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + /** + * resets the library back to its initial state. this is useful + * if you want to clear out the current keyboard shortcuts and bind + * new ones - for example if you switch to another page + * + * @returns void + */ + reset: function() { + _callbacks = {}; + _direct_map = {}; + return this; + } + }; - monthsParse : function (monthName) { - var i, mom, regex; + module.exports = mousetrap; - if (!this._monthsParse) { - this._monthsParse = []; - } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment.utc([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.8.3 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + (function (undefined) { + /************************************ + Constants + ************************************/ - weekdaysParse : function (weekdayName) { - var i, mom, regex; + var moment, + VERSION = '2.8.3', + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + // internal storage for locale config files + locales = {}, - _longDateFormat : { - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, - - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, - - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; - }, - - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, - - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - - preparse : function (string) { - return string; - }, - - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, - - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); + // extra moment internal properties (plugins register props here) + momentProperties = [], - /************************************ - Formatting - ************************************/ + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + parseTokenOrdinal = /\d{1,2}/, - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - format = expandFormat(format, m.localeData()); + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - return formatFunctions[format](m); - } + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - function expandFormat(format, locale) { - var i = 5; + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - return format; - } + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, + // format function strings + formatFunctions = {}, - /************************************ - Parsing - ************************************/ + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; + }, + + deprecations = {}, + + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } + + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } + + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; + return fn.apply(this, arguments); + }, fn); + } + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } + + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + /************************************ + Constructors + ************************************/ + + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + } + + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = moment.localeData(); + + this._bubble(); + } + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return parseTokenOrdinal; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; } + + return to; } - function timezoneMinutesFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - return parts[0] === '+' ? -minutes : minutes; + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt(input, 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = config._locale.isPM(input); - break; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - case 'h' : // fall through to hh - case 'hh' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } + + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); } } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; } } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + return normalizedInput; } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + function makeList(field) { + var count, setter; - if (config._d) { + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { return; } - currentDate = currentDateArray(config); + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } } - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + return value; + } - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; } - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); + m._pf.overflow = overflow; } + } - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } } + return m._isValid; + } + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; } + return null; + } - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual zone can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } } + return locales[name]; } - function dateFromObject(config) { - var normalizedInput; + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } - if (config._d) { - return; - } + /************************************ + Locale + ************************************/ - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; - dateFromConfig(config); - } + extend(Locale.prototype, { - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - config._a = []; - config._pf.empty = true; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + monthsParse : function (monthName) { + var i, mom, regex; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + if (!this._monthsParse) { + this._monthsParse = []; + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; + }, + + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, + + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + + weekdaysParse : function (weekdayName) { + var i, mom, regex; + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } - else { - config._pf.unusedTokens.push(token); + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; } - addTimeToArrayFromToken(token, parsedInput, config); } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + }, + + _longDateFormat : { + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; } - } + return output; + }, - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - // handle am pm - if (config._isPm && config._a[HOUR] < 12) { - config._a[HOUR] += 12; - } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[HOUR] === 12) { - config._a[HOUR] = 0; - } + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, + + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, + + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - dateFromConfig(config); - checkOverflow(config); - } + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } + preparse : function (string) { + return string; + }, - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + postformat : function (string) { + return string; + }, - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - scoreToBeat, - i, - currentScore; + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; } + }); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } + /************************************ + Formatting + ************************************/ - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - tempConfig._pf.score = currentScore; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); } } - extend(config, bestMoment || tempConfig); + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; } - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; + format = expandFormat(format, m.localeData()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); } + + return formatFunctions[format](m); } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; } - } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; } - return res; + + return format; } - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return parseTokenOrdinal; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; } } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + function timezoneMinutesFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; + return parts[0] === '+' ? -minutes : minutes; } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt(input, 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); } - } - return input; - } - - /************************************ - Relative Time - ************************************/ - - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } - - - /************************************ - Week of Year - ************************************/ - - - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = config._locale.isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); } - - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; } - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f; + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - config._locale = config._locale || moment.localeData(config._l); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; } else { - makeDateFromStringAndFormat(config); + // default to begining of week + weekday = dow; } - } else { - makeDateFromInput(config); } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - return new Moment(config); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - moment = function (input, format, locale, strict) { - var c; + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + if (config._d) { + return; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - - return makeMoment(c); - }; - moment.suppressDeprecationWarnings = false; + currentDate = currentDateArray(config); - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i); + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - ); - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - } - return res; - } - moment.min = function () { - var args = [].slice.call(arguments, 0); + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - return pickBy('isBefore', args); - }; + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - return pickBy('isAfter', args); - }; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual zone can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + } + } - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + function dateFromObject(config) { + var normalizedInput; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + if (config._d) { + return; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); - return makeMoment(c).utc(); - }; - - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + dateFromConfig(config); + } - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; } - ret = new Duration(duration); + config._a = []; + config._pf.empty = true; - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } } - return ret; - }; + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - // version number - moment.version = VERSION; + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } - // default format - moment.defaultFormat = isoFormat; + dateFromConfig(config); + checkOverflow(config); + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + scoreToBeat, + i, + currentScore; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; } - ); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - if (data) { - moment.duration._locale = moment._locale = data; + if (!isValid(tempConfig)) { + continue; } - } - return moment._locale._abbr; - }; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - // backwards compat for now: also set the locale - moment.locale(name); + tempConfig._pf.score = currentScore; - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } - }; - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + extend(config, bestMoment || tempConfig); + } - // returns locale data - moment.localeData = function (key) { - var locale; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; } + } - if (!key) { - return moment._locale; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); } + } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); } + return res; + } - return chooseLocale(key); - }; - - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; - - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } } - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); } + return date; + } - return m; - }; - - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } /************************************ - Moment Prototype + Relative Time ************************************/ - extend(moment.fn = Moment.prototype, { - - clone : function () { - return moment(this); - }, - - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, - - unix : function () { - return Math.floor(+this / 1000); - }, - - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, - - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, - - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - return isValid(this); - }, + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - return false; - }, + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - parsingFlags : function () { - return extend({}, this._pf); - }, + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - invalidAt: function () { - return this._pf.overflow; - }, - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, + /************************************ + Week of Year + ************************************/ - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; - if (keepLocalTime) { - this.add(this._dateTzOffset(), 'm'); - } - } - return this; - }, + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, - add : createAdder(1, 'add'), + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } - subtract : createAdder(-1, 'subtract'), + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output, daysAdjust; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - units = normalizeUnits(units); + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - daysAdjust = (this - moment(this).startOf('month')) - - (that - moment(that).startOf('month')); - // same as above but with zones, to negate all dst - daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4; - output += daysAdjust / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + /************************************ + Top Level Functions + ************************************/ - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're zone'd or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this)); - }, + function makeMoment(config) { + var input = config._i, + format = config._f; - isLeapYear : function () { - return isLeapYear(this.year()); - }, + config._locale = config._locale || moment.localeData(config._l); - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); } else { - return day; + makeDateFromStringAndFormat(config); } - }, + } else { + makeDateFromInput(config); + } - month : makeAccessor('Month', true), + return new Moment(config); + } - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + moment = function (input, format, locale, strict) { + var c; - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + return makeMoment(c); + }; - return this; - }, + moment.suppressDeprecationWarnings = false; - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i); + } + ); - isAfter: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - return +this.clone().startOf(units) > +moment(input).startOf(units); + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; } - }, + } + return res; + } - isBefore: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - return +this.clone().startOf(units) < +moment(input).startOf(units); - } - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - isSame: function (input, units) { - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - } - }, + return pickBy('isBefore', args); + }; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + moment.max = function () { + var args = [].slice.call(arguments, 0); - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + return pickBy('isAfter', args); + }; - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateTzOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.subtract(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - } else { - return this._isUTC ? offset : this._dateTzOffset(); - } - return this; - }, + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + return makeMoment(c).utc(); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; } - return this; - }, + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - return (this.zone() - input) % 60 === 0; - }, + ret = new Duration(duration); - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + return ret; + }; - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + // version number + moment.version = VERSION; - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // default format + moment.defaultFormat = isoFormat; - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + if (data) { + moment.duration._locale = moment._locale = data; + } + } - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + return moment._locale._abbr; + }; - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); } - return this; - }, + locales[name].set(values); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + // backwards compat for now: also set the locale + moment.locale(name); - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; - lang : deprecate( - 'moment().lang() is deprecated. Use moment().localeData() instead.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - localeData : function () { - return this._locale; - }, + // returns locale data + moment.localeData = function (key) { + var locale; - _dateTzOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return Math.round(this._d.getTimezoneOffset() / 15) * 15; + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; } - }); - function rawMonthSetter(mom, value) { - var dayOfMonth; + if (!key) { + return moment._locale; + } - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; } + key = [key]; } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + return chooseLocale(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + return m; + }; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; /************************************ - Duration Prototype + Moment Prototype ************************************/ - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + extend(moment.fn = Moment.prototype, { - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; - } + clone : function () { + return moment(this); + }, - extend(moment.duration.fn = Duration.prototype, { + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + unix : function () { + return Math.floor(+this / 1000); + }, - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - hours = absRound(minutes / 60); - data.hours = hours % 24; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - days += absRound(hours / 24); + isValid : function () { + return isValid(this); + }, - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + return false; + }, - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + parsingFlags : function () { + return extend({}, this._pf); + }, - data.days = days; - data.months = months; - data.years = years; + invalidAt: function () { + return this._pf.overflow; }, - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); + }, - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; + if (keepLocalTime) { + this.add(this._dateTzOffset(), 'm'); + } + } return this; }, - weeks : function () { - return absRound(this.days() / 7); + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + + add : createAdder(1, 'add'), + + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output, daysAdjust; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + daysAdjust = (this - moment(this).startOf('month')) - + (that - moment(that).startOf('month')); + // same as above but with zones, to negate all dst + daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4; + output += daysAdjust / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this)); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); }, - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); }, - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); - - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; } - - return this.localeData().postformat(output); }, - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); - - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; - - this._bubble(); - - return this; - }, + month : makeAccessor('Month', true), - subtract : function (input, val) { - var dur = moment.duration(input, val); + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - this._bubble(); + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } return this; }, - get : function (units) { + endOf: function (units) { units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); }, - as : function (units) { - var days, months; - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; + isAfter: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + yearsToDays(this._months / 12); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } + return +this.clone().startOf(units) > +moment(input).startOf(units); } }, - lang : moment.fn.lang, - locale : moment.fn.locale, - - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); + isBefore: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + return +this.clone().startOf(units) < +moment(input).startOf(units); } - ), - - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + }, - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + isSame: function (input, units) { + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); } - - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); }, - localeData : function () { - return this._locale; - } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } - } + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateTzOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + } else { + return this._isUTC ? offset : this._dateTzOffset(); + } + return this; + }, - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - /************************************ - Default Locale - ************************************/ + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } - /* EMBED_LOCALES */ + return (this.zone() - input) % 60 === 0; + }, - /************************************ - Exposing Moment - ************************************/ + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(64)(module))) + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - (function(window, undefined) { - 'use strict'; + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + lang : deprecate( + 'moment().lang() is deprecated. Use moment().localeData() instead.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + localeData : function () { + return this._locale; + }, - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + _dateTzOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return Math.round(this._d.getTimezoneOffset() / 15) * 15; + } + }); - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + function rawMonthSetter(mom, value) { + var dayOfMonth; - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + /************************************ + Duration Prototype + ************************************/ - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; } - // find what eventtypes we add listeners to - Event.determineEventTypes(); + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + extend(moment.duration.fn = Duration.prototype, { - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - // Hammer is ready...! - Hammer.READY = true; - } + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + hours = absRound(minutes / 60); + data.hours = hours % 24; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + days += absRound(hours / 24); - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + data.days = days; + data.months = months; + data.years = years; + }, - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + return this; + }, - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + weeks : function () { + return absRound(this.days() / 7); + }, - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - return Math.atan2(y, x) * 180 / Math.PI; - }, + return this.localeData().postformat(output); + }, - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + this._bubble(); - return Math.sqrt((x * x) + (y * y)); - }, + return this; + }, - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + subtract : function (input, val) { + var dur = moment.duration(input, val); - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + this._bubble(); - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + return this; + }, - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + yearsToDays(this._months / 12); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } } - } - }, + }, - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + lang : moment.fn.lang, + locale : moment.fn.locale, - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - var falseFn = toggle && function() { - return false; - }; + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } - }; + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + localeData : function () { + return this._locale; + } + }); - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + moment.duration.fn.toString = moment.duration.fn.toISOString; - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + /************************************ + Default Locale + ************************************/ - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + /* EMBED_LOCALES */ - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + /************************************ + Exposing Moment + ************************************/ - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; } - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(65)(module))) - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + (function(window, undefined) { + 'use strict'; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // detection has been started, we keep track of this, see above - this.started = true; + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - handler.call(Detection, evData); + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - evData.eventType = triggerType; - delete evData.changedLength; - } + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - return triggerType; - }, + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - return touchList; - } + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; + } - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // find what eventtypes we add listeners to + Event.determineEventTypes(); - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + + // Hammer is ready...! + Hammer.READY = true; + } /** * @module hammer * - * @class PointerEvent + * @class Utils * @static */ - var PointerEvent = Hammer.PointerEvent = { + var Utils = Hammer.utils = { /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest */ - pointers: {}, + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); }, /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); }, /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } - - var pt = ev.pointerType, - types = {}; + each: function each(obj, iterator, context) { + var i, len; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + } }, /** - * reset the stored pointers - * @method reset + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found */ - reset: function resetList() { - this.pointers = {}; - } - }; - - - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], - - // data of the current Hammer.gesture detection session - current: null, - - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, - - // when this becomes true, no gestures are fired - stopped: false, + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } + }, - this.stopped = false; - - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; - - this.detect(eventData); + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); }, /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; } + return false; + }, - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; - - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); + + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - return eventData; + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; }, /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - // reset the current - this.current = null; - this.stopped = true; + return Math.atan2(y, x) * 180 / Math.PI; }, /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + return Math.sqrt((x * x) + (y * y)); + }, - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } - - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; + return 1; }, /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; - - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } + return 0; + }, - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; - - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - - Utils.extend(ev, { - startEvent: startEv, + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - return ev; + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } }, /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; } - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); - - // set its index - gesture.index = gesture.index || 1000; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - // add Hammer.gesture to the list - this.gestures.push(gesture); + var falseFn = toggle && function() { + return false; + }; - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, - return this.gestures; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } }; @@ -25890,1713 +26162,1546 @@ return /******/ (function(modules) { // webpackBootstrap /** * @module hammer */ - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * @class Event + * @static */ - Hammer.Instance = function(element, options) { - var self = this; - - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); - - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; - + var Event = Hammer.event = { /** - * @property enabled + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private * @type {Boolean} - * @protected */ - this.enabled = true; - - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); - - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + preventMouseEvents: false, /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + started: false, /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} */ - this.eventHandlers = []; - }; + shouldDetect: false, - Hammer.Instance.prototype = { /** - * bind events to the instance + * simple event binder with a hook and support for multiple types * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space + * @param {HTMLElement} element + * @param {String} type * @param {Function} handler - * @param {Object} handler.ev event object + * @param {Function} [hook] + * @param {Object} hook.type */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); }); - return self; }, /** - * unbind events to the instance + * simple event unbinder with a hook and support for multiple types * @method off - * @chainable - * @param {String} gestures + * @param {HTMLElement} element + * @param {String} type * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type */ - off: function offEvent(gestures, handler) { - var self = this; - - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); }); - return self; - }, - - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } - - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; - - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } - - element.dispatchEvent(event); - return this; - }, - - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; }, /** - * dispose this hammer instance - * @method dispose - * @return {Null} + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler */ - dispose: function dispose() { - var i, eh; - - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); - - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } - - this.eventHandlers = []; - - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - - return null; - } - }; - - - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ - - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + onTouch: function onTouch(element, eventType, handler) { + var self = this; - function dragGesture(ev, inst) { - var cur = Detection.current; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - var startCenter = cur.startEvent.center; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - var isVertical = Utils.isVertical(ev.direction); + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + // detection has been started, we keep track of this, see above + this.started = true; - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - case EVENT_END: - triggered = false; - break; + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); } - } - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + handler.call(Detection, evData); - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + evData.eventType = triggerType; + delete evData.changedLength; + } - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + return triggerType; + }, - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; } - }; - })('drag'); - - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - /** - * @param {String} name - */ - (function(name) { - var timer; + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - // set the gesture so we can check in the timeout if it still is - current.name = name; + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + return touchList; + } - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - case EVENT_RELEASE: - clearTimeout(timer); - break; + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; } - } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + /** - * @property holdTimeout - * @type {Number} - * @default 500 + * prevent the browser default actions + * mostly used to disable scrolling of the browser */ - holdTimeout: 500, + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 + * stop bubbling the event up to its parents */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; } }; + /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` + * @module hammer * - * @class Swipe + * @class PointerEvent * @static */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, - - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } }, - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + var pt = ev.pointerType, + types = {}; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, + + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } }; + /** - * @module gestures - */ - /** - * Single tap and a double tap on a place + * @module hammer * - * @class Tap + * @class Detection * @static */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + // data of the current Hammer.gesture detection session + current: null, - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // when this becomes true, no gestures are fired + stopped: false, - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + this.stopped = false; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + this.detect(eventData); + }, - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - }; - })('tap'); - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false + return eventData; }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } - if(inst.options.preventDefault) { - ev.preventDefault(); + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + + // reset the current + this.current = null; + this.stopped = true; + }, + + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - } - }; - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // we are transforming! - Detection.current.name = name; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + Utils.extend(ev, { + startEvent: startEv, - inst.trigger(name, ev); // basic transform event + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + return ev; + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; } - } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + // set its index + gesture.index = gesture.index || 1000; - handler: transformGesture - }; - })('transform'); + // add Hammer.gesture to the list + this.gestures.push(gesture); - /** - * @module hammer - */ + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } + return this.gestures; + } + }; - })(window); -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + /** + * @module hammer + */ /** - * Copyright 2012 Craig Campbell - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Mousetrap is a simple keyboard shortcut library for Javascript with - * no external dependencies + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @version 1.1.2 - * @url craig.is/killing/mice + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ + Hammer.Instance = function(element, options) { + var self = this; - /** - * mapping of special keycodes to their corresponding keys - * - * everything in this dictionary cannot use keypress events - * so it has to be here to map to the correct keycodes for - * keyup/keydown events - * - * @type {Object} - */ - var _MAP = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 20: 'capslock', - 27: 'esc', - 32: 'space', - 33: 'pageup', - 34: 'pagedown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'ins', - 46: 'del', - 91: 'meta', - 93: 'meta', - 224: 'meta' - }, - - /** - * mapping for special characters so they can support - * - * this dictionary is only used incase you want to bind a - * keyup or keydown event to one of these keys - * - * @type {Object} - */ - _KEYCODE_MAP = { - 106: '*', - 107: '+', - 109: '-', - 110: '.', - 111 : '/', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: '\'' - }, + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - /** - * this is a mapping of keys that require shift on a US keypad - * back to the non shift equivelents - * - * this is so you can use keyup events with these keys - * - * note that this will only work reliably on US keyboards - * - * @type {Object} - */ - _SHIFT_MAP = { - '~': '`', - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0', - '_': '-', - '+': '=', - ':': ';', - '\"': '\'', - '<': ',', - '>': '.', - '?': '/', - '|': '\\' - }, + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - /** - * this is a list of special strings you can use to map - * to modifier keys when you specify your keyboard shortcuts - * - * @type {Object} - */ - _SPECIAL_ALIASES = { - 'option': 'alt', - 'command': 'meta', - 'return': 'enter', - 'escape': 'esc' - }, + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - /** - * variable to store the flipped version of _MAP from above - * needed to check if we should use keypress or not when no action - * is specified - * - * @type {Object|undefined} - */ - _REVERSE_MAP, + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - /** - * a list of all the callbacks setup via Mousetrap.bind() - * - * @type {Object} - */ - _callbacks = {}, + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - /** - * direct map of string combinations to callbacks used for trigger() - * - * @type {Object} - */ - _direct_map = {}, + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - /** - * keeps track of what level each sequence is at since multiple - * sequences can start out with the same sequence - * - * @type {Object} - */ - _sequence_levels = {}, + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - /** - * variable to store the setTimeout call - * - * @type {null|number} - */ - _reset_timer, + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - /** - * temporary state where we will ignore the next keyup - * - * @type {boolean|string} - */ - _ignore_next_keyup = false, + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * are we currently inside of a sequence? - * type of action ("keyup" or "keydown" or "keypress") or false - * - * @type {boolean|string} - */ - _inside_sequence = false; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - /** - * loop through the f keys, f1 to f19 and add them to the map - * programatically - */ - for (var i = 1; i < 20; ++i) { - _MAP[111 + i] = 'f' + i; - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - /** - * loop through to map numbers on the numeric keypad - */ - for (i = 0; i <= 9; ++i) { - _MAP[i + 96] = i; - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - /** - * cross browser add event method - * - * @param {Element|HTMLDocument} object - * @param {string} type - * @param {Function} callback - * @returns void - */ - function _addEvent(object, type, callback) { - if (object.addEventListener) { - return object.addEventListener(type, callback, false); - } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - object.attachEvent('on' + type, callback); - } + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - /** - * takes the event and returns the key character - * - * @param {Event} e - * @return {string} - */ - function _characterFromEvent(e) { + element.dispatchEvent(event); + return this; + }, - // for keypress events we should return the character as is - if (e.type == 'keypress') { - return String.fromCharCode(e.which); - } + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - // for non keypress events the special maps are needed - if (_MAP[e.which]) { - return _MAP[e.which]; - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - if (_KEYCODE_MAP[e.which]) { - return _KEYCODE_MAP[e.which]; - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - // if it is not in the special map - return String.fromCharCode(e.which).toLowerCase(); - } + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } - /** - * should we stop this event before firing off callbacks - * - * @param {Event} e - * @return {boolean} - */ - function _stop(e) { - var element = e.target || e.srcElement, - tag_name = element.tagName; + this.eventHandlers = []; - // if the element has the class "mousetrap" then no need to stop - if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { - return false; - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - // stop for input, select, and textarea - return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); - } + return null; + } + }; - /** - * checks if two arrays are equal - * - * @param {Array} modifiers1 - * @param {Array} modifiers2 - * @returns {boolean} - */ - function _modifiersMatch(modifiers1, modifiers2) { - return modifiers1.sort().join(',') === modifiers2.sort().join(','); - } - /** - * resets all sequence counters except for the ones passed in - * - * @param {Object} do_not_reset - * @returns void - */ - function _resetSequences(do_not_reset) { - do_not_reset = do_not_reset || {}; + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - var active_sequences = false, - key; + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - for (key in _sequence_levels) { - if (do_not_reset[key]) { - active_sequences = true; - continue; - } - _sequence_levels[key] = 0; - } + function dragGesture(ev, inst) { + var cur = Detection.current; - if (!active_sequences) { - _inside_sequence = false; - } - } + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - /** - * finds all callbacks that match based on the keycode, modifiers, - * and action - * - * @param {string} character - * @param {Array} modifiers - * @param {string} action - * @param {boolean=} remove - should we remove any matches - * @param {string=} combination - * @returns {Array} - */ - function _getMatches(character, modifiers, action, remove, combination) { - var i, - callback, - matches = []; + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // if there are no events related to this keycode - if (!_callbacks[character]) { - return []; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // if a modifier key is coming up on its own we should allow it - if (action == 'keyup' && _isModifier(character)) { - modifiers = [character]; - } + var startCenter = cur.startEvent.center; + + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - // loop through all callbacks for the key that was pressed - // and see if any of them match - for (i = 0; i < _callbacks[character].length; ++i) { - callback = _callbacks[character][i]; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - // if this is a sequence but it is not at the right level - // then move onto the next match - if (callback.seq && _sequence_levels[callback.seq] != callback.level) { - continue; - } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - // if the action we are looking for doesn't match the action we got - // then we should keep going - if (action != callback.action) { - continue; - } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - // if this is a keypress event that means that we need to only - // look at the character, otherwise check the modifiers as - // well - if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // remove is used so if you change your mind and call bind a - // second time with a new function the first one is overwritten - if (remove && callback.combo == combination) { - _callbacks[character].splice(i, 1); - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - matches.push(callback); - } - } + var isVertical = Utils.isVertical(ev.direction); - return matches; - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - /** - * takes a key event and figures out what the modifiers are - * - * @param {Event} e - * @returns {Array} - */ - function _eventModifiers(e) { - var modifiers = []; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - if (e.shiftKey) { - modifiers.push('shift'); - } + case EVENT_END: + triggered = false; + break; + } + } - if (e.altKey) { - modifiers.push('alt'); - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - if (e.ctrlKey) { - modifiers.push('ctrl'); - } + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - if (e.metaKey) { - modifiers.push('meta'); - } + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - return modifiers; - } + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - /** - * actually calls the callback function - * - * if your callback function returns false this will use the jquery - * convention - prevent default and stop propogation on the event - * - * @param {Function} callback - * @param {Event} e - * @returns void - */ - function _fireCallback(callback, e) { - if (callback(e) === false) { - if (e.preventDefault) { - e.preventDefault(); - } + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - if (e.stopPropagation) { - e.stopPropagation(); - } + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - e.returnValue = false; - e.cancelBubble = true; - } - } + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); - /** - * handles a character key event - * - * @param {string} character - * @param {Event} e - * @returns void - */ - function _handleCharacter(character, e) { + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); + } + }; - // if this event should not happen stop here - if (_stop(e)) { - return; - } + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - var callbacks = _getMatches(character, _eventModifiers(e), e.type), - i, - do_not_reset = {}, - processed_sequence_callback = false; + /** + * @param {String} name + */ + (function(name) { + var timer; - // loop through matching callbacks for this key event - for (i = 0; i < callbacks.length; ++i) { + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // fire for all sequence callbacks - // this is because if for example you have multiple sequences - // bound such as "g i" and "g t" they both need to fire the - // callback for matching g cause otherwise you can only ever - // match the first one - if (callbacks[i].seq) { - processed_sequence_callback = true; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - // keep a list of which sequences were matches for later - do_not_reset[callbacks[i].seq] = 1; - _fireCallback(callbacks[i].callback, e); - continue; - } + // set the gesture so we can check in the timeout if it still is + current.name = name; - // if there were no sequence matches but we are still here - // that means this is a regular match so we should fire that - if (!processed_sequence_callback && !_inside_sequence) { - _fireCallback(callbacks[i].callback, e); - } - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - // if you are inside of a sequence and the key you are pressing - // is not a modifier key then we should reset all sequences - // that were not matched by this key event - if (e.type == _inside_sequence && !_isModifier(character)) { - _resetSequences(do_not_reset); - } - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - /** - * handles a keydown event - * - * @param {Event} e - * @returns void - */ - function _handleKey(e) { + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } - // normalize e.which for key events - // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion - e.which = typeof e.which == "number" ? e.which : e.keyCode; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - var character = _characterFromEvent(e); + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); - // no character found then stop - if (!character) { - return; - } + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } + } + }; - if (e.type == 'keyup' && _ignore_next_keyup == character) { - _ignore_next_keyup = false; - return; - } + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - _handleCharacter(character, e); - } + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - /** - * determines if the keycode specified is a modifier key or not - * - * @param {string} key - * @returns {boolean} - */ - function _isModifier(key) { - return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; - } + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - /** - * called to set a 1 second timeout on the specified sequence - * - * this is so after each key press in the sequence you have 1 second - * to press the next key before you have to start over - * - * @returns void - */ - function _resetSequenceTimer() { - clearTimeout(_reset_timer); - _reset_timer = setTimeout(_resetSequences, 1000); - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - /** - * reverses the map lookup so that we can look for specific keys - * to see what can and can't use keypress - * - * @return {Object} - */ - function _getReverseMap() { - if (!_REVERSE_MAP) { - _REVERSE_MAP = {}; - for (var key in _MAP) { + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - // pull out the numeric keypad from here cause keypress should - // be able to detect the keys from the character - if (key > 95 && key < 112) { - continue; - } + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - if (_MAP.hasOwnProperty(key)) { - _REVERSE_MAP[_MAP[key]] = key; - } - } - } - return _REVERSE_MAP; - } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; - /** - * picks the best action based on the key combination - * - * @param {string} key - character for key - * @param {Array} modifiers - * @param {string=} action passed in - */ - function _pickBestAction(key, modifiers, action) { + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - // if no action was picked in we should try to pick the one - // that we think would work best for this key - if (!action) { - action = _getReverseMap()[key] ? 'keydown' : 'keypress'; - } + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - // modifier keys don't work as expected with keypress, - // switch to keydown - if (action == 'keypress' && modifiers.length) { - action = 'keydown'; - } + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - return action; - } + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - /** - * binds a key sequence to an event - * - * @param {string} combo - combo specified in bind call - * @param {Array} keys - * @param {Function} callback - * @param {string=} action - * @returns void - */ - function _bindSequence(combo, keys, callback, action) { + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - // start off by adding a sequence level record for this combination - // and setting the level to 0 - _sequence_levels[combo] = 0; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - // if there is no action pick the best one for the first key - // in the sequence - if (!action) { - action = _pickBestAction(keys[0], []); - } + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - /** - * callback to increase the sequence level for this sequence and reset - * all other sequences that were active - * - * @param {Event} e - * @returns void - */ - var _increaseSequence = function(e) { - _inside_sequence = action; - ++_sequence_levels[combo]; - _resetSequenceTimer(); - }, + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - /** - * wraps the specified callback inside of another function in order - * to reset all sequence counters as soon as this sequence is done - * - * @param {Event} e - * @returns void - */ - _callbackAndReset = function(e) { - _fireCallback(callback, e); + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - // we should ignore the next key up if the action is key down - // or keypress. this is so if you finish a sequence and - // release the key the final key will not trigger a keyup - if (action !== 'keyup') { - _ignore_next_keyup = _characterFromEvent(e); - } + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - // weird race condition if a sequence ends with the key - // another sequence begins with - setTimeout(_resetSequences, 10); - }, - i; + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - // loop through keys one at a time and bind the appropriate callback - // function. for any key leading up to the final one it should - // increase the sequence. after the final, it should reset all sequences - for (i = 0; i < keys.length; ++i) { - _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); - } - } + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - /** - * binds a single keyboard combination - * - * @param {string} combination - * @param {Function} callback - * @param {string=} action - * @param {string=} sequence_name - name of sequence if part of sequence - * @param {number=} level - what part of the sequence the command is - * @returns void - */ - function _bindSingle(combination, callback, action, sequence_name, level) { + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - // make sure multiple spaces in a row become a single space - combination = combination.replace(/\s+/g, ' '); + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - var sequence = combination.split(' '), - i, - key, - keys, - modifiers = []; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - // if this pattern is a sequence of keys then run through this method - // to reprocess each pattern one key at a time - if (sequence.length > 1) { - return _bindSequence(combination, sequence, callback, action); - } + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // take the keys from this pattern and figure out what the actual - // pattern is all about - keys = combination === '+' ? ['+'] : combination.split('+'); + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - // normalize key names - if (_SPECIAL_ALIASES[key]) { - key = _SPECIAL_ALIASES[key]; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - // if this is not a keypress event then we should - // be smart about using shift keys - // this will only work for US keyboards however - if (action && action != 'keypress' && _SHIFT_MAP[key]) { - key = _SHIFT_MAP[key]; - modifiers.push('shift'); - } + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // if this key is a modifier then add it to the list of modifiers - if (_isModifier(key)) { - modifiers.push(key); - } - } + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - // depending on what the key combination is - // we will try to pick the best event for it - action = _pickBestAction(key, modifiers, action); + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - // make sure to initialize array if this is the first time - // a callback is added for this key - if (!_callbacks[key]) { - _callbacks[key] = []; - } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - // remove an existing match if there is one - _getMatches(key, modifiers, action, !sequence_name, combination); + // we are transforming! + Detection.current.name = name; - // add this call back to the array - // if it is a sequence put it at the beginning - // if not put it at the end - // - // this is important because the way these are processed expects - // the sequence ones to come first - _callbacks[key][sequence_name ? 'unshift' : 'push']({ - callback: callback, - modifiers: modifiers, - action: action, - seq: sequence_name, - level: level, - combo: combination - }); - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * binds multiple combinations to the same callback - * - * @param {Array} combinations - * @param {Function} callback - * @param {string|undefined} action - * @returns void - */ - function _bindMultiple(combinations, callback, action) { - for (var i = 0; i < combinations.length; ++i) { - _bindSingle(combinations[i], callback, action); - } - } + inst.trigger(name, ev); // basic transform event - // start! - _addEvent(document, 'keypress', _handleKey); - _addEvent(document, 'keydown', _handleKey); - _addEvent(document, 'keyup', _handleKey); + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - var mousetrap = { + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - /** - * binds an event to mousetrap - * - * can be a single key, a combination of keys separated with +, - * a comma separated list of keys, an array of keys, or - * a sequence of keys separated by spaces - * - * be sure to list the modifier keys first to make sure that the - * correct key ends up getting bound (the last key in the pattern) - * - * @param {string|Array} keys - * @param {Function} callback - * @param {string=} action - 'keypress', 'keydown', or 'keyup' - * @returns void - */ - bind: function(keys, callback, action) { - _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); - _direct_map[keys + ':' + action] = callback; - return this; - }, + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - /** - * unbinds an event to mousetrap - * - * the unbinding sets the callback function of the specified key combo - * to an empty function and deletes the corresponding key in the - * _direct_map dict. - * - * the keycombo+action has to be exactly the same as - * it was defined in the bind method - * - * TODO: actually remove this from the _callbacks dictionary instead - * of binding an empty function - * - * @param {string|Array} keys - * @param {string} action - * @returns void - */ - unbind: function(keys, action) { - if (_direct_map[keys + ':' + action]) { - delete _direct_map[keys + ':' + action]; - this.bind(keys, function() {}, action); - } - return this; - }, + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - /** - * triggers an event that has already been bound - * - * @param {string} keys - * @param {string=} action - * @returns void - */ - trigger: function(keys, action) { - _direct_map[keys + ':' + action](); - return this; - }, + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - /** - * resets the library back to its initial state. this is useful - * if you want to clear out the current keyboard shortcuts and bind - * new ones - for example if you switch to another page - * - * @returns void - */ - reset: function() { - _callbacks = {}; - _direct_map = {}; - return this; - } - }; + handler: transformGesture + }; + })('transform'); - module.exports = mousetrap; + /** + * @module hammer + */ + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); /***/ }, /* 54 */ @@ -31222,7 +31327,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var RepulsionMixin = __webpack_require__(62); var HierarchialRepulsionMixin = __webpack_require__(63); - var BarnesHutMixin = __webpack_require__(65); + var BarnesHutMixin = __webpack_require__(64); /** * Toggling barnes Hut calculation on and off. @@ -31910,7 +32015,7 @@ return /******/ (function(modules) { // webpackBootstrap var valueId = id + "_value"; var rangeValue = document.getElementById(id).value; - if (map instanceof Array) { + if (Array.isArray(map)) { document.getElementById(valueId).value = map[parseInt(rangeValue)]; this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } @@ -32166,22 +32271,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 64 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } - - -/***/ }, -/* 65 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32585,6 +32674,22 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + /***/ } /******/ ]) }); diff --git a/dist/vis.map b/dist/vis.map index 5e7d9fdb..58db3c8e 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","vis","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","time","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","setAttribute","emptyContent","baseClassName","onTop","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","time","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","ignoreStacking","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAyBA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GAGvCN,EAAQmB,QAAUb,EAAoB,GACtCN,EAAQoB,SACNC,OAAQf,EAAoB,GAC5BgB,OAAQhB,EAAoB,GAC5BiB,QAASjB,EAAoB,GAC7BkB,QAASlB,EAAoB,GAC7BmB,OAAQnB,EAAoB,IAC5BoB,WAAYpB,EAAoB,KAIlCN,EAAQ2B,SAAWrB,EAAoB,IACvCN,EAAQ4B,QAAUtB,EAAoB,IACtCN,EAAQ6B,UACNC,SAAUxB,EAAoB,IAC9ByB,MAAOzB,EAAoB,IAC3B0B,MAAO1B,EAAoB,IAC3B2B,SAAU3B,EAAoB,IAE9B4B,YACEC,OACEC,KAAM9B,EAAoB,IAC1B+B,eAAgB/B,EAAoB,IACpCgC,QAAShC,EAAoB,IAC7BiC,UAAWjC,EAAoB,IAC/BkC,UAAWlC,EAAoB,KAGjCmC,UAAWnC,EAAoB,IAC/BoC,YAAapC,EAAoB,IACjCqC,WAAYrC,EAAoB,IAChCsC,SAAUtC,EAAoB,IAC9BuC,WAAYvC,EAAoB,IAChCwC,MAAOxC,EAAoB,IAC3ByC,QAASzC,EAAoB,IAC7B0C,OAAQ1C,EAAoB,IAC5B2C,UAAW3C,EAAoB,IAC/B4C,SAAU5C,EAAoB,MAKlCN,EAAQmD,QAAU7C,EAAoB,IACtCN,EAAQoD,SACNC,KAAM/C,EAAoB,IAC1BgD,OAAQhD,EAAoB,IAC5BiD,OAAQjD,EAAoB,IAC5BkD,KAAMlD,EAAoB,IAC1BmD,MAAOnD,EAAoB,IAC3BoD,UAAWpD,EAAoB,IAC/BqD,YAAarD,EAAoB,KAInCN,EAAQ4D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlB7D,EAAQ8D,OAASxD,EAAoB,IACrCN,EAAQ+D,OAASzD,EAAoB,KAKjC,SAASL,OAAQD,QAASM,qBAM9B,GAAIwD,QAASxD,oBAAoB,GAOjCN,SAAQgE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAQ7CjE,QAAQmE,SAAW,SAASF,GAC1B,MAAQA,aAAkBG,SAA2B,gBAAVH,IAQ7CjE,QAAQqE,OAAS,SAASJ,GACxB,GAAIA,YAAkBK,MACpB,OAAO,CAEJ,IAAItE,QAAQmE,SAASF,GAAS,CAEjC,GAAIM,GAAQC,aAAaC,KAAKR,EAC9B,IAAIM,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMV,IACzB,OAAO,EAIX,OAAO,GAQTjE,QAAQ4E,YAAc,SAASX,GAC7B,MAA4B,mBAAb,SACVY,OAAoB,eACpBA,OAAOC,cAAuB,WAC9Bb,YAAkBY,QAAOC,cAAcC,WAQ9C/E,QAAQgF,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOC,MAAKC,MACQ,MAAhBD,KAAKE,UACPC,SAAS,IAGb,OACIJ,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxBjF,QAAQsF,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWTvF,QAAQ+F,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAInC,OAAM,uDAGlB,KAAK,GAAI2B,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEb1E,EAAI,EAAGA,EAAIkF,EAAML,OAAQ7E,IAAK,CACrC,GAAI+E,GAAOG,EAAMlF,EACb8E,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWTvF,QAAQmG,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACb1E,EAAI,EAAGA,EAAIkF,EAAML,OAAQ7E,IAAK,CACrC,GAAI+E,GAAOG,EAAMlF,EACjB,IAAI8E,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BvG,QAAQyG,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWTvF,QAAQ0G,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BvG,QAAQyG,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASTvF,QAAQyG,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BvG,QAAQyG,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUTvF,QAAQ4G,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTxF,QAAQ6G,QAAU,SAAS5C,EAAQ6C,GACjC,GAAIvC,EAEJ,IAAeiC,SAAXvC,EACF,MAAOuC,OAET,IAAe,OAAXvC,EACF,MAAO,KAGT,KAAK6C,EACH,MAAO7C,EAET,IAAsB,gBAAT6C,MAAwBA,YAAgB1C,SACnD,KAAM,IAAIP,OAAM,wBAIlB,QAAQiD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQ9C,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAO+C,UAEvB,KAAK,SACL,IAAK,SACH,MAAO5C,QAAOH,EAEhB,KAAK,OACH,GAAIjE,QAAQgE,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAElB,IAAIA,YAAkBK,MACpB,MAAO,IAAIA,MAAKL,EAAO+C,UAEpB,IAAIlD,OAAOmD,SAAShD,GACvB,MAAO,IAAIK,MAAKL,EAAO+C,UAEzB,IAAIhH,QAAQmE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAGtBT,OAAOG,GAAQiD,QAIxB,MAAM,IAAIrD,OACN,iCAAmC7D,QAAQmH,QAAQlD,GAC/C,gBAGZ,KAAK,SACH,GAAIjE,QAAQgE,SAASC,GACnB,MAAOH,QAAOG,EAEhB,IAAIA,YAAkBK,MACpB,MAAOR,QAAOG,EAAO+C,UAElB,IAAIlD,OAAOmD,SAAShD,GACvB,MAAOH,QAAOG,EAEhB,IAAIjE,QAAQmE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GAGjBH,OAFLS,EAEYL,OAAOK,EAAM,IAGbN,EAIhB,MAAM,IAAIJ,OACN,iCAAmC7D,QAAQmH,QAAQlD,GAC/C,gBAGZ,KAAK,UACH,GAAIjE,QAAQgE,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAEb,IAAIA,YAAkBK,MACzB,MAAOL,GAAOmD,aAEX,IAAItD,OAAOmD,SAAShD,GACvB,MAAOA,GAAOiD,SAASE,aAEpB,IAAIpH,QAAQmE,SAASF,GAExB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAAK6C,cAG3B,GAAI9C,MAAKL,GAAQmD,aAI1B,MAAM,IAAIvD,OACN,iCAAmC7D,QAAQmH,QAAQlD,GAC/C,mBAGZ,KAAK,UACH,GAAIjE,QAAQgE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBK,MACzB,MAAO,SAAWL,EAAO+C,UAAY,IAElC,IAAIhH,QAAQmE,SAASF,GAAS,CACjCM,EAAQC,aAAaC,KAAKR,EAC1B,IAAIoD,EAQJ,OALEA,GAFE9C,EAEM,GAAID,MAAKJ,OAAOK,EAAM,KAAKyC,UAG3B,GAAI1C,MAAKL,GAAQ+C,UAEpB,SAAWK,EAAQ,KAG1B,KAAM,IAAIxD,OACN,iCAAmC7D,QAAQmH,QAAQlD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBiD,EAAO,MAOhD,IAAItC,cAAe,qBAOnBxE,SAAQmH,QAAU,SAASlD,GACzB,GAAI6C,SAAc7C,EAElB,OAAY,UAAR6C,EACY,MAAV7C,EACK,OAELA,YAAkB8C,SACb,UAEL9C,YAAkBC,QACb,SAELD,YAAkBG,QACb,SAEL6B,MAAMC,QAAQjC,GACT,QAELA,YAAkBK,MACb,OAEF,SAEQ,UAARwC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GAST9G,QAAQsH,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpD3H,QAAQ4H,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnD9H,QAAQ+H,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQtB,QAAQqB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlCpI,QAAQqI,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQtB,QAAQqB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalCpI,QAAQwI,QAAU,SAASvE,EAAQwE,GACjC,GAAIjD,GACAC,CACJ,IAAIQ,MAAMC,QAAQjC,GAEhB,IAAKuB,EAAI,EAAGC,EAAMxB,EAAO0B,OAAYF,EAAJD,EAASA,IACxCiD,EAASxE,EAAOuB,GAAIA,EAAGvB,OAKzB,KAAKuB,IAAKvB,GACJA,EAAO6B,eAAeN,IACxBiD,EAASxE,EAAOuB,GAAIA,EAAGvB,IAY/BjE,QAAQ0I,QAAU,SAASzE,GACzB,GAAI0E,KAEJ,KAAK,GAAI9C,KAAQ5B,GACXA,EAAO6B,eAAeD,IAAO8C,EAAMR,KAAKlE,EAAO4B,GAGrD,OAAO8C,IAUT3I,QAAQ4I,eAAiB,SAAS3E,EAAQ4E,EAAKxB,GAC7C,MAAIpD,GAAO4E,KAASxB,GAClBpD,EAAO4E,GAAOxB,GACP,IAGA,GAYXrH,QAAQ8I,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACStC,SAAf0C,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUzC,QAAQ,YAAc,IACvEqC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCjJ,QAAQsJ,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES9C,SAAf0C,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUzC,QAAQ,YAAc,IACvEqC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCjJ,QAAQwJ,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxB1J,QAAQ2J,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMrD,QAAnBoD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAGT5J,QAAQgK,UAQRhK,QAAQgK,OAAOC,UAAY,SAAU5C,EAAO6C,GAK1C,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGH6C,GAAgB,MASzBlK,QAAQgK,OAAOG,SAAW,SAAU9C,EAAO6C,GAKzC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACKnD,OAAOmD,IAAU6C,GAAgB,KAGnCA,GAAgB,MASzBlK,QAAQgK,OAAOI,SAAW,SAAU/C,EAAO6C,GAKzC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACKjD,OAAOiD,GAGT6C,GAAgB,MASzBlK,QAAQgK,OAAOK,OAAS,SAAUhD,EAAO6C,GAKvC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGNrH,QAAQmE,SAASkD,GACZA,EAEArH,QAAQgE,SAASqD,GACjBA,EAAQ,KAGR6C,GAAgB,MAU3BlK,QAAQgK,OAAOM,UAAY,SAAUjD,EAAO6C,GAK1C,MAJoB,kBAAT7C,KACTA,EAAQA,KAGHA,GAAS6C,GAAgB,MAKlClK,QAAQuK,QAAU,SAASC,KACzB,GAAIC,MAiBJ,OAdEA,OADS,KAAPD,IACM,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GAEAE,KAAKF,MAKjBxK,QAAQ2K,QAAU,SAASC,GACzB,GAAIH,EAiBJ,OAdEA,GADQ,IAAPG,EACO,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IAEA,GAAKA,GAWjB5K,QAAQ6K,WAAa,SAASC,GAC5B,GAAIjK,EACJ,IAAIb,QAAQmE,SAAS2G,GAAQ,CAC3B,GAAI9K,QAAQ+K,WAAWD,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMnF,OAAO,GAAGuC,MAAM,IACzD4C,GAAQ9K,QAAQkL,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAIhL,QAAQmL,WAAWL,GAAQ,CAC7B,GAAIM,GAAMpL,QAAQqL,SAASP,GACvBQ,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEvG,KAAKwG,IAAI,EAAU,KAARN,EAAIK,IAC3DE,GAAmBJ,EAAEH,EAAIG,EAAEC,EAAEtG,KAAKwG,IAAI,EAAU,KAARN,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DG,EAAkB5L,QAAQ6L,SAASF,EAAeJ,EAAGI,EAAeJ,EAAGI,EAAeF,GACtFK,EAAkB9L,QAAQ6L,SAASP,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F5K,IACEkL,WAAYjB,EACZkB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKX/K,IACEkL,WAAWjB,EACXkB,OAAOlB,EACPmB,WACEF,WAAWjB,EACXkB,OAAOlB,GAEToB,OACEH,WAAWjB,EACXkB,OAAOlB,QAMbjK,MACAA,EAAEkL,WAAajB,EAAMiB,YAAc,QACnClL,EAAEmL,OAASlB,EAAMkB,QAAUnL,EAAEkL,WAEzB/L,QAAQmE,SAAS2G,EAAMmB,WACzBpL,EAAEoL,WACAD,OAAQlB,EAAMmB,UACdF,WAAYjB,EAAMmB,YAIpBpL,EAAEoL,aACFpL,EAAEoL,UAAUF,WAAajB,EAAMmB,WAAanB,EAAMmB,UAAUF,YAAclL,EAAEkL,WAC5ElL,EAAEoL,UAAUD,OAASlB,EAAMmB,WAAanB,EAAMmB,UAAUD,QAAUnL,EAAEmL,QAGlEhM,QAAQmE,SAAS2G,EAAMoB,OACzBrL,EAAEqL,OACAF,OAAQlB,EAAMoB,MACdH,WAAYjB,EAAMoB,QAIpBrL,EAAEqL,SACFrL,EAAEqL,MAAMH,WAAajB,EAAMoB,OAASpB,EAAMoB,MAAMH,YAAclL,EAAEkL,WAChElL,EAAEqL,MAAMF,OAASlB,EAAMoB,OAASpB,EAAMoB,MAAMF,QAAUnL,EAAEmL,OAI5D,OAAOnL,IASTb,QAAQmM,SAAW,SAASC,GAC1BA,EAAMA,EAAIC,QAAQ,IAAI,IAAIC,aAE1B,IAAI/G,GAAIvF,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCnG,EAAIpG,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IACrC1L,EAAIb,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCC,EAAIxM,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCE,EAAIzM,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCG,EAAI1M,QAAQuK,QAAQ6B,EAAIG,UAAU,EAAG,IAErCI,EAAS,GAAJpH,EAAUa,EACfwG,EAAS,GAAJ/L,EAAU2L,EACfpG,EAAS,GAAJqG,EAAUC,CAEnB,QAAQC,EAAEA,EAAEC,EAAEA,EAAExG,EAAEA,IAGpBpG,QAAQkL,SAAW,SAAS2B,EAAIC,EAAMC,GACpC,GAAIxH,GAAIvF,QAAQ2K,QAAQzF,KAAKC,MAAM0H,EAAM,KACrCzG,EAAIpG,QAAQ2K,QAAQkC,EAAM,IAC1BhM,EAAIb,QAAQ2K,QAAQzF,KAAKC,MAAM2H,EAAQ,KACvCN,EAAIxM,QAAQ2K,QAAQmC,EAAQ,IAC5BL,EAAIzM,QAAQ2K,QAAQzF,KAAKC,MAAM4H,EAAO,KACtCL,EAAI1M,QAAQ2K,QAAQoC,EAAO,IAE3BX,EAAM7G,EAAIa,EAAIvF,EAAI2L,EAAIC,EAAIC,CAC9B,OAAO,IAAMN,GAafpM,QAAQgN,SAAW,SAASH,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIE,GAAS/H,KAAKwG,IAAImB,EAAI3H,KAAKwG,IAAIoB,EAAMC,IACrCG,EAAShI,KAAKiI,IAAIN,EAAI3H,KAAKiI,IAAIL,EAAMC,GAGzC,IAAIE,GAAUC,EACZ,OAAQ3B,EAAE,EAAEC,EAAE,EAAEC,EAAEwB,EAIpB,IAAIT,GAAKK,GAAKI,EAAUH,EAAMC,EAASA,GAAME,EAAUJ,EAAIC,EAAQC,EAAKF,EACpEtB,EAAKsB,GAAKI,EAAU,EAAMF,GAAME,EAAU,EAAI,EAC9CG,EAAM,IAAI7B,EAAIiB,GAAGU,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7F,EAAQ6F,CACZ,QAAQ3B,EAAE6B,EAAI5B,EAAE6B,EAAW5B,EAAEpE,GAG/B,IAAIiG,UAEFpF,MAAO,SAAUqF,GACf,GAAIC,KAWJ,OATAD,GAAQrF,MAAM,KAAKM,QAAQ,SAAUiF,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMvF,MAAM,KACpBW,EAAM8E,EAAM,GAAGD,OACfrG,EAAQsG,EAAM,GAAGD,MACrBF,GAAO3E,GAAOxB,KAIXmG,GAITpF,KAAM,SAAUoF,GACd,MAAOjH,QAAOqH,KAAKJ,GACdK,IAAI,SAAUhF,GACb,MAAOA,GAAM,KAAO2E,EAAO3E,KAE5BT,KAAK,OASdpI,SAAQ8N,WAAa,SAAU/E,EAASwE,GACtC,GAAIQ,GAAgBT,QAAQpF,MAAMa,EAAQ0E,MAAMF,SAC5CS,EAAYV,QAAQpF,MAAMqF,GAC1BC,EAASxN,QAAQsF,OAAOyI,EAAeC,EAE3CjF,GAAQ0E,MAAMF,QAAUD,QAAQlF,KAAKoF,IAQvCxN,QAAQiO,cAAgB,SAAUlF,EAASwE,GACzC,GAAIC,GAASF,QAAQpF,MAAMa,EAAQ0E,MAAMF,SACrCW,EAAeZ,QAAQpF,MAAMqF,EAEjC,KAAK,GAAI1E,KAAOqF,GACVA,EAAapI,eAAe+C,UACvB2E,GAAO3E,EAIlBE,GAAQ0E,MAAMF,QAAUD,QAAQlF,KAAKoF,IAWvCxN,QAAQmO,SAAW,SAAS5C,EAAGC,EAAGC,GAChC,GAAIkB,GAAGC,EAAGxG,EAENZ,EAAIN,KAAKC,MAAU,EAAJoG,GACfmB,EAAQ,EAAJnB,EAAQ/F,EACZ1E,EAAI2K,GAAK,EAAID,GACb4C,EAAI3C,GAAK,EAAIiB,EAAIlB,GACjB6C,EAAI5C,GAAK,GAAK,EAAIiB,GAAKlB,EAE3B,QAAQhG,EAAI,GACV,IAAK,GAAGmH,EAAIlB,EAAGmB,EAAIyB,EAAGjI,EAAItF,CAAG,MAC7B,KAAK,GAAG6L,EAAIyB,EAAGxB,EAAInB,EAAGrF,EAAItF,CAAG,MAC7B,KAAK,GAAG6L,EAAI7L,EAAG8L,EAAInB,EAAGrF,EAAIiI,CAAG,MAC7B,KAAK,GAAG1B,EAAI7L,EAAG8L,EAAIwB,EAAGhI,EAAIqF,CAAG,MAC7B,KAAK,GAAGkB,EAAI0B,EAAGzB,EAAI9L,EAAGsF,EAAIqF,CAAG,MAC7B,KAAK,GAAGkB,EAAIlB,EAAGmB,EAAI9L,EAAGsF,EAAIgI,EAG5B,OAAQzB,EAAEzH,KAAKC,MAAU,IAAJwH,GAAUC,EAAE1H,KAAKC,MAAU,IAAJyH,GAAUxG,EAAElB,KAAKC,MAAU,IAAJiB,KAGrEpG,QAAQ6L,SAAW,SAASN,EAAGC,EAAGC,GAChC,GAAIT,GAAMhL,QAAQmO,SAAS5C,EAAGC,EAAGC,EACjC,OAAOzL,SAAQkL,SAASF,EAAI2B,EAAG3B,EAAI4B,EAAG5B,EAAI5E,IAG5CpG,QAAQqL,SAAW,SAASe,GAC1B,GAAIpB,GAAMhL,QAAQmM,SAASC,EAC3B,OAAOpM,SAAQgN,SAAShC,EAAI2B,EAAG3B,EAAI4B,EAAG5B,EAAI5E,IAG5CpG,QAAQmL,WAAa,SAASiB,GAC5B,GAAIkC,GAAO,qCAAqCC,KAAKnC,EACrD,OAAOkC,IAGTtO,QAAQ+K,WAAa,SAASC,GAC5BA,EAAMA,EAAIqB,QAAQ,IAAI,GACtB,IAAIiC,GAAO,wCAAwCC,KAAKvD,EACxD,OAAOsD,IAUTtO,QAAQwO,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWpI,OAAOqI,OAAOF,GACpBlJ,EAAI,EAAGA,EAAIiJ,EAAO9I,OAAQH,IAC7BkJ,EAAgB5I,eAAe2I,EAAOjJ,KACC,gBAA9BkJ,GAAgBD,EAAOjJ,MAChCmJ,EAASF,EAAOjJ,IAAMxF,QAAQ6O,aAAaH,EAAgBD,EAAOjJ,KAIxE,OAAOmJ,GAGP,MAAO,OAWX3O,QAAQ6O,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWpI,OAAOqI,OAAOF,EAC7B,KAAK,GAAIlJ,KAAKkJ,GACRA,EAAgB5I,eAAeN,IACA,gBAAtBkJ,GAAgBlJ,KACzBmJ,EAASnJ,GAAKxF,QAAQ6O,aAAaH,EAAgBlJ,IAIzD,OAAOmJ,GAGP,MAAO,OAcX3O,QAAQ8O,aAAe,SAAUC,EAAaC,EAAShF,GACrD,GAAwBxD,SAApBwI,EAAQhF,GACV,GAA8B,iBAAnBgF,GAAQhF,GACjB+E,EAAY/E,GAAQiF,QAAUD,EAAQhF,OAEnC,CACH+E,EAAY/E,GAAQiF,SAAU,CAC9B,KAAKpJ,OAAQmJ,GAAQhF,GACfgF,EAAQhF,GAAQlE,eAAeD,QACjCkJ,EAAY/E,GAAQnE,MAAQmJ,EAAQhF,GAAQnE,SAiBtD7F,QAAQ8O,aAAe,SAAUC,EAAaC,EAAShF,GACrD,GAAwBxD,SAApBwI,EAAQhF,GACV,GAA8B,iBAAnBgF,GAAQhF,GACjB+E,EAAY/E,GAAQiF,QAAUD,EAAQhF,OAEnC,CACH+E,EAAY/E,GAAQiF,SAAU,CAC9B,KAAKpJ,OAAQmJ,GAAQhF,GACfgF,EAAQhF,GAAQlE,eAAeD,QACjCkJ,EAAY/E,GAAQnE,MAAQmJ,EAAQhF,GAAQnE,SA2BtD7F,QAAQkP,aAAe,SAASC,EAAcC,EAAOC,EAAOC,GAC1D,GAUIjI,GAVAsB,EAAQwG,EAERI,EAAgB,IAChBC,EAAY,EACZC,GAAQ,EACRC,EAAM,EACNC,EAAOhH,EAAMhD,OACbiK,EAASF,EACTG,EAAUF,EACVG,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,GAGjC,IAAY,GAARC,EACFG,EAAQ,OAEL,IAAY,GAARH,EAELG,EADEnH,EAAMmH,GAAOC,UAAUX,GAChB,EAGD,OAGP,CAGH,IAFAO,GAAQ,EAEQ,GAATF,GAA8BF,EAAZC,GACvBnI,EAAmBb,SAAX8I,EAAuB3G,EAAMmH,GAAOT,GAAS1G,EAAMmH,GAAOT,GAAOC,GAErE3G,EAAMmH,GAAOC,UAAUX,GACzBK,GAAQ,GAGJpI,EAAQ+H,EAAMY,MAChBJ,EAAS1K,KAAKC,MAAM,IAAKwK,EAAKD,IAG9BG,EAAU3K,KAAKC,MAAM,IAAKwK,EAAKD,IAG7BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,IAoBT9P,QAAQmQ,oBAAsB,SAAShB,EAAcvF,EAAQyF,EAAOe,GAClE,GASIC,GACAC,EAAWjJ,EAAOkJ,EAVlBhB,EAAgB,IAChBC,EAAY,EACZ7G,EAAQwG,EACRM,GAAQ,EACRC,EAAM,EACNC,EAAOhH,EAAMhD,OACbiK,EAASF,EACTG,EAAUF,EACVG,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,GAIjC,IAAY,GAARC,EAAYG,EAAQ,OACnB,IAAY,GAARH,EACPtI,EAAQsB,EAAMmH,GAAOT,GAEnBS,EADEzI,GAASuC,EACF,EAGD,OAGP,CAEH,IADA+F,GAAQ,EACQ,GAATF,GAA8BF,EAAZC,GACvBc,EAAY3H,EAAMzD,KAAKiI,IAAI,EAAE2C,EAAQ,IAAIT,GACzChI,EAAQsB,EAAMmH,GAAOT,GACrBkB,EAAY5H,EAAMzD,KAAKwG,IAAI/C,EAAMhD,OAAO,EAAEmK,EAAQ,IAAIT,GAElDhI,GAASuC,GAAsBA,EAAZ0G,GAAsBjJ,EAAQuC,GAAkBA,EAARvC,GAAkBkJ,EAAY3G,GAC3F6F,GAAQ,EACJpI,GAASuC,IACW,UAAlBwG,EACcxG,EAAZ0G,GAAsBjJ,EAAQuC,IAChCkG,EAAQ5K,KAAKiI,IAAI,EAAE2C,EAAQ,IAIjBlG,EAARvC,GAAkBkJ,EAAY3G,IAChCkG,EAAQ5K,KAAKwG,IAAI/C,EAAMhD,OAAO,EAAEmK,EAAQ,OAMlClG,EAARvC,EACFuI,EAAS1K,KAAKC,MAAM,IAAKwK,EAAKD,IAG9BG,EAAU3K,KAAKC,MAAM,IAAKwK,EAAKD,IAEjCW,EAAWnL,KAAKC,MAAM,IAAKwK,EAAKD,IAE5BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,IAYT9P,QAAQwQ,cAAgB,SAAUnC,EAAG2B,EAAOS,EAAKC,GAC/C,GAAIC,GAASF,EAAMT,CAEnB,OADA3B,IAAKqC,EAAS,EACN,EAAJrC,EAAcsC,EAAO,EAAEtC,EAAEA,EAAI2B,GACjC3B,KACQsC,EAAO,GAAKtC,GAAGA,EAAE,GAAK,GAAK2B,IAUrChQ,QAAQ4Q,iBAENC,OAAQ,SAAUxC,GAChB,MAAOA,IAGTyC,WAAY,SAAUzC,GACpB,MAAOA,GAAIA,GAGb0C,YAAa,SAAU1C,GACrB,MAAOA,IAAK,EAAIA,IAGlBmC,cAAe,SAAUnC,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjD2C,YAAa,SAAU3C,GACrB,MAAOA,GAAIA,EAAIA,GAGjB4C,aAAc,SAAU5C,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzB6C,eAAgB,SAAU7C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxE8C,YAAa,SAAU9C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB+C,aAAc,SAAU/C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7BgD,eAAgB,SAAUhD,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9DiD,YAAa,SAAUjD,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzBkD,aAAc,SAAUlD,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjCmD,eAAgB,SAAUnD,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAASpO,EAAQD,GASrBA,EAAQyR,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAc5L,eAAe6L,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC7R,EAAQ8R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAc5L,eAAe6L,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAIpM,GAAI,EAAGA,EAAIkM,EAAcC,GAAaC,UAAUjM,OAAQH,IAC/DkM,EAAcC,GAAaC,UAAUpM,GAAGuE,WAAWgI,YAAYL,EAAcC,GAAaC,UAAUpM,GAEtGkM,GAAcC,GAAaC,eAgBnC5R,EAAQgS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAIlJ,EAqBJ,OAnBI2I,GAAc5L,eAAe6L,GAE3BD,EAAcC,GAAaC,UAAUjM,OAAS,GAChDoD,EAAU2I,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnJ,EAAUoJ,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAYtJ,KAK3BA,EAAUoJ,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAYtJ,IAE3B2I,EAAcC,GAAaE,KAAK1J,KAAKY,GAC9BA,GAcT/I,EAAQsS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIzJ,EA+BJ,OA7BI2I,GAAc5L,eAAe6L,GAE3BD,EAAcC,GAAaC,UAAUjM,OAAS,GAChDoD,EAAU2I,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnJ,EAAUoJ,SAASM,cAAcd,GACZnL,SAAjBgM,EACFD,EAAaC,aAAazJ,EAASyJ,GAGnCD,EAAaF,YAAYtJ,KAM7BA,EAAUoJ,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnBpL,SAAjBgM,EACFD,EAAaC,aAAazJ,EAASyJ,GAGnCD,EAAaF,YAAYtJ,IAG7B2I,EAAcC,GAAaE,KAAK1J,KAAKY,GAC9BA,GAkBT/I,EAAQ0S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,GACvD,GAAIa,EAgBJ,OAfsC,UAAlCD,EAAM7D,QAAQ+D,WAAWtF,OAC3BqF,EAAQ9S,EAAQgS,cAAc,SAASN,EAAcO,GACrDa,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,KAAMJ,GACjCE,EAAME,eAAe,KAAM,IAAK,GAAMH,EAAM7D,QAAQ+D,WAAWE,MAC/DH,EAAME,eAAe,KAAM,QAASH,EAAM7K,UAAY,YAGtD8K,EAAQ9S,EAAQgS,cAAc,OAAON,EAAcO,GACnDa,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIE,EAAM7D,QAAQ+D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKJ,EAAI,GAAIC,EAAM7D,QAAQ+D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASH,EAAM7D,QAAQ+D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUH,EAAM7D,QAAQ+D,WAAWE,MAC9DH,EAAME,eAAe,KAAM,QAASH,EAAM7K,UAAY,WAEjD8K,GAUT9S,EAAQkT,QAAU,SAAUP,EAAGC,EAAGO,EAAOC,EAAQpL,EAAW0J,EAAeO,GACzE,GAAc,GAAVmB,EAAa,CACF,EAATA,IACFA,GAAU,GACVR,GAAKQ,EAEP,IAAIC,GAAOrT,EAAQgS,cAAc,OAAON,EAAeO,EACvDoB,GAAKL,eAAe,KAAM,IAAKL,EAAI,GAAMQ,GACzCE,EAAKL,eAAe,KAAM,IAAKJ,GAC/BS,EAAKL,eAAe,KAAM,QAASG,GACnCE,EAAKL,eAAe,KAAM,SAAUI,GACpCC,EAAKL,eAAe,KAAM,QAAShL,MAMnC,SAAS/H,EAAQD,EAASM,GA0C9B,QAASW,GAASqS,EAAMtE,GActB,IAZIsE,GAASrN,MAAMC,QAAQoN,IAAUvS,EAAK6D,YAAY0O,KACpDtE,EAAUsE,EACVA,EAAO,MAGTlT,KAAKmT,SAAWvE,MAChB5O,KAAKoT,SACLpT,KAAKqT,SAAWrT,KAAKmT,SAASG,SAAW,KACzCtT,KAAKuT,SAIDvT,KAAKmT,SAASzM,KAChB,IAAK,GAAIuI,KAASjP,MAAKmT,SAASzM,KAC9B,GAAI1G,KAAKmT,SAASzM,KAAKhB,eAAeuJ,GAAQ,CAC5C,GAAIhI,GAAQjH,KAAKmT,SAASzM,KAAKuI,EAE7BjP,MAAKuT,MAAMtE,GADA,QAAThI,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAIjH,KAAKmT,SAAS1M,QAChB,KAAM,IAAIhD,OAAM,sDAGlBzD,MAAKwT,gBAGDN,GACFlT,KAAKyT,IAAIP,GA7Eb,GAAIvS,GAAOT,EAAoB,EA0F/BW,GAAQ6S,UAAUC,GAAK,SAAStK,EAAOhB,GACrC,GAAIuL,GAAc5T,KAAKwT,aAAanK,EAC/BuK,KACHA,KACA5T,KAAKwT,aAAanK,GAASuK,GAG7BA,EAAY7L,MACVM,SAAUA,KAKdxH,EAAQ6S,UAAUG,UAAYhT,EAAQ6S,UAAUC,GAOhD9S,EAAQ6S,UAAUI,IAAM,SAASzK,EAAOhB,GACtC,GAAIuL,GAAc5T,KAAKwT,aAAanK,EAChCuK,KACF5T,KAAKwT,aAAanK,GAASuK,EAAYG,OAAO,SAAUlL,GACtD,MAAQA,GAASR,UAAYA,MAMnCxH,EAAQ6S,UAAUM,YAAcnT,EAAQ6S,UAAUI,IASlDjT,EAAQ6S,UAAUO,SAAW,SAAU5K,EAAO6K,EAAQC,GACpD,GAAa,KAAT9K,EACF,KAAM,IAAI5F,OAAM,yBAGlB,IAAImQ,KACAvK,KAASrJ,MAAKwT,eAChBI,EAAcA,EAAYQ,OAAOpU,KAAKwT,aAAanK,KAEjD,KAAOrJ,MAAKwT,eACdI,EAAcA,EAAYQ,OAAOpU,KAAKwT,aAAa,MAGrD,KAAK,GAAIpO,GAAI,EAAGA,EAAIwO,EAAYrO,OAAQH,IAAK,CAC3C,GAAIiP,GAAaT,EAAYxO,EACzBiP,GAAWhM,UACbgM,EAAWhM,SAASgB,EAAO6K,EAAQC,GAAY,QAYrDtT,EAAQ6S,UAAUD,IAAM,SAAUP,EAAMiB,GACtC,GACI9T,GADAiU,KAEAC,EAAKvU,IAET,IAAI6F,MAAMC,QAAQoN,GAEhB,IAAK,GAAI9N,GAAI,EAAGC,EAAM6N,EAAK3N,OAAYF,EAAJD,EAASA,IAC1C/E,EAAKkU,EAAGC,SAAStB,EAAK9N,IACtBkP,EAASvM,KAAK1H,OAGb,IAAIM,EAAK6D,YAAY0O,GAGxB,IAAK,GADDuB,GAAUzU,KAAK0U,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpBD,GAAK7F,GAASiE,EAAK+B,SAASN,EAAKI,GAGnC1U,EAAKkU,EAAGC,SAASM,GACjBR,EAASvM,KAAK1H,OAGb,CAAA,KAAI6S,YAAgB/M,SAMvB,KAAM,IAAI1C,OAAM,mBAJhBpD,GAAKkU,EAAGC,SAAStB,GACjBoB,EAASvM,KAAK1H,GAUhB,MAJIiU,GAAS/O,QACXvF,KAAKiU,SAAS,OAAQlS,MAAOuS,GAAWH,GAGnCG,GASTzT,EAAQ6S,UAAUwB,OAAS,SAAUhC,EAAMiB,GACzC,GAAIG,MACAa,KACAC,KACAb,EAAKvU,KACLsT,EAAUiB,EAAGlB,SAEbgC,EAAc,SAAUP,GAC1B,GAAIzU,GAAKyU,EAAKxB,EACViB,GAAGnB,MAAM/S,IAEXA,EAAKkU,EAAGe,YAAYR,GACpBK,EAAWpN,KAAK1H,GAChB+U,EAAYrN,KAAK+M,KAIjBzU,EAAKkU,EAAGC,SAASM,GACjBR,EAASvM,KAAK1H,IAIlB,IAAIwF,MAAMC,QAAQoN,GAEhB,IAAK,GAAI9N,GAAI,EAAGC,EAAM6N,EAAK3N,OAAYF,EAAJD,EAASA,IAC1CiQ,EAAYnC,EAAK9N,QAGhB,IAAIzE,EAAK6D,YAAY0O,GAGxB,IAAK,GADDuB,GAAUzU,KAAK0U,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpBD,GAAK7F,GAASiE,EAAK+B,SAASN,EAAKI,GAGnCM,EAAYP,OAGX,CAAA,KAAI5B,YAAgB/M,SAKvB,KAAM,IAAI1C,OAAM,mBAHhB4R,GAAYnC,GAad,MAPIoB,GAAS/O,QACXvF,KAAKiU,SAAS,OAAQlS,MAAOuS,GAAWH,GAEtCgB,EAAW5P,QACbvF,KAAKiU,SAAS,UAAWlS,MAAOoT,EAAYjC,KAAMkC,GAAcjB,GAG3DG,EAASF,OAAOe,IAsCzBtU,EAAQ6S,UAAU6B,IAAM,WACtB,GAGIlV,GAAImV,EAAK5G,EAASsE,EAHlBqB,EAAKvU,KAILyV,EAAY9U,EAAKoG,QAAQzB,UAAU,GACtB,WAAbmQ,GAAsC,UAAbA,GAE3BpV,EAAKiF,UAAU,GACfsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,IAEG,SAAbmQ,GAEPD,EAAMlQ,UAAU,GAChBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,KAIjBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,GAInB,IAAIoQ,EACJ,IAAI9G,GAAWA,EAAQ8G,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcpP,QAAQqI,EAAQ8G,YAAoB,QAAU9G,EAAQ8G,WAE7ExC,GAASwC,GAAc/U,EAAKoG,QAAQmM,GACtC,KAAM,IAAIzP,OAAM,6BAA+B9C,EAAKoG,QAAQmM,GAAQ,sDACVtE,EAAQlI,KAAO,IAE3E,IAAkB,aAAdgP,IAA8B/U,EAAK6D,YAAY0O,GACjD,KAAM,IAAIzP,OAAM,6EAKlBiS,GADOxC,GAC6B,aAAtBvS,EAAKoG,QAAQmM,GAAwB,YAGtC,OAIf,IAEgB4B,GAAMc,EAAQxQ,EAAGC,EAF7BqB,EAAOkI,GAAWA,EAAQlI,MAAQ1G,KAAKmT,SAASzM,KAChDqN,EAASnF,GAAWA,EAAQmF,OAC5BhS,IAGJ,IAAUqE,QAAN/F,EAEFyU,EAAOP,EAAGsB,SAASxV,EAAIqG,GACnBqN,IAAWA,EAAOe,KACpBA,EAAO,UAGN,IAAW1O,QAAPoP,EAEP,IAAKpQ,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC0P,EAAOP,EAAGsB,SAASL,EAAIpQ,GAAIsB,KACtBqN,GAAUA,EAAOe,KACpB/S,EAAMgG,KAAK+M,OAMf,KAAKc,IAAU5V,MAAKoT,MACdpT,KAAKoT,MAAM1N,eAAekQ,KAC5Bd,EAAOP,EAAGsB,SAASD,EAAQlP,KACtBqN,GAAUA,EAAOe,KACpB/S,EAAMgG,KAAK+M,GAYnB,IALIlG,GAAWA,EAAQkH,OAAe1P,QAAN/F,GAC9BL,KAAK+V,MAAMhU,EAAO6M,EAAQkH,OAIxBlH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAUjI,QAAN/F,EACFyU,EAAO9U,KAAKgW,cAAclB,EAAMzG,OAGhC,KAAKjJ,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCrD,EAAMqD,GAAKpF,KAAKgW,cAAcjU,EAAMqD,GAAIiJ,GAM9C,GAAkB,aAAdqH,EAA2B,CAC7B,GAAIjB,GAAUzU,KAAK0U,gBAAgBxB,EACnC,IAAU9M,QAAN/F,EAEFkU,EAAG0B,WAAW/C,EAAMuB,EAASK,OAI7B,KAAK1P,EAAI,EAAGA,EAAIrD,EAAMwD,OAAQH,IAC5BmP,EAAG0B,WAAW/C,EAAMuB,EAAS1S,EAAMqD,GAGvC,OAAO8N,GAEJ,GAAkB,UAAdwC,EAAwB,CAC/B,GAAIQ,KACJ,KAAK9Q,EAAI,EAAGA,EAAIrD,EAAMwD,OAAQH,IAC5B8Q,EAAOnU,EAAMqD,GAAG/E,IAAM0B,EAAMqD,EAE9B,OAAO8Q,GAIP,GAAU9P,QAAN/F,EAEF,MAAOyU,EAIP,IAAI5B,EAAM,CAER,IAAK9N,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvC8N,EAAKnL,KAAKhG,EAAMqD,GAElB,OAAO8N,GAIP,MAAOnR,IAcflB,EAAQ6S,UAAUyC,OAAS,SAAUvH,GACnC,GAIIxJ,GACAC,EACAhF,EACAyU,EACA/S,EARAmR,EAAOlT,KAAKoT,MACZW,EAASnF,GAAWA,EAAQmF,OAC5B+B,EAAQlH,GAAWA,EAAQkH,MAC3BpP,EAAOkI,GAAWA,EAAQlI,MAAQ1G,KAAKmT,SAASzM,KAMhD8O,IAEJ,IAAIzB,EAEF,GAAI+B,EAAO,CAET/T,IACA,KAAK1B,IAAM6S,GACLA,EAAKxN,eAAerF,KACtByU,EAAO9U,KAAK6V,SAASxV,EAAIqG,GACrBqN,EAAOe,IACT/S,EAAMgG,KAAK+M,GAOjB,KAFA9U,KAAK+V,MAAMhU,EAAO+T,GAEb1Q,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCoQ,EAAIpQ,GAAKrD,EAAMqD,GAAGpF,KAAKqT,cAKzB,KAAKhT,IAAM6S,GACLA,EAAKxN,eAAerF,KACtByU,EAAO9U,KAAK6V,SAASxV,EAAIqG,GACrBqN,EAAOe,IACTU,EAAIzN,KAAK+M,EAAK9U,KAAKqT,gBAQ3B,IAAIyC,EAAO,CAET/T,IACA,KAAK1B,IAAM6S,GACLA,EAAKxN,eAAerF,IACtB0B,EAAMgG,KAAKmL,EAAK7S,GAMpB,KAFAL,KAAK+V,MAAMhU,EAAO+T,GAEb1Q,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCoQ,EAAIpQ,GAAKrD,EAAMqD,GAAGpF,KAAKqT,cAKzB,KAAKhT,IAAM6S,GACLA,EAAKxN,eAAerF,KACtByU,EAAO5B,EAAK7S,GACZmV,EAAIzN,KAAK+M,EAAK9U,KAAKqT,WAM3B,OAAOmC,IAOT3U,EAAQ6S,UAAU0C,WAAa,WAC7B,MAAOpW,OAaTa,EAAQ6S,UAAUtL,QAAU,SAAUC,EAAUuG,GAC9C,GAGIkG,GACAzU,EAJA0T,EAASnF,GAAWA,EAAQmF,OAC5BrN,EAAOkI,GAAWA,EAAQlI,MAAQ1G,KAAKmT,SAASzM,KAChDwM,EAAOlT,KAAKoT,KAIhB,IAAIxE,GAAWA,EAAQkH,MAIrB,IAAK,GAFD/T,GAAQ/B,KAAKuV,IAAI3G,GAEZxJ,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IAC3C0P,EAAO/S,EAAMqD,GACb/E,EAAKyU,EAAK9U,KAAKqT,UACfhL,EAASyM,EAAMzU,OAKjB,KAAKA,IAAM6S,GACLA,EAAKxN,eAAerF,KACtByU,EAAO9U,KAAK6V,SAASxV,EAAIqG,KACpBqN,GAAUA,EAAOe,KACpBzM,EAASyM,EAAMzU,KAkBzBQ,EAAQ6S,UAAUjG,IAAM,SAAUpF,EAAUuG,GAC1C,GAIIkG,GAJAf,EAASnF,GAAWA,EAAQmF,OAC5BrN,EAAOkI,GAAWA,EAAQlI,MAAQ1G,KAAKmT,SAASzM,KAChD2P,KACAnD,EAAOlT,KAAKoT,KAIhB,KAAK,GAAI/S,KAAM6S,GACTA,EAAKxN,eAAerF,KACtByU,EAAO9U,KAAK6V,SAASxV,EAAIqG,KACpBqN,GAAUA,EAAOe,KACpBuB,EAAYtO,KAAKM,EAASyM,EAAMzU,IAUtC,OAJIuO,IAAWA,EAAQkH,OACrB9V,KAAK+V,MAAMM,EAAazH,EAAQkH,OAG3BO,GAUTxV,EAAQ6S,UAAUsC,cAAgB,SAAUlB,EAAMzG,GAChD,GAAIiI,KAEJ,KAAK,GAAIrH,KAAS6F,GACZA,EAAKpP,eAAeuJ,IAAoC,IAAzBZ,EAAO9H,QAAQ0I,KAChDqH,EAAarH,GAAS6F,EAAK7F,GAI/B,OAAOqH,IASTzV,EAAQ6S,UAAUqC,MAAQ,SAAUhU,EAAO+T,GACzC,GAAInV,EAAKoD,SAAS+R,GAAQ,CAExB,GAAIS,GAAOT,CACX/T,GAAMyU,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVX,GAOd,KAAM,IAAI7P,WAAU,uCALpBlE,GAAMyU,KAAKV,KAgBfjV,EAAQ6S,UAAUiD,OAAS,SAAUtW,EAAI8T,GACvC,GACI/O,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQzF,GAChB,IAAK+E,EAAI,EAAGC,EAAMhF,EAAGkF,OAAYF,EAAJD,EAASA,IACpCwR,EAAY5W,KAAK8W,QAAQzW,EAAG+E,IACX,MAAbwR,GACFC,EAAW9O,KAAK6O,OAKpBA,GAAY5W,KAAK8W,QAAQzW,GACR,MAAbuW,GACFC,EAAW9O,KAAK6O,EAQpB,OAJIC,GAAWtR,QACbvF,KAAKiU,SAAS,UAAWlS,MAAO8U,GAAa1C,GAGxC0C,GASThW,EAAQ6S,UAAUoD,QAAU,SAAUzW,GACpC,GAAIM,EAAKiD,SAASvD,IAAOM,EAAKoD,SAAS1D,IACrC,GAAIL,KAAKoT,MAAM/S,GAEb,aADOL,MAAKoT,MAAM/S,GACXA,MAGN,IAAIA,YAAc8F,QAAQ,CAC7B,GAAIyP,GAASvV,EAAGL,KAAKqT,SACrB,IAAIuC,GAAU5V,KAAKoT,MAAMwC,GAEvB,aADO5V,MAAKoT,MAAMwC,GACXA,EAGX,MAAO,OAQT/U,EAAQ6S,UAAUqD,MAAQ,SAAU5C,GAClC,GAAIqB,GAAMrP,OAAOqH,KAAKxN,KAAKoT,MAM3B,OAJApT,MAAKoT,SAELpT,KAAKiU,SAAS,UAAWlS,MAAOyT,GAAMrB,GAE/BqB,GAQT3U,EAAQ6S,UAAU3G,IAAM,SAAUkC,GAChC,GAAIiE,GAAOlT,KAAKoT,MACZrG,EAAM,KACNiK,EAAW,IAEf,KAAK,GAAI3W,KAAM6S,GACb,GAAIA,EAAKxN,eAAerF,GAAK,CAC3B,GAAIyU,GAAO5B,EAAK7S,GACZ4W,EAAYnC,EAAK7F,EACJ,OAAbgI,KAAuBlK,GAAOkK,EAAYD,KAC5CjK,EAAM+H,EACNkC,EAAWC,GAKjB,MAAOlK,IAQTlM,EAAQ6S,UAAUpI,IAAM,SAAU2D,GAChC,GAAIiE,GAAOlT,KAAKoT,MACZ9H,EAAM,KACN4L,EAAW,IAEf,KAAK,GAAI7W,KAAM6S,GACb,GAAIA,EAAKxN,eAAerF,GAAK,CAC3B,GAAIyU,GAAO5B,EAAK7S,GACZ4W,EAAYnC,EAAK7F,EACJ,OAAbgI,KAAuB3L,GAAmB4L,EAAZD,KAChC3L,EAAMwJ,EACNoC,EAAWD,GAKjB,MAAO3L,IAUTzK,EAAQ6S,UAAUyD,SAAW,SAAUlI,GACrC,GAII7J,GAJA8N,EAAOlT,KAAKoT,MACZgE,KACAC,EAAYrX,KAAKmT,SAASzM,MAAQ1G,KAAKmT,SAASzM,KAAKuI,IAAU,KAC/DqI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQyN,GACf,GAAIA,EAAKxN,eAAeD,GAAO,CAC7B,GAAIqP,GAAO5B,EAAKzN,GACZwB,EAAQ6N,EAAK7F,GACbsI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAM6B,EAAO,CACtBsQ,GAAS,CACT,OAGCA,GAAqBnR,SAAVa,IACdmQ,EAAOE,GAASrQ,EAChBqQ,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKzE,EAAK8F,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASTvW,EAAQ6S,UAAUc,SAAW,SAAUM,GACrC,GAAIzU,GAAKyU,EAAK9U,KAAKqT,SAEnB,IAAUjN,QAAN/F,GAEF,GAAIL,KAAKoT,MAAM/S,GAEb,KAAM,IAAIoD,OAAM,iCAAmCpD,EAAK,uBAK1DA,GAAKM,EAAKiE,aACVkQ,EAAK9U,KAAKqT,UAAYhT,CAGxB,IAAI+L,KACJ,KAAK,GAAI6C,KAAS6F,GAChB,GAAIA,EAAKpP,eAAeuJ,GAAQ,CAC9B,GAAIoI,GAAYrX,KAAKuT,MAAMtE,EAC3B7C,GAAE6C,GAAStO,EAAK8F,QAAQqO,EAAK7F,GAAQoI,GAKzC,MAFArX,MAAKoT,MAAM/S,GAAM+L,EAEV/L,GAUTQ,EAAQ6S,UAAUmC,SAAW,SAAUxV,EAAImX,GACzC,GAAIvI,GAAOhI,EAGPwQ,EAAMzX,KAAKoT,MAAM/S,EACrB,KAAKoX,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAKvI,IAASwI,GACRA,EAAI/R,eAAeuJ,KACrBhI,EAAQwQ,EAAIxI,GACZyI,EAAUzI,GAAStO,EAAK8F,QAAQQ,EAAOuQ,EAAMvI,SAMjD,KAAKA,IAASwI,GACRA,EAAI/R,eAAeuJ,KACrBhI,EAAQwQ,EAAIxI,GACZyI,EAAUzI,GAAShI,EAIzB,OAAOyQ,IAWT7W,EAAQ6S,UAAU4B,YAAc,SAAUR,GACxC,GAAIzU,GAAKyU,EAAK9U,KAAKqT,SACnB,IAAUjN,QAAN/F,EACF,KAAM,IAAIoD,OAAM,6CAA+CkU,KAAKC,UAAU9C,GAAQ,IAExF,IAAI1I,GAAIpM,KAAKoT,MAAM/S,EACnB,KAAK+L,EAEH,KAAM,IAAI3I,OAAM,uCAAyCpD,EAAK,SAIhE,KAAK,GAAI4O,KAAS6F,GAChB,GAAIA,EAAKpP,eAAeuJ,GAAQ,CAC9B,GAAIoI,GAAYrX,KAAKuT,MAAMtE,EAC3B7C,GAAE6C,GAAStO,EAAK8F,QAAQqO,EAAK7F,GAAQoI,GAIzC,MAAOhX,IASTQ,EAAQ6S,UAAUgB,gBAAkB,SAAUmD,GAE5C,IAAK,GADDpD,MACKM,EAAM,EAAGC,EAAO6C,EAAUC,qBAA4B9C,EAAND,EAAYA,IACnEN,EAAQM,GAAO8C,EAAUE,YAAYhD,IAAQ8C,EAAUG,eAAejD,EAExE,OAAON,IAUT5T,EAAQ6S,UAAUuC,WAAa,SAAU4B,EAAWpD,EAASK,GAG3D,IAAK,GAFDH,GAAMkD,EAAUI,SAEXlD,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpB8C,GAAUK,SAASvD,EAAKI,EAAKD,EAAK7F,MAItCpP,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAUoS,EAAMtE,GACvB5O,KAAKoT,MAAQ,KACbpT,KAAKmY,QACLnY,KAAKmT,SAAWvE,MAChB5O,KAAKqT,SAAW,KAChBrT,KAAKwT,eAEL,IAAIe,GAAKvU,IACTA,MAAK6I,SAAW,WACd0L,EAAG6D,SAASC,MAAM9D,EAAIjP,YAGxBtF,KAAKsY,QAAQpF,GAzBf,GAAIvS,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAkClCY,GAAS4S,UAAU4E,QAAU,SAAUpF,GACrC,GAAIsC,GAAKpQ,EAAGC,CAEZ,IAAIrF,KAAKoT,MAAO,CAEVpT,KAAKoT,MAAMY,aACbhU,KAAKoT,MAAMY,YAAY,IAAKhU,KAAK6I,UAInC2M,IACA,KAAK,GAAInV,KAAML,MAAKmY,KACdnY,KAAKmY,KAAKzS,eAAerF,IAC3BmV,EAAIzN,KAAK1H,EAGbL,MAAKmY,QACLnY,KAAKiU,SAAS,UAAWlS,MAAOyT,IAKlC,GAFAxV,KAAKoT,MAAQF,EAETlT,KAAKoT,MAAO,CAQd,IANApT,KAAKqT,SAAWrT,KAAKmT,SAASG,SACzBtT,KAAKoT,OAASpT,KAAKoT,MAAMxE,SAAW5O,KAAKoT,MAAMxE,QAAQ0E,SACxD,KAGJkC,EAAMxV,KAAKoT,MAAM+C,QAAQpC,OAAQ/T,KAAKmT,UAAYnT,KAAKmT,SAASY,SAC3D3O,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC/E,EAAKmV,EAAIpQ,GACTpF,KAAKmY,KAAK9X,IAAM,CAElBL,MAAKiU,SAAS,OAAQlS,MAAOyT,IAGzBxV,KAAKoT,MAAMO,IACb3T,KAAKoT,MAAMO,GAAG,IAAK3T,KAAK6I,YAuC9B/H,EAAS4S,UAAU6B,IAAM,WACvB,GAGIC,GAAK5G,EAASsE,EAHdqB,EAAKvU,KAILyV,EAAY9U,EAAKoG,QAAQzB,UAAU,GACtB,WAAbmQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMlQ,UAAU,GAChBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,KAIjBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,GAInB,IAAIiT,GAAc5X,EAAKuE,UAAWlF,KAAKmT,SAAUvE,EAG7C5O,MAAKmT,SAASY,QAAUnF,GAAWA,EAAQmF,SAC7CwE,EAAYxE,OAAS,SAAUe,GAC7B,MAAOP,GAAGpB,SAASY,OAAOe,IAASlG,EAAQmF,OAAOe,IAKtD,IAAI0D,KAOJ,OANWpS,SAAPoP,GACFgD,EAAazQ,KAAKyN,GAEpBgD,EAAazQ,KAAKwQ,GAClBC,EAAazQ,KAAKmL,GAEXlT,KAAKoT,OAASpT,KAAKoT,MAAMmC,IAAI8C,MAAMrY,KAAKoT,MAAOoF,IAWxD1X,EAAS4S,UAAUyC,OAAS,SAAUvH,GACpC,GAAI4G,EAEJ,IAAIxV,KAAKoT,MAAO,CACd,GACIW,GADA0E,EAAgBzY,KAAKmT,SAASY,MAK9BA,GAFAnF,GAAWA,EAAQmF,OACjB0E,EACO,SAAU3D,GACjB,MAAO2D,GAAc3D,IAASlG,EAAQmF,OAAOe,IAItClG,EAAQmF,OAIV0E,EAGXjD,EAAMxV,KAAKoT,MAAM+C,QACfpC,OAAQA,EACR+B,MAAOlH,GAAWA,EAAQkH,YAI5BN,KAGF,OAAOA,IAQT1U,EAAS4S,UAAU0C,WAAa,WAE9B,IADA,GAAIsC,GAAU1Y,KACP0Y,YAAmB5X,IACxB4X,EAAUA,EAAQtF,KAEpB,OAAOsF,IAAW,MAYpB5X,EAAS4S,UAAU0E,SAAW,SAAU/O,EAAO6K,EAAQC,GACrD,GAAI/O,GAAGC,EAAKhF,EAAIyU,EACZU,EAAMtB,GAAUA,EAAOnS,MACvBmR,EAAOlT,KAAKoT,MACZuF,KACAC,KACAC,IAEJ,IAAIrD,GAAOtC,EAAM,CACf,OAAQ7J,GACN,IAAK,MAEH,IAAKjE,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC/E,EAAKmV,EAAIpQ,GACT0P,EAAO9U,KAAKuV,IAAIlV,GACZyU,IACF9U,KAAKmY,KAAK9X,IAAM,EAChBsY,EAAM5Q,KAAK1H,GAIf,MAEF,KAAK,SAGH,IAAK+E,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC/E,EAAKmV,EAAIpQ,GACT0P,EAAO9U,KAAKuV,IAAIlV,GAEZyU,EACE9U,KAAKmY,KAAK9X,GACZuY,EAAQ7Q,KAAK1H,IAGbL,KAAKmY,KAAK9X,IAAM,EAChBsY,EAAM5Q,KAAK1H,IAITL,KAAKmY,KAAK9X,WACLL,MAAKmY,KAAK9X,GACjBwY,EAAQ9Q,KAAK1H,GAQnB,MAEF,KAAK,SAEH,IAAK+E,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC/E,EAAKmV,EAAIpQ,GACLpF,KAAKmY,KAAK9X,WACLL,MAAKmY,KAAK9X,GACjBwY,EAAQ9Q,KAAK1H,IAOjBsY,EAAMpT,QACRvF,KAAKiU,SAAS,OAAQlS,MAAO4W,GAAQxE,GAEnCyE,EAAQrT,QACVvF,KAAKiU,SAAS,UAAWlS,MAAO6W,GAAUzE,GAExC0E,EAAQtT,QACVvF,KAAKiU,SAAS,UAAWlS,MAAO8W,GAAU1E,KAMhDrT,EAAS4S,UAAUC,GAAK9S,EAAQ6S,UAAUC,GAC1C7S,EAAS4S,UAAUI,IAAMjT,EAAQ6S,UAAUI,IAC3ChT,EAAS4S,UAAUO,SAAWpT,EAAQ6S,UAAUO,SAGhDnT,EAAS4S,UAAUG,UAAY/S,EAAS4S,UAAUC,GAClD7S,EAAS4S,UAAUM,YAAclT,EAAS4S,UAAUI,IAEpDjU,EAAOD,QAAUkB,GAIb,SAASjB,EAAQD,EAASM,GAwB9B,QAASa,GAAQ+X,EAAW5F,EAAMtE,GAChC,KAAM5O,eAAgBe,IACpB,KAAM,IAAIgY,aAAY,mDAIxB/Y,MAAKgZ,iBAAmBF,EACxB9Y,KAAK+S,MAAQ,QACb/S,KAAKgT,OAAS,QACdhT,KAAKiZ,OAAS,GACdjZ,KAAKkZ,eAAiB,MACtBlZ,KAAKmZ,eAAiB,MAEtBnZ,KAAKoZ,OAAS,IACdpZ,KAAKqZ,OAAS,IACdrZ,KAAKsZ,OAAS,GAEd,IAAIC,GAAc,SAASlO,GAAK,MAAOA,GACvCrL,MAAKwZ,YAAcD,EACnBvZ,KAAKyZ,YAAcF,EACnBvZ,KAAK0Z,YAAcH,EAEnBvZ,KAAK2Z,YAAc,OACnB3Z,KAAK4Z,YAAc,QAEnB5Z,KAAKqN,MAAQtM,EAAQ8Y,MAAMC,IAC3B9Z,KAAK+Z,iBAAkB,EACvB/Z,KAAKga,UAAW,EAChBha,KAAKia,iBAAkB,EACvBja,KAAKka,YAAa,EAClBla,KAAKma,gBAAiB,EACtBna,KAAKoa,aAAc,EACnBpa,KAAKqa,cAAgB,GAErBra,KAAKsa,kBAAoB,IACzBta,KAAKua,kBAAmB,EAExBva,KAAKwa,OAAS,GAAIvZ,GAClBjB,KAAKya,IAAM,GAAIrZ,GAAQ,EAAG,EAAG,IAE7BpB,KAAK6X,UAAY,KACjB7X,KAAK0a,WAAa,KAGlB1a,KAAK2a,KAAOvU,OACZpG,KAAK4a,KAAOxU,OACZpG,KAAK6a,KAAOzU,OACZpG,KAAK8a,SAAW1U,OAChBpG,KAAK+a,UAAY3U,OAEjBpG,KAAKgb,KAAO,EACZhb,KAAKib,MAAQ7U,OACbpG,KAAKkb,KAAO,EACZlb,KAAKmb,KAAO,EACZnb,KAAKob,MAAQhV,OACbpG,KAAKqb,KAAO,EACZrb,KAAKsb,KAAO,EACZtb,KAAKub,MAAQnV,OACbpG,KAAKwb,KAAO,EACZxb,KAAKyb,SAAW,EAChBzb,KAAK0b,SAAW,EAChB1b,KAAK2b,UAAY,EACjB3b,KAAK4b,UAAY,EAIjB5b,KAAK6b,UAAY,UACjB7b,KAAK8b,UAAY,UACjB9b,KAAK+b,SAAW,UAChB/b,KAAKgc,eAAiB,UAGtBhc,KAAKwO,SAGLxO,KAAKic,WAAWrN,GAGZsE,GACFlT,KAAKsY,QAAQpF,GArGjB,GAAIgJ,GAAUhc,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BkB,EAAUlB,EAAoB,GAC9BiB,EAAUjB,EAAoB,GAC9Be,EAASf,EAAoB,GAC7BgB,EAAShB,EAAoB,GAC7BmB,EAASnB,EAAoB,IAC7BoB,EAAapB,EAAoB,GAiGrCgc,GAAQnb,EAAQ2S,WAKhB3S,EAAQ2S,UAAUyI,UAAY,WAC5Bnc,KAAKoc,MAAQ,GAAIhb,GAAQ,GAAKpB,KAAKkb,KAAOlb,KAAKgb,MAC7C,GAAKhb,KAAKqb,KAAOrb,KAAKmb,MACtB,GAAKnb,KAAKwb,KAAOxb,KAAKsb,OAGpBtb,KAAKia,kBACHja,KAAKoc,MAAM7J,EAAIvS,KAAKoc,MAAM5J,EAE5BxS,KAAKoc,MAAM5J,EAAIxS,KAAKoc,MAAM7J,EAI1BvS,KAAKoc,MAAM7J,EAAIvS,KAAKoc,MAAM5J,GAK9BxS,KAAKoc,MAAMC,GAAKrc,KAAKqa,cAIrBra,KAAKoc,MAAMnV,MAAQ,GAAKjH,KAAK0b,SAAW1b,KAAKyb,SAG7C,IAAIa,IAAWtc,KAAKkb,KAAOlb,KAAKgb,MAAQ,EAAIhb,KAAKoc,MAAM7J,EACnDgK,GAAWvc,KAAKqb,KAAOrb,KAAKmb,MAAQ,EAAInb,KAAKoc,MAAM5J,EACnDgK,GAAWxc,KAAKwb,KAAOxb,KAAKsb,MAAQ,EAAItb,KAAKoc,MAAMC,CACvDrc,MAAKwa,OAAOiC,eAAeH,EAASC,EAASC,IAU/Czb,EAAQ2S,UAAUgJ,eAAiB,SAASC,GAC1C,GAAIC,GAAc5c,KAAK6c,2BAA2BF,EAClD,OAAO3c,MAAK8c,4BAA4BF,IAW1C7b,EAAQ2S,UAAUmJ,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQpK,EAAIvS,KAAKoc,MAAM7J,EAC9ByK,EAAKL,EAAQnK,EAAIxS,KAAKoc,MAAM5J,EAC5ByK,EAAKN,EAAQN,EAAIrc,KAAKoc,MAAMC,EAE5Ba,EAAKld,KAAKwa,OAAO2C,oBAAoB5K,EACrC6K,EAAKpd,KAAKwa,OAAO2C,oBAAoB3K,EACrC6K,EAAKrd,KAAKwa,OAAO2C,oBAAoBd,EAGrCiB,EAAQxY,KAAKyY,IAAIvd,KAAKwa,OAAOgD,oBAAoBjL,GACjDkL,EAAQ3Y,KAAK4Y,IAAI1d,KAAKwa,OAAOgD,oBAAoBjL,GACjDoL,EAAQ7Y,KAAKyY,IAAIvd,KAAKwa,OAAOgD,oBAAoBhL,GACjDoL,EAAQ9Y,KAAK4Y,IAAI1d,KAAKwa,OAAOgD,oBAAoBhL,GACjDqL,EAAQ/Y,KAAKyY,IAAIvd,KAAKwa,OAAOgD,oBAAoBnB,GACjDyB,EAAQhZ,KAAK4Y,IAAI1d,KAAKwa,OAAOgD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI9b,GAAQ2c,EAAIC,EAAIC,IAU7Bld,EAAQ2S,UAAUoJ,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKpe,KAAKya,IAAIlI,EAChB8L,EAAKre,KAAKya,IAAIjI,EACd8L,EAAKte,KAAKya,IAAI4B,EACd0B,EAAKnB,EAAYrK,EACjByL,EAAKpB,EAAYpK,EACjByL,EAAKrB,EAAYP,CAgBnB,OAXIrc,MAAK+Z,iBACPmE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKte,KAAKwa,OAAO+D,gBAC7BJ,EAAKH,IAAOM,EAAKte,KAAKwa,OAAO+D,iBAKxB,GAAIpd,GACTnB,KAAKwe,QAAUN,EAAKle,KAAKye,MAAMC,OAAOC,YACtC3e,KAAK4e,QAAUT,EAAKne,KAAKye,MAAMC,OAAOC,cAO1C5d,EAAQ2S,UAAUmL,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgB7Y,SAAzB0Y,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC3Y,SAA3B0Y,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClC5Y,SAAhC0Y,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyB7Y,SAApB0Y,EAIR,KAAM,qCAGR9e,MAAKye,MAAMpR,MAAMyR,gBAAkBC,EACnC/e,KAAKye,MAAMpR,MAAM6R,YAAcF,EAC/Bhf,KAAKye,MAAMpR,MAAM8R,YAAcF,EAAc,KAC7Cjf,KAAKye,MAAMpR,MAAM+R,YAAc,SAKjCre,EAAQ8Y,OACNwF,IAAK,EACLC,SAAU,EACVC,QAAS,EACTzF,IAAM,EACN0F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ9e,EAAQ2S,UAAUoM,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAOhf,GAAQ8Y,MAAMC,GACrC,KAAK,WAAa,MAAO/Y,GAAQ8Y,MAAM2F,OACvC,KAAK,YAAe,MAAOze,GAAQ8Y,MAAM4F,QACzC,KAAK,WAAa,MAAO1e,GAAQ8Y,MAAM6F,OACvC,KAAK,OAAW,MAAO3e,GAAQ8Y,MAAM+F,IACrC,KAAK,OAAW,MAAO7e,GAAQ8Y,MAAM8F,IACrC,KAAK,UAAa,MAAO5e,GAAQ8Y,MAAMgG,OACvC,KAAK,MAAW,MAAO9e,GAAQ8Y,MAAMwF,GACrC,KAAK,YAAe,MAAOte,GAAQ8Y,MAAMyF,QACzC,KAAK,WAAa,MAAOve,GAAQ8Y,MAAM0F,QAGzC,MAAO,IAQTxe,EAAQ2S,UAAUsM,wBAA0B,SAAS9M,GACnD,GAAIlT,KAAKqN,QAAUtM,EAAQ8Y,MAAMC,KAC/B9Z,KAAKqN,QAAUtM,EAAQ8Y,MAAM2F,SAC7Bxf,KAAKqN,QAAUtM,EAAQ8Y,MAAM+F,MAC7B5f,KAAKqN,QAAUtM,EAAQ8Y,MAAM8F,MAC7B3f,KAAKqN,QAAUtM,EAAQ8Y,MAAMgG,SAC7B7f,KAAKqN,QAAUtM,EAAQ8Y,MAAMwF,IAE7Brf,KAAK2a,KAAO,EACZ3a,KAAK4a,KAAO,EACZ5a,KAAK6a,KAAO,EACZ7a,KAAK8a,SAAW1U,OAEZ8M,EAAK4E,qBAAuB,IAC9B9X,KAAK+a,UAAY,OAGhB,CAAA,GAAI/a,KAAKqN,QAAUtM,EAAQ8Y,MAAM4F,UACpCzf,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,SAC7B1f,KAAKqN,QAAUtM,EAAQ8Y,MAAMyF,UAC7Btf,KAAKqN,QAAUtM,EAAQ8Y,MAAM0F,QAY7B,KAAM,kBAAoBvf,KAAKqN,MAAQ,GAVvCrN,MAAK2a,KAAO,EACZ3a,KAAK4a,KAAO,EACZ5a,KAAK6a,KAAO,EACZ7a,KAAK8a,SAAW,EAEZ5H,EAAK4E,qBAAuB,IAC9B9X,KAAK+a,UAAY,KAQvBha,EAAQ2S,UAAUmB,gBAAkB,SAAS3B,GAC3C,MAAOA,GAAK3N,QAIdxE,EAAQ2S,UAAUoE,mBAAqB,SAAS5E,GAC9C,GAAI+M,GAAU,CACd,KAAK,GAAIC,KAAUhN,GAAK,GAClBA,EAAK,GAAGxN,eAAewa,IACzBD,GAGJ,OAAOA,IAITlf,EAAQ2S,UAAUyM,kBAAoB,SAASjN,EAAMgN,GAEnD,IAAK,GADDE,MACKhb,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IACgB,IAA3Cgb,EAAe7Z,QAAQ2M,EAAK9N,GAAG8a,KACjCE,EAAerY,KAAKmL,EAAK9N,GAAG8a,GAGhC,OAAOE,IAITrf,EAAQ2S,UAAU2M,eAAiB,SAASnN,EAAKgN,GAE/C,IAAK,GADDI,IAAUhV,IAAI4H,EAAK,GAAGgN,GAAQnT,IAAImG,EAAK,GAAGgN,IACrC9a,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAC3Bkb,EAAOhV,IAAM4H,EAAK9N,GAAG8a,KAAWI,EAAOhV,IAAM4H,EAAK9N,GAAG8a,IACrDI,EAAOvT,IAAMmG,EAAK9N,GAAG8a,KAAWI,EAAOvT,IAAMmG,EAAK9N,GAAG8a,GAE3D,OAAOI,IASTvf,EAAQ2S,UAAU6M,gBAAkB,SAAUC,GAC5C,GAAIjM,GAAKvU,IAOT,IAJIA,KAAK0Y,SACP1Y,KAAK0Y,QAAQ5E,IAAI,IAAK9T,KAAKygB,WAGbra,SAAZoa,EAAJ,CAGI3a,MAAMC,QAAQ0a,KAChBA,EAAU,GAAI3f,GAAQ2f,GAGxB,IAAItN,EACJ,MAAIsN,YAAmB3f,IAAW2f,YAAmB1f,IAInD,KAAM,IAAI2C,OAAM,uCAGlB,IANEyP,EAAOsN,EAAQjL,MAME,GAAfrC,EAAK3N,OAAT,CAGAvF,KAAK0Y,QAAU8H,EACfxgB,KAAK6X,UAAY3E,EAGjBlT,KAAKygB,UAAY,WACflM,EAAG+D,QAAQ/D,EAAGmE,UAEhB1Y,KAAK0Y,QAAQ/E,GAAG,IAAK3T,KAAKygB,WAS1BzgB,KAAK2a,KAAO,IACZ3a,KAAK4a,KAAO,IACZ5a,KAAK6a,KAAO,IACZ7a,KAAK8a,SAAW,QAChB9a,KAAK+a,UAAY,SAKb7H,EAAK,GAAGxN,eAAe,WACDU,SAApBpG,KAAK0gB,aACP1gB,KAAK0gB,WAAa,GAAIxf,GAAOsf,EAASxgB,KAAK+a,UAAW/a,MACtDA,KAAK0gB,WAAWC,kBAAkB,WAAYpM,EAAGqM,WAKrD,IAAIC,GAAW7gB,KAAKqN,OAAStM,EAAQ8Y,MAAMwF,KACzCrf,KAAKqN,OAAStM,EAAQ8Y,MAAMyF,UAC5Btf,KAAKqN,OAAStM,EAAQ8Y,MAAM0F,OAG9B,IAAIsB,EAAU,CACZ,GAA8Bza,SAA1BpG,KAAK8gB,iBACP9gB,KAAK2b,UAAY3b,KAAK8gB,qBAEnB,CACH,GAAIC,GAAQ/gB,KAAKmgB,kBAAkBjN,EAAKlT,KAAK2a,KAC7C3a,MAAK2b,UAAaoF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B3a,SAA1BpG,KAAKghB,iBACPhhB,KAAK4b,UAAY5b,KAAKghB,qBAEnB,CACH,GAAIC,GAAQjhB,KAAKmgB,kBAAkBjN,EAAKlT,KAAK4a,KAC7C5a,MAAK4b,UAAaqF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAASlhB,KAAKqgB,eAAenN,EAAKlT,KAAK2a,KACvCkG,KACFK,EAAO5V,KAAOtL,KAAK2b,UAAY,EAC/BuF,EAAOnU,KAAO/M,KAAK2b,UAAY,GAEjC3b,KAAKgb,KAA6B5U,SAArBpG,KAAKmhB,YAA6BnhB,KAAKmhB,YAAcD,EAAO5V,IACzEtL,KAAKkb,KAA6B9U,SAArBpG,KAAKohB,YAA6BphB,KAAKohB,YAAcF,EAAOnU,IACrE/M,KAAKkb,MAAQlb,KAAKgb,OAAMhb,KAAKkb,KAAOlb,KAAKgb,KAAO,GACpDhb,KAAKib,MAA+B7U,SAAtBpG,KAAKqhB,aAA8BrhB,KAAKqhB,cAAgBrhB,KAAKkb,KAAKlb,KAAKgb,MAAM,CAE3F,IAAIsG,GAASthB,KAAKqgB,eAAenN,EAAKlT,KAAK4a,KACvCiG,KACFS,EAAOhW,KAAOtL,KAAK4b,UAAY,EAC/B0F,EAAOvU,KAAO/M,KAAK4b,UAAY,GAEjC5b,KAAKmb,KAA6B/U,SAArBpG,KAAKuhB,YAA6BvhB,KAAKuhB,YAAcD,EAAOhW,IACzEtL,KAAKqb,KAA6BjV,SAArBpG,KAAKwhB,YAA6BxhB,KAAKwhB,YAAcF,EAAOvU,IACrE/M,KAAKqb,MAAQrb,KAAKmb,OAAMnb,KAAKqb,KAAOrb,KAAKmb,KAAO,GACpDnb,KAAKob,MAA+BhV,SAAtBpG,KAAKyhB,aAA8BzhB,KAAKyhB,cAAgBzhB,KAAKqb,KAAKrb,KAAKmb,MAAM,CAE3F;GAAIuG,GAAS1hB,KAAKqgB,eAAenN,EAAKlT,KAAK6a,KAM3C,IALA7a,KAAKsb,KAA6BlV,SAArBpG,KAAK2hB,YAA6B3hB,KAAK2hB,YAAcD,EAAOpW,IACzEtL,KAAKwb,KAA6BpV,SAArBpG,KAAK4hB,YAA6B5hB,KAAK4hB,YAAcF,EAAO3U,IACrE/M,KAAKwb,MAAQxb,KAAKsb,OAAMtb,KAAKwb,KAAOxb,KAAKsb,KAAO,GACpDtb,KAAKub,MAA+BnV,SAAtBpG,KAAK6hB,aAA8B7hB,KAAK6hB,cAAgB7hB,KAAKwb,KAAKxb,KAAKsb,MAAM,EAErElV,SAAlBpG,KAAK8a,SAAwB,CAC/B,GAAIgH,GAAa9hB,KAAKqgB,eAAenN,EAAKlT,KAAK8a,SAC/C9a,MAAKyb,SAAqCrV,SAAzBpG,KAAK+hB,gBAAiC/hB,KAAK+hB,gBAAkBD,EAAWxW,IACzFtL,KAAK0b,SAAqCtV,SAAzBpG,KAAKgiB,gBAAiChiB,KAAKgiB,gBAAkBF,EAAW/U,IACrF/M,KAAK0b,UAAY1b,KAAKyb,WAAUzb,KAAK0b,SAAW1b,KAAKyb,SAAW,GAItEzb,KAAKmc,eAUPpb,EAAQ2S,UAAUuO,eAAiB,SAAU/O,GA0BzC,QAASgP,GAAW/c,EAAGa,GACrB,MAAOb,GAAIa,EAzBf,GAAIuM,GAAGC,EAAGpN,EAAGiX,EAAG8F,EAAKzP,EAEjBgI,IAEJ,IAAI1a,KAAKqN,QAAUtM,EAAQ8Y,MAAM8F,MAC/B3f,KAAKqN,QAAUtM,EAAQ8Y,MAAMgG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAK7b,EAAI,EAAGA,EAAIpF,KAAK6U,gBAAgB3B,GAAO9N,IAC1CmN,EAAIW,EAAK9N,GAAGpF,KAAK2a,OAAS,EAC1BnI,EAAIU,EAAK9N,GAAGpF,KAAK4a,OAAS,EAED,KAArBmG,EAAMxa,QAAQgM,IAChBwO,EAAMhZ,KAAKwK,GAEY,KAArB0O,EAAM1a,QAAQiM,IAChByO,EAAMlZ,KAAKyK,EAOfuO,GAAMvK,KAAK0L,GACXjB,EAAMzK,KAAK0L,EAGX,IAAIE,KACJ,KAAKhd,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAAK,CAChCmN,EAAIW,EAAK9N,GAAGpF,KAAK2a,OAAS,EAC1BnI,EAAIU,EAAK9N,GAAGpF,KAAK4a,OAAS,EAC1ByB,EAAInJ,EAAK9N,GAAGpF,KAAK6a,OAAS,CAE1B,IAAIwH,GAAStB,EAAMxa,QAAQgM,GACvB+P,EAASrB,EAAM1a,QAAQiM,EAEApM,UAAvBgc,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAIvb,EAClBub,GAAQpK,EAAIA,EACZoK,EAAQnK,EAAIA,EACZmK,EAAQN,EAAIA,EAEZ8F,KACAA,EAAIzP,MAAQiK,EACZwF,EAAII,MAAQnc,OACZ+b,EAAIK,OAASpc,OACb+b,EAAIM,OAAS,GAAIrhB,GAAQmR,EAAGC,EAAGxS,KAAKsb,MAEpC8G,EAAWC,GAAQC,GAAUH,EAE7BzH,EAAW3S,KAAKoa,GAIlB,IAAK5P,EAAI,EAAGA,EAAI6P,EAAW7c,OAAQgN,IACjC,IAAKC,EAAI,EAAGA,EAAI4P,EAAW7P,GAAGhN,OAAQiN,IAChC4P,EAAW7P,GAAGC,KAChB4P,EAAW7P,GAAGC,GAAGkQ,WAAcnQ,EAAI6P,EAAW7c,OAAO,EAAK6c,EAAW7P,EAAE,GAAGC,GAAKpM,OAC/Egc,EAAW7P,GAAGC,GAAGmQ,SAAcnQ,EAAI4P,EAAW7P,GAAGhN,OAAO,EAAK6c,EAAW7P,GAAGC,EAAE,GAAKpM,OAClFgc,EAAW7P,GAAGC,GAAGoQ,WACdrQ,EAAI6P,EAAW7c,OAAO,GAAKiN,EAAI4P,EAAW7P,GAAGhN,OAAO,EACnD6c,EAAW7P,EAAE,GAAGC,EAAE,GAClBpM,YAOV,KAAKhB,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAC3BsN,EAAQ,GAAItR,GACZsR,EAAMH,EAAIW,EAAK9N,GAAGpF,KAAK2a,OAAS,EAChCjI,EAAMF,EAAIU,EAAK9N,GAAGpF,KAAK4a,OAAS,EAChClI,EAAM2J,EAAInJ,EAAK9N,GAAGpF,KAAK6a,OAAS,EAEVzU,SAAlBpG,KAAK8a,WACPpI,EAAMzL,MAAQiM,EAAK9N,GAAGpF,KAAK8a,WAAa,GAG1CqH,KACAA,EAAIzP,MAAQA,EACZyP,EAAIM,OAAS,GAAIrhB,GAAQsR,EAAMH,EAAGG,EAAMF,EAAGxS,KAAKsb,MAChD6G,EAAII,MAAQnc,OACZ+b,EAAIK,OAASpc,OAEbsU,EAAW3S,KAAKoa,EAIpB,OAAOzH,IAST3Z,EAAQ2S,UAAUlF,OAAS,WAEzB,KAAOxO,KAAKgZ,iBAAiB6J,iBAC3B7iB,KAAKgZ,iBAAiBrH,YAAY3R,KAAKgZ,iBAAiB8J,WAG1D9iB,MAAKye,MAAQ1M,SAASM,cAAc,OACpCrS,KAAKye,MAAMpR,MAAM0V,SAAW,WAC5B/iB,KAAKye,MAAMpR,MAAM2V,SAAW,SAG5BhjB,KAAKye,MAAMC,OAAS3M,SAASM,cAAe,UAC5CrS,KAAKye,MAAMC,OAAOrR,MAAM0V,SAAW,WACnC/iB,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAMC,OAGhC,IAAIuE,GAAWlR,SAASM,cAAe,MACvC4Q,GAAS5V,MAAM3C,MAAQ,MACvBuY,EAAS5V,MAAM6V,WAAc,OAC7BD,EAAS5V,MAAM8V,QAAW,OAC1BF,EAASG,UAAa,mDACtBpjB,KAAKye,MAAMC,OAAOzM,YAAYgR,GAGhCjjB,KAAKye,MAAM1K,OAAShC,SAASM,cAAe,OAC5CrS,KAAKye,MAAM1K,OAAO1G,MAAM0V,SAAW,WACnC/iB,KAAKye,MAAM1K,OAAO1G,MAAMoV,OAAS,MACjCziB,KAAKye,MAAM1K,OAAO1G,MAAMhG,KAAO,MAC/BrH,KAAKye,MAAM1K,OAAO1G,MAAM0F,MAAQ,OAChC/S,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAM1K,OAGlC,IAAIQ,GAAKvU,KACLqjB,EAAc,SAAUha,GAAQkL,EAAG+O,aAAaja,IAChDka,EAAe,SAAUla,GAAQkL,EAAGiP,cAAcna,IAClDoa,EAAe,SAAUpa,GAAQkL,EAAGmP,SAASra,IAC7Csa,EAAY,SAAUta,GAAQkL,EAAGqP,WAAWva,GAGhD1I,GAAK+H,iBAAiB1I,KAAKye,MAAMC,OAAQ,UAAWmF,WACpDljB,EAAK+H,iBAAiB1I,KAAKye,MAAMC,OAAQ,YAAa2E,GACtD1iB,EAAK+H,iBAAiB1I,KAAKye,MAAMC,OAAQ,aAAc6E,GACvD5iB,EAAK+H,iBAAiB1I,KAAKye,MAAMC,OAAQ,aAAc+E,GACvD9iB,EAAK+H,iBAAiB1I,KAAKye,MAAMC,OAAQ,YAAaiF,GAGtD3jB,KAAKgZ,iBAAiB/G,YAAYjS,KAAKye,QAWzC1d,EAAQ2S,UAAUoQ,QAAU,SAAS/Q,EAAOC,GAC1ChT,KAAKye,MAAMpR,MAAM0F,MAAQA,EACzB/S,KAAKye,MAAMpR,MAAM2F,OAASA,EAE1BhT,KAAK+jB,iBAMPhjB,EAAQ2S,UAAUqQ,cAAgB,WAChC/jB,KAAKye,MAAMC,OAAOrR,MAAM0F,MAAQ,OAChC/S,KAAKye,MAAMC,OAAOrR,MAAM2F,OAAS,OAEjChT,KAAKye,MAAMC,OAAO3L,MAAQ/S,KAAKye,MAAMC,OAAOC,YAC5C3e,KAAKye,MAAMC,OAAO1L,OAAShT,KAAKye,MAAMC,OAAOsF,aAG7ChkB,KAAKye,MAAM1K,OAAO1G,MAAM0F,MAAS/S,KAAKye,MAAMC,OAAOC,YAAc,GAAU,MAM7E5d,EAAQ2S,UAAUuQ,eAAiB,WACjC,IAAKjkB,KAAKye,MAAM1K,SAAW/T,KAAKye,MAAM1K,OAAOmQ,OAC3C,KAAM,wBAERlkB,MAAKye,MAAM1K,OAAOmQ,OAAOC,QAO3BpjB,EAAQ2S,UAAU0Q,cAAgB,WAC3BpkB,KAAKye,MAAM1K,QAAW/T,KAAKye,MAAM1K,OAAOmQ,QAE7ClkB,KAAKye,MAAM1K,OAAOmQ,OAAOG,QAU3BtjB,EAAQ2S,UAAU4Q,cAAgB,WAG9BtkB,KAAKwe,QAD0D,MAA7Dxe,KAAKkZ,eAAeqL,OAAOvkB,KAAKkZ,eAAe3T,OAAO,GAEtDif,WAAWxkB,KAAKkZ,gBAAkB,IAChClZ,KAAKye,MAAMC,OAAOC,YAGP6F,WAAWxkB,KAAKkZ,gBAK/BlZ,KAAK4e,QAD0D,MAA7D5e,KAAKmZ,eAAeoL,OAAOvkB,KAAKmZ,eAAe5T,OAAO,GAEtDif,WAAWxkB,KAAKmZ,gBAAkB,KAC/BnZ,KAAKye,MAAMC,OAAOsF,aAAehkB,KAAKye,MAAM1K,OAAOiQ,cAGzCQ,WAAWxkB,KAAKmZ,iBAoBnCpY,EAAQ2S,UAAU+Q,kBAAoB,SAASC,GACjCte,SAARse,IAImBte,SAAnBse,EAAIC,YAA6Cve,SAAjBse,EAAIE,UACtC5kB,KAAKwa,OAAOqK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5Bxe,SAAjBse,EAAII,UACN9kB,KAAKwa,OAAOuK,aAAaL,EAAII,UAG/B9kB,KAAK4gB,WASP7f,EAAQ2S,UAAUsR,kBAAoB,WACpC,GAAIN,GAAM1kB,KAAKwa,OAAOyK,gBAEtB,OADAP,GAAII,SAAW9kB,KAAKwa,OAAO+D,eACpBmG,GAMT3jB,EAAQ2S,UAAUwR,UAAY,SAAShS,GAErClT,KAAKugB,gBAAgBrN,EAAMlT,KAAKqN,OAK9BrN,KAAK0a,WAFH1a,KAAK0gB,WAEW1gB,KAAK0gB,WAAWuB,iBAIhBjiB,KAAKiiB,eAAejiB,KAAK6X,WAI7C7X,KAAKmlB,iBAOPpkB,EAAQ2S,UAAU4E,QAAU,SAAUpF,GACpClT,KAAKklB,UAAUhS,GACflT,KAAK4gB,SAGD5gB,KAAKolB,oBAAsBplB,KAAK0gB,YAClC1gB,KAAKikB,kBAQTljB,EAAQ2S,UAAUuI,WAAa,SAAUrN,GACvC,GAAIyW,GAAiBjf,MAIrB,IAFApG,KAAKokB,gBAEWhe,SAAZwI,EAAuB,CAkBzB,GAhBsBxI,SAAlBwI,EAAQmE,QAA2B/S,KAAK+S,MAAQnE,EAAQmE,OACrC3M,SAAnBwI,EAAQoE,SAA2BhT,KAAKgT,OAASpE,EAAQoE,QAErC5M,SAApBwI,EAAQ0N,UAA2Btc,KAAKkZ,eAAiBtK,EAAQ0N,SAC7ClW,SAApBwI,EAAQ2N,UAA2Bvc,KAAKmZ,eAAiBvK,EAAQ2N,SAEzCnW,SAAxBwI,EAAQ+K,cAA+B3Z,KAAK2Z,YAAc/K,EAAQ+K,aAC1CvT,SAAxBwI,EAAQgL,cAA+B5Z,KAAK4Z,YAAchL,EAAQgL,aAC/CxT,SAAnBwI,EAAQwK,SAA0BpZ,KAAKoZ,OAASxK,EAAQwK,QACrChT,SAAnBwI,EAAQyK,SAA0BrZ,KAAKqZ,OAASzK,EAAQyK,QACrCjT,SAAnBwI,EAAQ0K,SAA0BtZ,KAAKsZ,OAAS1K,EAAQ0K,QAEhClT,SAAxBwI,EAAQ4K,cAA+BxZ,KAAKwZ,YAAc5K,EAAQ4K,aAC1CpT,SAAxBwI,EAAQ6K,cAA+BzZ,KAAKyZ,YAAc7K,EAAQ6K,aAC1CrT,SAAxBwI,EAAQ8K,cAA+B1Z,KAAK0Z,YAAc9K,EAAQ8K,aAEhDtT,SAAlBwI,EAAQvB,MAAqB,CAC/B,GAAIiY,GAActlB,KAAK8f,gBAAgBlR,EAAQvB,MAC3B,MAAhBiY,IACFtlB,KAAKqN,MAAQiY,GAGQlf,SAArBwI,EAAQoL,WAA6Bha,KAAKga,SAAWpL,EAAQoL,UACjC5T,SAA5BwI,EAAQmL,kBAAiC/Z,KAAK+Z,gBAAkBnL,EAAQmL,iBACjD3T,SAAvBwI,EAAQsL,aAA6Bla,KAAKka,WAAatL,EAAQsL,YAC3C9T,SAApBwI,EAAQ2W,UAA6BvlB,KAAKoa,YAAcxL,EAAQ2W,SAC9Bnf,SAAlCwI,EAAQ4W,wBAAqCxlB,KAAKwlB,sBAAwB5W,EAAQ4W,uBACtDpf,SAA5BwI,EAAQqL,kBAAiCja,KAAKia,gBAAkBrL,EAAQqL,iBAC9C7T,SAA1BwI,EAAQyL,gBAA+Bra,KAAKqa,cAAgBzL,EAAQyL,eAEtCjU,SAA9BwI,EAAQ0L,oBAAiCta,KAAKsa,kBAAoB1L,EAAQ0L,mBAC7ClU,SAA7BwI,EAAQ2L,mBAAiCva,KAAKua,iBAAmB3L,EAAQ2L,kBAC1CnU,SAA/BwI,EAAQwW,qBAAiCplB,KAAKolB,mBAAqBxW,EAAQwW,oBAErDhf,SAAtBwI,EAAQ+M,YAAyB3b,KAAK8gB,iBAAmBlS,EAAQ+M,WAC3CvV,SAAtBwI,EAAQgN,YAAyB5b,KAAKghB,iBAAmBpS,EAAQgN,WAEhDxV,SAAjBwI,EAAQoM,OAAoBhb,KAAKmhB,YAAcvS,EAAQoM,MACrC5U,SAAlBwI,EAAQqM,QAAqBjb,KAAKqhB,aAAezS,EAAQqM,OACxC7U,SAAjBwI,EAAQsM,OAAoBlb,KAAKohB,YAAcxS,EAAQsM,MACtC9U,SAAjBwI,EAAQuM,OAAoBnb,KAAKuhB,YAAc3S,EAAQuM,MACrC/U,SAAlBwI,EAAQwM,QAAqBpb,KAAKyhB,aAAe7S,EAAQwM,OACxChV,SAAjBwI,EAAQyM,OAAoBrb,KAAKwhB,YAAc5S,EAAQyM,MACtCjV,SAAjBwI,EAAQ0M,OAAoBtb,KAAK2hB,YAAc/S,EAAQ0M,MACrClV,SAAlBwI,EAAQ2M,QAAqBvb,KAAK6hB,aAAejT,EAAQ2M,OACxCnV,SAAjBwI,EAAQ4M,OAAoBxb,KAAK4hB,YAAchT,EAAQ4M,MAClCpV,SAArBwI,EAAQ6M,WAAwBzb,KAAK+hB,gBAAkBnT,EAAQ6M,UAC1CrV,SAArBwI,EAAQ8M,WAAwB1b,KAAKgiB,gBAAkBpT,EAAQ8M,UAEpCtV,SAA3BwI,EAAQyW,iBAA8BA,EAAiBzW,EAAQyW,gBAE5Cjf,SAAnBif,GACFrlB,KAAKwa,OAAOqK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrE5kB,KAAKwa,OAAOuK,aAAaM,EAAeP,YAGxC9kB,KAAKwa,OAAOqK,eAAe,EAAK,IAChC7kB,KAAKwa,OAAOuK,aAAa,MAI7B/kB,KAAK6e,oBAAoBjQ,GAAWA,EAAQkQ,iBAE5C9e,KAAK8jB,QAAQ9jB,KAAK+S,MAAO/S,KAAKgT,QAG1BhT,KAAK6X,WACP7X,KAAKsY,QAAQtY,KAAK6X,WAIhB7X,KAAKolB,oBAAsBplB,KAAK0gB,YAClC1gB,KAAKikB,kBAOTljB,EAAQ2S,UAAUkN,OAAS,WACzB,GAAwBxa,SAApBpG,KAAK0a,WACP,KAAM,mCAGR1a,MAAK+jB,gBACL/jB,KAAKskB,gBACLtkB,KAAKylB,gBACLzlB,KAAK0lB,eACL1lB,KAAK2lB,cAED3lB,KAAKqN,QAAUtM,EAAQ8Y,MAAM8F,MAC/B3f,KAAKqN,QAAUtM,EAAQ8Y,MAAMgG,QAC7B7f,KAAK4lB,kBAEE5lB,KAAKqN,QAAUtM,EAAQ8Y,MAAM+F,KACpC5f,KAAK6lB,kBAEE7lB,KAAKqN,QAAUtM,EAAQ8Y,MAAMwF,KACpCrf,KAAKqN,QAAUtM,EAAQ8Y,MAAMyF,UAC7Btf,KAAKqN,QAAUtM,EAAQ8Y,MAAM0F,QAC7Bvf,KAAK8lB,iBAIL9lB,KAAK+lB,iBAGP/lB,KAAKgmB,cACLhmB,KAAKimB,iBAMPllB,EAAQ2S,UAAUgS,aAAe,WAC/B,GAAIhH,GAAS1e,KAAKye,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAO3L,MAAO2L,EAAO1L,SAO3CjS,EAAQ2S,UAAUuS,cAAgB,WAChC,GAAIzT,EAEJ,IAAIxS,KAAKqN,QAAUtM,EAAQ8Y,MAAM4F,UAC/Bzf,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBvmB,KAAKye,MAAME,WAGrB3e,MAAKqN,QAAUtM,EAAQ8Y,MAAM6F,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAItT,GAASlO,KAAKiI,IAA8B,IAA1B/M,KAAKye,MAAMuF,aAAqB,KAClDvc,EAAMzH,KAAKiZ,OACXuN,EAAQxmB,KAAKye,MAAME,YAAc3e,KAAKiZ,OACtC5R,EAAOmf,EAAQF,EACf7D,EAAShb,EAAMuL,EAGrB,GAAI0L,GAAS1e,KAAKye,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEP1mB,KAAKqN,QAAUtM,EAAQ8Y,MAAM4F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAO5T,CACX,KAAKR,EAAImU,EAAUC,EAAJpU,EAAUA,IAAK,CAC5B,GAAIlG,IAAKkG,EAAImU,IAASC,EAAOD,GAGzB3Z,EAAU,IAAJV,EACN5B,EAAQ1K,KAAK6mB,SAAS7Z,EAAK,EAAG,EAElCkZ,GAAIY,YAAcpc,EAClBwb,EAAIa,YACJb,EAAIc,OAAO3f,EAAMI,EAAM+K,GACvB0T,EAAIe,OAAOT,EAAO/e,EAAM+K,GACxB0T,EAAIlH,SAGNkH,EAAIY,YAAe9mB,KAAK6b,UACxBqK,EAAIgB,WAAW7f,EAAMI,EAAK6e,EAAUtT,GAiBtC,GAdIhT,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,UAE/BwG,EAAIY,YAAe9mB,KAAK6b,UACxBqK,EAAIiB,UAAannB,KAAK+b,SACtBmK,EAAIa,YACJb,EAAIc,OAAO3f,EAAMI,GACjBye,EAAIe,OAAOT,EAAO/e,GAClBye,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAO5f,EAAMob,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGFhf,KAAKqN,QAAUtM,EAAQ8Y,MAAM4F,UAC/Bzf,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAIhmB,GAAWtB,KAAKyb,SAAUzb,KAAK0b,UAAW1b,KAAK0b,SAAS1b,KAAKyb,UAAU,GAAG,EAKzF,KAJA6L,EAAK1X,QACD0X,EAAKC,aAAevnB,KAAKyb,UAC3B6L,EAAKE,QAECF,EAAKjX,OACXmC,EAAIiQ,GAAU6E,EAAKC,aAAevnB,KAAKyb,WAAazb,KAAK0b,SAAW1b,KAAKyb,UAAYzI,EAErFkT,EAAIa,YACJb,EAAIc,OAAO3f,EAAOggB,EAAa7U,GAC/B0T,EAAIe,OAAO5f,EAAMmL,GACjB0T,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAASL,EAAKC,aAAclgB,EAAO,EAAIggB,EAAa7U,GAExD8U,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIE,GAAQ5nB,KAAK4Z,WACjBsM,GAAIyB,SAASC,EAAOpB,EAAO/D,EAASziB,KAAKiZ,UAO7ClY,EAAQ2S,UAAUyR,cAAgB,WAGhC,GAFAnlB,KAAKye,MAAM1K,OAAOqP,UAAY,GAE1BpjB,KAAK0gB,WAAY,CACnB,GAAI9R,IACFiZ,QAAW7nB,KAAKwlB,uBAEdtB,EAAS,GAAI7iB,GAAOrB,KAAKye,MAAM1K,OAAQnF,EAC3C5O,MAAKye,MAAM1K,OAAOmQ,OAASA,EAG3BlkB,KAAKye,MAAM1K,OAAO1G,MAAM8V,QAAU,OAGlCe,EAAO4D,UAAU9nB,KAAK0gB,WAAWtJ,QACjC8M,EAAO6D,gBAAgB/nB,KAAKsa,kBAG5B,IAAI/F,GAAKvU,KACLgoB,EAAW,WACb,GAAI9f,GAAQgc,EAAO+D,UAEnB1T,GAAGmM,WAAWwH,YAAYhgB,GAC1BqM,EAAGmG,WAAanG,EAAGmM,WAAWuB,iBAE9B1N,EAAGqM,SAELsD,GAAOiE,oBAAoBH,OAG3BhoB,MAAKye,MAAM1K,OAAOmQ,OAAS9d,QAO/BrF,EAAQ2S,UAAU+R,cAAgB,WACErf,SAA7BpG,KAAKye,MAAM1K,OAAOmQ,QACrBlkB,KAAKye,MAAM1K,OAAOmQ,OAAOtD,UAQ7B7f,EAAQ2S,UAAUsS,YAAc,WAC9B,GAAIhmB,KAAK0gB,WAAY,CACnB,GAAIhC,GAAS1e,KAAKye,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIkC,UAAY,OAChBlC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAInV,GAAIvS,KAAKiZ,OACTzG,EAAIxS,KAAKiZ,MACbiN,GAAIyB,SAAS3nB,KAAK0gB,WAAW2H,WAAa,KAAOroB,KAAK0gB,WAAW4H,mBAAoB/V,EAAGC,KAQ5FzR,EAAQ2S,UAAUiS,YAAc,WAC9B,GAEE4C,GAAMC,EAAIlB,EAAMmB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQC,EAASC,EACjBC,EAAQC,EALNxK,EAAS1e,KAAKye,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAK1mB,KAAKwa,OAAO+D,eAAiB,UAG7C,IAAI4K,GAAW,KAAQnpB,KAAKoc,MAAM7J,EAC9B6W,EAAW,KAAQppB,KAAKoc,MAAM5J,EAC9B6W,EAAa,EAAIrpB,KAAKwa,OAAO+D,eAC7B+K,EAAWtpB,KAAKwa,OAAOyK,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBpG,KAAKqhB,aACnBiG,EAAO,GAAIhmB,GAAWtB,KAAKgb,KAAMhb,KAAKkb,KAAMlb,KAAKib,MAAOwN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAevnB,KAAKgb,MAC3BsM,EAAKE,QAECF,EAAKjX,OAAO,CAClB,GAAIkC,GAAI+U,EAAKC,YAETvnB,MAAKga,UACPuO,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKmb,KAAMnb,KAAKsb,OAC1DkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKqb,KAAMrb,KAAKsb,OACxD4K,EAAIY,YAAc9mB,KAAK8b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,WAGJuJ,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKmb,KAAMnb,KAAKsb,OAC1DkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKmb,KAAKgO,EAAUnpB,KAAKsb,OACjE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKqb,KAAMrb,KAAKsb,OAC1DkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGvS,KAAKqb,KAAK8N,EAAUnpB,KAAKsb,OACjE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,UAGN4J,EAAS9jB,KAAK4Y,IAAI4L,GAAY,EAAKtpB,KAAKmb,KAAOnb,KAAKqb,KACpDqN,EAAO1oB,KAAK0c,eAAe,GAAItb,GAAQmR,EAAGqW,EAAO5oB,KAAKsb,OAClDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBgB,EAAKlW,GAAK6W,GAEHvkB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAAS,KAAO3nB,KAAKwZ,YAAY8N,EAAKC,cAAgB,KAAMmB,EAAKnW,EAAGmW,EAAKlW,GAE7E8U,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBpG,KAAKyhB,aACnB6F,EAAO,GAAIhmB,GAAWtB,KAAKmb,KAAMnb,KAAKqb,KAAMrb,KAAKob,MAAOqN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAevnB,KAAKmb,MAC3BmM,EAAKE,QAECF,EAAKjX,OACPrQ,KAAKga,UACPuO,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMsM,EAAKC,aAAcvnB,KAAKsb,OAC1EkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMoM,EAAKC,aAAcvnB,KAAKsb,OACxE4K,EAAIY,YAAc9mB,KAAK8b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,WAGJuJ,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMsM,EAAKC,aAAcvnB,KAAKsb,OAC1EkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAKoO,EAAU9B,EAAKC,aAAcvnB,KAAKsb,OACjF4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMoM,EAAKC,aAAcvnB,KAAKsb,OAC1EkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAKkO,EAAU9B,EAAKC,aAAcvnB,KAAKsb,OACjF4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,UAGN2J,EAAS7jB,KAAKyY,IAAI+L,GAAa,EAAKtpB,KAAKgb,KAAOhb,KAAKkb,KACrDwN,EAAO1oB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOrB,EAAKC,aAAcvnB,KAAKsb,OAClExW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBgB,EAAKlW,GAAK6W,GAEHvkB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAAS,KAAO3nB,KAAKyZ,YAAY6N,EAAKC,cAAgB,KAAMmB,EAAKnW,EAAGmW,EAAKlW,GAE7E8U,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBpG,KAAK6hB,aACnByF,EAAO,GAAIhmB,GAAWtB,KAAKsb,KAAMtb,KAAKwb,KAAMxb,KAAKub,MAAOkN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAevnB,KAAKsb,MAC3BgM,EAAKE,OAEPmB,EAAS7jB,KAAK4Y,IAAI4L,GAAa,EAAKtpB,KAAKgb,KAAOhb,KAAKkb,KACrD0N,EAAS9jB,KAAKyY,IAAI+L,GAAa,EAAKtpB,KAAKmb,KAAOnb,KAAKqb,MAC7CiM,EAAKjX,OAEXkY,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAOtB,EAAKC,eAC1DrB,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOsB,EAAKhW,EAAI8W,EAAYd,EAAK/V,GACrC0T,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAAS3nB,KAAK0Z,YAAY4N,EAAKC,cAAgB,IAAKgB,EAAKhW,EAAI,EAAGgW,EAAK/V,GAEzE8U,EAAKE,MAEPtB,GAAIO,UAAY,EAChB8B,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAO5oB,KAAKsb,OAC1DkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAO5oB,KAAKwb,OACxD0K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBwC,EAASjpB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMhb,KAAKmb,KAAMnb,KAAKsb,OACpE4N,EAASlpB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMlb,KAAKmb,KAAMnb,KAAKsb,OACpE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOiC,EAAO1W,EAAG0W,EAAOzW,GAC5B0T,EAAIe,OAAOiC,EAAO3W,EAAG2W,EAAO1W,GAC5B0T,EAAIlH,SAEJiK,EAASjpB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMhb,KAAKqb,KAAMrb,KAAKsb,OACpE4N,EAASlpB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMlb,KAAKqb,KAAMrb,KAAKsb,OACpE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOiC,EAAO1W,EAAG0W,EAAOzW,GAC5B0T,EAAIe,OAAOiC,EAAO3W,EAAG2W,EAAO1W,GAC5B0T,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB8B,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMhb,KAAKmb,KAAMnb,KAAKsb,OAClEkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKgb,KAAMhb,KAAKqb,KAAMrb,KAAKsb,OAChE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOvoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMlb,KAAKmb,KAAMnb,KAAKsb,OAClEkN,EAAKxoB,KAAK0c,eAAe,GAAItb,GAAQpB,KAAKkb,KAAMlb,KAAKqb,KAAMrb,KAAKsb,OAChE4K,EAAIY,YAAc9mB,KAAK6b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,QAGJ,IAAI5F,GAASpZ,KAAKoZ,MACdA,GAAO7T,OAAS,IAClByjB,EAAU,GAAMhpB,KAAKoc,MAAM5J,EAC3BmW,GAAS3oB,KAAKgb,KAAOhb,KAAKkb,MAAQ,EAClC0N,EAAS9jB,KAAK4Y,IAAI4L,GAAY,EAAKtpB,KAAKmb,KAAO6N,EAAShpB,KAAKqb,KAAO2N,EACpEN,EAAO1oB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAO5oB,KAAKsb,OACtDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5iB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAASvO,EAAQsP,EAAKnW,EAAGmW,EAAKlW,GAIpC,IAAI6G,GAASrZ,KAAKqZ,MACdA,GAAO9T,OAAS,IAClBwjB,EAAU,GAAM/oB,KAAKoc,MAAM7J,EAC3BoW,EAAS7jB,KAAKyY,IAAI+L,GAAa,EAAKtpB,KAAKgb,KAAO+N,EAAU/oB,KAAKkb,KAAO6N,EACtEH,GAAS5oB,KAAKmb,KAAOnb,KAAKqb,MAAQ,EAClCqN,EAAO1oB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAO5oB,KAAKsb,OACtDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5iB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAAStO,EAAQqP,EAAKnW,EAAGmW,EAAKlW,GAIpC,IAAI8G,GAAStZ,KAAKsZ,MACdA,GAAO/T,OAAS,IAClBujB,EAAS,GACTH,EAAS7jB,KAAK4Y,IAAI4L,GAAa,EAAKtpB,KAAKgb,KAAOhb,KAAKkb,KACrD0N,EAAS9jB,KAAKyY,IAAI+L,GAAa,EAAKtpB,KAAKmb,KAAOnb,KAAKqb,KACrDwN,GAAS7oB,KAAKsb,KAAOtb,KAAKwb,MAAQ,EAClCkN,EAAO1oB,KAAK0c,eAAe,GAAItb,GAAQunB,EAAOC,EAAOC,IACrD3C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYnnB,KAAK6b,UACrBqK,EAAIyB,SAASrO,EAAQoP,EAAKnW,EAAIuW,EAAQJ,EAAKlW,KAU/CzR,EAAQ2S,UAAUmT,SAAW,SAAS0C,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhlB,KAAKC,MAAMwkB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/kB,KAAKklB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASK,SAAW,IAAFP,GAAS,IAAMO,SAAW,IAAFN,GAAS,IAAMM,SAAW,IAAFL,GAAS,KAQpF7oB,EAAQ2S,UAAUkS,gBAAkB,WAClC,GAEElT,GAAO8T,EAAO/e,EAAKyiB,EACnB9kB,EACA+kB,EAAgBhD,EAAWL,EAAaL,EACxCtb,EAAGC,EAAGC,EAAG+e,EALP1L,EAAS1e,KAAKye,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwB/f,SAApBpG,KAAK0a,YAA4B1a,KAAK0a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQviB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGsN,OAC3D8P,EAASxiB,KAAK8c,4BAA4ByF,EAE9CviB,MAAK0a,WAAWtV,GAAGmd,MAAQA,EAC3BviB,KAAK0a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAAcrqB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGqd,OACrEziB,MAAK0a,WAAWtV,GAAGklB,KAAOtqB,KAAK+Z,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAIpB,IAFAtqB,KAAK0a,WAAWlE,KAAK+T,GAEjBvqB,KAAKqN,QAAUtM,EAAQ8Y,MAAMgG,SAC/B,IAAKza,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAMtC,GALAsN,EAAQ1S,KAAK0a,WAAWtV,GACxBohB,EAAQxmB,KAAK0a,WAAWtV,GAAGsd,WAC3Bjb,EAAQzH,KAAK0a,WAAWtV,GAAGud,SAC3BuH,EAAQlqB,KAAK0a,WAAWtV,GAAGwd,WAEbxc,SAAVsM,GAAiCtM,SAAVogB,GAA+BpgB,SAARqB,GAA+BrB,SAAV8jB,EAAqB,CAE1F,GAAIlqB,KAAKma,gBAAkBna,KAAKka,WAAY,CAK1C,GAAIsQ,GAAQppB,EAAQqpB,SAASP,EAAM3H,MAAO7P,EAAM6P,OAC5CmI,EAAQtpB,EAAQqpB,SAAShjB,EAAI8a,MAAOiE,EAAMjE,OAC1CoI,EAAevpB,EAAQwpB,aAAaJ,EAAOE,GAC3CrlB,EAAMslB,EAAaplB,QAGvB4kB,GAAkBQ,EAAatO,EAAI,MAGnC8N,IAAiB,CAGfA,IAEFC,GAAQ1X,EAAMA,MAAM2J,EAAImK,EAAM9T,MAAM2J,EAAI5U,EAAIiL,MAAM2J,EAAI6N,EAAMxX,MAAM2J,GAAK,EACvElR,EAAoE,KAA/D,GAAKif,EAAOpqB,KAAKsb,MAAQtb,KAAKoc,MAAMC,EAAKrc,KAAKqa,eACnDjP,EAAI,EAEApL,KAAKka,YACP7O,EAAIvG,KAAKwG,IAAI,EAAKqf,EAAapY,EAAIlN,EAAO,EAAG,GAC7C8hB,EAAYnnB,KAAK6mB,SAAS1b,EAAGC,EAAGC,GAChCyb,EAAcK,IAGd9b,EAAI,EACJ8b,EAAYnnB,KAAK6mB,SAAS1b,EAAGC,EAAGC,GAChCyb,EAAc9mB,KAAK6b,aAIrBsL,EAAY,OACZL,EAAc9mB,KAAK6b,WAErB4K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOT,EAAMhE,OAAOjQ,EAAGiU,EAAMhE,OAAOhQ,GACxC0T,EAAIe,OAAOiD,EAAM1H,OAAOjQ,EAAG2X,EAAM1H,OAAOhQ,GACxC0T,EAAIe,OAAOxf,EAAI+a,OAAOjQ,EAAG9K,EAAI+a,OAAOhQ,GACpC0T,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAK5Z,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IACtCsN,EAAQ1S,KAAK0a,WAAWtV,GACxBohB,EAAQxmB,KAAK0a,WAAWtV,GAAGsd,WAC3Bjb,EAAQzH,KAAK0a,WAAWtV,GAAGud,SAEbvc,SAAVsM,IAEA+T,EADEzmB,KAAK+Z,gBACK,GAAKrH,EAAM6P,MAAMlG,EAGjB,IAAMrc,KAAKya,IAAI4B,EAAIrc,KAAKwa,OAAO+D,iBAIjCnY,SAAVsM,GAAiCtM,SAAVogB,IAEzB4D,GAAQ1X,EAAMA,MAAM2J,EAAImK,EAAM9T,MAAM2J,GAAK,EACzClR,EAAoE,KAA/D,GAAKif,EAAOpqB,KAAKsb,MAAQtb,KAAKoc,MAAMC,EAAKrc,KAAKqa,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAc9mB,KAAK6mB,SAAS1b,EAAG,EAAG,GACtC+a,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOT,EAAMhE,OAAOjQ,EAAGiU,EAAMhE,OAAOhQ,GACxC0T,EAAIlH,UAGQ5Y,SAAVsM,GAA+BtM,SAARqB,IAEzB2iB,GAAQ1X,EAAMA,MAAM2J,EAAI5U,EAAIiL,MAAM2J,GAAK,EACvClR,EAAoE,KAA/D,GAAKif,EAAOpqB,KAAKsb,MAAQtb,KAAKoc,MAAMC,EAAKrc,KAAKqa,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAc9mB,KAAK6mB,SAAS1b,EAAG,EAAG,GACtC+a,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOxf,EAAI+a,OAAOjQ,EAAG9K,EAAI+a,OAAOhQ,GACpC0T,EAAIlH,YAWZje,EAAQ2S,UAAUqS,eAAiB,WACjC,GAEI3gB,GAFAsZ,EAAS1e,KAAKye,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB/f,SAApBpG,KAAK0a,YAA4B1a,KAAK0a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQviB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGsN,OAC3D8P,EAASxiB,KAAK8c,4BAA4ByF,EAC9CviB,MAAK0a,WAAWtV,GAAGmd,MAAQA,EAC3BviB,KAAK0a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAAcrqB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGqd,OACrEziB,MAAK0a,WAAWtV,GAAGklB,KAAOtqB,KAAK+Z,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAEpBtqB,MAAK0a,WAAWlE,KAAK+T,EAGrB,IAAIhE,GAAmC,IAAzBvmB,KAAKye,MAAME,WACzB,KAAKvZ,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAAIsN,GAAQ1S,KAAK0a,WAAWtV,EAE5B,IAAIpF,KAAKqN,QAAUtM,EAAQ8Y,MAAM2F,QAAS,CAGxC,GAAI+I,GAAOvoB,KAAK0c,eAAehK,EAAM+P,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc9mB,KAAK8b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOvU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIlH,SAIN,GAAInM,EAEFA,GADE7S,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,QACxB6G,EAAQ,EAAI,EAAEA,GAAW7T,EAAMA,MAAMzL,MAAQjH,KAAKyb,WAAazb,KAAK0b,SAAW1b,KAAKyb,UAGpF8K,CAGT,IAAIsE,EAEFA,GADE7qB,KAAK+Z,gBACElH,GAAQH,EAAM6P,MAAMlG,EAGpBxJ,IAAS7S,KAAKya,IAAI4B,EAAIrc,KAAKwa,OAAO+D,gBAEhC,EAATsM,IACFA,EAAS,EAGX,IAAI7d,GAAKtC,EAAOwU,CACZlf,MAAKqN,QAAUtM,EAAQ8Y,MAAM4F,UAE/BzS,EAAqE,KAA9D,GAAK0F,EAAMA,MAAMzL,MAAQjH,KAAKyb,UAAYzb,KAAKoc,MAAMnV,OAC5DyD,EAAQ1K,KAAK6mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAclf,KAAK6mB,SAAS7Z,EAAK,EAAG,KAE7BhN,KAAKqN,QAAUtM,EAAQ8Y,MAAM6F,SACpChV,EAAQ1K,KAAK+b,SACbmD,EAAclf,KAAKgc,iBAInBhP,EAA+E,KAAxE,GAAK0F,EAAMA,MAAM2J,EAAIrc,KAAKsb,MAAQtb,KAAKoc,MAAMC,EAAKrc,KAAKqa,eAC9D3P,EAAQ1K,KAAK6mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAclf,KAAK6mB,SAAS7Z,EAAK,EAAG,KAItCkZ,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzc,EAChBwb,EAAIa,YACJb,EAAI4E,IAAIpY,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,EAAGqY,EAAQ,EAAW,EAAR/lB,KAAKimB,IAAM,GAC9D7E,EAAInH,OACJmH,EAAIlH,YAQRje,EAAQ2S,UAAUoS,eAAiB,WACjC,GAEI1gB,GAAG4lB,EAAGC,EAASC,EAFfxM,EAAS1e,KAAKye,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB/f,SAApBpG,KAAK0a,YAA4B1a,KAAK0a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQviB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGsN,OAC3D8P,EAASxiB,KAAK8c,4BAA4ByF,EAC9CviB,MAAK0a,WAAWtV,GAAGmd,MAAQA,EAC3BviB,KAAK0a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAAcrqB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGqd,OACrEziB,MAAK0a,WAAWtV,GAAGklB,KAAOtqB,KAAK+Z,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAEpBtqB,MAAK0a,WAAWlE,KAAK+T,EAGrB,IAAIY,GAASnrB,KAAK2b,UAAY,EAC1ByP,EAASprB,KAAK4b,UAAY,CAC9B,KAAKxW,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAGI4H,GAAKtC,EAAOwU,EAHZxM,EAAQ1S,KAAK0a,WAAWtV,EAIxBpF,MAAKqN,QAAUtM,EAAQ8Y,MAAMyF,UAE/BtS,EAAqE,KAA9D,GAAK0F,EAAMA,MAAMzL,MAAQjH,KAAKyb,UAAYzb,KAAKoc,MAAMnV,OAC5DyD,EAAQ1K,KAAK6mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAclf,KAAK6mB,SAAS7Z,EAAK,EAAG,KAE7BhN,KAAKqN,QAAUtM,EAAQ8Y,MAAM0F,SACpC7U,EAAQ1K,KAAK+b,SACbmD,EAAclf,KAAKgc,iBAInBhP,EAA+E,KAAxE,GAAK0F,EAAMA,MAAM2J,EAAIrc,KAAKsb,MAAQtb,KAAKoc,MAAMC,EAAKrc,KAAKqa,eAC9D3P,EAAQ1K,KAAK6mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAclf,KAAK6mB,SAAS7Z,EAAK,EAAG,KAIlChN,KAAKqN,QAAUtM,EAAQ8Y,MAAM0F,UAC/B4L,EAAUnrB,KAAK2b,UAAY,IAAOjJ,EAAMA,MAAMzL,MAAQjH,KAAKyb,WAAazb,KAAK0b,SAAW1b,KAAKyb,UAAY,GAAM,IAC/G2P,EAAUprB,KAAK4b,UAAY,IAAOlJ,EAAMA,MAAMzL,MAAQjH,KAAKyb,WAAazb,KAAK0b,SAAW1b,KAAKyb,UAAY,GAAM,IAIjH,IAAIlH,GAAKvU,KACL2c,EAAUjK,EAAMA,MAChBjL,IACDiL,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KAElEoG,IACD/P,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQprB,KAAKsb,QAChE5I,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQprB,KAAKsb,QAChE5I,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQprB,KAAKsb,QAChE5I,MAAO,GAAItR,GAAQub,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQprB,KAAKsb,OAInE7T,GAAIW,QAAQ,SAAU+Z,GACpBA,EAAIK,OAASjO,EAAGmI,eAAeyF,EAAIzP,SAErC+P,EAAOra,QAAQ,SAAU+Z,GACvBA,EAAIK,OAASjO,EAAGmI,eAAeyF,EAAIzP,QAIrC,IAAI2Y,KACDH,QAASzjB,EAAK6jB,OAAQlqB,EAAQmqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAC7DwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQlqB,EAAQmqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQlqB,EAAQmqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQlqB,EAAQmqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQlqB,EAAQmqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,QAKnG,KAHAA,EAAM2Y,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9lB,OAAQylB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcxrB,KAAK6c,2BAA2BoO,EAAQK,OAC1DL,GAAQX,KAAOtqB,KAAK+Z,gBAAkByR,EAAYjmB,UAAYimB,EAAYnP,EAwB5E,IAjBAgP,EAAS7U,KAAK,SAAUrR,EAAGa,GACzB,GAAIylB,GAAOzlB,EAAEskB,KAAOnlB,EAAEmlB,IACtB,OAAImB,GAAaA,EAGbtmB,EAAE+lB,UAAYzjB,EAAY,EAC1BzB,EAAEklB,UAAYzjB,EAAY,GAGvB,IAITye,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzc,EAEXsgB,EAAI,EAAGA,EAAIK,EAAS9lB,OAAQylB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClBhF,EAAIa,YACJb,EAAIc,OAAOkE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAInH,OACJmH,EAAIlH,YAUVje,EAAQ2S,UAAUmS,gBAAkB,WAClC,GAEEnT,GAAOtN,EAFLsZ,EAAS1e,KAAKye,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwB/f,SAApBpG,KAAK0a,YAA4B1a,KAAK0a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQviB,KAAK6c,2BAA2B7c,KAAK0a,WAAWtV,GAAGsN,OAC3D8P,EAASxiB,KAAK8c,4BAA4ByF,EAE9CviB,MAAK0a,WAAWtV,GAAGmd,MAAQA,EAC3BviB,KAAK0a,WAAWtV,GAAGod,OAASA,EAc9B,IAVIxiB,KAAK0a,WAAWnV,OAAS,IAC3BmN,EAAQ1S,KAAK0a,WAAW,GAExBwL,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,IAIrCpN,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IACtCsN,EAAQ1S,KAAK0a,WAAWtV,GACxB8gB,EAAIe,OAAOvU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,EAItCxS,MAAK0a,WAAWnV,OAAS,GAC3B2gB,EAAIlH,WASRje,EAAQ2S,UAAU4P,aAAe,SAASja,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpBrJ,KAAK0rB,gBACP1rB,KAAK2rB,WAAWtiB,GAIlBrJ,KAAK0rB,eAAiBriB,EAAMuiB,MAAyB,IAAhBviB,EAAMuiB,MAAiC,IAAjBviB,EAAMwiB,OAC5D7rB,KAAK0rB,gBAAmB1rB,KAAK8rB,UAAlC,CAGA9rB,KAAK+rB,YAAcC,UAAU3iB,GAC7BrJ,KAAKisB,YAAcC,UAAU7iB,GAE7BrJ,KAAKmsB,WAAa,GAAIjoB,MAAKlE,KAAK4P,OAChC5P,KAAKosB,SAAW,GAAIloB,MAAKlE,KAAKqQ,KAC9BrQ,KAAKqsB,iBAAmBrsB,KAAKwa,OAAOyK,iBAEpCjlB,KAAKye,MAAMpR,MAAMif,OAAS,MAK1B,IAAI/X,GAAKvU,IACTA,MAAKusB,YAAc,SAAUljB,GAAQkL,EAAGiY,aAAanjB,IACrDrJ,KAAKysB,UAAc,SAAUpjB,GAAQkL,EAAGoX,WAAWtiB,IACnD1I,EAAK+H,iBAAiBqJ,SAAU,YAAawC,EAAGgY,aAChD5rB,EAAK+H,iBAAiBqJ,SAAU,UAAWwC,EAAGkY,WAC9C9rB,EAAKyI,eAAeC,KAStBtI,EAAQ2S,UAAU8Y,aAAe,SAAUnjB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIqjB,GAAQlI,WAAWwH,UAAU3iB,IAAUrJ,KAAK+rB,YAC5CY,EAAQnI,WAAW0H,UAAU7iB,IAAUrJ,KAAKisB,YAE5CW,EAAgB5sB,KAAKqsB,iBAAiB1H,WAAa+H,EAAQ,IAC3DG,EAAc7sB,KAAKqsB,iBAAiBzH,SAAW+H,EAAQ,IAEvDG,EAAY,EACZC,EAAYjoB,KAAKyY,IAAIuP,EAAY,IAAM,EAAIhoB,KAAKimB,GAIhDjmB,MAAKklB,IAAIllB,KAAKyY,IAAIqP,IAAkBG,IACtCH,EAAgB9nB,KAAKkoB,MAAOJ,EAAgB9nB,KAAKimB,IAAOjmB,KAAKimB,GAAK,MAEhEjmB,KAAKklB,IAAIllB,KAAK4Y,IAAIkP,IAAkBG,IACtCH,GAAiB9nB,KAAKkoB,MAAOJ,EAAe9nB,KAAKimB,GAAK,IAAQ,IAAOjmB,KAAKimB,GAAK,MAI7EjmB,KAAKklB,IAAIllB,KAAKyY,IAAIsP,IAAgBE,IACpCF,EAAc/nB,KAAKkoB,MAAOH,EAAc/nB,KAAKimB,IAAOjmB,KAAKimB,IAEvDjmB,KAAKklB,IAAIllB,KAAK4Y,IAAImP,IAAgBE,IACpCF,GAAe/nB,KAAKkoB,MAAOH,EAAa/nB,KAAKimB,GAAK,IAAQ,IAAOjmB,KAAKimB,IAGxE/qB,KAAKwa,OAAOqK,eAAe+H,EAAeC,GAC1C7sB,KAAK4gB,QAGL,IAAIqM,GAAajtB,KAAKglB,mBACtBhlB,MAAKktB,KAAK,uBAAwBD,GAElCtsB,EAAKyI,eAAeC,IAStBtI,EAAQ2S,UAAUiY,WAAa,SAAUtiB,GACvCrJ,KAAKye,MAAMpR,MAAMif,OAAS,OAC1BtsB,KAAK0rB,gBAAiB,EAGtB/qB,EAAKuI,oBAAoB6I,SAAU,YAAa/R,KAAKusB,aACrD5rB,EAAKuI,oBAAoB6I,SAAU,UAAa/R,KAAKysB,WACrD9rB,EAAKyI,eAAeC,IAOtBtI,EAAQ2S,UAAUkQ,WAAa,SAAUva,GACvC,GAAI8jB,GAAQ,IACRC,EAASpB,UAAU3iB,GAAS1I,EAAKuG,gBAAgBlH,KAAKye,OACtD4O,EAASnB,UAAU7iB,GAAS1I,EAAK6G,eAAexH,KAAKye,MAEzD,IAAKze,KAAKoa,YAAV,CASA,GALIpa,KAAKstB,gBACPC,aAAavtB,KAAKstB,gBAIhBttB,KAAK0rB,eAEP,WADA1rB,MAAKwtB,cAIP,IAAIxtB,KAAKulB,SAAWvlB,KAAKulB,QAAQkI,UAAW,CAE1C,GAAIA,GAAYztB,KAAK0tB,iBAAiBN,EAAQC,EAC1CI,KAAcztB,KAAKulB,QAAQkI,YAEzBA,EACFztB,KAAK2tB,aAAaF,GAGlBztB,KAAKwtB,oBAIN,CAEH,GAAIjZ,GAAKvU,IACTA,MAAKstB,eAAiBM,WAAW,WAC/BrZ,EAAG+Y,eAAiB,IAGpB,IAAIG,GAAYlZ,EAAGmZ,iBAAiBN,EAAQC,EACxCI,IACFlZ,EAAGoZ,aAAaF,IAEjBN,MAOPpsB,EAAQ2S,UAAU8P,cAAgB,SAASna,GACzCrJ,KAAK8rB,WAAY,CAEjB,IAAIvX,GAAKvU,IACTA,MAAK6tB,YAAc,SAAUxkB,GAAQkL,EAAGuZ,aAAazkB,IACrDrJ,KAAK+tB,WAAc,SAAU1kB,GAAQkL,EAAGyZ,YAAY3kB,IACpD1I,EAAK+H,iBAAiBqJ,SAAU,YAAawC,EAAGsZ,aAChDltB,EAAK+H,iBAAiBqJ,SAAU,WAAYwC,EAAGwZ,YAE/C/tB,KAAKsjB,aAAaja,IAMpBtI,EAAQ2S,UAAUoa,aAAe,SAASzkB,GACxCrJ,KAAKwsB,aAAanjB,IAMpBtI,EAAQ2S,UAAUsa,YAAc,SAAS3kB,GACvCrJ,KAAK8rB,WAAY,EAEjBnrB,EAAKuI,oBAAoB6I,SAAU,YAAa/R,KAAK6tB,aACrDltB,EAAKuI,oBAAoB6I,SAAU,WAAc/R,KAAK+tB,YAEtD/tB,KAAK2rB,WAAWtiB,IASlBtI,EAAQ2S,UAAUgQ,SAAW,SAASra,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAI4kB,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAW,IAChB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYpuB,KAAKwa,OAAO+D,eACxB8P,EAAYD,GAAa,EAAIH,EAAQ,GAEzCjuB,MAAKwa,OAAOuK,aAAasJ,GACzBruB,KAAK4gB,SAEL5gB,KAAKwtB,eAIP,GAAIP,GAAajtB,KAAKglB,mBACtBhlB,MAAKktB,KAAK,uBAAwBD,GAKlCtsB,EAAKyI,eAAeC,IAUtBtI,EAAQ2S,UAAU4a,gBAAkB,SAAU5b,EAAO6b,GAKnD,QAASC,GAAMjc,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAIpN,GAAIopB,EAAS,GACfvoB,EAAIuoB,EAAS,GACb9tB,EAAI8tB,EAAS,GAMXE,EAAKD,GAAMxoB,EAAEuM,EAAIpN,EAAEoN,IAAMG,EAAMF,EAAIrN,EAAEqN,IAAMxM,EAAEwM,EAAIrN,EAAEqN,IAAME,EAAMH,EAAIpN,EAAEoN,IACrEmc,EAAKF,GAAM/tB,EAAE8R,EAAIvM,EAAEuM,IAAMG,EAAMF,EAAIxM,EAAEwM,IAAM/R,EAAE+R,EAAIxM,EAAEwM,IAAME,EAAMH,EAAIvM,EAAEuM,IACrEoc,EAAKH,GAAMrpB,EAAEoN,EAAI9R,EAAE8R,IAAMG,EAAMF,EAAI/R,EAAE+R,IAAMrN,EAAEqN,EAAI/R,EAAE+R,IAAME,EAAMH,EAAI9R,EAAE8R,GAGzE,SAAc,GAANkc,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjC5tB,EAAQ2S,UAAUga,iBAAmB,SAAUnb,EAAGC,GAChD,GAAIpN,GACFwpB,EAAU,IACVnB,EAAY,KACZoB,EAAmB,KACnBC,EAAc,KACdxD,EAAS,GAAInqB,GAAQoR,EAAGC,EAE1B,IAAIxS,KAAKqN,QAAUtM,EAAQ8Y,MAAMwF,KAC/Brf,KAAKqN,QAAUtM,EAAQ8Y,MAAMyF,UAC7Btf,KAAKqN,QAAUtM,EAAQ8Y,MAAM0F,QAE7B,IAAKna,EAAIpF,KAAK0a,WAAWnV,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDqoB,EAAYztB,KAAK0a,WAAWtV,EAC5B,IAAIimB,GAAYoC,EAAUpC,QAC1B,IAAIA,EACF,IAAK,GAAIjgB,GAAIigB,EAAS9lB,OAAS,EAAG6F,GAAK,EAAGA,IAAK,CAE7C,GAAI6f,GAAUI,EAASjgB,GACnB8f,EAAUD,EAAQC,QAClB6D,GAAa7D,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,QAC9DwM,GAAa9D,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAClE,IAAIxiB,KAAKsuB,gBAAgBhD,EAAQyD,IAC/B/uB,KAAKsuB,gBAAgBhD,EAAQ0D,GAE7B,MAAOvB,QAQf,KAAKroB,EAAI,EAAGA,EAAIpF,KAAK0a,WAAWnV,OAAQH,IAAK,CAC3CqoB,EAAYztB,KAAK0a,WAAWtV,EAC5B,IAAIsN,GAAQ+a,EAAUjL,MACtB,IAAI9P,EAAO,CACT,GAAIuc,GAAQnqB,KAAKklB,IAAIzX,EAAIG,EAAMH,GAC3B2c,EAAQpqB,KAAKklB,IAAIxX,EAAIE,EAAMF,GAC3B8X,EAAQxlB,KAAKqqB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPxE,IAA8BsE,EAAPtE,IAClDwE,EAAcxE,EACduE,EAAmBpB,IAO3B,MAAOoB,IAQT9tB,EAAQ2S,UAAUia,aAAe,SAAUF,GACzC,GAAI2B,GAASC,EAAMC,CAEdtvB,MAAKulB,SAiCR6J,EAAUpvB,KAAKulB,QAAQgK,IAAIH,QAC3BC,EAAQrvB,KAAKulB,QAAQgK,IAAIF,KACzBC,EAAQtvB,KAAKulB,QAAQgK,IAAID,MAlCzBF,EAAUrd,SAASM,cAAc,OACjC+c,EAAQ/hB,MAAM0V,SAAW,WACzBqM,EAAQ/hB,MAAM8V,QAAU,OACxBiM,EAAQ/hB,MAAMzB,OAAS,oBACvBwjB,EAAQ/hB,MAAM3C,MAAQ,UACtB0kB,EAAQ/hB,MAAM1B,WAAa,wBAC3ByjB,EAAQ/hB,MAAMmiB,aAAe,MAC7BJ,EAAQ/hB,MAAMoiB,UAAY,qCAE1BJ,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKhiB,MAAM0V,SAAW,WACtBsM,EAAKhiB,MAAM2F,OAAS,OACpBqc,EAAKhiB,MAAM0F,MAAQ,IACnBsc,EAAKhiB,MAAMqiB,WAAa,oBAExBJ,EAAMvd,SAASM,cAAc,OAC7Bid,EAAIjiB,MAAM0V,SAAW,WACrBuM,EAAIjiB,MAAM2F,OAAS,IACnBsc,EAAIjiB,MAAM0F,MAAQ,IAClBuc,EAAIjiB,MAAMzB,OAAS,oBACnB0jB,EAAIjiB,MAAMmiB,aAAe,MAEzBxvB,KAAKulB,SACHkI,UAAW,KACX8B,KACEH,QAASA,EACTC,KAAMA,EACNC,IAAKA,KAUXtvB,KAAKwtB,eAELxtB,KAAKulB,QAAQkI,UAAYA,EAEvB2B,EAAQhM,UADsB,kBAArBpjB,MAAKoa,YACMpa,KAAKoa,YAAYqT,EAAU/a,OAG3B,6BACM+a,EAAU/a,MAAMH,EAAI,gCACpBkb,EAAU/a,MAAMF,EAAI,gCACpBib,EAAU/a,MAAM2J,EAAI,qBAIhD+S,EAAQ/hB,MAAMhG,KAAQ,IACtB+nB,EAAQ/hB,MAAM5F,IAAQ,IACtBzH,KAAKye,MAAMxM,YAAYmd,GACvBpvB,KAAKye,MAAMxM,YAAYod,GACvBrvB,KAAKye,MAAMxM,YAAYqd,EAGvB,IAAIK,GAAgBP,EAAQQ,YACxBC,EAAkBT,EAAQU,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBzoB,EAAOomB,EAAUjL,OAAOjQ,EAAIod,EAAe,CAC/CtoB,GAAOvC,KAAKwG,IAAIxG,KAAKiI,IAAI1F,EAAM,IAAKrH,KAAKye,MAAME,YAAc,GAAKgR,GAElEN,EAAKhiB,MAAMhG,KAASomB,EAAUjL,OAAOjQ,EAAI,KACzC8c,EAAKhiB,MAAM5F,IAAUgmB,EAAUjL,OAAOhQ,EAAIud,EAAc,KACxDX,EAAQ/hB,MAAMhG,KAAQA,EAAO,KAC7B+nB,EAAQ/hB,MAAM5F,IAASgmB,EAAUjL,OAAOhQ,EAAIud,EAAaF,EAAiB,KAC1EP,EAAIjiB,MAAMhG,KAAWomB,EAAUjL,OAAOjQ,EAAIyd,EAAW,EAAK,KAC1DV,EAAIjiB,MAAM5F,IAAWgmB,EAAUjL,OAAOhQ,EAAIyd,EAAY,EAAK,MAO7DlvB,EAAQ2S,UAAU8Z,aAAe,WAC/B,GAAIxtB,KAAKulB,QAAS,CAChBvlB,KAAKulB,QAAQkI,UAAY,IAEzB,KAAK,GAAIhoB,KAAQzF,MAAKulB,QAAQgK,IAC5B,GAAIvvB,KAAKulB,QAAQgK,IAAI7pB,eAAeD,GAAO,CACzC,GAAI0B,GAAOnH,KAAKulB,QAAQgK,IAAI9pB,EACxB0B,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWgI,YAAYxK,MAetC6kB,UAAY,SAAS3iB,GACnB,MAAI,WAAaA,GAAcA,EAAM6mB,QAC9B7mB,EAAM8mB,cAAc,IAAM9mB,EAAM8mB,cAAc,GAAGD,SAAW,GAQrEhE,UAAY,SAAS7iB,GACnB,MAAI,WAAaA,GAAcA,EAAM+mB,QAC9B/mB,EAAM8mB,cAAc,IAAM9mB,EAAM8mB,cAAc,GAAGC,SAAW,GAGrEvwB,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAE9B,GAAIkB,GAAUlB,EAAoB,EAYlCe,QAAS,WACPjB,KAAKqwB,YAAc,GAAIjvB,GACvBpB,KAAKswB,eACLtwB,KAAKswB,YAAY3L,WAAa,EAC9B3kB,KAAKswB,YAAY1L,SAAW,EAC5B5kB,KAAKuwB,UAAY,IAEjBvwB,KAAKwwB,eAAiB,GAAIpvB,GAC1BpB,KAAKywB,eAAkB,GAAIrvB,GAAQ,GAAI0D,KAAKimB,GAAI,EAAG,GAEnD/qB,KAAK0wB,8BASPzvB,OAAOyS,UAAU+I,eAAiB,SAASlK,EAAGC,EAAG6J,GAC/Crc,KAAKqwB,YAAY9d,EAAIA,EACrBvS,KAAKqwB,YAAY7d,EAAIA,EACrBxS,KAAKqwB,YAAYhU,EAAIA,EAErBrc,KAAK0wB,8BAWPzvB,OAAOyS,UAAUmR,eAAiB,SAASF,EAAYC,GAClCxe,SAAfue,IACF3kB,KAAKswB,YAAY3L,WAAaA,GAGfve,SAAbwe,IACF5kB,KAAKswB,YAAY1L,SAAWA,EACxB5kB,KAAKswB,YAAY1L,SAAW,IAAG5kB,KAAKswB,YAAY1L,SAAW,GAC3D5kB,KAAKswB,YAAY1L,SAAW,GAAI9f,KAAKimB,KAAI/qB,KAAKswB,YAAY1L,SAAW,GAAI9f,KAAKimB,MAGjE3kB,SAAfue,GAAyCve,SAAbwe,IAC9B5kB,KAAK0wB,8BAQTzvB,OAAOyS,UAAUuR,eAAiB,WAChC,GAAI0L,KAIJ,OAHAA,GAAIhM,WAAa3kB,KAAKswB,YAAY3L,WAClCgM,EAAI/L,SAAW5kB,KAAKswB,YAAY1L,SAEzB+L,GAOT1vB,OAAOyS,UAAUqR,aAAe,SAASxf,GACxBa,SAAXb,IAGJvF,KAAKuwB,UAAYhrB,EAKbvF,KAAKuwB,UAAY,MAAMvwB,KAAKuwB,UAAY,KACxCvwB,KAAKuwB,UAAY,IAAKvwB,KAAKuwB,UAAY,GAE3CvwB,KAAK0wB,+BAOPzvB,OAAOyS,UAAU6K,aAAe,WAC9B,MAAOve,MAAKuwB,WAOdtvB,OAAOyS,UAAUyJ,kBAAoB,WACnC,MAAOnd,MAAKwwB,gBAOdvvB,OAAOyS,UAAU8J,kBAAoB,WACnC,MAAOxd,MAAKywB,gBAOdxvB,OAAOyS,UAAUgd,2BAA6B,WAE5C1wB,KAAKwwB,eAAeje,EAAIvS,KAAKqwB,YAAY9d,EAAIvS,KAAKuwB,UAAYzrB,KAAKyY,IAAIvd,KAAKswB,YAAY3L,YAAc7f,KAAK4Y,IAAI1d,KAAKswB,YAAY1L,UAChI5kB,KAAKwwB,eAAehe,EAAIxS,KAAKqwB,YAAY7d,EAAIxS,KAAKuwB,UAAYzrB,KAAK4Y,IAAI1d,KAAKswB,YAAY3L,YAAc7f,KAAK4Y,IAAI1d,KAAKswB,YAAY1L,UAChI5kB,KAAKwwB,eAAenU,EAAIrc,KAAKqwB,YAAYhU,EAAIrc,KAAKuwB,UAAYzrB,KAAKyY,IAAIvd,KAAKswB,YAAY1L,UAGxF5kB,KAAKywB,eAAele,EAAIzN,KAAKimB,GAAG,EAAI/qB,KAAKswB,YAAY1L,SACrD5kB,KAAKywB,eAAeje,EAAI,EACxBxS,KAAKywB,eAAepU,GAAKrc,KAAKswB,YAAY3L,YAG5C9kB,EAAOD,QAAUqB,QAIb,SAASpB,EAAQD,EAASM,GAW9B,QAASgB,GAAQgS,EAAMgN,EAAQ0Q,GAC7B5wB,KAAKkT,KAAOA,EACZlT,KAAKkgB,OAASA,EACdlgB,KAAK4wB,MAAQA,EAEb5wB,KAAKkI,MAAQ9B,OACbpG,KAAKiH,MAAQb,OAGbpG,KAAKoX,OAASwZ,EAAMzQ,kBAAkBjN,EAAKqC,MAAOvV,KAAKkgB,QAGvDlgB,KAAKoX,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9BnF,KAAKoX,OAAO7R,OAAS,GACvBvF,KAAKkoB,YAAY,GAInBloB,KAAK0a,cAEL1a,KAAKM,QAAS,EACdN,KAAK6wB,eAAiBzqB,OAElBwqB,EAAMrW,kBACRva,KAAKM,QAAS,EACdN,KAAK8wB,oBAGL9wB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCgB,GAAOwS,UAAUqd,SAAW,WAC1B,MAAO/wB,MAAKM,QAQdY,EAAOwS,UAAUsd,kBAAoB,WAInC,IAHA,GAAI3rB,GAAMrF,KAAKoX,OAAO7R,OAElBH,EAAI,EACDpF,KAAK0a,WAAWtV,IACrBA,GAGF,OAAON,MAAKkoB,MAAM5nB,EAAIC,EAAM,MAQ9BnE,EAAOwS,UAAU2U,SAAW,WAC1B,MAAOroB,MAAK4wB,MAAMjX,aAQpBzY,EAAOwS,UAAUud,UAAY,WAC3B,MAAOjxB,MAAKkgB,QAOdhf,EAAOwS,UAAU4U,iBAAmB,WAClC,MAAmBliB,UAAfpG,KAAKkI,MACA9B,OAEFpG,KAAKoX,OAAOpX,KAAKkI,QAO1BhH,EAAOwS,UAAUwd,UAAY,WAC3B,MAAOlxB,MAAKoX,QAQdlW,EAAOwS,UAAUuB,SAAW,SAAS/M,GACnC,GAAIA,GAASlI,KAAKoX,OAAO7R,OACvB,KAAM,2BAER,OAAOvF,MAAKoX,OAAOlP,IASrBhH,EAAOwS,UAAUuO,eAAiB,SAAS/Z,GAIzC,GAHc9B,SAAV8B,IACFA,EAAQlI,KAAKkI,OAED9B,SAAV8B,EACF,QAEF,IAAIwS,EACJ,IAAI1a,KAAK0a,WAAWxS,GAClBwS,EAAa1a,KAAK0a,WAAWxS,OAE1B,CACH,GAAIoE,KACJA,GAAE4T,OAASlgB,KAAKkgB,OAChB5T,EAAErF,MAAQjH,KAAKoX,OAAOlP,EAEtB,IAAIipB,GAAW,GAAIrwB,GAASd,KAAKkT,MAAMa,OAAQ,SAAUe,GAAO,MAAQA,GAAKxI,EAAE4T,SAAW5T,EAAErF,SAAWsO,KACvGmF,GAAa1a,KAAK4wB,MAAM3O,eAAekP,GAEvCnxB,KAAK0a,WAAWxS,GAASwS,EAG3B,MAAOA,IAQTxZ,EAAOwS,UAAUiN,kBAAoB,SAAStY,GAC5CrI,KAAK6wB,eAAiBxoB,GASxBnH,EAAOwS,UAAUwU,YAAc,SAAShgB,GACtC,GAAIA,GAASlI,KAAKoX,OAAO7R,OACvB,KAAM,2BAERvF,MAAKkI,MAAQA,EACblI,KAAKiH,MAAQjH,KAAKoX,OAAOlP,IAO3BhH,EAAOwS,UAAUod,iBAAmB,SAAS5oB,GAC7B9B,SAAV8B,IACFA,EAAQ,EAEV,IAAIuW,GAAQze,KAAK4wB,MAAMnS,KAEvB,IAAIvW,EAAQlI,KAAKoX,OAAO7R,OAAQ,CAC9B,CAAqBvF,KAAKiiB,eAAe/Z,GAIlB9B,SAAnBqY,EAAM2S,WACR3S,EAAM2S,SAAWrf,SAASM,cAAc,OACxCoM,EAAM2S,SAAS/jB,MAAM0V,SAAW,WAChCtE,EAAM2S,SAAS/jB,MAAM3C,MAAQ,OAC7B+T,EAAMxM,YAAYwM,EAAM2S,UAE1B,IAAIA,GAAWpxB,KAAKgxB,mBACpBvS,GAAM2S,SAAShO,UAAY,wBAA0BgO,EAAW,IAEhE3S,EAAM2S,SAAS/jB,MAAMoV,OAAS,OAC9BhE,EAAM2S,SAAS/jB,MAAMhG,KAAO,MAE5B,IAAIkN,GAAKvU,IACT4tB,YAAW,WAAYrZ,EAAGuc,iBAAiB5oB,EAAM,IAAM,IACvDlI,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGS8F,SAAnBqY,EAAM2S,WACR3S,EAAM9M,YAAY8M,EAAM2S,UACxB3S,EAAM2S,SAAWhrB,QAGfpG,KAAK6wB,gBACP7wB,KAAK6wB;EAIXhxB,EAAOD,QAAUsB,GAKb,SAASrB,GAObsB,QAAU,SAAUoR,EAAGC,GACrBxS,KAAKuS,EAAUnM,SAANmM,EAAkBA,EAAI,EAC/BvS,KAAKwS,EAAUpM,SAANoM,EAAkBA,EAAI,GAGjC3S,EAAOD,QAAUuB,SAKb,SAAStB,GAQb,QAASuB,GAAQmR,EAAGC,EAAG6J,GACrBrc,KAAKuS,EAAUnM,SAANmM,EAAkBA,EAAI,EAC/BvS,KAAKwS,EAAUpM,SAANoM,EAAkBA,EAAI,EAC/BxS,KAAKqc,EAAUjW,SAANiW,EAAkBA,EAAI,EASjCjb,EAAQqpB,SAAW,SAAStlB,EAAGa,GAC7B,GAAIqrB,GAAM,GAAIjwB,EAId,OAHAiwB,GAAI9e,EAAIpN,EAAEoN,EAAIvM,EAAEuM,EAChB8e,EAAI7e,EAAIrN,EAAEqN,EAAIxM,EAAEwM,EAChB6e,EAAIhV,EAAIlX,EAAEkX,EAAIrW,EAAEqW,EACTgV,GASTjwB,EAAQqS,IAAM,SAAStO,EAAGa,GACxB,GAAIsrB,GAAM,GAAIlwB,EAId,OAHAkwB,GAAI/e,EAAIpN,EAAEoN,EAAIvM,EAAEuM,EAChB+e,EAAI9e,EAAIrN,EAAEqN,EAAIxM,EAAEwM,EAChB8e,EAAIjV,EAAIlX,EAAEkX,EAAIrW,EAAEqW,EACTiV,GASTlwB,EAAQmqB,IAAM,SAASpmB,EAAGa,GACxB,MAAO,IAAI5E,IACF+D,EAAEoN,EAAIvM,EAAEuM,GAAK,GACbpN,EAAEqN,EAAIxM,EAAEwM,GAAK,GACbrN,EAAEkX,EAAIrW,EAAEqW,GAAK,IAWxBjb,EAAQwpB,aAAe,SAASzlB,EAAGa,GACjC,GAAI2kB,GAAe,GAAIvpB,EAMvB,OAJAupB,GAAapY,EAAIpN,EAAEqN,EAAIxM,EAAEqW,EAAIlX,EAAEkX,EAAIrW,EAAEwM,EACrCmY,EAAanY,EAAIrN,EAAEkX,EAAIrW,EAAEuM,EAAIpN,EAAEoN,EAAIvM,EAAEqW,EACrCsO,EAAatO,EAAIlX,EAAEoN,EAAIvM,EAAEwM,EAAIrN,EAAEqN,EAAIxM,EAAEuM,EAE9BoY,GAQTvpB,EAAQsS,UAAUnO,OAAS,WACzB,MAAOT,MAAKqqB,KACJnvB,KAAKuS,EAAIvS,KAAKuS,EACdvS,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKqc,EAAIrc,KAAKqc,IAIxBxc,EAAOD,QAAUwB,GAKb,SAASvB,EAAQD,EAASM,GAa9B,QAASmB,GAAOyX,EAAWlK,GACzB,GAAkBxI,SAAd0S,EACF,KAAM,qCAKR,IAHA9Y,KAAK8Y,UAAYA,EACjB9Y,KAAK6nB,QAAWjZ,GAA8BxI,QAAnBwI,EAAQiZ,QAAwBjZ,EAAQiZ,SAAU,EAEzE7nB,KAAK6nB,QAAS,CAChB7nB,KAAKye,MAAQ1M,SAASM,cAAc,OAEpCrS,KAAKye,MAAMpR,MAAM0F,MAAQ,OACzB/S,KAAKye,MAAMpR,MAAM0V,SAAW,WAC5B/iB,KAAK8Y,UAAU7G,YAAYjS,KAAKye,OAEhCze,KAAKye,MAAM8S,KAAOxf,SAASM,cAAc,SACzCrS,KAAKye,MAAM8S,KAAK7qB,KAAO,SACvB1G,KAAKye,MAAM8S,KAAKtqB,MAAQ,OACxBjH,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAM8S,MAElCvxB,KAAKye,MAAM0F,KAAOpS,SAASM,cAAc,SACzCrS,KAAKye,MAAM0F,KAAKzd,KAAO,SACvB1G,KAAKye,MAAM0F,KAAKld,MAAQ,OACxBjH,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAM0F,MAElCnkB,KAAKye,MAAM+I,KAAOzV,SAASM,cAAc,SACzCrS,KAAKye,MAAM+I,KAAK9gB,KAAO,SACvB1G,KAAKye,MAAM+I,KAAKvgB,MAAQ,OACxBjH,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAM+I,MAElCxnB,KAAKye,MAAM+S,IAAMzf,SAASM,cAAc,SACxCrS,KAAKye,MAAM+S,IAAI9qB,KAAO,SACtB1G,KAAKye,MAAM+S,IAAInkB,MAAM0V,SAAW,WAChC/iB,KAAKye,MAAM+S,IAAInkB,MAAMzB,OAAS,gBAC9B5L,KAAKye,MAAM+S,IAAInkB,MAAM0F,MAAQ,QAC7B/S,KAAKye,MAAM+S,IAAInkB,MAAM2F,OAAS,MAC9BhT,KAAKye,MAAM+S,IAAInkB,MAAMmiB,aAAe,MACpCxvB,KAAKye,MAAM+S,IAAInkB,MAAMokB,gBAAkB,MACvCzxB,KAAKye,MAAM+S,IAAInkB,MAAMzB,OAAS,oBAC9B5L,KAAKye,MAAM+S,IAAInkB,MAAMyR,gBAAkB,UACvC9e,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAM+S,KAElCxxB,KAAKye,MAAMiT,MAAQ3f,SAASM,cAAc,SAC1CrS,KAAKye,MAAMiT,MAAMhrB,KAAO,SACxB1G,KAAKye,MAAMiT,MAAMrkB,MAAM4L,OAAS,MAChCjZ,KAAKye,MAAMiT,MAAMzqB,MAAQ,IACzBjH,KAAKye,MAAMiT,MAAMrkB,MAAM0V,SAAW,WAClC/iB,KAAKye,MAAMiT,MAAMrkB,MAAMhG,KAAO,SAC9BrH,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAMiT,MAGlC,IAAInd,GAAKvU,IACTA,MAAKye,MAAMiT,MAAMrO,YAAc,SAAUha,GAAQkL,EAAG+O,aAAaja,IACjErJ,KAAKye,MAAM8S,KAAKI,QAAU,SAAUtoB,GAAQkL,EAAGgd,KAAKloB,IACpDrJ,KAAKye,MAAM0F,KAAKwN,QAAU,SAAUtoB,GAAQkL,EAAGqd,WAAWvoB,IAC1DrJ,KAAKye,MAAM+I,KAAKmK,QAAU,SAAUtoB,GAAQkL,EAAGiT,KAAKne,IAGtDrJ,KAAK6xB,iBAAmBzrB,OAExBpG,KAAKoX,UACLpX,KAAKkI,MAAQ9B,OAEbpG,KAAK8xB,YAAc1rB,OACnBpG,KAAK+xB,aAAe,IACpB/xB,KAAKgyB,UAAW,EA3ElB,GAAIrxB,GAAOT,EAAoB,EAiF/BmB,GAAOqS,UAAU6d,KAAO,WACtB,GAAIrpB,GAAQlI,KAAKioB,UACb/f,GAAQ,IACVA,IACAlI,KAAKiyB,SAAS/pB,KAOlB7G,EAAOqS,UAAU8T,KAAO,WACtB,GAAItf,GAAQlI,KAAKioB,UACb/f,GAAQlI,KAAKoX,OAAO7R,OAAS,IAC/B2C,IACAlI,KAAKiyB,SAAS/pB,KAOlB7G,EAAOqS,UAAUwe,SAAW,WAC1B,GAAItiB,GAAQ,GAAI1L,MAEZgE,EAAQlI,KAAKioB,UACb/f,GAAQlI,KAAKoX,OAAO7R,OAAS,GAC/B2C,IACAlI,KAAKiyB,SAAS/pB,IAEPlI,KAAKgyB,WAEZ9pB,EAAQ,EACRlI,KAAKiyB,SAAS/pB,GAGhB,IAAImI,GAAM,GAAInM,MACVunB,EAAQpb,EAAMT,EAIduiB,EAAWrtB,KAAKiI,IAAI/M,KAAK+xB,aAAetG,EAAM,GAG9ClX,EAAKvU,IACTA,MAAK8xB,YAAclE,WAAW,WAAYrZ,EAAG2d,YAAcC,IAM7D9wB,EAAOqS,UAAUke,WAAa,WACHxrB,SAArBpG,KAAK8xB,YACP9xB,KAAKmkB,OAELnkB,KAAKqkB,QAOThjB,EAAOqS,UAAUyQ,KAAO,WAElBnkB,KAAK8xB,cAET9xB,KAAKkyB,WAEDlyB,KAAKye,QACPze,KAAKye,MAAM0F,KAAKld,MAAQ,UAO5B5F,EAAOqS,UAAU2Q,KAAO,WACtB+N,cAAcpyB,KAAK8xB,aACnB9xB,KAAK8xB,YAAc1rB,OAEfpG,KAAKye,QACPze,KAAKye,MAAM0F,KAAKld,MAAQ,SAQ5B5F,EAAOqS,UAAUyU,oBAAsB,SAAS9f,GAC9CrI,KAAK6xB,iBAAmBxpB,GAO1BhH,EAAOqS,UAAUqU,gBAAkB,SAASoK,GAC1CnyB,KAAK+xB,aAAeI,GAOtB9wB,EAAOqS,UAAU2e,gBAAkB,WACjC,MAAOryB,MAAK+xB,cASd1wB,EAAOqS,UAAU4e,YAAc,SAASC,GACtCvyB,KAAKgyB,SAAWO,GAOlBlxB,EAAOqS,UAAU8e,SAAW,WACIpsB,SAA1BpG,KAAK6xB,kBACP7xB,KAAK6xB,oBAOTxwB,EAAOqS,UAAUkN,OAAS,WACxB,GAAI5gB,KAAKye,MAAO,CAEdze,KAAKye,MAAM+S,IAAInkB,MAAM5F,IAAOzH,KAAKye,MAAMuF,aAAa,EAChDhkB,KAAKye,MAAM+S,IAAI1B,aAAa,EAAK,KACrC9vB,KAAKye,MAAM+S,IAAInkB,MAAM0F,MAAS/S,KAAKye,MAAME,YACrC3e,KAAKye,MAAM8S,KAAK5S,YAChB3e,KAAKye,MAAM0F,KAAKxF,YAChB3e,KAAKye,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAItX,GAAOrH,KAAKyyB,YAAYzyB,KAAKkI,MACjClI,MAAKye,MAAMiT,MAAMrkB,MAAMhG,KAAO,EAAS,OAS3ChG,EAAOqS,UAAUoU,UAAY,SAAS1Q,GACpCpX,KAAKoX,OAASA,EAEVpX,KAAKoX,OAAO7R,OAAS,EACvBvF,KAAKiyB,SAAS,GAEdjyB,KAAKkI,MAAQ9B,QAOjB/E,EAAOqS,UAAUue,SAAW,SAAS/pB,GACnC,KAAIA,EAAQlI,KAAKoX,OAAO7R,QAOtB,KAAM,2BANNvF,MAAKkI,MAAQA,EAEblI,KAAK4gB,SACL5gB,KAAKwyB,YAWTnxB,EAAOqS,UAAUuU,SAAW,WAC1B,MAAOjoB,MAAKkI,OAQd7G,EAAOqS,UAAU6B,IAAM,WACrB,MAAOvV,MAAKoX,OAAOpX,KAAKkI,QAI1B7G,EAAOqS,UAAU4P,aAAe,SAASja,GAEvC,GAAIqiB,GAAiBriB,EAAMuiB,MAAyB,IAAhBviB,EAAMuiB,MAAiC,IAAjBviB,EAAMwiB,MAChE,IAAKH,EAAL,CAEA1rB,KAAK0yB,aAAerpB,EAAM6mB,QAC1BlwB,KAAK2yB,YAAcnO,WAAWxkB,KAAKye,MAAMiT,MAAMrkB,MAAMhG,MAErDrH,KAAKye,MAAMpR,MAAMif,OAAS,MAK1B,IAAI/X,GAAKvU,IACTA,MAAKusB,YAAc,SAAUljB,GAAQkL,EAAGiY,aAAanjB,IACrDrJ,KAAKysB,UAAc,SAAUpjB,GAAQkL,EAAGoX,WAAWtiB,IACnD1I,EAAK+H,iBAAiBqJ,SAAU,YAAa/R,KAAKusB,aAClD5rB,EAAK+H,iBAAiBqJ,SAAU,UAAa/R,KAAKysB,WAClD9rB,EAAKyI,eAAeC,KAItBhI,EAAOqS,UAAUkf,YAAc,SAAUvrB,GACvC,GAAI0L,GAAQyR,WAAWxkB,KAAKye,MAAM+S,IAAInkB,MAAM0F,OACxC/S,KAAKye,MAAMiT,MAAM/S,YAAc,GAC/BpM,EAAIlL,EAAO,EAEXa,EAAQpD,KAAKkoB,MAAMza,EAAIQ,GAAS/S,KAAKoX,OAAO7R,OAAO,GAIvD,OAHY,GAAR2C,IAAWA,EAAQ,GACnBA,EAAQlI,KAAKoX,OAAO7R,OAAO,IAAG2C,EAAQlI,KAAKoX,OAAO7R,OAAO,GAEtD2C,GAGT7G,EAAOqS,UAAU+e,YAAc,SAAUvqB,GACvC,GAAI6K,GAAQyR,WAAWxkB,KAAKye,MAAM+S,IAAInkB,MAAM0F,OACxC/S,KAAKye,MAAMiT,MAAM/S,YAAc,GAE/BpM,EAAIrK,GAASlI,KAAKoX,OAAO7R,OAAO,GAAKwN,EACrC1L,EAAOkL,EAAI,CAEf,OAAOlL,IAKThG,EAAOqS,UAAU8Y,aAAe,SAAUnjB,GACxC,GAAIoiB,GAAOpiB,EAAM6mB,QAAUlwB,KAAK0yB,aAC5BngB,EAAIvS,KAAK2yB,YAAclH,EAEvBvjB,EAAQlI,KAAK4yB,YAAYrgB,EAE7BvS,MAAKiyB,SAAS/pB,GAEdvH,EAAKyI,kBAIP/H,EAAOqS,UAAUiY,WAAa,WAC5B3rB,KAAKye,MAAMpR,MAAMif,OAAS,OAG1B3rB,EAAKuI,oBAAoB6I,SAAU,YAAa/R,KAAKusB,aACrD5rB,EAAKuI,oBAAoB6I,SAAU,UAAW/R,KAAKysB,WAEnD9rB,EAAKyI,kBAGPvJ,EAAOD,QAAUyB,GAKb,SAASxB,GA2Bb,QAASyB,GAAWsO,EAAOS,EAAKiX,EAAMmB,GAEpCzoB,KAAK6yB,OAAS,EACd7yB,KAAK8yB,KAAO,EACZ9yB,KAAK+yB,MAAQ,EACb/yB,KAAKyoB,YAAa,EAClBzoB,KAAKgzB,UAAY,EAEjBhzB,KAAKizB,SAAW,EAChBjzB,KAAKkzB,SAAStjB,EAAOS,EAAKiX,EAAMmB,GAYlCnnB,EAAWoS,UAAUwf,SAAW,SAAStjB,EAAOS,EAAKiX,EAAMmB,GACzDzoB,KAAK6yB,OAASjjB,EAAQA,EAAQ,EAC9B5P,KAAK8yB,KAAOziB,EAAMA,EAAM,EAExBrQ,KAAKmzB,QAAQ7L,EAAMmB,IASrBnnB,EAAWoS,UAAUyf,QAAU,SAAS7L,EAAMmB,GAC/BriB,SAATkhB,GAA8B,GAARA,IAGPlhB,SAAfqiB,IACFzoB,KAAKyoB,WAAaA,GAGlBzoB,KAAK+yB,MADH/yB,KAAKyoB,cAAe,EACTnnB,EAAW8xB,oBAAoB9L,GAE/BA,IAUjBhmB,EAAW8xB,oBAAsB,SAAU9L,GACzC,GAAI+L,GAAQ,SAAU9gB,GAAI,MAAOzN,MAAKgL,IAAIyC,GAAKzN,KAAKwuB,MAGhDC,EAAQzuB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,KACtCmM,EAAQ,EAAI3uB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,EAAO,KACjDoM,EAAQ,EAAI5uB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,EAAO,KAGjDmB,EAAa8K,CASjB,OARIzuB,MAAKklB,IAAIyJ,EAAQnM,IAASxiB,KAAKklB,IAAIvB,EAAanB,KAAOmB,EAAagL,GACpE3uB,KAAKklB,IAAI0J,EAAQpM,IAASxiB,KAAKklB,IAAIvB,EAAanB,KAAOmB,EAAaiL,GAGtD,GAAdjL,IACFA,EAAa,GAGRA,GAOTnnB,EAAWoS,UAAU6T,WAAa,WAChC,MAAO/C,YAAWxkB,KAAKizB,SAASU,YAAY3zB,KAAKgzB,aAOnD1xB,EAAWoS,UAAUkgB,QAAU,WAC7B,MAAO5zB,MAAK+yB,OAOdzxB,EAAWoS,UAAU9D,MAAQ,WAC3B5P,KAAKizB,SAAWjzB,KAAK6yB,OAAS7yB,KAAK6yB,OAAS7yB,KAAK+yB,OAMnDzxB,EAAWoS,UAAU8T,KAAO,WAC1BxnB,KAAKizB,UAAYjzB,KAAK+yB,OAOxBzxB,EAAWoS,UAAUrD,IAAM,WACzB,MAAQrQ,MAAKizB,SAAWjzB,KAAK8yB,MAG/BjzB,EAAOD,QAAU0B,GAKb,SAASzB,EAAQD,EAASM,GAsB9B,QAASqB,GAAUuX,EAAW/W,EAAO8xB,EAAQjlB,GAC3C,KAAM5O,eAAgBuB,IACpB,KAAM,IAAIwX,aAAY,mDAIxB,MAAMlT,MAAMC,QAAQ+tB,IAAWA,YAAkBhzB,KAAYgzB,YAAkB1tB,QAAQ,CACrF,GAAI2tB,GAAgBllB,CACpBA,GAAUilB,EACVA,EAASC,EAGX,GAAIvf,GAAKvU,IACTA,MAAK+zB,gBACHnkB,MAAO,KACPS,IAAO,KAEP2jB,YAAY,EAEZC,YAAa,SACblhB,MAAO,KACPC,OAAQ,KACRkhB,UAAW,KACXC,UAAW,MAEbn0B,KAAK4O,QAAUjO,EAAK0F,cAAerG,KAAK+zB,gBAGxC/zB,KAAKo0B,QAAQtb,GAGb9Y,KAAK8B,cAEL9B,KAAKq0B,MACH9E,IAAKvvB,KAAKuvB,IACV+E,SAAUt0B,KAAK4F,MACf2uB,SACE5gB,GAAI3T,KAAK2T,GAAG6gB,KAAKx0B,MACjB8T,IAAK9T,KAAK8T,IAAI0gB,KAAKx0B,MACnBktB,KAAMltB,KAAKktB,KAAKsH,KAAKx0B,OAEvBW,MACE8zB,KAAM,KACNC,SAAUngB,EAAGogB,UAAUH,KAAKjgB,GAC5BqgB,eAAgBrgB,EAAGsgB,gBAAgBL,KAAKjgB,GACxCugB,OAAQvgB,EAAGwgB,QAAQP,KAAKjgB,GACxBygB,aAAezgB,EAAG0gB,cAAcT,KAAKjgB,KAKzCvU,KAAKgP,MAAQ,GAAIrN,GAAM3B,KAAKq0B,MAC5Br0B,KAAK8B,WAAWiG,KAAK/H,KAAKgP,OAC1BhP,KAAKq0B,KAAKrlB,MAAQhP,KAAKgP,MAGvBhP,KAAKk1B,SAAW,GAAIpyB,GAAS9C,KAAKq0B,MAClCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKk1B,UAC1Bl1B,KAAKq0B,KAAK1zB,KAAK8zB,KAAOz0B,KAAKk1B,SAAST,KAAKD,KAAKx0B,KAAKk1B,UAGnDl1B,KAAKm1B,YAAc,GAAI7yB,GAAYtC,KAAKq0B,MACxCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKm1B,aAI1Bn1B,KAAKo1B,WAAa,GAAI7yB,GAAWvC,KAAKq0B,MACtCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKo1B,YAG1Bp1B,KAAKq1B,QAAU,GAAI1yB,GAAQ3C,KAAKq0B,MAChCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKq1B,SAE1Br1B,KAAKs1B,UAAY,KACjBt1B,KAAKu1B,WAAa,KAGd3mB,GACF5O,KAAKic,WAAWrN,GAIdilB,GACF7zB,KAAKw1B,UAAU3B,GAIb9xB,EACF/B,KAAKy1B,SAAS1zB,GAGd/B,KAAK4gB,SA/GT,GAEIjgB,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/ByB,EAAQzB,EAAoB,IAC5Bw1B,EAAOx1B,EAAoB,IAC3B4C,EAAW5C,EAAoB,IAC/BoC,EAAcpC,EAAoB,IAClCqC,EAAarC,EAAoB,IACjCyC,EAAUzC,EAAoB,GA0GlCqB,GAASmS,UAAY,GAAIgiB,GAMzBn0B,EAASmS,UAAU+hB,SAAW,SAAS1zB,GACrC,GAGI4zB,GAHAC,EAAiC,MAAlB51B,KAAKs1B,SAwBxB,IAhBEK,EAJG5zB,EAGIA,YAAiBlB,IAAWkB,YAAiBjB,GACvCiB,EAIA,GAAIlB,GAAQkB,GACvB2E,MACEkJ,MAAO,OACPS,IAAK,UAVI,KAgBfrQ,KAAKs1B,UAAYK,EACjB31B,KAAKq1B,SAAWr1B,KAAKq1B,QAAQI,SAASE,GAElCC,EACF,GAA0BxvB,QAAtBpG,KAAK4O,QAAQgB,OAA0CxJ,QAApBpG,KAAK4O,QAAQyB,IAAkB,CACpE,GAAIT,GAA8BxJ,QAAtBpG,KAAK4O,QAAQgB,MAAqB5P,KAAK4O,QAAQgB,MAAQ,KAC/DS,EAA4BjK,QAApBpG,KAAK4O,QAAQyB,IAAqBrQ,KAAK4O,QAAQyB,IAAM,IAEjErQ,MAAK61B,UAAUjmB,EAAOS,GAAMylB,SAAS,QAGrC91B,MAAK+1B,KAAKD,SAAS,KASzBv0B,EAASmS,UAAU8hB,UAAY,SAAS3B,GAEtC,GAAI8B,EAKFA,GAJG9B,EAGIA,YAAkBhzB,IAAWgzB,YAAkB/yB,GACzC+yB,EAIA,GAAIhzB,GAAQgzB,GAPZ,KAUf7zB,KAAKu1B,WAAaI,EAClB31B,KAAKq1B,QAAQG,UAAUG,IAmBzBp0B,EAASmS,UAAUsiB,aAAe,SAASxgB,EAAK5G,GAC9C5O,KAAKq1B,SAAWr1B,KAAKq1B,QAAQW,aAAaxgB,GAEtC5G,GAAWA,EAAQqnB,OACrBj2B,KAAKi2B,MAAMzgB,EAAK5G,IAQpBrN,EAASmS,UAAUwiB,aAAe,WAChC,MAAOl2B,MAAKq1B,SAAWr1B,KAAKq1B,QAAQa,oBAetC30B,EAASmS,UAAUuiB,MAAQ,SAAS51B,EAAIuO,GACtC,GAAK5O,KAAKs1B,WAAmBlvB,QAAN/F,EAAvB,CAEA,GAAImV,GAAM3P,MAAMC,QAAQzF,GAAMA,GAAMA,GAGhCi1B,EAAYt1B,KAAKs1B,UAAUlf,aAAab,IAAIC,GAC9C9O,MACEkJ,MAAO,OACPS,IAAK,UAKLT,EAAQ,KACRS,EAAM,IAcV,IAbAilB,EAAUltB,QAAQ,SAAU+tB,GAC1B,GAAI/qB,GAAI+qB,EAASvmB,MAAMhJ,UACnByF,EAAI,OAAS8pB,GAAWA,EAAS9lB,IAAIzJ,UAAYuvB,EAASvmB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJxE,KACpBwE,EAAQxE,IAGE,OAARiF,GAAgBhE,EAAIgE,KACtBA,EAAMhE,KAII,OAAVuD,GAA0B,OAARS,EAAc,CAElC,GAAI+lB,IAAUxmB,EAAQS,GAAO,EACzB8hB,EAAWrtB,KAAKiI,IAAK/M,KAAKgP,MAAMqB,IAAMrQ,KAAKgP,MAAMY,MAAwB,KAAfS,EAAMT,IAEhEkmB,EAAWlnB,GAA+BxI,SAApBwI,EAAQknB,QAAyBlnB,EAAQknB,SAAU,CAC7E91B,MAAKgP,MAAMkkB,SAASkD,EAASjE,EAAW,EAAGiE,EAASjE,EAAW,EAAG2D,MAUtEv0B,EAASmS,UAAU2iB,aAAe,WAEhC,GAAIC,GAAUt2B,KAAKs1B,UAAUlf,aAC3B9K,EAAM,KACNyB,EAAM,IAER,IAAIupB,EAAS,CAEX,GAAIC,GAAUD,EAAQhrB,IAAI,QAC1BA,GAAMirB,EAAU51B,EAAK8F,QAAQ8vB,EAAQ3mB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI4vB,GAAeF,EAAQvpB,IAAI,QAC3BypB,KACFzpB,EAAMpM,EAAK8F,QAAQ+vB,EAAa5mB,MAAO,QAAQhJ,UAEjD,IAAI6vB,GAAaH,EAAQvpB,IAAI,MACzB0pB,KAEA1pB,EADS,MAAPA,EACIpM,EAAK8F,QAAQgwB,EAAWpmB,IAAK,QAAQzJ,UAGrC9B,KAAKiI,IAAIA,EAAKpM,EAAK8F,QAAQgwB,EAAWpmB,IAAK,QAAQzJ,YAK/D,OACE0E,IAAa,MAAPA,EAAe,GAAIpH,MAAKoH,GAAO,KACrCyB,IAAa,MAAPA,EAAe,GAAI7I,MAAK6I,GAAO,OAKzClN,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAsB9B,QAASsB,GAASsX,EAAW/W,EAAO8xB,EAAQjlB,GAE1C,KAAM/I,MAAMC,QAAQ+tB,IAAWA,YAAkBhzB,KAAYgzB,YAAkB1tB,QAAQ,CACrF,GAAI2tB,GAAgBllB,CACpBA,GAAUilB,EACVA,EAASC,EAGX,GAAIvf,GAAKvU,IACTA,MAAK+zB,gBACHnkB,MAAO,KACPS,IAAO,KAEP2jB,YAAY,EAEZC,YAAa,SACblhB,MAAO,KACPC,OAAQ,KACRkhB,UAAW,KACXC,UAAW,MAEbn0B,KAAK4O,QAAUjO,EAAK0F,cAAerG,KAAK+zB,gBAGxC/zB,KAAKo0B,QAAQtb,GAGb9Y,KAAK8B,cAEL9B,KAAKq0B,MACH9E,IAAKvvB,KAAKuvB,IACV+E,SAAUt0B,KAAK4F,MACf2uB,SACE5gB,GAAI3T,KAAK2T,GAAG6gB,KAAKx0B,MACjB8T,IAAK9T,KAAK8T,IAAI0gB,KAAKx0B,MACnBktB,KAAMltB,KAAKktB,KAAKsH,KAAKx0B,OAEvBW,MACE8zB,KAAM,KACNC,SAAUngB,EAAGogB,UAAUH,KAAKjgB,GAC5BqgB,eAAgBrgB,EAAGsgB,gBAAgBL,KAAKjgB,GACxCugB,OAAQvgB,EAAGwgB,QAAQP,KAAKjgB,GACxBygB,aAAezgB,EAAG0gB,cAAcT,KAAKjgB,KAKzCvU,KAAKgP,MAAQ,GAAIrN,GAAM3B,KAAKq0B,MAC5Br0B,KAAK8B,WAAWiG,KAAK/H,KAAKgP,OAC1BhP,KAAKq0B,KAAKrlB,MAAQhP,KAAKgP,MAGvBhP,KAAKk1B,SAAW,GAAIpyB,GAAS9C,KAAKq0B,MAClCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKk1B,UAC1Bl1B,KAAKq0B,KAAK1zB,KAAK8zB,KAAOz0B,KAAKk1B,SAAST,KAAKD,KAAKx0B,KAAKk1B,UAGnDl1B,KAAKm1B,YAAc,GAAI7yB,GAAYtC,KAAKq0B,MACxCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKm1B,aAI1Bn1B,KAAKo1B,WAAa,GAAI7yB,GAAWvC,KAAKq0B,MACtCr0B,KAAK8B,WAAWiG,KAAK/H,KAAKo1B,YAG1Bp1B,KAAK02B,UAAY,GAAI7zB,GAAU7C,KAAKq0B,MACpCr0B,KAAK8B,WAAWiG,KAAK/H,KAAK02B,WAE1B12B,KAAKs1B,UAAY,KACjBt1B,KAAKu1B,WAAa,KAGd3mB,GACF5O,KAAKic,WAAWrN,GAIdilB,GACF7zB,KAAKw1B,UAAU3B,GAIb9xB,EACF/B,KAAKy1B,SAAS1zB,GAGd/B,KAAK4gB,SA3GT,GAEIjgB,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/ByB,EAAQzB,EAAoB,IAC5Bw1B,EAAOx1B,EAAoB,IAC3B4C,EAAW5C,EAAoB,IAC/BoC,EAAcpC,EAAoB,IAClCqC,EAAarC,EAAoB,IACjC2C,EAAY3C,EAAoB,GAsGpCsB,GAAQkS,UAAY,GAAIgiB,GAMxBl0B,EAAQkS,UAAU+hB,SAAW,SAAS1zB,GACpC,GAGI4zB,GAHAC,EAAiC,MAAlB51B,KAAKs1B,SAwBxB,IAhBEK,EAJG5zB,EAGIA,YAAiBlB,IAAWkB,YAAiBjB,GACvCiB,EAIA,GAAIlB,GAAQkB,GACvB2E,MACEkJ,MAAO,OACPS,IAAK,UAVI,KAgBfrQ,KAAKs1B,UAAYK,EACjB31B,KAAK02B,WAAa12B,KAAK02B,UAAUjB,SAASE,GAEtCC,EACF,GAA0BxvB,QAAtBpG,KAAK4O,QAAQgB,OAA0CxJ,QAApBpG,KAAK4O,QAAQyB,IAAkB,CACpE,GAAIT,GAA8BxJ,QAAtBpG,KAAK4O,QAAQgB,MAAqB5P,KAAK4O,QAAQgB,MAAQ,KAC/DS,EAA4BjK,QAApBpG,KAAK4O,QAAQyB,IAAqBrQ,KAAK4O,QAAQyB,IAAM,IAEjErQ,MAAK61B,UAAUjmB,EAAOS,GAAMylB,SAAS,QAGrC91B,MAAK+1B,KAAKD,SAAS,KASzBt0B,EAAQkS,UAAU8hB,UAAY,SAAS3B,GAErC,GAAI8B,EAKFA,GAJG9B,EAGIA,YAAkBhzB,IAAWgzB,YAAkB/yB,GACzC+yB,EAIA,GAAIhzB,GAAQgzB,GAPZ,KAUf7zB,KAAKu1B,WAAaI,EAClB31B,KAAK02B,UAAUlB,UAAUG,IAS3Bn0B,EAAQkS,UAAUijB,UAAY,SAASC,EAAS7jB,EAAOC,GAGrD,MAFe5M,UAAX2M,IAAuBA,EAAS,IACrB3M,SAAX4M,IAAuBA,EAAS,IACG5M,SAAnCpG,KAAK02B,UAAU7C,OAAO+C,GACjB52B,KAAK02B,UAAU7C,OAAO+C,GAASD,UAAU5jB,EAAMC,GAG/C,qBAAwB4jB,GASnCp1B,EAAQkS,UAAUmjB,eAAiB,SAASD,GAC1C,MAAuCxwB,UAAnCpG,KAAK02B,UAAU7C,OAAO+C,GAChB52B,KAAK02B,UAAU7C,OAAO+C,GAAS/O,UAAkEzhB,SAAtDpG,KAAK02B,UAAU9nB,QAAQilB,OAAOiD,WAAWF,IAA+E,GAArD52B,KAAK02B,UAAU9nB,QAAQilB,OAAOiD,WAAWF,KAGxJ,GAWXp1B,EAAQkS,UAAU2iB,aAAe,WAC/B,GAAI/qB,GAAM,KACNyB,EAAM,IAGV,KAAK,GAAI6pB,KAAW52B,MAAK02B,UAAU7C,OACjC,GAAI7zB,KAAK02B,UAAU7C,OAAOnuB,eAAekxB,IACO,GAA1C52B,KAAK02B,UAAU7C,OAAO+C,GAAS/O,QACjC,IAAK,GAAIziB,GAAI,EAAGA,EAAIpF,KAAK02B,UAAU7C,OAAO+C,GAAStB,UAAU/vB,OAAQH,IAAK,CACxE,GAAI0P,GAAO9U,KAAK02B,UAAU7C,OAAO+C,GAAStB,UAAUlwB,GAChD6B,EAAQtG,EAAK8F,QAAQqO,EAAKvC,EAAG,QAAQ3L,SACzC0E,GAAa,MAAPA,EAAcrE,EAAQqE,EAAMrE,EAAQA,EAAQqE,EAClDyB,EAAa,MAAPA,EAAc9F,EAAcA,EAAN8F,EAAc9F,EAAQ8F,EAM1D,OACEzB,IAAa,MAAPA,EAAe,GAAIpH,MAAKoH,GAAO,KACrCyB,IAAa,MAAPA,EAAe,GAAI7I,MAAK6I,GAAO,OAMzClN,EAAOD,QAAU4B,GAKb,SAAS3B,GA4Bb,QAAS6B,GAASkO,EAAOS,EAAK0mB,EAAaC,EAAiBC,GAE1Dj3B,KAAKk3B,QAAU,EAEfl3B,KAAKm3B,WAAY,EACjBn3B,KAAKo3B,UAAY,EACjBp3B,KAAKsnB,KAAO,EACZtnB,KAAKoc,MAAQ,EAEbpc,KAAKq3B,YACLr3B,KAAKs3B,UACLt3B,KAAKu3B,UAAY,EAEjBv3B,KAAKw3B,YAAc,EAAO,EAAM,EAAI,IACpCx3B,KAAKy3B,YAAc,IAAO,GAAM,EAAI,GAEpCz3B,KAAKkzB,SAAStjB,EAAOS,EAAK0mB,EAAaC,EAAiBC,GAe1Dv1B,EAASgS,UAAUwf,SAAW,SAAStjB,EAAOS,EAAK0mB,EAAaC,EAAiBC,GAC/Ej3B,KAAK6yB,OAA6BzsB,SAApB6wB,EAAY3rB,IAAoBsE,EAAQqnB,EAAY3rB,IAClEtL,KAAK8yB,KAA2B1sB,SAApB6wB,EAAYlqB,IAAoBsD,EAAM4mB,EAAYlqB,IAE1D/M,KAAK6yB,QAAU7yB,KAAK8yB,OACtB9yB,KAAK6yB,QAAU,IACf7yB,KAAK8yB,MAAQ,GAGX9yB,KAAKm3B,WACPn3B,KAAK03B,eAAeX,EAAaC,GAEnCh3B,KAAK23B,SAASV,IAOhBv1B,EAASgS,UAAUgkB,eAAiB,SAASX,EAAaC,GAExD,GAAInkB,GAAO7S,KAAK8yB,KAAO9yB,KAAK6yB,OACxB+E,EAAkB,IAAP/kB,EACXglB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmBhzB,KAAKkoB,MAAMloB,KAAKgL,IAAI8nB,GAAU9yB,KAAKwuB,MAEtDyE,EAAe,GACfC,EAAkBlzB,KAAK0uB,IAAI,GAAGsE,GAE9BloB,EAAQ,CACW,GAAnBkoB,IACFloB,EAAQkoB,EAIV,KAAK,GADDG,IAAgB,EACX7yB,EAAIwK,EAAO9K,KAAKklB,IAAI5kB,IAAMN,KAAKklB,IAAI8N,GAAmB1yB,IAAK,CAClE4yB,EAAkBlzB,KAAK0uB,IAAI,GAAGpuB,EAC9B,KAAK,GAAI4lB,GAAI,EAAGA,EAAIhrB,KAAKy3B,WAAWlyB,OAAQylB,IAAK,CAC/C,GAAIkN,GAAWF,EAAkBh4B,KAAKy3B,WAAWzM,EACjD,IAAIkN,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe/M,CACf,QAGJ,GAAqB,GAAjBiN,EACF,MAGJj4B,KAAKo3B,UAAYW,EACjB/3B,KAAKoc,MAAQ4b,EACbh4B,KAAKsnB,KAAO0Q,EAAkBh4B,KAAKy3B,WAAWM,IAShDr2B,EAASgS,UAAUikB,SAAW,SAASV,GACjB7wB,SAAhB6wB,IACFA,KAEF,IAAIkB,GAAgC/xB,SAApB6wB,EAAY3rB,IAAoBtL,KAAK6yB,OAAuB,EAAb7yB,KAAKoc,MAAYpc,KAAKy3B,WAAWz3B,KAAKo3B,WAAcH,EAAY3rB,IAC3H8sB,EAA8BhyB,SAApB6wB,EAAYlqB,IAAoB/M,KAAK8yB,KAAQ9yB,KAAKoc,MAAQpc,KAAKy3B,WAAWz3B,KAAKo3B,WAAcH,EAAYlqB,GAEvH/M,MAAKs3B,UAAgClxB,SAApB6wB,EAAYlqB,IAAoB/M,KAAKq4B,aAAaD,GAAWnB,EAAYlqB,IAC1F/M,KAAKq3B,YAAkCjxB,SAApB6wB,EAAY3rB,IAAoBtL,KAAKq4B,aAAaF,GAAalB,EAAY3rB,IAC9FtL,KAAKu3B,UAAYv3B,KAAKq4B,aAAaD,GAAWA,EAAUp4B,KAAKq4B,aAAaF,GAAaA,EACvFn4B,KAAKs4B,YAAct4B,KAAKs3B,UAAYt3B,KAAKq3B,YAEzCr3B,KAAKk3B,QAAUl3B,KAAKs3B,WAItB51B,EAASgS,UAAU2kB,aAAe,SAASpxB,GACzC,GAAIsxB,GAAUtxB,EAASA,GAASjH,KAAKoc,MAAQpc,KAAKy3B,WAAWz3B,KAAKo3B,WAClE,OAAInwB,IAASjH,KAAKoc,MAAQpc,KAAKy3B,WAAWz3B,KAAKo3B,YAAc,GAAOp3B,KAAKoc,MAAQpc,KAAKy3B,WAAWz3B,KAAKo3B,WAC7FmB,EAAWv4B,KAAKoc,MAAQpc,KAAKy3B,WAAWz3B,KAAKo3B,WAG7CmB,GASX72B,EAASgS,UAAU8kB,QAAU,WAC3B,MAAQx4B,MAAKk3B,SAAWl3B,KAAKq3B,aAM/B31B,EAASgS,UAAU8T,KAAO,WACxB,GAAI+J,GAAOvxB,KAAKk3B,OAChBl3B,MAAKk3B,SAAWl3B,KAAKsnB,KAGjBtnB,KAAKk3B,SAAW3F,IAClBvxB,KAAKk3B,QAAUl3B,KAAK8yB,OAOxBpxB,EAASgS,UAAU+kB,SAAW,WAC5Bz4B,KAAKk3B,SAAWl3B,KAAKsnB,KACrBtnB,KAAKs3B,WAAat3B,KAAKsnB,KACvBtnB,KAAKs4B,YAAct4B,KAAKs3B,UAAYt3B,KAAKq3B,aAS3C31B,EAASgS,UAAU6T,WAAa,WAC9B,GAAIoM,GAAc,GAAK7vB,OAAO9D,KAAKk3B,SAASvD,YAAY,EACxD,IAAgC,IAA5BA,EAAYptB,QAAQ,MAA0C,IAA5BotB,EAAYptB,QAAQ,KACxD,IAAK,GAAInB,GAAIuuB,EAAYpuB,OAAO,EAAGH,EAAI,EAAGA,IAAK,CAC7C,GAAsB,KAAlBuuB,EAAYvuB,GAGX,CAAA,GAAsB,KAAlBuuB,EAAYvuB,IAA+B,KAAlBuuB,EAAYvuB,GAAW,CACvDuuB,EAAcA,EAAY+E,MAAM,EAAEtzB,EAClC,OAGA,MAPAuuB,EAAcA,EAAY+E,MAAM,EAAEtzB,GAYxC,MAAOuuB,IAWTjyB,EAASgS,UAAU+gB,KAAO,aAS1B/yB,EAASgS,UAAUilB,QAAU,WAC3B,MAAQ34B,MAAKk3B,SAAWl3B,KAAKoc,MAAQpc,KAAKw3B,WAAWx3B,KAAKo3B,aAAe,GAG3Ev3B,EAAOD,QAAU8B,GAKb,SAAS7B,EAAQD,EAASM,GAe9B,QAASyB,GAAM0yB,EAAMzlB,GACnB,GAAIgqB,GAAMl1B,IAASm1B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dh5B,MAAK4P,MAAQgpB,EAAIK,QAAQxlB,IAAI,GAAI,QAAQ7M,UACzC5G,KAAKqQ,IAAMuoB,EAAIK,QAAQxlB,IAAI,EAAG,QAAQ7M,UAEtC5G,KAAKq0B,KAAOA,EAGZr0B,KAAK+zB,gBACHnkB,MAAO,KACPS,IAAK,KACL6oB,UAAW,aACXC,UAAU,EACVC,UAAU,EACV9tB,IAAK,KACLyB,IAAK,KACLssB,QAAS,GACTC,QAAS,UAEXt5B,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBAEpC/zB,KAAK4F,OACH2zB,UAEFv5B,KAAKw5B,aAAe,KAGpBx5B,KAAKq0B,KAAKE,QAAQ5gB,GAAG,YAAa3T,KAAKy5B,aAAajF,KAAKx0B,OACzDA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,OAAa3T,KAAK05B,QAAQlF,KAAKx0B,OACpDA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,UAAa3T,KAAK25B,WAAWnF,KAAKx0B,OAGvDA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,OAAQ3T,KAAK45B,QAAQpF,KAAKx0B,OAG/CA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,aAAmB3T,KAAK65B,cAAcrF,KAAKx0B,OAChEA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,iBAAmB3T,KAAK65B,cAAcrF,KAAKx0B,OAGhEA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,QAAS3T,KAAK85B,SAAStF,KAAKx0B,OACjDA,KAAKq0B,KAAKE,QAAQ5gB,GAAG,QAAS3T,KAAK+5B,SAASvF,KAAKx0B,OAEjDA,KAAKic,WAAWrN,GAsClB,QAASorB,GAAmBd,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIjzB,WAAU,sBAAwBizB,EAAY,yCAqb5D,QAASe,GAAYV,EAAO5wB,GAC1B,OACE4J,EAAGgnB,EAAMW,MAAQv5B,EAAKuG,gBAAgByB,GACtC6J,EAAG+mB,EAAMY,MAAQx5B,EAAK6G,eAAemB,IAvhBzC,GAAIhI,GAAOT,EAAoB,GAC3Bk6B,EAAal6B,EAAoB,IACjCwD,EAASxD,EAAoB,IAC7BmC,EAAYnC,EAAoB,GAuDpCyB,GAAM+R,UAAY,GAAIrR,GAkBtBV,EAAM+R,UAAUuI,WAAa,SAAUrN,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WACvF1N,GAAKgF,gBAAgB0I,EAAQrO,KAAK4O,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC5O,KAAKkzB,SAAStkB,EAAQgB,MAAOhB,EAAQyB,OA2B3C1O,EAAM+R,UAAUwf,SAAW,SAAStjB,EAAOS,EAAKylB,GAc5C,QAAStO,KACP,IAAKjT,EAAG3O,MAAM2zB,MAAMc,SAAU,CAC5B,GAAIzB,IAAM,GAAI10B,OAAO0C,UACjB0zB,EAAO1B,EAAM2B,EACbC,EAAOF,EAAOhqB,EACdlF,EAAKovB,GAAmB,OAAX3H,EAAmBA,EAASlyB,EAAKyP,cAAckqB,EAAMG,EAAW5H,EAAQviB,GACrFjE,EAAKmuB,GAAiB,OAAT1H,EAAmBA,EAASnyB,EAAKyP,cAAckqB,EAAMI,EAAS5H,EAAMxiB,EAErFqqB,GAAUpmB,EAAGqmB,YAAYxvB,EAAGiB,GAC5BwuB,EAAaA,GAAcF,EACvBA,GACFpmB,EAAG8f,KAAKE,QAAQrH,KAAK,eAAgBtd,MAAO,GAAI1L,MAAKqQ,EAAG3E,OAAQS,IAAK,GAAInM,MAAKqQ,EAAGlE,OAG/EmqB,EACEK,GACFtmB,EAAG8f,KAAKE,QAAQrH,KAAK,gBAAiBtd,MAAO,GAAI1L,MAAKqQ,EAAG3E,OAAQS,IAAK,GAAInM,MAAKqQ,EAAGlE,OAMpFkE,EAAGilB,aAAe5L,WAAWpG,EAAM,KAnC3C,GAAIqL,GAAkBzsB,QAATwJ,EAAqBjP,EAAK8F,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtEksB,EAAgB1sB,QAAPiK,EAAqB1P,EAAK8F,QAAQ4J,EAAK,QAAQzJ,UAAc,IAI1E,IAFA5G,KAAK86B,mBAEDhF,EAAS,CACX,GAAIvhB,GAAKvU,KACLy6B,EAAYz6B,KAAK4P,MACjB8qB,EAAU16B,KAAKqQ,IACfC,EAA8B,gBAAZwlB,GAAuBA,EAAU,IACnDyE,GAAW,GAAIr2B,OAAO0C,UACtBi0B,GAAa,CA6BjB,OAAOrT,KAGP,GAAImT,GAAU36B,KAAK46B,YAAY/H,EAAQC,EACvC,IAAI6H,EAAS,CACX,GAAIzmB,IAAUtE,MAAO,GAAI1L,MAAKlE,KAAK4P,OAAQS,IAAK,GAAInM,MAAKlE,KAAKqQ,KAC9DrQ,MAAKq0B,KAAKE,QAAQrH,KAAK,cAAehZ,GACtClU,KAAKq0B,KAAKE,QAAQrH,KAAK,eAAgBhZ,KAS7CvS,EAAM+R,UAAUonB,iBAAmB,WAC7B96B,KAAKw5B,eACPjM,aAAavtB,KAAKw5B,cAClBx5B,KAAKw5B,aAAe,OAaxB73B,EAAM+R,UAAUknB,YAAc,SAAShrB,EAAOS,GAC5C,GAIIob,GAJAsP,EAAqB,MAATnrB,EAAiBjP,EAAK8F,QAAQmJ,EAAO,QAAQhJ,UAAY5G,KAAK4P,MAC1EorB,EAAmB,MAAP3qB,EAAiB1P,EAAK8F,QAAQ4J,EAAK,QAAQzJ,UAAc5G,KAAKqQ,IAC1EtD,EAA2B,MAApB/M,KAAK4O,QAAQ7B,IAAepM,EAAK8F,QAAQzG,KAAK4O,QAAQ7B,IAAK,QAAQnG,UAAY,KACtF0E,EAA2B,MAApBtL,KAAK4O,QAAQtD,IAAe3K,EAAK8F,QAAQzG,KAAK4O,QAAQtD,IAAK,QAAQ1E,UAAY,IAI1F,IAAItC,MAAMy2B,IAA0B,OAAbA,EACrB,KAAM,IAAIt3B,OAAM,kBAAoBmM,EAAQ,IAE9C,IAAItL,MAAM02B,IAAsB,OAAXA,EACnB,KAAM,IAAIv3B,OAAM,gBAAkB4M,EAAM,IAyC1C,IArCa0qB,EAATC,IACFA,EAASD,GAIC,OAARzvB,GACaA,EAAXyvB,IACFtP,EAAQngB,EAAMyvB,EACdA,GAAYtP,EACZuP,GAAUvP,EAGC,MAAP1e,GACEiuB,EAASjuB,IACXiuB,EAASjuB,IAOL,OAARA,GACEiuB,EAASjuB,IACX0e,EAAQuP,EAASjuB,EACjBguB,GAAYtP,EACZuP,GAAUvP,EAGC,MAAPngB,GACaA,EAAXyvB,IACFA,EAAWzvB,IAOU,OAAzBtL,KAAK4O,QAAQyqB,QAAkB,CACjC,GAAIA,GAAU7U,WAAWxkB,KAAK4O,QAAQyqB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArB2B,EAASD,IACP/6B,KAAKqQ,IAAMrQ,KAAK4P,QAAWypB,GAE9B0B,EAAW/6B,KAAK4P,MAChBorB,EAASh7B,KAAKqQ,MAIdob,EAAQ4N,GAAW2B,EAASD,GAC5BA,GAAYtP,EAAO,EACnBuP,GAAUvP,EAAO,IAMvB,GAA6B,OAAzBzrB,KAAK4O,QAAQ0qB,QAAkB,CACjC,GAAIA,GAAU9U,WAAWxkB,KAAK4O,QAAQ0qB,QACxB,GAAVA,IACFA,EAAU,GAEP0B,EAASD,EAAYzB,IACnBt5B,KAAKqQ,IAAMrQ,KAAK4P,QAAW0pB,GAE9ByB,EAAW/6B,KAAK4P,MAChBorB,EAASh7B,KAAKqQ,MAIdob,EAASuP,EAASD,EAAYzB,EAC9ByB,GAAYtP,EAAO,EACnBuP,GAAUvP,EAAO,IAKvB,GAAIkP,GAAW36B,KAAK4P,OAASmrB,GAAY/6B,KAAKqQ,KAAO2qB,CAKrD,OAHAh7B,MAAK4P,MAAQmrB,EACb/6B,KAAKqQ,IAAM2qB,EAEJL,GAOTh5B,EAAM+R,UAAUunB,SAAW,WACzB,OACErrB,MAAO5P,KAAK4P,MACZS,IAAKrQ,KAAKqQ,MAUd1O,EAAM+R,UAAUwnB,WAAa,SAAUnoB,GACrC,MAAOpR,GAAMu5B,WAAWl7B,KAAK4P,MAAO5P,KAAKqQ,IAAK0C,IAWhDpR,EAAMu5B,WAAa,SAAUtrB,EAAOS,EAAK0C,GACvC,MAAa,IAATA,GAAe1C,EAAMT,GAAS,GAE9BkZ,OAAQlZ,EACRwM,MAAOrJ,GAAS1C,EAAMT,KAKtBkZ,OAAQ,EACR1M,MAAO,IAUbza,EAAM+R,UAAU+lB,aAAe,WAExBz5B,KAAK4O,QAAQuqB,UAIbn5B,KAAK4F,MAAM2zB,MAAM4B,gBAEtBn7B,KAAK4F,MAAM2zB,MAAM3pB,MAAQ5P,KAAK4P,MAC9B5P,KAAK4F,MAAM2zB,MAAMlpB,IAAMrQ,KAAKqQ,IAC5BrQ,KAAK4F,MAAM2zB,MAAMc,UAAW,EAExBr6B,KAAKq0B,KAAK9E,IAAI7vB,OAChBM,KAAKq0B,KAAK9E,IAAI7vB,KAAK2N,MAAMif,OAAS,UAStC3qB,EAAM+R,UAAUgmB,QAAU,SAAUrwB,GAElC,GAAKrJ,KAAK4O,QAAQuqB,SAAlB,CACA,GAAID,GAAYl5B,KAAK4O,QAAQsqB,SAK7B,IAJAc,EAAkBd,GAIbl5B,KAAK4F,MAAM2zB,MAAM4B,cAAtB,CAEA,GAAIlN,GAAsB,cAAbiL,EAA6B7vB,EAAM+xB,QAAQC,OAAShyB,EAAM+xB,QAAQE,OAC3EnJ,EAAYnyB,KAAK4F,MAAM2zB,MAAMlpB,IAAMrQ,KAAK4F,MAAM2zB,MAAM3pB,MACpDmD,EAAsB,cAAbmmB,EAA6Bl5B,KAAKq0B,KAAKC,SAAShJ,OAAOvY,MAAQ/S,KAAKq0B,KAAKC,SAAShJ,OAAOtY,OAClGuoB,GAAatN,EAAQlb,EAAQof,CACjCnyB,MAAK46B,YAAY56B,KAAK4F,MAAM2zB,MAAM3pB,MAAQ2rB,EAAWv7B,KAAK4F,MAAM2zB,MAAMlpB,IAAMkrB,GAG5Ev7B,KAAKq0B,KAAKE,QAAQrH,KAAK,eACrBtd,MAAO,GAAI1L,MAAKlE,KAAK4P,OACrBS,IAAO,GAAInM,MAAKlE,KAAKqQ,UASzB1O,EAAM+R,UAAUimB,WAAa,WAEtB35B,KAAK4O,QAAQuqB,UAIbn5B,KAAK4F,MAAM2zB,MAAM4B,gBAEtBn7B,KAAK4F,MAAM2zB,MAAMc,UAAW,EACxBr6B,KAAKq0B,KAAK9E,IAAI7vB,OAChBM,KAAKq0B,KAAK9E,IAAI7vB,KAAK2N,MAAMif,OAAS,QAIpCtsB,KAAKq0B,KAAKE,QAAQrH,KAAK,gBACrBtd,MAAO,GAAI1L,MAAKlE,KAAK4P,OACrBS,IAAO,GAAInM,MAAKlE,KAAKqQ,SAUzB1O,EAAM+R,UAAUmmB,cAAgB,SAASxwB,GAEvC,GAAMrJ,KAAK4O,QAAQwqB,UAAYp5B,KAAK4O,QAAQuqB,SAA5C,CAGA,GAAIlL,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAa,IAClB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAS,GAMtBF,EAAO,CAKT,GAAI7R,EAEFA,GADU,EAAR6R,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAImN,GAAUhB,EAAWoB,YAAYx7B,KAAMqJ,GACvCoyB,EAAUxB,EAAWmB,EAAQ9P,OAAQtrB,KAAKq0B,KAAK9E,IAAIjE,QACnDoQ,EAAc17B,KAAK27B,eAAeF,EAEtCz7B,MAAK47B,KAAKxf,EAAOsf,GAKnBryB,EAAMD,mBAORzH,EAAM+R,UAAUomB,SAAW,WACzB95B,KAAK4F,MAAM2zB,MAAM3pB,MAAQ5P,KAAK4P,MAC9B5P,KAAK4F,MAAM2zB,MAAMlpB,IAAMrQ,KAAKqQ,IAC5BrQ,KAAK4F,MAAM2zB,MAAM4B,eAAgB,EACjCn7B,KAAK4F,MAAM2zB,MAAMjO,OAAS,MAO5B3pB,EAAM+R,UAAUkmB,QAAU,WACxB55B,KAAK4F,MAAM2zB,MAAM4B,eAAgB,GAQnCx5B,EAAM+R,UAAUqmB,SAAW,SAAU1wB,GAEnC,GAAMrJ,KAAK4O,QAAQwqB,UAAYp5B,KAAK4O,QAAQuqB,WAE5Cn5B,KAAK4F,MAAM2zB,MAAM4B,eAAgB,EAE7B9xB,EAAM+xB,QAAQS,QAAQt2B,OAAS,GAAG,CAC/BvF,KAAK4F,MAAM2zB,MAAMjO,SACpBtrB,KAAK4F,MAAM2zB,MAAMjO,OAAS2O,EAAW5wB,EAAM+xB,QAAQ9P,OAAQtrB,KAAKq0B,KAAK9E,IAAIjE,QAG3E,IAAIlP,GAAQ,EAAI/S,EAAM+xB,QAAQhf,MAC1B0f,EAAW97B,KAAK27B,eAAe37B,KAAK4F,MAAM2zB,MAAMjO,QAGhDyP,EAAW9Q,SAAS6R,GAAY97B,KAAK4F,MAAM2zB,MAAM3pB,MAAQksB,GAAY1f,GACrE4e,EAAS/Q,SAAS6R,GAAY97B,KAAK4F,MAAM2zB,MAAMlpB,IAAMyrB,GAAY1f,EAGrEpc,MAAKkzB,SAAS6H,EAAUC,KAU5Br5B,EAAM+R,UAAUioB,eAAiB,SAAUF,GACzC,GAAIP,GACAhC,EAAYl5B,KAAK4O,QAAQsqB,SAI7B,IAFAc,EAAkBd,GAED,cAAbA,EAA2B,CAC7B,GAAInmB,GAAQ/S,KAAKq0B,KAAKC,SAAShJ,OAAOvY,KAEtC,OADAmoB,GAAal7B,KAAKk7B,WAAWnoB,GACtB0oB,EAAQlpB,EAAI2oB,EAAW9e,MAAQ8e,EAAWpS,OAGjD,GAAI9V,GAAShT,KAAKq0B,KAAKC,SAAShJ,OAAOtY,MAEvC,OADAkoB,GAAal7B,KAAKk7B,WAAWloB,GACtByoB,EAAQjpB,EAAI0oB,EAAW9e,MAAQ8e,EAAWpS,QA4BrDnnB,EAAM+R,UAAUkoB,KAAO,SAASxf,EAAOkP,GAEvB,MAAVA,IACFA,GAAUtrB,KAAK4P,MAAQ5P,KAAKqQ,KAAO,EAIrC,IAAI0qB,GAAWzP,GAAUtrB,KAAK4P,MAAQ0b,GAAUlP,EAC5C4e,EAAS1P,GAAUtrB,KAAKqQ,IAAMib,GAAUlP,CAE5Cpc,MAAKkzB,SAAS6H,EAAUC,IAS1Br5B,EAAM+R,UAAUqoB,KAAO,SAAS9N,GAE9B,GAAIxC,GAAQzrB,KAAKqQ,IAAMrQ,KAAK4P,MAGxBmrB,EAAW/6B,KAAK4P,MAAQ6b,EAAOwC,EAC/B+M,EAASh7B,KAAKqQ,IAAMob,EAAOwC,CAI/BjuB,MAAK4P,MAAQmrB,EACb/6B,KAAKqQ,IAAM2qB,GAObr5B,EAAM+R,UAAUsT,OAAS,SAASA,GAChC,GAAIsE,IAAUtrB,KAAK4P,MAAQ5P,KAAKqQ,KAAO,EAEnCob,EAAOH,EAAStE,EAGhB+T,EAAW/6B,KAAK4P,MAAQ6b,EACxBuP,EAASh7B,KAAKqQ,IAAMob,CAExBzrB,MAAKkzB,SAAS6H,EAAUC,IAG1Bn7B,EAAOD,QAAU+B,GAKb,SAAS9B,EAAQD,GAGrB,GAAIo8B,GAAU,IAMdp8B,GAAQq8B,aAAe,SAASl6B,GAC9BA,EAAMyU,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE+N,KAAKtD,MAAQ5J,EAAEkN,KAAKtD,SASjChQ,EAAQs8B,WAAa,SAASn6B,GAC5BA,EAAMyU,KAAK,SAAUrR,EAAGa,GACtB,GAAIm2B,GAAS,OAASh3B,GAAE+N,KAAQ/N,EAAE+N,KAAK7C,IAAMlL,EAAE+N,KAAKtD,MAChDwsB,EAAS,OAASp2B,GAAEkN,KAAQlN,EAAEkN,KAAK7C,IAAMrK,EAAEkN,KAAKtD,KAEpD,OAAOusB,GAAQC,KAenBx8B,EAAQgC,MAAQ,SAASG,EAAOkX,EAAQojB,GACtC,GAAIj3B,GAAGk3B,CAEP,IAAID,EAEF,IAAKj3B,EAAI,EAAGk3B,EAAOv6B,EAAMwD,OAAY+2B,EAAJl3B,EAAUA,IACzCrD,EAAMqD,GAAGqC,IAAM,IAKnB,KAAKrC,EAAI,EAAGk3B,EAAOv6B,EAAMwD,OAAY+2B,EAAJl3B,EAAUA,IAAK,CAC9C,GAAI0P,GAAO/S,EAAMqD,EACjB,IAAiB,OAAb0P,EAAKrN,IAAc,CAErBqN,EAAKrN,IAAMwR,EAAOsjB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXxR,EAAI,EAAGyR,EAAK16B,EAAMwD,OAAYk3B,EAAJzR,EAAQA,IAAK,CAC9C,GAAIxlB,GAAQzD,EAAMipB,EAClB,IAAkB,OAAdxlB,EAAMiC,KAAgBjC,IAAUsP,GAAgC,GAAxBtP,EAAMk3B,gBAA2B98B,EAAQ+8B,UAAU7nB,EAAMtP,EAAOyT,EAAOnE,MAAO,CACxH0nB,EAAgBh3B,CAChB,QAIiB,MAAjBg3B,IAEF1nB,EAAKrN,IAAM+0B,EAAc/0B,IAAM+0B,EAAcxpB,OAASiG,EAAOnE,KAAK8P,gBAE7D4X,MAYf58B,EAAQg9B,QAAU,SAAS76B,EAAOkX,GAChC,GAAI7T,GAAGk3B,CAGP,KAAKl3B,EAAI,EAAGk3B,EAAOv6B,EAAMwD,OAAY+2B,EAAJl3B,EAAUA,IACzCrD,EAAMqD,GAAGqC,IAAMwR,EAAOsjB,MAc1B38B,EAAQ+8B,UAAY,SAASx3B,EAAGa,EAAGiT,GACjC,MAAS9T,GAAEkC,KAAO4R,EAAO0L,WAAaqX,EAAkBh2B,EAAEqB,KAAOrB,EAAE+M,OAC9D5N,EAAEkC,KAAOlC,EAAE4N,MAAQkG,EAAO0L,WAAaqX,EAAWh2B,EAAEqB,MACpDlC,EAAEsC,IAAMwR,EAAO2L,SAAWoX,EAAyBh2B,EAAEyB,IAAMzB,EAAEgN,QAC7D7N,EAAEsC,IAAMtC,EAAE6N,OAASiG,EAAO2L,SAAWoX,EAAah2B,EAAEyB,MAMvD,SAAS5H,EAAQD,EAASM,GA8B9B,QAAS2B,GAAS+N,EAAOS,EAAK0mB,GAE5B/2B,KAAKk3B,QAAU,GAAIhzB,MACnBlE,KAAK6yB,OAAS,GAAI3uB,MAClBlE,KAAK8yB,KAAO,GAAI5uB,MAEhBlE,KAAKm3B,WAAa,EAClBn3B,KAAKoc,MAAQva,EAASg7B,MAAMC,IAC5B98B,KAAKsnB,KAAO,EAGZtnB,KAAKkzB,SAAStjB,EAAOS,EAAK0mB,GAvC5B,GAAIrzB,GAASxD,EAAoB,GA2CjC2B,GAASg7B,OACPE,YAAa,EACbC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNJ,IAAK,EACLK,QAAS,EACTC,MAAO,EACPC,KAAM,GAcRx7B,EAAS6R,UAAUwf,SAAW,SAAStjB,EAAOS,EAAK0mB,GACjD,KAAMnnB,YAAiB1L,OAAWmM,YAAenM,OAC/C,KAAO,+CAGTlE,MAAK6yB,OAAmBzsB,QAATwJ,EAAsB,GAAI1L,MAAK0L,EAAMhJ,WAAa,GAAI1C,MACrElE,KAAK8yB,KAAe1sB,QAAPiK,EAAoB,GAAInM,MAAKmM,EAAIzJ,WAAa,GAAI1C,MAE3DlE,KAAKm3B,WACPn3B,KAAK03B,eAAeX,IAOxBl1B,EAAS6R,UAAU4pB,MAAQ,WACzBt9B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAK6yB,OAAOjsB,WACpC5G,KAAKq4B,gBAOPx2B,EAAS6R,UAAU2kB,aAAe,WAIhC,OAAQr4B,KAAKoc,OACX,IAAKva,GAASg7B,MAAMQ,KAClBr9B,KAAKk3B,QAAQqG,YAAYv9B,KAAKsnB,KAAOxiB,KAAKC,MAAM/E,KAAKk3B,QAAQsG,cAAgBx9B,KAAKsnB,OAClFtnB,KAAKk3B,QAAQuG,SAAS,EACxB,KAAK57B,GAASg7B,MAAMO,MAAcp9B,KAAKk3B,QAAQwG,QAAQ,EACvD,KAAK77B,GAASg7B,MAAMC,IACpB,IAAKj7B,GAASg7B,MAAMM,QAAcn9B,KAAKk3B,QAAQyG,SAAS,EACxD,KAAK97B,GAASg7B,MAAMK,KAAcl9B,KAAKk3B,QAAQ0G,WAAW,EAC1D,KAAK/7B,GAASg7B,MAAMI,OAAcj9B,KAAKk3B,QAAQ2G,WAAW,EAC1D,KAAKh8B,GAASg7B,MAAMG,OAAch9B,KAAKk3B,QAAQ4G,gBAAgB,GAIjE,GAAiB,GAAb99B,KAAKsnB,KAEP,OAAQtnB,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAAc/8B,KAAKk3B,QAAQ4G,gBAAgB99B,KAAKk3B,QAAQ6G,kBAAoB/9B,KAAKk3B,QAAQ6G,kBAAoB/9B,KAAKsnB,KAAQ,MAC9I,KAAKzlB,GAASg7B,MAAMG,OAAch9B,KAAKk3B,QAAQ2G,WAAW79B,KAAKk3B,QAAQ8G,aAAeh+B,KAAKk3B,QAAQ8G,aAAeh+B,KAAKsnB,KAAO,MAC9H,KAAKzlB,GAASg7B,MAAMI,OAAcj9B,KAAKk3B,QAAQ0G,WAAW59B,KAAKk3B,QAAQ+G,aAAej+B,KAAKk3B,QAAQ+G,aAAej+B,KAAKsnB,KAAO,MAC9H,KAAKzlB,GAASg7B,MAAMK,KAAcl9B,KAAKk3B,QAAQyG,SAAS39B,KAAKk3B,QAAQgH,WAAal+B,KAAKk3B,QAAQgH,WAAal+B,KAAKsnB,KAAO,MACxH,KAAKzlB,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAAc98B,KAAKk3B,QAAQwG,QAAS19B,KAAKk3B,QAAQiH,UAAU,GAAMn+B,KAAKk3B,QAAQiH,UAAU,GAAKn+B,KAAKsnB,KAAO,EAAI,MACjI,KAAKzlB,GAASg7B,MAAMO,MAAcp9B,KAAKk3B,QAAQuG,SAASz9B,KAAKk3B,QAAQkH,WAAap+B,KAAKk3B,QAAQkH,WAAap+B,KAAKsnB,KAAQ,MACzH,KAAKzlB,GAASg7B,MAAMQ,KAAcr9B,KAAKk3B,QAAQqG,YAAYv9B,KAAKk3B,QAAQsG,cAAgBx9B,KAAKk3B,QAAQsG,cAAgBx9B,KAAKsnB,QAUhIzlB,EAAS6R,UAAU8kB,QAAU,WAC3B,MAAQx4B,MAAKk3B,QAAQtwB,WAAa5G,KAAK8yB,KAAKlsB,WAM9C/E,EAAS6R,UAAU8T,KAAO,WACxB,GAAI+J,GAAOvxB,KAAKk3B,QAAQtwB,SAIxB,IAAI5G,KAAKk3B,QAAQkH,WAAa,EAC5B,OAAQp+B,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAElB/8B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAKk3B,QAAQtwB,UAAY5G,KAAKsnB,KAAO,MAC/D,KAAKzlB,GAASg7B,MAAMG,OAAch9B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAKk3B,QAAQtwB,UAAwB,IAAZ5G,KAAKsnB,KAAc,MACtG,KAAKzlB,GAASg7B,MAAMI,OAAcj9B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAKk3B,QAAQtwB,UAAwB,IAAZ5G,KAAKsnB,KAAc,GAAK,MAC3G,KAAKzlB,GAASg7B,MAAMK,KAClBl9B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAKk3B,QAAQtwB,UAAwB,IAAZ5G,KAAKsnB,KAAc,GAAK,GAEzE,IAAInc,GAAInL,KAAKk3B,QAAQgH,UACrBl+B,MAAKk3B,QAAQyG,SAASxyB,EAAKA,EAAInL,KAAKsnB,KACpC,MACF,KAAKzlB,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAAc98B,KAAKk3B,QAAQwG,QAAQ19B,KAAKk3B,QAAQiH,UAAYn+B,KAAKsnB,KAAO,MAC5F,KAAKzlB,GAASg7B,MAAMO,MAAcp9B,KAAKk3B,QAAQuG,SAASz9B,KAAKk3B,QAAQkH,WAAap+B,KAAKsnB,KAAO,MAC9F,KAAKzlB,GAASg7B,MAAMQ,KAAcr9B,KAAKk3B,QAAQqG,YAAYv9B,KAAKk3B,QAAQsG,cAAgBx9B,KAAKsnB,UAK/F,QAAQtnB,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAAc/8B,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAKk3B,QAAQtwB,UAAY5G,KAAKsnB,KAAO,MAC/F,KAAKzlB,GAASg7B,MAAMG,OAAch9B,KAAKk3B,QAAQ2G,WAAW79B,KAAKk3B,QAAQ8G,aAAeh+B,KAAKsnB,KAAO,MAClG,KAAKzlB,GAASg7B,MAAMI,OAAcj9B,KAAKk3B,QAAQ0G,WAAW59B,KAAKk3B,QAAQ+G,aAAej+B,KAAKsnB,KAAO,MAClG,KAAKzlB,GAASg7B,MAAMK,KAAcl9B,KAAKk3B,QAAQyG,SAAS39B,KAAKk3B,QAAQgH,WAAal+B,KAAKsnB,KAAO,MAC9F,KAAKzlB,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAAc98B,KAAKk3B,QAAQwG,QAAQ19B,KAAKk3B,QAAQiH,UAAYn+B,KAAKsnB,KAAO,MAC5F,KAAKzlB,GAASg7B,MAAMO,MAAcp9B,KAAKk3B,QAAQuG,SAASz9B,KAAKk3B,QAAQkH,WAAap+B,KAAKsnB,KAAO,MAC9F,KAAKzlB,GAASg7B,MAAMQ,KAAcr9B,KAAKk3B,QAAQqG,YAAYv9B,KAAKk3B,QAAQsG,cAAgBx9B,KAAKsnB,MAKjG,GAAiB,GAAbtnB,KAAKsnB,KAEP,OAAQtnB,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAAiB/8B,KAAKk3B,QAAQ6G,kBAAoB/9B,KAAKsnB,MAAMtnB,KAAKk3B,QAAQ4G,gBAAgB,EAAK,MACnH,KAAKj8B,GAASg7B,MAAMG,OAAiBh9B,KAAKk3B,QAAQ8G,aAAeh+B,KAAKsnB,MAAMtnB,KAAKk3B,QAAQ2G,WAAW,EAAK,MACzG,KAAKh8B,GAASg7B,MAAMI,OAAiBj9B,KAAKk3B,QAAQ+G,aAAej+B,KAAKsnB,MAAMtnB,KAAKk3B,QAAQ0G,WAAW,EAAK,MACzG,KAAK/7B,GAASg7B,MAAMK,KAAiBl9B,KAAKk3B,QAAQgH,WAAal+B,KAAKsnB,MAAMtnB,KAAKk3B,QAAQyG,SAAS,EAAK,MACrG,KAAK97B,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAAiB98B,KAAKk3B,QAAQiH,UAAYn+B,KAAKsnB,KAAK,GAAGtnB,KAAKk3B,QAAQwG,QAAQ,EAAI,MACpG,KAAK77B,GAASg7B,MAAMO,MAAiBp9B,KAAKk3B,QAAQkH,WAAap+B,KAAKsnB,MAAMtnB,KAAKk3B,QAAQuG,SAAS,EAAK,MACrG,KAAK57B,GAASg7B,MAAMQ,MAMpBr9B,KAAKk3B,QAAQtwB,WAAa2qB,IAC5BvxB,KAAKk3B,QAAU,GAAIhzB,MAAKlE,KAAK8yB,KAAKlsB,aAStC/E,EAAS6R,UAAU6T,WAAa,WAC9B,MAAOvnB,MAAKk3B,SAgBdr1B,EAAS6R,UAAU2qB,SAAW,SAASC,EAAUC,GAC/Cv+B,KAAKoc,MAAQkiB,EAETC,EAAU,IACZv+B,KAAKsnB,KAAOiX,GAGdv+B,KAAKm3B,WAAY,GAOnBt1B,EAAS6R,UAAU8qB,aAAe,SAAUC,GAC1Cz+B,KAAKm3B,UAAYsH,GAQnB58B,EAAS6R,UAAUgkB,eAAiB,SAASX,GAC3C,GAAmB3wB,QAAf2wB,EAAJ,CAIA,GAAI2H,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgB3H,IAAqB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,KACjF,IAAToX,EAAe3H,IAAsB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,KACjF,IAAToX,EAAe3H,IAAsB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,KACjF,GAAToX,EAAc3H,IAAuB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,IACjF,GAAToX,EAAc3H,IAAuB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,IACjF,EAAToX,EAAa3H,IAAwB/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,GAC1FoX,EAAW3H,IAA0B/2B,KAAKoc,MAAQva,EAASg7B,MAAMQ,KAAar9B,KAAKsnB,KAAO,GAChF,EAAVqX,EAAc5H,IAAuB/2B,KAAKoc,MAAQva,EAASg7B,MAAMO,MAAap9B,KAAKsnB,KAAO,GAC1FqX,EAAY5H,IAAyB/2B,KAAKoc,MAAQva,EAASg7B,MAAMO,MAAap9B,KAAKsnB,KAAO,GAClF,EAARsX,EAAY7H,IAAyB/2B,KAAKoc,MAAQva,EAASg7B,MAAMC,IAAa98B,KAAKsnB,KAAO,GAClF,EAARsX,EAAY7H,IAAyB/2B,KAAKoc,MAAQva,EAASg7B,MAAMC,IAAa98B,KAAKsnB,KAAO,GAC1FsX,EAAU7H,IAA2B/2B,KAAKoc,MAAQva,EAASg7B,MAAMC,IAAa98B,KAAKsnB,KAAO,GAC1FsX,EAAQ,EAAI7H,IAAyB/2B,KAAKoc,MAAQva,EAASg7B,MAAMM,QAAan9B,KAAKsnB,KAAO,GACjF,EAATuX,EAAa9H,IAAwB/2B,KAAKoc,MAAQva,EAASg7B,MAAMK,KAAal9B,KAAKsnB,KAAO,GAC1FuX,EAAW9H,IAA0B/2B,KAAKoc,MAAQva,EAASg7B,MAAMK,KAAal9B,KAAKsnB,KAAO,GAC/E,GAAXwX,EAAgB/H,IAAqB/2B,KAAKoc,MAAQva,EAASg7B,MAAMI,OAAaj9B,KAAKsnB,KAAO,IAC/E,GAAXwX,EAAgB/H,IAAqB/2B,KAAKoc,MAAQva,EAASg7B,MAAMI,OAAaj9B,KAAKsnB,KAAO,IAC/E,EAAXwX,EAAe/H,IAAsB/2B,KAAKoc,MAAQva,EAASg7B,MAAMI,OAAaj9B,KAAKsnB,KAAO,GAC1FwX,EAAa/H,IAAwB/2B,KAAKoc,MAAQva,EAASg7B,MAAMI,OAAaj9B,KAAKsnB,KAAO,GAC/E,GAAXyX,EAAgBhI,IAAqB/2B,KAAKoc,MAAQva,EAASg7B,MAAMG,OAAah9B,KAAKsnB,KAAO,IAC/E,GAAXyX,EAAgBhI,IAAqB/2B,KAAKoc,MAAQva,EAASg7B,MAAMG,OAAah9B,KAAKsnB,KAAO,IAC/E,EAAXyX,EAAehI,IAAsB/2B,KAAKoc,MAAQva,EAASg7B,MAAMG,OAAah9B,KAAKsnB,KAAO,GAC1FyX,EAAahI,IAAwB/2B,KAAKoc,MAAQva,EAASg7B,MAAMG,OAAah9B,KAAKsnB,KAAO,GAC1E,IAAhB0X,EAAsBjI,IAAe/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,KAC1E,IAAhB0X,EAAsBjI,IAAe/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,KAC1E,GAAhB0X,EAAqBjI,IAAgB/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,IAC1E,GAAhB0X,EAAqBjI,IAAgB/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,IAC1E,EAAhB0X,EAAoBjI,IAAiB/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,GAC1F0X,EAAkBjI,IAAmB/2B,KAAKoc,MAAQva,EAASg7B,MAAME,YAAa/8B,KAAKsnB,KAAO,KAShGzlB,EAAS6R,UAAU+gB,KAAO,SAASwK,GACjC,GAAIhG,GAAQ,GAAI/0B,MAAK+6B,EAAKr4B,UAE1B,IAAI5G,KAAKoc,OAASva,EAASg7B,MAAMQ,KAAM,CACrC,GAAI6B,GAAOjG,EAAMuE,cAAgB14B,KAAKkoB,MAAMiM,EAAMmF,WAAa,GAC/DnF,GAAMsE,YAAYz4B,KAAKkoB,MAAMkS,EAAOl/B,KAAKsnB,MAAQtnB,KAAKsnB,MACtD2R,EAAMwE,SAAS,GACfxE,EAAMyE,QAAQ,GACdzE,EAAM0E,SAAS,GACf1E,EAAM2E,WAAW,GACjB3E,EAAM4E,WAAW,GACjB5E,EAAM6E,gBAAgB,OAEnB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMO,MAChCnE,EAAMkF,UAAY,IACpBlF,EAAMyE,QAAQ,GACdzE,EAAMwE,SAASxE,EAAMmF,WAAa,IAIlCnF,EAAMyE,QAAQ,GAGhBzE,EAAM0E,SAAS,GACf1E,EAAM2E,WAAW,GACjB3E,EAAM4E,WAAW,GACjB5E,EAAM6E,gBAAgB,OAEnB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMC,IAAK,CAEzC,OAAQ98B,KAAKsnB,MACX,IAAK,GACL,IAAK,GACH2R,EAAM0E,SAA6C,GAApC74B,KAAKkoB,MAAMiM,EAAMiF,WAAa,IAAW,MAC1D,SACEjF,EAAM0E,SAA6C,GAApC74B,KAAKkoB,MAAMiM,EAAMiF,WAAa,KAEjDjF,EAAM2E,WAAW,GACjB3E,EAAM4E,WAAW,GACjB5E,EAAM6E,gBAAgB,OAEnB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMM,QAAS,CAE7C,OAAQn9B,KAAKsnB,MACX,IAAK,GACL,IAAK,GACH2R,EAAM0E,SAA6C,GAApC74B,KAAKkoB,MAAMiM,EAAMiF,WAAa,IAAW,MAC1D,SACEjF,EAAM0E,SAA4C,EAAnC74B,KAAKkoB,MAAMiM,EAAMiF,WAAa,IAEjDjF,EAAM2E,WAAW,GACjB3E,EAAM4E,WAAW,GACjB5E,EAAM6E,gBAAgB,OAEnB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMK,KAAM,CAC1C,OAAQl9B,KAAKsnB,MACX,IAAK,GACH2R,EAAM2E,WAAiD,GAAtC94B,KAAKkoB,MAAMiM,EAAMgF,aAAe,IAAW,MAC9D,SACEhF,EAAM2E,WAAiD,GAAtC94B,KAAKkoB,MAAMiM,EAAMgF,aAAe,KAErDhF,EAAM4E,WAAW,GACjB5E,EAAM6E,gBAAgB,OACjB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMI,OAAQ,CAE9C,OAAQj9B,KAAKsnB,MACX,IAAK,IACL,IAAK,IACH2R,EAAM2E,WAAgD,EAArC94B,KAAKkoB,MAAMiM,EAAMgF,aAAe,IACjDhF,EAAM4E,WAAW,EACjB,MACF,KAAK,GACH5E,EAAM4E,WAAiD,GAAtC/4B,KAAKkoB,MAAMiM,EAAM+E,aAAe,IAAW,MAC9D,SACE/E,EAAM4E,WAAiD,GAAtC/4B,KAAKkoB,MAAMiM,EAAM+E,aAAe,KAErD/E,EAAM6E,gBAAgB,OAEnB,IAAI99B,KAAKoc,OAASva,EAASg7B,MAAMG,OAEpC,OAAQh9B,KAAKsnB,MACX,IAAK,IACL,IAAK,IACH2R,EAAM4E,WAAgD,EAArC/4B,KAAKkoB,MAAMiM,EAAM+E,aAAe,IACjD/E,EAAM6E,gBAAgB,EACtB,MACF,KAAK,GACH7E,EAAM6E,gBAA6D,IAA7Ch5B,KAAKkoB,MAAMiM,EAAM8E,kBAAoB,KAAe,MAC5E,SACE9E,EAAM6E,gBAA4D,IAA5Ch5B,KAAKkoB,MAAMiM,EAAM8E,kBAAoB,UAG5D,IAAI/9B,KAAKoc,OAASva,EAASg7B,MAAME,YAAa,CACjD,GAAIzV,GAAOtnB,KAAKsnB,KAAO,EAAItnB,KAAKsnB,KAAO,EAAI,CAC3C2R,GAAM6E,gBAAgBh5B,KAAKkoB,MAAMiM,EAAM8E,kBAAoBzW,GAAQA,GAGrE,MAAO2R,IAQTp3B,EAAS6R,UAAUilB,QAAU,WAC3B,OAAQ34B,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAClB,MAA0C,IAAlC/8B,KAAKk3B,QAAQ6G,iBACvB,KAAKl8B,GAASg7B,MAAMG,OAClB,MAAqC,IAA7Bh9B,KAAKk3B,QAAQ8G,YACvB,KAAKn8B,GAASg7B,MAAMI,OAClB,MAAmC,IAA3Bj9B,KAAKk3B,QAAQgH,YAAkD,GAA7Bl+B,KAAKk3B,QAAQ+G,YAEzD,KAAKp8B,GAASg7B,MAAMK,KAClB,MAAmC,IAA3Bl9B,KAAKk3B,QAAQgH,UACvB,KAAKr8B,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAClB,MAAkC,IAA1B98B,KAAKk3B,QAAQiH,SACvB,KAAKt8B,GAASg7B,MAAMO,MAClB,MAAmC,IAA3Bp9B,KAAKk3B,QAAQkH,UACvB,KAAKv8B,GAASg7B,MAAMQ,KAClB,OAAO,CACT,SACE,OAAO,IAWbx7B,EAAS6R,UAAUyrB,cAAgB,SAASF,GAK1C,OAJY74B,QAAR64B,IACFA,EAAOj/B,KAAKk3B,SAGNl3B,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAAc,MAAOr5B,GAAOu7B,GAAMG,OAAO,MAC7D,KAAKv9B,GAASg7B,MAAMG,OAAc,MAAOt5B,GAAOu7B,GAAMG,OAAO,IAC7D,KAAKv9B,GAASg7B,MAAMI,OAAc,MAAOv5B,GAAOu7B,GAAMG,OAAO,QAC7D,KAAKv9B,GAASg7B,MAAMK,KAAc,MAAOx5B,GAAOu7B,GAAMG,OAAO,QAC7D,KAAKv9B,GAASg7B,MAAMM,QAAc,MAAOz5B,GAAOu7B,GAAMG,OAAO,QAC7D,KAAKv9B,GAASg7B,MAAMC,IAAc,MAAOp5B,GAAOu7B,GAAMG,OAAO,IAC7D,KAAKv9B,GAASg7B,MAAMO,MAAc,MAAO15B,GAAOu7B,GAAMG,OAAO,MAC7D,KAAKv9B,GAASg7B,MAAMQ,KAAc,MAAO35B,GAAOu7B,GAAMG,OAAO,OAC7D,SAAkC,MAAO,KAW7Cv9B,EAAS6R,UAAU2rB,cAAgB,SAASJ,GAM1C,OALY74B,QAAR64B,IACFA,EAAOj/B,KAAKk3B,SAINl3B,KAAKoc,OACX,IAAKva,GAASg7B,MAAME,YAAY,MAAOr5B,GAAOu7B,GAAMG,OAAO,WAC3D,KAAKv9B,GAASg7B,MAAMG,OAAY,MAAOt5B,GAAOu7B,GAAMG,OAAO,eAC3D,KAAKv9B,GAASg7B,MAAMI,OACpB,IAAKp7B,GAASg7B,MAAMK,KAAY,MAAOx5B,GAAOu7B,GAAMG,OAAO,aAC3D,KAAKv9B,GAASg7B,MAAMM,QACpB,IAAKt7B,GAASg7B,MAAMC,IAAY,MAAOp5B,GAAOu7B,GAAMG,OAAO,YAC3D,KAAKv9B,GAASg7B,MAAMO,MAAY,MAAO15B,GAAOu7B,GAAMG,OAAO,OAC3D,KAAKv9B,GAASg7B,MAAMQ,KAAY,MAAO,EACvC,SAAgC,MAAO,KAI3Cx9B,EAAOD,QAAUiC,GAKb,SAAShC,GAOb,QAASwC,KACPrC,KAAK4O,QAAU,KACf5O,KAAK4F,MAAQ,KAQfvD,EAAUqR,UAAUuI,WAAa,SAASrN,GACpCA,GACFjO,KAAKuE,OAAOlF,KAAK4O,QAASA,IAQ9BvM,EAAUqR,UAAUkN,OAAS,WAE3B,OAAO,GAMTve,EAAUqR,UAAU4rB,QAAU,aAU9Bj9B,EAAUqR,UAAU6rB,WAAa,WAC/B,GAAIC,GAAWx/B,KAAK4F,MAAM65B,iBAAmBz/B,KAAK4F,MAAMmN,OACpD/S,KAAK4F,MAAM85B,kBAAoB1/B,KAAK4F,MAAMoN,MAK9C,OAHAhT,MAAK4F,MAAM65B,eAAiBz/B,KAAK4F,MAAMmN,MACvC/S,KAAK4F,MAAM85B,gBAAkB1/B,KAAK4F,MAAMoN,OAEjCwsB,GAGT3/B,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAa+xB,EAAMzlB,GAC1B5O,KAAKq0B,KAAOA,EAGZr0B,KAAK+zB,gBACH4L,iBAAiB,EAEjBC,QAASA,EACTC,OAAQ,MAEV7/B,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBACpC/zB,KAAK8oB,OAAS,EAEd9oB,KAAKo0B,UAELp0B,KAAKic,WAAWrN,GA5BlB,GAAIjO,GAAOT,EAAoB,GAC3BmC,EAAYnC,EAAoB,IAChCwD,EAASxD,EAAoB,IAC7B0/B,EAAU1/B,EAAoB,GA4BlCoC,GAAYoR,UAAY,GAAIrR,GAM5BC,EAAYoR,UAAU0gB,QAAU,WAC9B,GAAI5C,GAAMzf,SAASM,cAAc,MACjCmf,GAAI5pB,UAAY,cAChB4pB,EAAInkB,MAAM0V,SAAW,WACrByO,EAAInkB,MAAM5F,IAAM,MAChB+pB,EAAInkB,MAAM2F,OAAS,OAEnBhT,KAAKwxB,IAAMA,GAMblvB,EAAYoR,UAAU4rB,QAAU,WAC9Bt/B,KAAK4O,QAAQ+wB,iBAAkB,EAC/B3/B,KAAK4gB,SAEL5gB,KAAKq0B,KAAO,MAQd/xB,EAAYoR,UAAUuI,WAAa,SAASrN,GACtCA,GAEFjO,EAAKgF,iBAAiB,kBAAmB,SAAU,WAAY3F,KAAK4O,QAASA,IAQjFtM,EAAYoR,UAAUkN,OAAS,WAC7B,GAAI5gB,KAAK4O,QAAQ+wB,gBAAiB,CAChC,GAAIG,GAAS9/B,KAAKq0B,KAAK9E,IAAIwQ,kBACvB//B,MAAKwxB,IAAI7nB,YAAcm2B,IAErB9/B,KAAKwxB,IAAI7nB,YACX3J,KAAKwxB,IAAI7nB,WAAWgI,YAAY3R,KAAKwxB,KAEvCsO,EAAO7tB,YAAYjS,KAAKwxB,KAExBxxB,KAAK4P,QAGP,IAAIgpB,GAAM,GAAI10B,OAAK,GAAIA,OAAO0C,UAAY5G,KAAK8oB,QAC3CvW,EAAIvS,KAAKq0B,KAAK1zB,KAAK+zB,SAASkE,GAE5BiH,EAAS7/B,KAAK4O,QAAQgxB,QAAQ5/B,KAAK4O,QAAQixB,QAC3CG,EAAQH,EAAO3I,QAAU,IAAM2I,EAAOvF,KAAO,KAAO52B,EAAOk1B,GAAKwG,OAAO,8BAC3EY,GAAQA,EAAMzb,OAAO,GAAGrY,cAAgB8zB,EAAM7zB,UAAU,GAExDnM,KAAKwxB,IAAInkB,MAAMhG,KAAOkL,EAAI,KAC1BvS,KAAKwxB,IAAIwO,MAAQA,MAIbhgC,MAAKwxB,IAAI7nB,YACX3J,KAAKwxB,IAAI7nB,WAAWgI,YAAY3R,KAAKwxB,KAEvCxxB,KAAKqkB,MAGP;OAAO,GAMT/hB,EAAYoR,UAAU9D,MAAQ,WAG5B,QAASsF,KACPX,EAAG8P,MAGH,IAAIjI,GAAQ7H,EAAG8f,KAAKrlB,MAAMksB,WAAW3mB,EAAG8f,KAAKC,SAAShJ,OAAOvY,OAAOqJ,MAChE+V,EAAW,EAAI/V,EAAQ,EACZ,IAAX+V,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhC5d,EAAGqM,SAGHrM,EAAG0rB,iBAAmBrS,WAAW1Y,EAAQid,GAd3C,GAAI5d,GAAKvU,IAiBTkV,MAMF5S,EAAYoR,UAAU2Q,KAAO,WACGje,SAA1BpG,KAAKigC,mBACP1S,aAAavtB,KAAKigC,wBACXjgC,MAAKigC,mBAUhB39B,EAAYoR,UAAUwsB,eAAiB,SAAS5F,GAC9C,GAAIrsB,GAAItN,EAAK8F,QAAQ6zB,EAAM,QAAQ1zB,UAC/BgyB,GAAM,GAAI10B,OAAO0C,SACrB5G,MAAK8oB,OAAS7a,EAAI2qB,EAClB54B,KAAK4gB,UAOPte,EAAYoR,UAAUysB,eAAiB,WACrC,MAAO,IAAIj8B,OAAK,GAAIA,OAAO0C,UAAY5G,KAAK8oB,SAG9CjpB,EAAOD,QAAU0C,GAKb,SAASzC,EAAQD,EAASM,GAiB9B,QAASqC,GAAY8xB,EAAMzlB,GACzB5O,KAAKq0B,KAAOA,EAGZr0B,KAAK+zB,gBACHqM,gBAAgB,EAChBR,QAASA,EACTC,OAAQ,MAEV7/B,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBAEpC/zB,KAAKo1B,WAAa,GAAIlxB,MACtBlE,KAAKqgC,eAGLrgC,KAAKo0B,UAELp0B,KAAKic,WAAWrN,GAhClB,GAAI0xB,GAASpgC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BmC,EAAYnC,EAAoB,IAChCwD,EAASxD,EAAoB,IAC7B0/B,EAAU1/B,EAAoB,GA+BlCqC,GAAWmR,UAAY,GAAIrR,GAO3BE,EAAWmR,UAAUuI,WAAa,SAASrN,GACrCA,GAEFjO,EAAKgF,iBAAiB,iBAAkB,SAAU,WAAY3F,KAAK4O,QAASA,IAQhFrM,EAAWmR,UAAU0gB,QAAU,WAC7B,GAAI5C,GAAMzf,SAASM,cAAc,MACjCmf,GAAI5pB,UAAY,aAChB4pB,EAAInkB,MAAM0V,SAAW,WACrByO,EAAInkB,MAAM5F,IAAM,MAChB+pB,EAAInkB,MAAM2F,OAAS,OACnBhT,KAAKwxB,IAAMA,CAEX,IAAI+O,GAAOxuB,SAASM,cAAc,MAClCkuB,GAAKlzB,MAAM0V,SAAW,WACtBwd,EAAKlzB,MAAM5F,IAAM,MACjB84B,EAAKlzB,MAAMhG,KAAO,QAClBk5B,EAAKlzB,MAAM2F,OAAS,OACpButB,EAAKlzB,MAAM0F,MAAQ,OACnBye,EAAIvf,YAAYsuB,GAGhBvgC,KAAK2D,OAAS28B,EAAO9O,GACnBgP,iBAAiB,IAEnBxgC,KAAK2D,OAAOgQ,GAAG,YAAa3T,KAAKy5B,aAAajF,KAAKx0B,OACnDA,KAAK2D,OAAOgQ,GAAG,OAAa3T,KAAK05B,QAAQlF,KAAKx0B,OAC9CA,KAAK2D,OAAOgQ,GAAG,UAAa3T,KAAK25B,WAAWnF,KAAKx0B,QAMnDuC,EAAWmR,UAAU4rB,QAAU,WAC7Bt/B,KAAK4O,QAAQwxB,gBAAiB,EAC9BpgC,KAAK4gB,SAEL5gB,KAAK2D,OAAO86B,QAAO,GACnBz+B,KAAK2D,OAAS,KAEd3D,KAAKq0B,KAAO,MAOd9xB,EAAWmR,UAAUkN,OAAS,WAC5B,GAAI5gB,KAAK4O,QAAQwxB,eAAgB,CAC/B,GAAIN,GAAS9/B,KAAKq0B,KAAK9E,IAAIwQ,kBACvB//B,MAAKwxB,IAAI7nB,YAAcm2B,IAErB9/B,KAAKwxB,IAAI7nB,YACX3J,KAAKwxB,IAAI7nB,WAAWgI,YAAY3R,KAAKwxB,KAEvCsO,EAAO7tB,YAAYjS,KAAKwxB,KAG1B,IAAIjf,GAAIvS,KAAKq0B,KAAK1zB,KAAK+zB,SAAS10B,KAAKo1B,YAEjCyK,EAAS7/B,KAAK4O,QAAQgxB,QAAQ5/B,KAAK4O,QAAQixB,QAC3CG,EAAQH,EAAOvF,KAAO,KAAO52B,EAAO1D,KAAKo1B,YAAYgK,OAAO,8BAChEY,GAAQA,EAAMzb,OAAO,GAAGrY,cAAgB8zB,EAAM7zB,UAAU,GAExDnM,KAAKwxB,IAAInkB,MAAMhG,KAAOkL,EAAI,KAC1BvS,KAAKwxB,IAAIwO,MAAQA,MAIbhgC,MAAKwxB,IAAI7nB,YACX3J,KAAKwxB,IAAI7nB,WAAWgI,YAAY3R,KAAKwxB,IAIzC,QAAO,GAOTjvB,EAAWmR,UAAU+sB,cAAgB,SAASnG,GAC5Ct6B,KAAKo1B,WAAaz0B,EAAK8F,QAAQ6zB,EAAM,QACrCt6B,KAAK4gB,UAOPre,EAAWmR,UAAUgtB,cAAgB,WACnC,MAAO,IAAIx8B,MAAKlE,KAAKo1B,WAAWxuB,YAQlCrE,EAAWmR,UAAU+lB,aAAe,SAASpwB,GAC3CrJ,KAAKqgC,YAAYhG,UAAW,EAC5Br6B,KAAKqgC,YAAYjL,WAAap1B,KAAKo1B,WAEnC/rB,EAAMs3B,kBACNt3B,EAAMD,kBAQR7G,EAAWmR,UAAUgmB,QAAU,SAAUrwB,GACvC,GAAKrJ,KAAKqgC,YAAYhG,SAAtB,CAEA,GAAIgB,GAAShyB,EAAM+xB,QAAQC,OACvB9oB,EAAIvS,KAAKq0B,KAAK1zB,KAAK+zB,SAAS10B,KAAKqgC,YAAYjL,YAAciG,EAC3Df,EAAOt6B,KAAKq0B,KAAK1zB,KAAKm0B,OAAOviB,EAEjCvS,MAAKygC,cAAcnG,GAGnBt6B,KAAKq0B,KAAKE,QAAQrH,KAAK,cACrBoN,KAAM,GAAIp2B,MAAKlE,KAAKo1B,WAAWxuB,aAGjCyC,EAAMs3B,kBACNt3B,EAAMD,mBAQR7G,EAAWmR,UAAUimB,WAAa,SAAUtwB,GACrCrJ,KAAKqgC,YAAYhG,WAGtBr6B,KAAKq0B,KAAKE,QAAQrH,KAAK,eACrBoN,KAAM,GAAIp2B,MAAKlE,KAAKo1B,WAAWxuB,aAGjCyC,EAAMs3B,kBACNt3B,EAAMD,mBAGRvJ,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAU6xB,EAAMzlB,EAASgyB,EAAKC,GACrC7gC,KAAKK,GAAKM,EAAKiE,aACf5E,KAAKq0B,KAAOA,EAEZr0B,KAAK+zB,gBACHE,YAAa,OACb6M,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXtuB,MAAO,OACP8U,SAAS,EACToP,aACE5vB,MAAOiE,IAAIlF,OAAW2G,IAAI3G,QAC1BogB,OAAQlb,IAAIlF,OAAW2G,IAAI3G,UAI/BpG,KAAK6gC,iBAAmBA,EACxB7gC,KAAKshC,aAAeV,EACpB5gC,KAAK4F,SACL5F,KAAKuhC,aACHC,SACAC,WAGFzhC,KAAKuvB,OAELvvB,KAAKgP,OAASY,MAAM,EAAGS,IAAI,GAE3BrQ,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBACpC/zB,KAAK0hC,iBAAmB,EAExB1hC,KAAKic,WAAWrN,GAChB5O,KAAK+S,MAAQjP,QAAQ,GAAK9D,KAAK4O,QAAQmE,OAAO9G,QAAQ,KAAK,KAC3DjM,KAAK2hC,SAAW3hC,KAAK+S,MACrB/S,KAAKgT,OAAShT,KAAKshC,aAAaxR,aAEhC9vB,KAAK4hC,WAAa,GAClB5hC,KAAK6hC,iBAAmB,GACxB7hC,KAAK8hC,WAAa,EAClB9hC,KAAK+hC,QAAS,EACd/hC,KAAKgiC,eAGLhiC,KAAK6zB,UACL7zB,KAAKiiC,eAAiB,EAGtBjiC,KAAKo0B,UAlEP,GAAIzzB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BmC,EAAYnC,EAAoB,IAChCwB,EAAWxB,EAAoB,GAkEnCsC,GAASkR,UAAY,GAAIrR,GAIzBG,EAASkR,UAAUwuB,SAAW,SAASta,EAAOua,GACvCniC,KAAK6zB,OAAOnuB,eAAekiB,KAC9B5nB,KAAK6zB,OAAOjM,GAASua,GAEvBniC,KAAKiiC,gBAAkB,GAGzBz/B,EAASkR,UAAU0uB,YAAc,SAASxa,EAAOua,GAC/CniC,KAAK6zB,OAAOjM,GAASua,GAGvB3/B,EAASkR,UAAU2uB,YAAc,SAASza,GACpC5nB,KAAK6zB,OAAOnuB,eAAekiB,WACtB5nB,MAAK6zB,OAAOjM,GACnB5nB,KAAKiiC,gBAAkB,IAK3Bz/B,EAASkR,UAAUuI,WAAa,SAAUrN,GACxC,GAAIA,EAAS,CACX,GAAIgS,IAAS,CACT5gB,MAAK4O,QAAQqlB,aAAerlB,EAAQqlB,aAAuC7tB,SAAxBwI,EAAQqlB,cAC7DrT,GAAS,EAEX,IAAIvS,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cAEF1N,GAAKgF,gBAAgB0I,EAAQrO,KAAK4O,QAASA,GAE3C5O,KAAK2hC,SAAW79B,QAAQ,GAAK9D,KAAK4O,QAAQmE,OAAO9G,QAAQ,KAAK,KAEhD,GAAV2U,GAAkB5gB,KAAKuvB,IAAI9Q,QAC7Bze,KAAKsiC,OACLtiC,KAAKuiC,UASX//B,EAASkR,UAAU0gB,QAAU,WAC3Bp0B,KAAKuvB,IAAI9Q,MAAQ1M,SAASM,cAAc,OACxCrS,KAAKuvB,IAAI9Q,MAAMpR,MAAM0F,MAAQ/S,KAAK4O,QAAQmE,MAC1C/S,KAAKuvB,IAAI9Q,MAAMpR,MAAM2F,OAAShT,KAAKgT,OAEnChT,KAAKuvB,IAAIiT,cAAgBzwB,SAASM,cAAc,OAChDrS,KAAKuvB,IAAIiT,cAAcn1B,MAAM0F,MAAQ,OACrC/S,KAAKuvB,IAAIiT,cAAcn1B,MAAM2F,OAAShT,KAAKgT,OAG3ChT,KAAK4gC,IAAM7uB,SAASC,gBAAgB,6BAA6B,OACjEhS,KAAK4gC,IAAIvzB,MAAM0V,SAAW,WAC1B/iB,KAAK4gC,IAAIvzB,MAAM5F,IAAM,MACrBzH,KAAK4gC,IAAIvzB,MAAM2F,OAAS,OACxBhT,KAAK4gC,IAAIvzB,MAAM0F,MAAQ,OACvB/S,KAAK4gC,IAAIvzB,MAAMo1B,QAAU,QACzBziC,KAAKuvB,IAAI9Q,MAAMxM,YAAYjS,KAAK4gC,MAGlCp+B,EAASkR,UAAUgvB,kBAAoB,WACrC9hC,EAAQyQ,gBAAgBrR,KAAKgiC,YAE7B,IAAIzvB,GACA8uB,EAAYrhC,KAAK4O,QAAQyyB,UACzBsB,EAAa,GACbC,EAAa,EACbpwB,EAAIowB,EAAa,GAAMD,CAGzBpwB,GAD8B,QAA5BvS,KAAK4O,QAAQqlB,YACX2O,EAGA5iC,KAAK+S,MAAQsuB,EAAYuB,CAG/B,KAAK,GAAIhM,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KACO,GAAhC52B,KAAK6zB,OAAO+C,GAAS/O,SAAkEzhB,SAA9CpG,KAAK6gC,iBAAiB/J,WAAWF,IAAuE,GAA7C52B,KAAK6gC,iBAAiB/J,WAAWF,KACvI52B,KAAK6zB,OAAO+C,GAASiM,SAAStwB,EAAGC,EAAGxS,KAAKgiC,YAAahiC,KAAK4gC,IAAKS,EAAWsB,GAC3EnwB,GAAKmwB,EAAaC,GAKxBhiC,GAAQ8Q,gBAAgB1R,KAAKgiC,cAM/Bx/B,EAASkR,UAAU6uB,KAAO,WACnBviC,KAAKuvB,IAAI9Q,MAAM9U,aACc,QAA5B3J,KAAK4O,QAAQqlB,YACfj0B,KAAKq0B,KAAK9E,IAAIloB,KAAK4K,YAAYjS,KAAKuvB,IAAI9Q,OAGxCze,KAAKq0B,KAAK9E,IAAI/I,MAAMvU,YAAYjS,KAAKuvB,IAAI9Q,QAIxCze,KAAKuvB,IAAIiT,cAAc74B,YAC1B3J,KAAKq0B,KAAK9E,IAAIuT,qBAAqB7wB,YAAYjS,KAAKuvB,IAAIiT,gBAO5DhgC,EAASkR,UAAU4uB,KAAO,WACpBtiC,KAAKuvB,IAAI9Q,MAAM9U,YACjB3J,KAAKuvB,IAAI9Q,MAAM9U,WAAWgI,YAAY3R,KAAKuvB,IAAI9Q,OAG7Cze,KAAKuvB,IAAIiT,cAAc74B,YACzB3J,KAAKuvB,IAAIiT,cAAc74B,WAAWgI,YAAY3R,KAAKuvB,IAAIiT,gBAU3DhgC,EAASkR,UAAUwf,SAAW,SAAUtjB,EAAOS,GAC7CrQ,KAAKgP,MAAMY,MAAQA,EACnB5P,KAAKgP,MAAMqB,IAAMA,GAOnB7N,EAASkR,UAAUkN,OAAS,WAC1B,GAAImiB,IAAe,EACfC,EAAe,CACnB,KAAK,GAAIpM,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KACO,GAAhC52B,KAAK6zB,OAAO+C,GAAS/O,SAAkEzhB,SAA9CpG,KAAK6gC,iBAAiB/J,WAAWF,IAAuE,GAA7C52B,KAAK6gC,iBAAiB/J,WAAWF,IACvIoM,IAIN,IAA2B,GAAvBhjC,KAAKiiC,gBAAuC,GAAhBe,EAC9BhjC,KAAKsiC,WAEF,CACHtiC,KAAKuiC,OACLviC,KAAKgT,OAASlP,OAAO9D,KAAKshC,aAAaj0B,MAAM2F,OAAO/G,QAAQ,KAAK,KAGjEjM,KAAKuvB,IAAIiT,cAAcn1B,MAAM2F,OAAShT,KAAKgT,OAAS,KACpDhT,KAAK+S,MAAgC,GAAxB/S,KAAK4O,QAAQiZ,QAAkB/jB,QAAQ,GAAK9D,KAAK4O,QAAQmE,OAAO9G,QAAQ,KAAK,KAAO,CAEjG,IAAIrG,GAAQ5F,KAAK4F,MACb6Y,EAAQze,KAAKuvB,IAAI9Q,KAGrBA,GAAM7W,UAAY,WAGlB5H,KAAKijC,oBAEL,IAAIhP,GAAcj0B,KAAK4O,QAAQqlB,YAC3B6M,EAAkB9gC,KAAK4O,QAAQkyB,gBAC/BC,EAAkB/gC,KAAK4O,QAAQmyB,eAGnCn7B,GAAMs9B,iBAAmBpC,EAAkBl7B,EAAMu9B,gBAAkB,EACnEv9B,EAAMw9B,iBAAmBrC,EAAkBn7B,EAAMy9B,gBAAkB,EAEnEz9B,EAAM09B,eAAiBtjC,KAAKq0B,KAAK9E,IAAIuT,qBAAqBlT,YAAc5vB,KAAK8hC,WAAa9hC,KAAK+S,MAAQ,EAAI/S,KAAK4O,QAAQsyB,iBACxHt7B,EAAM29B,gBAAkB,EACxB39B,EAAM49B,eAAiBxjC,KAAKq0B,KAAK9E,IAAIuT,qBAAqBlT,YAAc5vB,KAAK8hC,WAAa9hC,KAAK+S,MAAQ,EAAI/S,KAAK4O,QAAQqyB,iBACxHr7B,EAAM69B,gBAAkB,EAGL,QAAfxP,GACFxV,EAAMpR,MAAM5F,IAAM,IAClBgX,EAAMpR,MAAMhG,KAAO,IACnBoX,EAAMpR,MAAMoV,OAAS,GACrBhE,EAAMpR,MAAM0F,MAAQ/S,KAAK+S,MAAQ,KACjC0L,EAAMpR,MAAM2F,OAAShT,KAAKgT,OAAS,OAGnCyL,EAAMpR,MAAM5F,IAAM,GAClBgX,EAAMpR,MAAMoV,OAAS,IACrBhE,EAAMpR,MAAMhG,KAAO,IACnBoX,EAAMpR,MAAM0F,MAAQ/S,KAAK+S,MAAQ,KACjC0L,EAAMpR,MAAM2F,OAAShT,KAAKgT,OAAS,MAErC+vB,EAAe/iC,KAAK0jC,gBACM,GAAtB1jC,KAAK4O,QAAQoyB,OACfhhC,KAAK0iC,oBAGT,MAAOK,IAOTvgC,EAASkR,UAAUgwB,cAAgB,WACjC9iC,EAAQyQ,gBAAgBrR,KAAKuhC,YAAYC,OACzC5gC,EAAQyQ,gBAAgBrR,KAAKuhC,YAAYE,OAEzC,IAAIxN,GAAcj0B,KAAK4O,QAAqB,YAGxCmoB,EAAc/2B,KAAK+hC,OAAS/hC,KAAK4F,MAAMy9B,iBAAmB,GAAKrjC,KAAK6hC,iBAEpEva,EAAO,GAAI5lB,GAAS1B,KAAKgP,MAAMY,MAAO5P,KAAKgP,MAAMqB,IAAK0mB,EAAa/2B,KAAKuvB,IAAI9Q,MAAMqR,aAAc9vB,KAAK4O,QAAQqoB,YAAYj3B,KAAK4O,QAAQqlB,aAC1Ij0B,MAAKsnB,KAAOA,CAGZ,IAAIsa,IAAc5hC,KAAKuvB,IAAI9Q,MAAMqR,aAAgBxI,EAAKiQ,WAAav3B,KAAKuvB,IAAI9Q,MAAMqR,aAAexI,EAAKgR,gBAAoBhR,EAAKgR,YAAchR,EAAKiQ,WAAajQ,EAAKA,KACpKtnB,MAAK4hC,WAAaA,CAElB,IAAI+B,GAAgB3jC,KAAKgT,OAAS4uB,EAC9BgC,EAAiB,CAErB,IAAmB,GAAf5jC,KAAK+hC,OAAiB,CACxBH,EAAa5hC,KAAK6hC,iBAClB+B,EAAiB9+B,KAAKkoB,MAAOhtB,KAAKuvB,IAAI9Q,MAAMqR,aAAe8R,EAAc+B,EACzE,KAAK,GAAIv+B,GAAI,EAAO,GAAMw+B,EAAVx+B,EAA0BA,IACxCkiB,EAAKmR,UAEPkL,GAAgB3jC,KAAKgT,OAAS4uB,MAG9B+B,IAAiB,GAInB3jC,MAAK6jC,YAAcvc,EAAKgQ,SACxB,IAAIwM,GAAiB,EAGjB/2B,EAAM,CAEV/M,MAAK+jC,aAAe,CAEpB,KADA,GAAIvxB,GAAI,EACDzF,EAAMjI,KAAKkoB,MAAM2W,IAAgB,CACtCrc,EAAKE,OACLhV,EAAI1N,KAAKkoB,MAAMjgB,EAAM60B,GACrBkC,EAAiB/2B,EAAM60B,CACvB,IAAIjJ,GAAUrR,EAAKqR,WAEf34B,KAAK4O,QAAyB,iBAAgB,GAAX+pB,GAAmC,GAAf34B,KAAK+hC,QAAsD,GAAnC/hC,KAAK4O,QAAyB,kBAC/G5O,KAAKgkC,aAAaxxB,EAAI,EAAG8U,EAAKC,aAAc0M,EAAa,cAAej0B,KAAK4F,MAAMu9B,iBAGjFxK,GAAW34B,KAAK4O,QAAyB,iBAAoB,GAAf5O,KAAK+hC,QAChB,GAAnC/hC,KAAK4O,QAAyB,iBAA6B,GAAf5O,KAAK+hC,QAA8B,GAAXpJ,GAClEnmB,GAAK,GACPxS,KAAKgkC,aAAaxxB,EAAI,EAAG8U,EAAKC,aAAc0M,EAAa,cAAej0B,KAAK4F,MAAMy9B,iBAErFrjC,KAAKikC,YAAYzxB,EAAGyhB,EAAa,wBAAyBj0B,KAAK4O,QAAQqyB,iBAAkBjhC,KAAK4F,MAAM49B,iBAGpGxjC,KAAKikC,YAAYzxB,EAAGyhB,EAAa,wBAAyBj0B,KAAK4O,QAAQsyB,iBAAkBlhC,KAAK4F,MAAM09B,gBAGtGv2B,IAIA/M,KAAK0hC,iBADY,GAAf1hC,KAAK+hC,OACiBvvB,GAAKxS,KAAK6jC,YAAcvc,EAAK4P,SAG7Bl3B,KAAKuvB,IAAI9Q,MAAMqR,aAAexI,EAAKgR,WAG7D,IAAIxP,GAA+B,GAAtB9oB,KAAK4O,QAAQoyB,MAAgBhhC,KAAK4O,QAAQyyB,UAAYrhC,KAAK4O,QAAQuyB,aAAe,GAAKnhC,KAAK4O,QAAQuyB,aAAe,EAEhI,OAAInhC,MAAK+jC,aAAgB/jC,KAAK+S,MAAQ+V,GAAmC,GAAxB9oB,KAAK4O,QAAQiZ,SAC5D7nB,KAAK+S,MAAQ/S,KAAK+jC,aAAejb,EACjC9oB,KAAK4O,QAAQmE,MAAQ/S,KAAK+S,MAAQ,KAClCnS,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYC,OACzC5gC,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYE,QACzCzhC,KAAK4gB,UACE,GAGA5gB,KAAK+jC,aAAgB/jC,KAAK+S,MAAQ+V,GAAmC,GAAxB9oB,KAAK4O,QAAQiZ,SAAmB7nB,KAAK+S,MAAQ/S,KAAK2hC,UACtG3hC,KAAK+S,MAAQjO,KAAKiI,IAAI/M,KAAK2hC,SAAS3hC,KAAK+jC,aAAejb,GACxD9oB,KAAK4O,QAAQmE,MAAQ/S,KAAK+S,MAAQ,KAClCnS,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYC,OACzC5gC,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYE,QACzCzhC,KAAK4gB,UACE,IAGPhgB,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYC,OACzC5gC,EAAQ8Q,gBAAgB1R,KAAKuhC,YAAYE,SAClC,IAIXj/B,EAASkR,UAAUwwB,aAAe,SAAUj9B,GAC1C,GAAIk9B,GAAgBnkC,KAAK6jC,YAAc58B,EACnCm9B,EAAiBD,EAAgBnkC,KAAK0hC,gBAC1C,OAAO0C,IAYT5hC,EAASkR,UAAUswB,aAAe,SAAUxxB,EAAGkW,EAAMuL,EAAarsB,EAAWy8B,GAE3E,GAAIzc,GAAQhnB,EAAQsR,cAAc,MAAMlS,KAAKuhC,YAAYE,OAAQzhC,KAAKuvB,IAAI9Q,MAC1EmJ,GAAMhgB,UAAYA,EAClBggB,EAAMxE,UAAYsF,EACC,QAAfuL,GACFrM,EAAMva,MAAMhG,KAAO,IAAMrH,KAAK4O,QAAQuyB,aAAe,KACrDvZ,EAAMva,MAAMoa,UAAY,UAGxBG,EAAMva,MAAMmZ,MAAQ,IAAMxmB,KAAK4O,QAAQuyB,aAAe,KACtDvZ,EAAMva,MAAMoa,UAAY,QAG1BG,EAAMva,MAAM5F,IAAM+K,EAAI,GAAM6xB,EAAkBrkC,KAAK4O,QAAQwyB,aAAe,KAE1E1Y,GAAQ,EAER,IAAI4b,GAAex/B,KAAKiI,IAAI/M,KAAK4F,MAAM2+B,eAAevkC,KAAK4F,MAAM4+B,eAC7DxkC,MAAK+jC,aAAerb,EAAKnjB,OAAS++B,IACpCtkC,KAAK+jC,aAAerb,EAAKnjB,OAAS++B,IAYtC9hC,EAASkR,UAAUuwB,YAAc,SAAUzxB,EAAGyhB,EAAarsB,EAAWkhB,EAAQ/V,GAC5E,GAAmB,GAAf/S,KAAK+hC,OAAgB,CACvB,GAAI1S,GAAOzuB,EAAQsR,cAAc,MAAMlS,KAAKuhC,YAAYC,MAAOxhC,KAAKuvB,IAAIiT,cACxEnT,GAAKznB,UAAYA,EACjBynB,EAAKjM,UAAY,GAEE,QAAf6Q,EACF5E,EAAKhiB,MAAMhG,KAAQrH,KAAK+S,MAAQ+V,EAAU,KAG1CuG,EAAKhiB,MAAMmZ,MAASxmB,KAAK+S,MAAQ+V,EAAU,KAG7CuG,EAAKhiB,MAAM0F,MAAQA,EAAQ,KAC3Bsc,EAAKhiB,MAAM5F,IAAM+K,EAAI,OAazBhQ,EAASkR,UAAUuvB,mBAAqB,WAEtC,KAAM,mBAAqBjjC,MAAK4F,OAAQ,CACtC,GAAI6+B,GAAY1yB,SAAS2yB,eAAe,KACpCC,EAAmB5yB,SAASM,cAAc,MAC9CsyB,GAAiB/8B,UAAY,sBAC7B+8B,EAAiB1yB,YAAYwyB,GAC7BzkC,KAAKuvB,IAAI9Q,MAAMxM,YAAY0yB,GAE3B3kC,KAAK4F,MAAMu9B,gBAAkBwB,EAAiB3gB,aAC9ChkB,KAAK4F,MAAM4+B,eAAiBG,EAAiBhmB,YAE7C3e,KAAKuvB,IAAI9Q,MAAM9M,YAAYgzB,GAG7B,KAAM,mBAAqB3kC,MAAK4F,OAAQ,CACtC,GAAIg/B,GAAY7yB,SAAS2yB,eAAe,KACpCG,EAAmB9yB,SAASM,cAAc,MAC9CwyB,GAAiBj9B,UAAY,sBAC7Bi9B,EAAiB5yB,YAAY2yB,GAC7B5kC,KAAKuvB,IAAI9Q,MAAMxM,YAAY4yB,GAE3B7kC,KAAK4F,MAAMy9B,gBAAkBwB,EAAiB7gB,aAC9ChkB,KAAK4F,MAAM2+B,eAAiBM,EAAiBlmB,YAE7C3e,KAAKuvB,IAAI9Q,MAAM9M,YAAYkzB,KAU/BriC,EAASkR,UAAU+gB,KAAO,SAASwK,GACjC,MAAOj/B,MAAKsnB,KAAKmN,KAAKwK,IAGxBp/B,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAW9B,QAASuC,GAAYgQ,EAAOmkB,EAAShoB,EAASk2B,GAC5C9kC,KAAKK,GAAKu2B,CACV,IAAIvoB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5FrO,MAAK4O,QAAUjO,EAAKyN,sBAAsBC,EAAOO,GACjD5O,KAAK+kC,kBAAwC3+B,SAApBqM,EAAM7K,UAC/B5H,KAAK8kC,yBAA2BA,EAChC9kC,KAAKglC,aAAe,EACpBhlC,KAAKkV,OAAOzC,GACkB,GAA1BzS,KAAK+kC,oBACP/kC,KAAK8kC,yBAAyB,IAAM,GAEtC9kC,KAAKs1B,aACLt1B,KAAK6nB,QAA4BzhB,SAAlBqM,EAAMoV,SAAwB,EAAOpV,EAAMoV,QArB5D,GAAIlnB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,EAuBlCuC,GAAWiR,UAAU+hB,SAAW,SAAS1zB,GAC1B,MAATA,GACF/B,KAAKs1B,UAAYvzB,EACQ,GAArB/B,KAAK4O,QAAQ4H,MACfxW,KAAKs1B,UAAU9e,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAEoN,EAAIvM,EAAEuM,KAIrDvS,KAAKs1B,cAIT7yB,EAAWiR,UAAUuxB,gBAAkB,SAASvgB,GAC9C1kB,KAAKglC,aAAetgB,GAGtBjiB,EAAWiR,UAAUuI,WAAa,SAASrN,GACzC,GAAgBxI,SAAZwI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3D1N,GAAKoF,oBAAoBsI,EAAQrO,KAAK4O,QAASA,GAE/CjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,cACxCjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,cACxCjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,UAEpCA,EAAQs2B,YACuB,gBAAtBt2B,GAAQs2B,YACbt2B,EAAQs2B,WAAWC,kBACqB,WAAtCv2B,EAAQs2B,WAAWC,gBACrBnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,EAEa,WAAtCx2B,EAAQs2B,WAAWC,gBAC1BnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,GAGhCplC,KAAK4O,QAAQs2B,WAAWC,gBAAkB,cAC1CnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,OAQ5C3iC,EAAWiR,UAAUwB,OAAS,SAASzC,GACrCzS,KAAKyS,MAAQA,EACbzS,KAAKovB,QAAU3c,EAAM2c,SAAW,QAChCpvB,KAAK4H,UAAY6K,EAAM7K,WAAa5H,KAAK4H,WAAa,aAAe5H,KAAK8kC,yBAAyB,GAAK,GACxG9kC,KAAK6nB,QAA4BzhB,SAAlBqM,EAAMoV,SAAwB,EAAOpV,EAAMoV,QAC1D7nB,KAAKic,WAAWxJ,EAAM7D,UAGxBnM,EAAWiR,UAAUmvB,SAAW,SAAStwB,EAAGC,EAAGlB,EAAe+zB,EAAchE,EAAWsB,GACrF,GACI2C,GAAMC,EADNC,EAA0B,GAAb7C,EAGb8C,EAAU7kC,EAAQgR,cAAc,OAAQN,EAAe+zB,EAO3D,IANAI,EAAQ7yB,eAAe,KAAM,IAAKL,GAClCkzB,EAAQ7yB,eAAe,KAAM,IAAKJ,EAAIgzB,GACtCC,EAAQ7yB,eAAe,KAAM,QAASyuB,GACtCoE,EAAQ7yB,eAAe,KAAM,SAAU,EAAE4yB,GACzCC,EAAQ7yB,eAAe,KAAM,QAAS,WAEZ,QAAtB5S,KAAK4O,QAAQvB,MACfi4B,EAAO1kC,EAAQgR,cAAc,OAAQN,EAAe+zB,GACpDC,EAAK1yB,eAAe,KAAM,QAAS5S,KAAK4H,WACxC09B,EAAK1yB,eAAe,KAAM,IAAK,IAAML,EAAI,IAAIC,EAAE,MAAQD,EAAI8uB,GAAa,IAAI7uB,GACzC,GAA/BxS,KAAK4O,QAAQ82B,OAAO72B,UACtB02B,EAAW3kC,EAAQgR,cAAc,OAAQN,EAAe+zB,GACjB,OAAnCrlC,KAAK4O,QAAQ82B,OAAOzR,YACtBsR,EAAS3yB,eAAe,KAAM,IAAK,IAAIL,EAAE,MAAQC,EAAIgzB,GACnD,IAAIjzB,EAAE,IAAIC,EAAE,MAAOD,EAAI8uB,GAAa,IAAI7uB,EAAE,MAAOD,EAAI8uB,GAAa,KAAO7uB,EAAIgzB,IAG/ED,EAAS3yB,eAAe,KAAM,IAAK,IAAIL,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAIgzB,GAAc,MACzBjzB,EAAI8uB,GAAa,KAAO7uB,EAAIgzB,GAClC,KAAMjzB,EAAI8uB,GAAa,IAAI7uB,GAE/B+yB,EAAS3yB,eAAe,KAAM,QAAS5S,KAAK4H,UAAY,cAGnB,GAAnC5H,KAAK4O,QAAQ+D,WAAW9D,SAC1BjO,EAAQ0R,UAAUC,EAAI,GAAM8uB,EAAU7uB,EAAGxS,KAAMsR,EAAe+zB,OAG7D,CACH,GAAIM,GAAW7gC,KAAKkoB,MAAM,GAAMqU,GAC5BuE,EAAa9gC,KAAKkoB,MAAM,GAAM2V,GAC9BkD,EAAa/gC,KAAKkoB,MAAM,IAAO2V,GAE/B7Z,EAAShkB,KAAKkoB,OAAOqU,EAAa,EAAIsE,GAAW,EAErD/kC,GAAQkS,QAAQP,EAAI,GAAIozB,EAAW7c,EAAYtW,EAAIgzB,EAAaI,EAAa,EAAGD,EAAUC,EAAY5lC,KAAK4H,UAAY,OAAQ0J,EAAe+zB,GAC9IzkC,EAAQkS,QAAQP,EAAI,IAAIozB,EAAW7c,EAAS,EAAGtW,EAAIgzB,EAAaK,EAAa,EAAGF,EAAUE,EAAY7lC,KAAK4H,UAAY,OAAQ0J,EAAe+zB,KAUlJ5iC,EAAWiR,UAAUijB,UAAY,SAAS0K,EAAWsB,GACnD,GAAI/B,GAAM7uB,SAASC,gBAAgB,6BAA6B,MAEhE,OADAhS,MAAK6iC,SAAS,EAAE,GAAIF,KAAc/B,EAAIS,EAAUsB,IACxCmD,KAAMlF,EAAKhZ,MAAO5nB,KAAKovB,QAAS6E,YAAYj0B,KAAK4O,QAAQm3B,mBAGnElmC,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAY9B,QAASwC,GAAOk0B,EAAS1jB,EAAMmiB,GAC7Br1B,KAAK42B,QAAUA,EAEf52B,KAAKq1B,QAAUA,EAEfr1B,KAAKuvB,OACLvvB,KAAK4F,OACHgiB,OACE7U,MAAO,EACPC,OAAQ,IAGZhT,KAAK4H,UAAY,KAEjB5H,KAAK+B,SACL/B,KAAKgmC,gBACLhmC,KAAK+O,cACHk3B,WACAC,UAGFlmC,KAAKo0B,UAELp0B,KAAKsY,QAAQpF,GAjCf,GAAIvS,GAAOT,EAAoB,GAC3B0B,EAAQ1B,EAAoB,IAC5BkC,EAAYlC,EAAoB,GAsCpCwC,GAAMgR,UAAU0gB,QAAU,WACxB,GAAIxM,GAAQ7V,SAASM,cAAc,MACnCuV,GAAMhgB,UAAY,SAClB5H,KAAKuvB,IAAI3H,MAAQA,CAEjB,IAAIue,GAAQp0B,SAASM,cAAc,MACnC8zB,GAAMv+B,UAAY,QAClBggB,EAAM3V,YAAYk0B,GAClBnmC,KAAKuvB,IAAI4W,MAAQA,CAEjB,IAAIC,GAAar0B,SAASM,cAAc,MACxC+zB,GAAWx+B,UAAY,QACvBw+B,EAAW,kBAAoBpmC,KAC/BA,KAAKuvB,IAAI6W,WAAaA,EAEtBpmC,KAAKuvB,IAAI5jB,WAAaoG,SAASM,cAAc,OAC7CrS,KAAKuvB,IAAI5jB,WAAW/D,UAAY,QAEhC5H,KAAKuvB,IAAIgN,KAAOxqB,SAASM,cAAc,OACvCrS,KAAKuvB,IAAIgN,KAAK30B,UAAY,QAK1B5H,KAAKuvB,IAAI8W,OAASt0B,SAASM,cAAc,OACzCrS,KAAKuvB,IAAI8W,OAAOh5B,MAAMypB,WAAa,SACnC92B,KAAKuvB,IAAI8W,OAAOjjB,UAAY,IAC5BpjB,KAAKuvB,IAAI5jB,WAAWsG,YAAYjS,KAAKuvB,IAAI8W,SAO3C3jC,EAAMgR,UAAU4E,QAAU,SAASpF,GAEjC,GAAIkc,GAAUlc,GAAQA,EAAKkc,OACvBA,aAAmBkX,SACrBtmC,KAAKuvB,IAAI4W,MAAMl0B,YAAYmd,GAG3BpvB,KAAKuvB,IAAI4W,MAAM/iB,UADIhd,SAAZgpB,GAAqC,OAAZA,EACLA,EAGApvB,KAAK42B,SAAW,GAI7C52B,KAAKuvB,IAAI3H,MAAMoY,MAAQ9sB,GAAQA,EAAK8sB,OAAS,GAExChgC,KAAKuvB,IAAI4W,MAAMrjB,WAIlBniB,EAAKsH,gBAAgBjI,KAAKuvB,IAAI4W,MAAO,UAHrCxlC,EAAKgH,aAAa3H,KAAKuvB,IAAI4W,MAAO,SAOpC,IAAIv+B,GAAYsL,GAAQA,EAAKtL,WAAa,IACtCA,IAAa5H,KAAK4H,YAChB5H,KAAK4H,YACPjH,EAAKsH,gBAAgBjI,KAAKuvB,IAAI3H,MAAO5nB,KAAK4H,WAC1CjH,EAAKsH,gBAAgBjI,KAAKuvB,IAAI6W,WAAYpmC,KAAK4H,WAC/CjH,EAAKsH,gBAAgBjI,KAAKuvB,IAAI5jB,WAAY3L,KAAK4H,WAC/CjH,EAAKsH,gBAAgBjI,KAAKuvB,IAAIgN,KAAMv8B,KAAK4H,YAE3CjH,EAAKgH,aAAa3H,KAAKuvB,IAAI3H,MAAOhgB,GAClCjH,EAAKgH,aAAa3H,KAAKuvB,IAAI6W,WAAYx+B,GACvCjH,EAAKgH,aAAa3H,KAAKuvB,IAAI5jB,WAAY/D,GACvCjH,EAAKgH,aAAa3H,KAAKuvB,IAAIgN,KAAM30B,GACjC5H,KAAK4H,UAAYA,GAIf5H,KAAKqN,QACP1M,EAAKkN,cAAc7N,KAAKuvB,IAAI3H,MAAO5nB,KAAKqN,OACxCrN,KAAKqN,MAAQ,MAEX6F,GAAQA,EAAK7F,QACf1M,EAAK+M,WAAW1N,KAAKuvB,IAAI3H,MAAO1U,EAAK7F,OACrCrN,KAAKqN,MAAQ6F,EAAK7F,QAQtB3K,EAAMgR,UAAU6yB,cAAgB,WAC9B,MAAOvmC,MAAK4F,MAAMgiB,MAAM7U,OAW1BrQ,EAAMgR,UAAUkN,OAAS,SAAS5R,EAAOiK,EAAQutB,GAC/C,GAAIhH,IAAU,CAEdx/B,MAAKgmC,aAAehmC,KAAKymC,oBAAoBzmC,KAAK+O,aAAc/O,KAAKgmC,aAAch3B,EAInF,IAAI03B,GAAe1mC,KAAKuvB,IAAI8W,OAAOriB,YAC/B0iB,IAAgB1mC,KAAK2mC,mBACvB3mC,KAAK2mC,iBAAmBD,EAExB/lC,EAAKyH,QAAQpI,KAAK+B,MAAO,SAAU+S,GACjCA,EAAK8xB,OAAQ,EACT9xB,EAAK+xB,WAAW/xB,EAAK8L,WAG3B4lB,GAAU,GAIRxmC,KAAKq1B,QAAQzmB,QAAQhN,MACvBA,EAAMA,MAAM5B,KAAKgmC,aAAc/sB,EAAQutB,GAGvC5kC,EAAMg7B,QAAQ58B,KAAKgmC,aAAc/sB,EAInC,IAAIjG,GACAgzB,EAAehmC,KAAKgmC,YACxB,IAAIA,EAAazgC,OAAQ,CACvB,GAAI+F,GAAM06B,EAAa,GAAGv+B,IACtBsF,EAAMi5B,EAAa,GAAGv+B,IAAMu+B,EAAa,GAAGhzB,MAKhD,IAJArS,EAAKyH,QAAQ49B,EAAc,SAAUlxB,GACnCxJ,EAAMxG,KAAKwG,IAAIA,EAAKwJ,EAAKrN,KACzBsF,EAAMjI,KAAKiI,IAAIA,EAAM+H,EAAKrN,IAAMqN,EAAK9B,UAEnC1H,EAAM2N,EAAOsjB,KAAM,CAErB,GAAIzT,GAASxd,EAAM2N,EAAOsjB,IAC1BxvB,IAAO+b,EACPnoB,EAAKyH,QAAQ49B,EAAc,SAAUlxB,GACnCA,EAAKrN,KAAOqhB,IAGhB9V,EAASjG,EAAMkM,EAAOnE,KAAK8P,SAAW,MAGtC5R,GAASiG,EAAOsjB,KAAOtjB,EAAOnE,KAAK8P,QAErC5R,GAASlO,KAAKiI,IAAIiG,EAAQhT,KAAK4F,MAAMgiB,MAAM5U,OAG3C,IAAIozB,GAAapmC,KAAKuvB,IAAI6W,UAC1BpmC,MAAKyH,IAAM2+B,EAAWU,UACtB9mC,KAAKqH,KAAO++B,EAAWW,WACvB/mC,KAAK+S,MAAQqzB,EAAWxW,YACxB4P,EAAU7+B,EAAK6H,eAAexI,KAAM,SAAUgT,IAAWwsB,EAGzDA,EAAU7+B,EAAK6H,eAAexI,KAAK4F,MAAMgiB,MAAO,QAAS5nB,KAAKuvB,IAAI4W,MAAMxnB,cAAgB6gB,EACxFA,EAAU7+B,EAAK6H,eAAexI,KAAK4F,MAAMgiB,MAAO,SAAU5nB,KAAKuvB,IAAI4W,MAAMniB,eAAiBwb,EAG1Fx/B,KAAKuvB,IAAI5jB,WAAW0B,MAAM2F,OAAUA,EAAS,KAC7ChT,KAAKuvB,IAAI6W,WAAW/4B,MAAM2F,OAAUA,EAAS,KAC7ChT,KAAKuvB,IAAI3H,MAAMva,MAAM2F,OAASA,EAAS,IAGvC,KAAK,GAAI5N,GAAI,EAAG4hC,EAAKhnC,KAAKgmC,aAAazgC,OAAYyhC,EAAJ5hC,EAAQA,IAAK,CAC1D,GAAI0P,GAAO9U,KAAKgmC,aAAa5gC,EAC7B0P,GAAKmyB,cAGP,MAAOzH,IAMT98B,EAAMgR,UAAU6uB,KAAO,WAChBviC,KAAKuvB,IAAI3H,MAAMje,YAClB3J,KAAKq1B,QAAQ9F,IAAI2X,SAASj1B,YAAYjS,KAAKuvB,IAAI3H,OAG5C5nB,KAAKuvB,IAAI6W,WAAWz8B,YACvB3J,KAAKq1B,QAAQ9F,IAAI6W,WAAWn0B,YAAYjS,KAAKuvB,IAAI6W,YAG9CpmC,KAAKuvB,IAAI5jB,WAAWhC,YACvB3J,KAAKq1B,QAAQ9F,IAAI5jB,WAAWsG,YAAYjS,KAAKuvB,IAAI5jB,YAG9C3L,KAAKuvB,IAAIgN,KAAK5yB,YACjB3J,KAAKq1B,QAAQ9F,IAAIgN,KAAKtqB,YAAYjS,KAAKuvB,IAAIgN,OAO/C75B,EAAMgR,UAAU4uB,KAAO,WACrB,GAAI1a,GAAQ5nB,KAAKuvB,IAAI3H,KACjBA,GAAMje,YACRie,EAAMje,WAAWgI,YAAYiW,EAG/B,IAAIwe,GAAapmC,KAAKuvB,IAAI6W,UACtBA,GAAWz8B,YACby8B,EAAWz8B,WAAWgI,YAAYy0B,EAGpC,IAAIz6B,GAAa3L,KAAKuvB,IAAI5jB,UACtBA,GAAWhC,YACbgC,EAAWhC,WAAWgI,YAAYhG,EAGpC,IAAI4wB,GAAOv8B,KAAKuvB,IAAIgN,IAChBA,GAAK5yB,YACP4yB,EAAK5yB,WAAWgI,YAAY4qB,IAQhC75B,EAAMgR,UAAUD,IAAM,SAASqB,GAI7B,GAHA9U,KAAK+B,MAAM+S,EAAKzU,IAAMyU,EACtBA,EAAKqyB,UAAUnnC,MAEwB,IAAnCA,KAAKgmC,aAAaz/B,QAAQuO,GAAa,CACzC,GAAI9F,GAAQhP,KAAKq1B,QAAQhB,KAAKrlB,KAC9BhP,MAAKonC,gBAAgBtyB,EAAM9U,KAAKgmC,aAAch3B,KAQlDtM,EAAMgR,UAAUiD,OAAS,SAAS7B,SACzB9U,MAAK+B,MAAM+S,EAAKzU,IACvByU,EAAKqyB,UAAUnnC,KAAKq1B,QAGpB,IAAIntB,GAAQlI,KAAKgmC,aAAaz/B,QAAQuO,EACzB,KAAT5M,GAAalI,KAAKgmC,aAAa79B,OAAOD,EAAO,IASnDxF,EAAMgR,UAAU2zB,kBAAoB,SAASvyB,GAC3C9U,KAAKq1B,QAAQiS,WAAWxyB,EAAKzU,KAM/BqC,EAAMgR,UAAUoC,MAAQ,WACtB,GAAIvN,GAAQ5H,EAAK2H,QAAQtI,KAAK+B,MAC9B/B,MAAK+O,aAAak3B,QAAU19B,EAC5BvI,KAAK+O,aAAam3B,MAAQlmC,KAAKunC,qBAAqBh/B,GAEpD3G,EAAMq6B,aAAaj8B,KAAK+O,aAAak3B,SACrCrkC,EAAMs6B,WAAWl8B,KAAK+O,aAAam3B,QASrCxjC,EAAMgR,UAAU6zB,qBAAuB,SAASh/B,GAG9C,IAAK,GAFDi/B,MAEKpiC,EAAI,EAAGA,EAAImD,EAAMhD,OAAQH,IAC5BmD,EAAMnD,YAAchD,IACtBolC,EAASz/B,KAAKQ,EAAMnD,GAGxB,OAAOoiC,IAWT9kC,EAAMgR,UAAU+yB,oBAAsB,SAAS13B,EAAci3B,EAAch3B,GACzE,GAAIy4B,GAEAriC,EADAsiC,IAKJ,IAAI1B,EAAazgC,OAAS,EACxB,IAAKH,EAAI,EAAGA,EAAI4gC,EAAazgC,OAAQH,IACnCpF,KAAKonC,gBAAgBpB,EAAa5gC,GAAIsiC,EAAiB14B,EAMzDy4B,GAD4B,GAA1BC,EAAgBniC,OACE5E,EAAKmO,aAAaC,EAAak3B,QAASj3B,EAAO,OAAO,SAGtDD,EAAak3B,QAAQ1/B,QAAQmhC,EAAgB,GAInE,IAAIC,GAAkBhnC,EAAKmO,aAAaC,EAAam3B,MAAOl3B,EAAO,OAAO,MAG1E,IAAyB,IAArBy4B,EAAyB,CAC3B,IAAKriC,EAAIqiC,EAAmBriC,GAAK,IAC3BpF,KAAK4nC,kBAAkB74B,EAAak3B,QAAQ7gC,GAAIsiC,EAAiB14B,GADnC5J,KAGpC,IAAKA,EAAIqiC,EAAoB,EAAGriC,EAAI2J,EAAak3B,QAAQ1gC,SACnDvF,KAAK4nC,kBAAkB74B,EAAak3B,QAAQ7gC,GAAIsiC,EAAiB14B,GADN5J,MAMnE,GAAuB,IAAnBuiC,EAAuB,CACzB,IAAKviC,EAAIuiC,EAAiBviC,GAAK,IACzBpF,KAAK4nC,kBAAkB74B,EAAam3B,MAAM9gC,GAAIsiC,EAAiB14B,GADnC5J,KAGlC,IAAKA,EAAIuiC,EAAkB,EAAGviC,EAAI2J,EAAam3B,MAAM3gC,SAC/CvF,KAAK4nC,kBAAkB74B,EAAam3B,MAAM9gC,GAAIsiC,EAAiB14B,GADR5J,MAK/D,MAAOsiC,IAeThlC,EAAMgR,UAAUk0B,kBAAoB,SAAS9yB,EAAMkxB,EAAch3B,GAC/D,MAAI8F,GAAKnF,UAAUX,IACZ8F,EAAK+xB,WAAW/xB,EAAKytB,OAC1BztB,EAAK+yB,cAC6B,IAA9B7B,EAAaz/B,QAAQuO,IACvBkxB,EAAaj+B,KAAK+M,IAEb,IAGHA,EAAK+xB,WAAW/xB,EAAKwtB,QAClB,IAeX5/B,EAAMgR,UAAU0zB,gBAAkB,SAAStyB,EAAMkxB,EAAch3B,GACzD8F,EAAKnF,UAAUX,IACZ8F,EAAK+xB,WAAW/xB,EAAKytB,OAE1BztB,EAAK+yB,cACL7B,EAAaj+B,KAAK+M,IAGdA,EAAK+xB,WAAW/xB,EAAKwtB,QAI7BziC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAyB9B,QAASyC,GAAQ0xB,EAAMzlB,GACrB5O,KAAKq0B,KAAOA,EAEZr0B,KAAK+zB,gBACHrtB,KAAM,KACNutB,YAAa,SACb6T,MAAO,OACPlmC,OAAO,EACPmmC,WAAY,KAEZC,YAAY,EACZC,UACEC,YAAY,EACZ9F,aAAa,EACb3uB,KAAK,EACLkD,QAAQ,GAGVwxB,MAAO,SAAUrzB,EAAMzM,GACrBA,EAASyM,IAEXszB,SAAU,SAAUtzB,EAAMzM,GACxBA,EAASyM,IAEXuzB,OAAQ,SAAUvzB,EAAMzM,GACtBA,EAASyM,IAEXwzB,SAAU,SAAUxzB,EAAMzM,GACxBA,EAASyM,IAEXyzB,SAAU,SAAUzzB,EAAMzM,GACxBA,EAASyM,IAGXmE,QACEnE,MACE6P,WAAY,GACZC,SAAU,IAEZ2X,KAAM,IAERpZ,QAAS,GAIXnjB,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBAGpC/zB,KAAKwoC,aACH9hC,MAAOkJ,MAAO,OAAQS,IAAK,SAG7BrQ,KAAKk7B,YACHxG,SAAUL,EAAK1zB,KAAK+zB,SACpBI,OAAQT,EAAK1zB,KAAKm0B,QAEpB90B,KAAKuvB,OACLvvB,KAAK4F,SACL5F,KAAK2D,OAAS,IAEd,IAAI4Q,GAAKvU,IACTA,MAAKs1B,UAAY,KACjBt1B,KAAKu1B,WAAa,KAGlBv1B,KAAKyoC,eACHh1B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGm0B,OAAOx0B,EAAOnS,QAEnBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGo0B,UAAUz0B,EAAOnS,QAEtB4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGq0B,UAAU10B,EAAOnS,SAKxB/B,KAAK6oC,gBACHp1B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGu0B,aAAa50B,EAAOnS,QAEzBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGw0B,gBAAgB70B,EAAOnS,QAE5B4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGy0B,gBAAgB90B,EAAOnS,SAI9B/B,KAAK+B,SACL/B,KAAK6zB,UACL7zB,KAAKipC,YAELjpC,KAAKkpC,aACLlpC,KAAKmpC,YAAa,EAElBnpC,KAAKopC,eAGLppC,KAAKo0B,UAELp0B,KAAKic,WAAWrN,GA7HlB,GAAI0xB,GAASpgC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BmC,EAAYnC,EAAoB,IAChCwC,EAAQxC,EAAoB,IAC5BgC,EAAUhC,EAAoB,IAC9BiC,EAAYjC,EAAoB,IAChCkC,EAAYlC,EAAoB,IAChC+B,EAAiB/B,EAAoB,IAGrCmpC,EAAY,eAoHhB1mC,GAAQ+Q,UAAY,GAAIrR,GAGxBM,EAAQ6U,OACN7L,WAAY1J,EACZqnC,IAAKpnC,EACL8M,MAAO5M,EACPsQ,MAAOvQ,GAMTQ,EAAQ+Q,UAAU0gB,QAAU,WAC1B,GAAI3V,GAAQ1M,SAASM,cAAc,MACnCoM,GAAM7W,UAAY,UAClB6W,EAAM,oBAAsBze,KAC5BA,KAAKuvB,IAAI9Q,MAAQA,CAGjB,IAAI9S,GAAaoG,SAASM,cAAc,MACxC1G,GAAW/D,UAAY,aACvB6W,EAAMxM,YAAYtG,GAClB3L,KAAKuvB,IAAI5jB,WAAaA,CAGtB,IAAIy6B,GAAar0B,SAASM,cAAc,MACxC+zB,GAAWx+B,UAAY,aACvB6W,EAAMxM,YAAYm0B,GAClBpmC,KAAKuvB,IAAI6W,WAAaA,CAGtB,IAAI7J,GAAOxqB,SAASM,cAAc,MAClCkqB,GAAK30B,UAAY,OACjB5H,KAAKuvB,IAAIgN,KAAOA,CAGhB,IAAI2K,GAAWn1B,SAASM,cAAc,MACtC60B,GAASt/B,UAAY,WACrB5H,KAAKuvB,IAAI2X,SAAWA,EAGpBlnC,KAAKupC,mBAMLvpC,KAAK2D,OAAS28B,EAAOtgC,KAAKq0B,KAAK9E,IAAIia,iBACjChJ,iBAAiB,IAInBxgC,KAAK2D,OAAOgQ,GAAG,QAAa3T,KAAK85B,SAAStF,KAAKx0B,OAC/CA,KAAK2D,OAAOgQ,GAAG,YAAa3T,KAAKy5B,aAAajF,KAAKx0B,OACnDA,KAAK2D,OAAOgQ,GAAG,OAAa3T,KAAK05B,QAAQlF,KAAKx0B,OAC9CA,KAAK2D,OAAOgQ,GAAG,UAAa3T,KAAK25B,WAAWnF,KAAKx0B,OAGjDA,KAAK2D,OAAOgQ,GAAG,MAAQ3T,KAAKypC,cAAcjV,KAAKx0B,OAG/CA,KAAK2D,OAAOgQ,GAAG,OAAQ3T,KAAK0pC,mBAAmBlV,KAAKx0B,OAGpDA,KAAK2D,OAAOgQ,GAAG,YAAa3T,KAAK2pC,WAAWnV,KAAKx0B,OAGjDA,KAAKuiC,QAmEP5/B,EAAQ+Q,UAAUuI,WAAa,SAASrN,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAChH1N,GAAKgF,gBAAgB0I,EAAQrO,KAAK4O,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQqK,QACjBjZ,KAAK4O,QAAQqK,OAAOsjB,KAAO3tB,EAAQqK,OACnCjZ,KAAK4O,QAAQqK,OAAOnE,KAAK6P,WAAa/V,EAAQqK,OAC9CjZ,KAAK4O,QAAQqK,OAAOnE,KAAK8P,SAAWhW,EAAQqK,QAEX,gBAAnBrK,GAAQqK,SACtBtY,EAAKgF,iBAAiB,QAAS3F,KAAK4O,QAAQqK,OAAQrK,EAAQqK,QACxD,QAAUrK,GAAQqK,SACe,gBAAxBrK,GAAQqK,OAAOnE,MACxB9U,KAAK4O,QAAQqK,OAAOnE,KAAK6P,WAAa/V,EAAQqK,OAAOnE,KACrD9U,KAAK4O,QAAQqK,OAAOnE,KAAK8P,SAAWhW,EAAQqK,OAAOnE,MAEb,gBAAxBlG,GAAQqK,OAAOnE,MAC7BnU,EAAKgF,iBAAiB,aAAc,YAAa3F,KAAK4O,QAAQqK,OAAOnE,KAAMlG,EAAQqK,OAAOnE,SAM9F,YAAclG,KACgB,iBAArBA,GAAQq5B,UACjBjoC,KAAK4O,QAAQq5B,SAASC,WAAct5B,EAAQq5B,SAC5CjoC,KAAK4O,QAAQq5B,SAAS7F,YAAcxzB,EAAQq5B,SAC5CjoC,KAAK4O,QAAQq5B,SAASx0B,IAAc7E,EAAQq5B,SAC5CjoC,KAAK4O,QAAQq5B,SAAStxB,OAAc/H,EAAQq5B,UAET,gBAArBr5B,GAAQq5B,UACtBtnC,EAAKgF,iBAAiB,aAAc,cAAe,MAAO,UAAW3F,KAAK4O,QAAQq5B,SAAUr5B,EAAQq5B,UAKxG,IAAI2B,GAAc,SAAWrzB,GAC3B,GAAIszB,GAAKj7B,EAAQ2H,EACjB,IAAIszB,EAAI,CACN,KAAMA,YAAcC,WAClB,KAAM,IAAIrmC,OAAM,UAAY8S,EAAO,uBAAyBA,EAAO,mBAErEvW,MAAK4O,QAAQ2H,GAAQszB,IAEtBrV,KAAKx0B,OACP,QAAS,WAAY,WAAY,SAAU,YAAYoI,QAAQwhC,GAGhE5pC,KAAK+pC,cAOTpnC,EAAQ+Q,UAAUq2B,UAAY,WAC5B/pC,KAAKipC,YACLjpC,KAAKmpC,YAAa,GAMpBxmC,EAAQ+Q,UAAU4rB,QAAU,WAC1Bt/B,KAAKsiC,OACLtiC,KAAKy1B,SAAS,MACdz1B,KAAKw1B,UAAU,MAEfx1B,KAAK2D,OAAS,KAEd3D,KAAKq0B,KAAO,KACZr0B,KAAKk7B,WAAa,MAMpBv4B,EAAQ+Q,UAAU4uB,KAAO,WAEnBtiC,KAAKuvB,IAAI9Q,MAAM9U,YACjB3J,KAAKuvB,IAAI9Q,MAAM9U,WAAWgI,YAAY3R,KAAKuvB,IAAI9Q,OAI7Cze,KAAKuvB,IAAIgN,KAAK5yB,YAChB3J,KAAKuvB,IAAIgN,KAAK5yB,WAAWgI,YAAY3R,KAAKuvB,IAAIgN,MAI5Cv8B,KAAKuvB,IAAI2X,SAASv9B,YACpB3J,KAAKuvB,IAAI2X,SAASv9B,WAAWgI,YAAY3R,KAAKuvB,IAAI2X,WAQtDvkC,EAAQ+Q,UAAU6uB,KAAO,WAElBviC,KAAKuvB,IAAI9Q,MAAM9U,YAClB3J,KAAKq0B,KAAK9E,IAAIjE,OAAOrZ,YAAYjS,KAAKuvB,IAAI9Q,OAIvCze,KAAKuvB,IAAIgN,KAAK5yB,YACjB3J,KAAKq0B,KAAK9E,IAAIwQ,mBAAmB9tB,YAAYjS,KAAKuvB,IAAIgN,MAInDv8B,KAAKuvB,IAAI2X,SAASv9B,YACrB3J,KAAKq0B,KAAK9E,IAAIloB,KAAK4K,YAAYjS,KAAKuvB,IAAI2X,WAW5CvkC,EAAQ+Q,UAAUsiB,aAAe,SAASxgB,GACxC,GAAIpQ,GAAG4hC,EAAI3mC,EAAIyU,CAMf,KAJW1O,QAAPoP,IAAkBA,MACjB3P,MAAMC,QAAQ0P,KAAMA,GAAOA,IAG3BpQ,EAAI,EAAG4hC,EAAKhnC,KAAKkpC,UAAU3jC,OAAYyhC,EAAJ5hC,EAAQA,IAC9C/E,EAAKL,KAAKkpC,UAAU9jC,GACpB0P,EAAO9U,KAAK+B,MAAM1B,GACdyU,GAAMA,EAAKk1B,UAKjB,KADAhqC,KAAKkpC,aACA9jC,EAAI,EAAG4hC,EAAKxxB,EAAIjQ,OAAYyhC,EAAJ5hC,EAAQA,IACnC/E,EAAKmV,EAAIpQ,GACT0P,EAAO9U,KAAK+B,MAAM1B,GACdyU,IACF9U,KAAKkpC,UAAUnhC,KAAK1H,GACpByU,EAAKm1B,WASXtnC,EAAQ+Q,UAAUwiB,aAAe,WAC/B,MAAOl2B,MAAKkpC,UAAU90B,YAOxBzR,EAAQ+Q,UAAUw2B,gBAAkB,WAClC,GAAIl7B,GAAQhP,KAAKq0B,KAAKrlB,MAAMisB,WACxB5zB,EAAQrH,KAAKq0B,KAAK1zB,KAAK+zB,SAAS1lB,EAAMY,OACtC4W,EAAQxmB,KAAKq0B,KAAK1zB,KAAK+zB,SAAS1lB,EAAMqB,KAEtCmF,IACJ,KAAK,GAAIohB,KAAW52B,MAAK6zB,OACvB,GAAI7zB,KAAK6zB,OAAOnuB,eAAekxB,GAM7B,IAAK,GALDnkB,GAAQzS,KAAK6zB,OAAO+C,GACpBuT,EAAkB13B,EAAMuzB,aAInB5gC,EAAI,EAAGA,EAAI+kC,EAAgB5kC,OAAQH,IAAK,CAC/C,GAAI0P,GAAOq1B,EAAgB/kC,EAEtB0P,GAAKzN,KAAOmf,GAAW1R,EAAKzN,KAAOyN,EAAK/B,MAAQ1L,GACnDmO,EAAIzN,KAAK+M,EAAKzU,IAMtB,MAAOmV,IAQT7S,EAAQ+Q,UAAU02B,UAAY,SAAS/pC,GAErC,IAAK,GADD6oC,GAAYlpC,KAAKkpC,UACZ9jC,EAAI,EAAG4hC,EAAKkC,EAAU3jC,OAAYyhC,EAAJ5hC,EAAQA,IAC7C,GAAI8jC,EAAU9jC,IAAM/E,EAAI,CACtB6oC,EAAU/gC,OAAO/C,EAAG,EACpB,SASNzC,EAAQ+Q,UAAUkN,OAAS,WACzB,GAAI3H,GAASjZ,KAAK4O,QAAQqK,OACtBjK,EAAQhP,KAAKq0B,KAAKrlB,MAClB/E,EAAStJ,EAAKiJ,OAAOK,OACrB2E,EAAU5O,KAAK4O,QACfqlB,EAAcrlB,EAAQqlB,YACtBuL,GAAU,EACV/gB,EAAQze,KAAKuvB,IAAI9Q,MACjBwpB,EAAWr5B,EAAQq5B,SAASC,YAAct5B,EAAQq5B,SAAS7F,WAG/DpiC,MAAK4F,MAAM6B,IAAMzH,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,OAAShT,KAAKq0B,KAAKC,SAAS1oB,OAAOnE,IAC3EzH,KAAK4F,MAAMyB,KAAOrH,KAAKq0B,KAAKC,SAASjtB,KAAK0L,MAAQ/S,KAAKq0B,KAAKC,SAAS1oB,OAAOvE,KAG5EoX,EAAM7W,UAAY,WAAaqgC,EAAW,YAAc,IAGxDzI,EAAUx/B,KAAKqqC,gBAAkB7K,CAIjC,IAAI8K,GAAkBt7B,EAAMqB,IAAMrB,EAAMY,MACpC26B,EAAUD,GAAmBtqC,KAAKwqC,qBAAyBxqC,KAAK4F,MAAMmN,OAAS/S,KAAK4F,MAAM6kC,SAC1FF,KAAQvqC,KAAKmpC,YAAa,GAC9BnpC,KAAKwqC,oBAAsBF,EAC3BtqC,KAAK4F,MAAM6kC,UAAYzqC,KAAK4F,MAAMmN,KAGlC,IAAIyzB,GAAUxmC,KAAKmpC,WACfuB,EAAa1qC,KAAK2qC,cAClBC,GACE91B,KAAMmE,EAAOnE,KACbynB,KAAMtjB,EAAOsjB,MAEfsO,GACE/1B,KAAMmE,EAAOnE,KACbynB,KAAMtjB,EAAOnE,KAAK8P,SAAW,GAE/B5R,EAAS,EACTmhB,EAAYlb,EAAOsjB,KAAOtjB,EAAOnE,KAAK8P,QA4B1C,OA3BAjkB,GAAKyH,QAAQpI,KAAK6zB,OAAQ,SAAUphB,GAClC,GAAIq4B,GAAer4B,GAASi4B,EAAcE,EAAcC,EACpDE,EAAet4B,EAAMmO,OAAO5R,EAAO87B,EAAatE,EACpDhH,GAAUuL,GAAgBvL,EAC1BxsB,GAAUP,EAAMO,SAElBA,EAASlO,KAAKiI,IAAIiG,EAAQmhB,GAC1Bn0B,KAAKmpC,YAAa,EAGlB1qB,EAAMpR,MAAM2F,OAAU/I,EAAO+I,GAG7BhT,KAAK4F,MAAMmN,MAAQ0L,EAAMmR,YACzB5vB,KAAK4F,MAAMoN,OAASA,EAKpBhT,KAAKuvB,IAAIgN,KAAKlvB,MAAM5F,IAAMwC,EAAuB,OAAfgqB,EAC7Bj0B,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,OAAShT,KAAKq0B,KAAKC,SAAS1oB,OAAOnE,IAC1DzH,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,OAAShT,KAAKq0B,KAAKC,SAASkV,gBAAgBx2B,QACxEhT,KAAKuvB,IAAIgN,KAAKlvB,MAAMhG,KAAO,IAG3Bm4B,EAAUx/B,KAAKu/B,cAAgBC,GAUjC78B,EAAQ+Q,UAAUi3B,YAAc,WAC9B,GAAIK,GAA+C,OAA5BhrC,KAAK4O,QAAQqlB,YAAwB,EAAKj0B,KAAKipC,SAAS1jC,OAAS,EACpF0lC,EAAejrC,KAAKipC,SAAS+B,GAC7BN,EAAa1qC,KAAK6zB,OAAOoX,IAAiBjrC,KAAK6zB,OAAOwV,EAE1D,OAAOqB,IAAc,MAQvB/nC,EAAQ+Q,UAAU61B,iBAAmB,WACnC,GAAI2B,GAAYlrC,KAAK6zB,OAAOwV,EAE5B,IAAIrpC,KAAKu1B,WAEH2V,IACFA,EAAU5I,aACHtiC,MAAK6zB,OAAOwV,QAKrB,KAAK6B,EAAW,CACd,GAAI7qC,GAAK,KACL6S,EAAO,IACXg4B,GAAY,GAAIxoC,GAAMrC,EAAI6S,EAAMlT,MAChCA,KAAK6zB,OAAOwV,GAAa6B,CAEzB,KAAK,GAAIt1B,KAAU5V,MAAK+B,MAClB/B,KAAK+B,MAAM2D,eAAekQ,IAC5Bs1B,EAAUz3B,IAAIzT,KAAK+B,MAAM6T,GAI7Bs1B,GAAU3I,SAShB5/B,EAAQ+Q,UAAUy3B,YAAc,WAC9B,MAAOnrC,MAAKuvB,IAAI2X,UAOlBvkC,EAAQ+Q,UAAU+hB,SAAW,SAAS1zB,GACpC,GACIyT,GADAjB,EAAKvU,KAELorC,EAAeprC,KAAKs1B,SAGxB,IAAKvzB,EAGA,CAAA,KAAIA,YAAiBlB,IAAWkB,YAAiBjB,IAIpD,KAAM,IAAImF,WAAU,kDAHpBjG,MAAKs1B,UAAYvzB,MAHjB/B,MAAKs1B,UAAY,IAoBnB,IAXI8V,IAEFzqC,EAAKyH,QAAQpI,KAAKyoC,cAAe,SAAUpgC,EAAUgB,GACnD+hC,EAAat3B,IAAIzK,EAAOhB,KAI1BmN,EAAM41B,EAAaj1B,SACnBnW,KAAK4oC,UAAUpzB,IAGbxV,KAAKs1B,UAAW,CAElB,GAAIj1B,GAAKL,KAAKK,EACdM,GAAKyH,QAAQpI,KAAKyoC,cAAe,SAAUpgC,EAAUgB,GACnDkL,EAAG+gB,UAAU3hB,GAAGtK,EAAOhB,EAAUhI,KAInCmV,EAAMxV,KAAKs1B,UAAUnf,SACrBnW,KAAK0oC,OAAOlzB,GAGZxV,KAAKupC,qBAQT5mC,EAAQ+Q,UAAU23B,SAAW,WAC3B,MAAOrrC,MAAKs1B,WAOd3yB,EAAQ+Q,UAAU8hB,UAAY,SAAS3B,GACrC,GACIre,GADAjB,EAAKvU,IAgBT,IAZIA,KAAKu1B,aACP50B,EAAKyH,QAAQpI,KAAK6oC,eAAgB,SAAUxgC,EAAUgB,GACpDkL,EAAGghB,WAAWvhB,YAAY3K,EAAOhB,KAInCmN,EAAMxV,KAAKu1B,WAAWpf,SACtBnW,KAAKu1B,WAAa,KAClBv1B,KAAKgpC,gBAAgBxzB,IAIlBqe,EAGA,CAAA,KAAIA,YAAkBhzB,IAAWgzB,YAAkB/yB,IAItD,KAAM,IAAImF,WAAU,kDAHpBjG,MAAKu1B,WAAa1B,MAHlB7zB,MAAKu1B,WAAa,IASpB,IAAIv1B,KAAKu1B,WAAY,CAEnB,GAAIl1B,GAAKL,KAAKK,EACdM,GAAKyH,QAAQpI,KAAK6oC,eAAgB,SAAUxgC,EAAUgB,GACpDkL,EAAGghB,WAAW5hB,GAAGtK,EAAOhB,EAAUhI,KAIpCmV,EAAMxV,KAAKu1B,WAAWpf,SACtBnW,KAAK8oC,aAAatzB,GAIpBxV,KAAKupC,mBAGLvpC,KAAKsrC,SAELtrC,KAAKq0B,KAAKE,QAAQrH,KAAK,WAOzBvqB,EAAQ+Q,UAAU63B,UAAY,WAC5B,MAAOvrC,MAAKu1B,YAOd5yB,EAAQ+Q,UAAU4zB,WAAa,SAASjnC,GACtC,GAAIyU,GAAO9U,KAAKs1B,UAAU/f,IAAIlV,GAC1Bi2B,EAAUt2B,KAAKs1B,UAAUlf,YAEzBtB,IAEF9U,KAAK4O,QAAQ05B,SAASxzB,EAAM,SAAUA,GAChCA,GAGFwhB,EAAQ3f,OAAOtW,MAWvBsC,EAAQ+Q,UAAUi1B,UAAY,SAASnzB,GACrC,GAAIjB,GAAKvU,IAETwV,GAAIpN,QAAQ,SAAU/H,GACpB,GAAI81B,GAAW5hB,EAAG+gB,UAAU/f,IAAIlV,EAAIkU,EAAGi0B,aACnC1zB,EAAOP,EAAGxS,MAAM1B,GAChBqG,EAAOyvB,EAASzvB,MAAQ6N,EAAG3F,QAAQlI,OAASyvB,EAAS9lB,IAAM,QAAU,OAErEnK,EAAcvD,EAAQ6U,MAAM9Q,EAchC,IAZIoO,IAEG5O,GAAiB4O,YAAgB5O,GAMpCqO,EAAGe,YAAYR,EAAMqhB,IAJrB5hB,EAAGi3B,YAAY12B,GACfA,EAAO,QAONA,EAAM,CAET,IAAI5O,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnDoO,GAAO,GAAI5O,GAAYiwB,EAAU5hB,EAAG2mB,WAAY3mB,EAAG3F,SACnDkG,EAAKzU,GAAKA,EACVkU,EAAGC,SAASM,MAalB9U,KAAKsrC,SACLtrC,KAAKmpC,YAAa,EAClBnpC,KAAKq0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAUg1B,OAAS/lC,EAAQ+Q,UAAUi1B,UAO7ChmC,EAAQ+Q,UAAUk1B,UAAY,SAASpzB,GACrC,GAAI8B,GAAQ,EACR/C,EAAKvU,IACTwV,GAAIpN,QAAQ,SAAU/H,GACpB,GAAIyU,GAAOP,EAAGxS,MAAM1B,EAChByU,KACFwC,IACA/C,EAAGi3B,YAAY12B,MAIfwC,IAEFtX,KAAKsrC,SACLtrC,KAAKmpC,YAAa,EAClBnpC,KAAKq0B,KAAKE,QAAQrH,KAAK,YAQ3BvqB,EAAQ+Q,UAAU43B,OAAS,WAGzB3qC,EAAKyH,QAAQpI,KAAK6zB,OAAQ,SAAUphB,GAClCA,EAAMqD,WASVnT,EAAQ+Q,UAAUq1B,gBAAkB,SAASvzB,GAC3CxV,KAAK8oC,aAAatzB,IAQpB7S,EAAQ+Q,UAAUo1B,aAAe,SAAStzB,GACxC,GAAIjB,GAAKvU,IAETwV,GAAIpN,QAAQ,SAAU/H,GACpB,GAAIorC,GAAYl3B,EAAGghB,WAAWhgB,IAAIlV,GAC9BoS,EAAQ8B,EAAGsf,OAAOxzB,EAEtB,IAAKoS,EA6BHA,EAAM6F,QAAQmzB,OA7BJ,CAEV,GAAIprC,GAAMgpC,EACR,KAAM,IAAI5lC,OAAM,qBAAuBpD,EAAK,qBAG9C,IAAIqrC,GAAevlC,OAAOqI,OAAO+F,EAAG3F,QACpCjO,GAAKuE,OAAOwmC,GACV14B,OAAQ,OAGVP,EAAQ,GAAI/P,GAAMrC,EAAIorC,EAAWl3B,GACjCA,EAAGsf,OAAOxzB,GAAMoS,CAGhB,KAAK,GAAImD,KAAUrB,GAAGxS,MACpB,GAAIwS,EAAGxS,MAAM2D,eAAekQ,GAAS,CACnC,GAAId,GAAOP,EAAGxS,MAAM6T,EAChBd,GAAK5B,KAAKT,OAASpS,GACrBoS,EAAMgB,IAAIqB,GAKhBrC,EAAMqD,QACNrD,EAAM8vB,UAQVviC,KAAKq0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAUs1B,gBAAkB,SAASxzB,GAC3C,GAAIqe,GAAS7zB,KAAK6zB,MAClBre,GAAIpN,QAAQ,SAAU/H,GACpB,GAAIoS,GAAQohB,EAAOxzB,EAEfoS,KACFA,EAAM6vB,aACCzO,GAAOxzB,MAIlBL,KAAK+pC,YAEL/pC,KAAKq0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAU22B,aAAe,WAC/B,GAAIrqC,KAAKu1B,WAAY,CAEnB,GAAI0T,GAAWjpC,KAAKu1B,WAAWpf,QAC7BL,MAAO9V,KAAK4O,QAAQm5B,aAGlBpN,GAAWh6B,EAAK6F,WAAWyiC,EAAUjpC,KAAKipC,SAC9C,IAAItO,EAAS,CAEX,GAAI9G,GAAS7zB,KAAK6zB,MAClBoV,GAAS7gC,QAAQ,SAAUwuB,GACzB/C,EAAO+C,GAAS0L,SAIlB2G,EAAS7gC,QAAQ,SAAUwuB,GACzB/C,EAAO+C,GAAS2L,SAGlBviC,KAAKipC,SAAWA,EAGlB,MAAOtO,GAGP,OAAO,GASXh4B,EAAQ+Q,UAAUc,SAAW,SAASM,GACpC9U,KAAK+B,MAAM+S,EAAKzU,IAAMyU,CAGtB,IAAI8hB,GAAU52B,KAAKu1B,WAAazgB,EAAK5B,KAAKT,MAAQ42B,EAC9C52B,EAAQzS,KAAK6zB,OAAO+C,EACpBnkB,IAAOA,EAAMgB,IAAIqB,IASvBnS,EAAQ+Q,UAAU4B,YAAc,SAASR,EAAMqhB,GAC7C,GAAIwV,GAAa72B,EAAK5B,KAAKT,KAM3B,IAHAqC,EAAKwD,QAAQ6d,GAGTwV,GAAc72B,EAAK5B,KAAKT,MAAO,CACjC,GAAIm5B,GAAW5rC,KAAK6zB,OAAO8X,EACvBC,IAAUA,EAASj1B,OAAO7B,EAE9B,IAAI8hB,GAAU52B,KAAKu1B,WAAazgB,EAAK5B,KAAKT,MAAQ42B,EAC9C52B,EAAQzS,KAAK6zB,OAAO+C,EACpBnkB,IAAOA,EAAMgB,IAAIqB,KAUzBnS,EAAQ+Q,UAAU83B,YAAc,SAAS12B,GAEvCA,EAAKwtB,aAGEtiC,MAAK+B,MAAM+S,EAAKzU,GAGvB,IAAI6H,GAAQlI,KAAKkpC,UAAU3iC,QAAQuO,EAAKzU,GAC3B,KAAT6H,GAAalI,KAAKkpC,UAAU/gC,OAAOD,EAAO,EAG9C,IAAI0uB,GAAU52B,KAAKu1B,WAAazgB,EAAK5B,KAAKT,MAAQ42B,EAC9C52B,EAAQzS,KAAK6zB,OAAO+C,EACpBnkB,IAAOA,EAAMkE,OAAO7B,IAS1BnS,EAAQ+Q,UAAU6zB,qBAAuB,SAASh/B,GAGhD,IAAK,GAFDi/B,MAEKpiC,EAAI,EAAGA,EAAImD,EAAMhD,OAAQH,IAC5BmD,EAAMnD,YAAchD,IACtBolC,EAASz/B,KAAKQ,EAAMnD,GAGxB,OAAOoiC,IAYT7kC,EAAQ+Q,UAAUomB,SAAW,SAAUzwB,GAErCrJ,KAAKopC,YAAYt0B,KAAOnS,EAAQkpC,eAAexiC,IAQjD1G,EAAQ+Q,UAAU+lB,aAAe,SAAUpwB,GACzC,GAAKrJ,KAAK4O,QAAQq5B,SAASC,YAAeloC,KAAK4O,QAAQq5B,SAAS7F,YAAhE,CAIA,GAEIx8B,GAFAkP,EAAO9U,KAAKopC,YAAYt0B,MAAQ,KAChCP,EAAKvU,IAGT,IAAI8U,GAAQA,EAAKg3B,SAAU,CACzB,GAAIC,GAAe1iC,EAAMG,OAAOuiC,aAC5BC,EAAgB3iC,EAAMG,OAAOwiC,aAE7BD,IACFnmC,GACEkP,KAAMi3B,GAGJx3B,EAAG3F,QAAQq5B,SAASC,aACtBtiC,EAAMgK,MAAQkF,EAAK5B,KAAKtD,MAAMhJ,WAE5B2N,EAAG3F,QAAQq5B,SAAS7F,aAClB,SAAWttB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAGpDzS,KAAKopC,YAAY6C,WAAarmC,IAEvBomC,GACPpmC,GACEkP,KAAMk3B,GAGJz3B,EAAG3F,QAAQq5B,SAASC,aACtBtiC,EAAMyK,IAAMyE,EAAK5B,KAAK7C,IAAIzJ,WAExB2N,EAAG3F,QAAQq5B,SAAS7F,aAClB,SAAWttB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAGpDzS,KAAKopC,YAAY6C,WAAarmC,IAG9B5F,KAAKopC,YAAY6C,UAAYjsC,KAAKk2B,eAAezoB,IAAI,SAAUpN,GAC7D,GAAIyU,GAAOP,EAAGxS,MAAM1B,GAChBuF,GACFkP,KAAMA,EAWR,OARIP,GAAG3F,QAAQq5B,SAASC,aAClB,SAAWpzB,GAAK5B,OAAMtN,EAAMgK,MAAQkF,EAAK5B,KAAKtD,MAAMhJ,WACpD,OAASkO,GAAK5B,OAAQtN,EAAMyK,IAAMyE,EAAK5B,KAAK7C,IAAIzJ,YAElD2N,EAAG3F,QAAQq5B,SAAS7F,aAClB,SAAWttB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAG7C7M,IAIXyD,EAAMs3B,qBASVh+B,EAAQ+Q,UAAUgmB,QAAU,SAAUrwB,GACpC,GAAIrJ,KAAKopC,YAAY6C,UAAW,CAC9B,GAAI13B,GAAKvU,KACLgP,EAAQhP,KAAKq0B,KAAKrlB,MAClBylB,EAAOz0B,KAAKq0B,KAAK1zB,KAAK8zB,MAAQ,KAC9B4G,EAAShyB,EAAM+xB,QAAQC,OACvBjf,EAASpc,KAAK4F,MAAMmN,OAAS/D,EAAMqB,IAAMrB,EAAMY,OAC/CkZ,EAASuS,EAASjf,CAGtBpc,MAAKopC,YAAY6C,UAAU7jC,QAAQ,SAAUxC,GAC3C,GAAIsmC,KAEJ,IAAI,SAAWtmC,GAAO,CACpB,GAAIgK,GAAQ,GAAI1L,MAAK0B,EAAMgK,MAAQkZ,EACnCojB,GAASt8B,MAAQ6kB,EAAOA,EAAK7kB,GAASA,EAGxC,GAAI,OAAShK,GAAO,CAClB,GAAIyK,GAAM,GAAInM,MAAK0B,EAAMyK,IAAMyY,EAC/BojB,GAAS77B,IAAMokB,EAAOA,EAAKpkB,GAAOA,EAGpC,GAAI,SAAWzK,GAAO,CAEpB,GAAI6M,GAAQ9P,EAAQwpC,gBAAgB9iC,EACpC6iC,GAASz5B,MAAQA,GAASA,EAAMmkB,QAIlC,GAAIT,GAAWx1B,EAAKuE,UAAWU,EAAMkP,KAAK5B,KAAMg5B,EAChD33B,GAAG3F,QAAQ25B,SAASpS,EAAU,SAAUA,GAClCA,GACF5hB,EAAG63B,iBAAiBxmC,EAAMkP,KAAMqhB,OAKtCn2B,KAAKmpC,YAAa,EAClBnpC,KAAKq0B,KAAKE,QAAQrH,KAAK,UAEvB7jB,EAAMs3B,oBAUVh+B,EAAQ+Q,UAAU04B,iBAAmB,SAASt3B,EAAMlP,GAE9C,SAAWA,KAAOkP,EAAK5B,KAAKtD,MAAQhK,EAAMgK,OAC1C,OAAShK,KAASkP,EAAK5B,KAAK7C,IAAQzK,EAAMyK,KAC1C,SAAWzK,IAASkP,EAAK5B,KAAKT,OAAS7M,EAAM6M,OAC/CzS,KAAKqsC,aAAav3B,EAAMlP,EAAM6M,QAUlC9P,EAAQ+Q,UAAU24B,aAAe,SAASv3B,EAAM8hB,GAC9C,GAAInkB,GAAQzS,KAAK6zB,OAAO+C,EACxB,IAAInkB,GAASA,EAAMmkB,SAAW9hB,EAAK5B,KAAKT,MAAO,CAC7C,GAAIm5B,GAAW92B,EAAKgrB,MACpB8L,GAASj1B,OAAO7B,GAChB82B,EAAS91B,QACTrD,EAAMgB,IAAIqB,GACVrC,EAAMqD,QAENhB,EAAK5B,KAAKT,MAAQA,EAAMmkB,UAS5Bj0B,EAAQ+Q,UAAUimB,WAAa,SAAUtwB,GACvC,GAAIrJ,KAAKopC,YAAY6C,UAAW,CAE9B,GAAIK,MACA/3B,EAAKvU,KACLs2B,EAAUt2B,KAAKs1B,UAAUlf,aAEzB61B,EAAYjsC,KAAKopC,YAAY6C,SACjCjsC;KAAKopC,YAAY6C,UAAY,KAC7BA,EAAU7jC,QAAQ,SAAUxC,GAC1B,GAAIvF,GAAKuF,EAAMkP,KAAKzU,GAChB81B,EAAW5hB,EAAG+gB,UAAU/f,IAAIlV,EAAIkU,EAAGi0B,aAEnC7N,GAAU,CACV,UAAW/0B,GAAMkP,KAAK5B,OACxBynB,EAAW/0B,EAAMgK,OAAShK,EAAMkP,KAAK5B,KAAKtD,MAAMhJ,UAChDuvB,EAASvmB,MAAQjP,EAAK8F,QAAQb,EAAMkP,KAAK5B,KAAKtD,MACtC0mB,EAAQnjB,SAASzM,MAAQ4vB,EAAQnjB,SAASzM,KAAKkJ,OAAS,SAE9D,OAAShK,GAAMkP,KAAK5B,OACtBynB,EAAUA,GAAa/0B,EAAMyK,KAAOzK,EAAMkP,KAAK5B,KAAK7C,IAAIzJ,UACxDuvB,EAAS9lB,IAAM1P,EAAK8F,QAAQb,EAAMkP,KAAK5B,KAAK7C,IACpCimB,EAAQnjB,SAASzM,MAAQ4vB,EAAQnjB,SAASzM,KAAK2J,KAAO,SAE5D,SAAWzK,GAAMkP,KAAK5B,OACxBynB,EAAUA,GAAa/0B,EAAM6M,OAAS7M,EAAMkP,KAAK5B,KAAKT,MACtD0jB,EAAS1jB,MAAQ7M,EAAMkP,KAAK5B,KAAKT,OAI/BkoB,GACFpmB,EAAG3F,QAAQy5B,OAAOlS,EAAU,SAAUA,GAChCA,GAEFA,EAASG,EAAQjjB,UAAYhT,EAC7BisC,EAAQvkC,KAAKouB,KAIb5hB,EAAG63B,iBAAiBxmC,EAAMkP,KAAMlP,GAEhC2O,EAAG40B,YAAa,EAChB50B,EAAG8f,KAAKE,QAAQrH,KAAK,eAOzBof,EAAQ/mC,QACV+wB,EAAQphB,OAAOo3B,GAGjBjjC,EAAMs3B,oBASVh+B,EAAQ+Q,UAAU+1B,cAAgB,SAAUpgC,GAC1C,GAAKrJ,KAAK4O,QAAQo5B,WAAlB,CAEA,GAAIuE,GAAWljC,EAAM+xB,QAAQoR,UAAYnjC,EAAM+xB,QAAQoR,SAASD,QAC5DE,EAAWpjC,EAAM+xB,QAAQoR,UAAYnjC,EAAM+xB,QAAQoR,SAASC,QAChE,IAAIF,GAAWE,EAEb,WADAzsC,MAAK0pC,mBAAmBrgC,EAI1B,IAAIqjC,GAAe1sC,KAAKk2B,eAEpBphB,EAAOnS,EAAQkpC,eAAexiC,GAC9B6/B,EAAYp0B,GAAQA,EAAKzU,MAC7BL,MAAKg2B,aAAakT,EAElB,IAAIyD,GAAe3sC,KAAKk2B,gBAIpByW,EAAapnC,OAAS,GAAKmnC,EAAannC,OAAS,IACnDvF,KAAKq0B,KAAKE,QAAQrH,KAAK,UACrBnrB,MAAO/B,KAAKk2B,iBAIhB7sB,EAAMs3B,oBAQRh+B,EAAQ+Q,UAAUi2B,WAAa,SAAUtgC,GACvC,GAAKrJ,KAAK4O,QAAQo5B,YACbhoC,KAAK4O,QAAQq5B,SAASx0B,IAA3B,CAEA,GAAIc,GAAKvU,KACLy0B,EAAOz0B,KAAKq0B,KAAK1zB,KAAK8zB,MAAQ,KAC9B3f,EAAOnS,EAAQkpC,eAAexiC,EAElC,IAAIyL,EAAM,CAIR,GAAIqhB,GAAW5hB,EAAG+gB,UAAU/f,IAAIT,EAAKzU,GACrCL,MAAK4O,QAAQw5B,SAASjS,EAAU,SAAUA,GACpCA,GACF5hB,EAAG+gB,UAAUpgB,OAAOihB,SAIrB,CAEH,GAAIyW,GAAOjsC,EAAKuG,gBAAgBlH,KAAKuvB,IAAI9Q,OACrClM,EAAIlJ,EAAM+xB,QAAQ9P,OAAO4O,MAAQ0S,EACjCh9B,EAAQ5P,KAAKq0B,KAAK1zB,KAAKm0B,OAAOviB,GAC9Bs6B,GACFj9B,MAAO6kB,EAAOA,EAAK7kB,GAASA,EAC5Bwf,QAAS,WAIX,IAA0B,UAAtBpvB,KAAK4O,QAAQlI,KAAkB,CACjC,GAAI2J,GAAMrQ,KAAKq0B,KAAK1zB,KAAKm0B,OAAOviB,EAAIvS,KAAK4F,MAAMmN,MAAQ,EACvD85B,GAAQx8B,IAAMokB,EAAOA,EAAKpkB,GAAOA,EAGnCw8B,EAAQ7sC,KAAKs1B,UAAUjiB,UAAY1S,EAAKiE,YAExC,IAAI6N,GAAQ9P,EAAQwpC,gBAAgB9iC,EAChCoJ,KACFo6B,EAAQp6B,MAAQA,EAAMmkB,SAIxB52B,KAAK4O,QAAQu5B,MAAM0E,EAAS,SAAU/3B,GAChCA,GACFP,EAAG+gB,UAAU7hB,IAAIqB,QAYzBnS,EAAQ+Q,UAAUg2B,mBAAqB,SAAUrgC,GAC/C,GAAKrJ,KAAK4O,QAAQo5B,WAAlB,CAEA,GAAIkB,GACAp0B,EAAOnS,EAAQkpC,eAAexiC,EAElC,IAAIyL,EAAM,CAERo0B,EAAYlpC,KAAKk2B,cACjB,IAAIhuB,GAAQghC,EAAU3iC,QAAQuO,EAAKzU,GACtB,KAAT6H,EAEFghC,EAAUnhC,KAAK+M,EAAKzU,IAIpB6oC,EAAU/gC,OAAOD,EAAO,GAE1BlI,KAAKg2B,aAAakT,GAElBlpC,KAAKq0B,KAAKE,QAAQrH,KAAK,UACrBnrB,MAAO/B,KAAKk2B,iBAGd7sB,EAAMs3B,qBAUVh+B,EAAQkpC,eAAiB,SAASxiC,GAEhC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,iBACxB,MAAO8D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASThH,EAAQwpC,gBAAkB,SAAS9iC,GAEjC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,kBACxB,MAAO8D,GAAO,iBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASThH,EAAQmqC,kBAAoB,SAASzjC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,oBACxB,MAAO8D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGT9J,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAS9B,QAAS0C,GAAOyxB,EAAMzlB,EAASm+B,EAAMlM,GACnC7gC,KAAKq0B,KAAOA,EACZr0B,KAAK+zB,gBACHllB,SAAS,EACTmyB,OAAO,EACPgM,SAAU,GACVC,YAAa,EACb5lC,MACEwgB,SAAS,EACT9E,SAAU,YAEZyD,OACEqB,SAAS,EACT9E,SAAU,aAGd/iB,KAAK+sC,KAAOA,EACZ/sC,KAAK4O,QAAUjO,EAAKuE,UAAUlF,KAAK+zB,gBACnC/zB,KAAK6gC,iBAAmBA,EAExB7gC,KAAKgiC,eACLhiC,KAAKuvB,OACLvvB,KAAK6zB,UACL7zB,KAAKiiC,eAAiB,EACtBjiC,KAAKo0B,UAELp0B,KAAKic,WAAWrN,GAjClB,GAAIjO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BmC,EAAYnC,EAAoB,GAkCpC0C,GAAO8Q,UAAY,GAAIrR,GAGvBO,EAAO8Q,UAAUwuB,SAAW,SAASta,EAAOua,GACrCniC,KAAK6zB,OAAOnuB,eAAekiB,KAC9B5nB,KAAK6zB,OAAOjM,GAASua,GAEvBniC,KAAKiiC,gBAAkB,GAGzBr/B,EAAO8Q,UAAU0uB,YAAc,SAASxa,EAAOua,GAC7CniC,KAAK6zB,OAAOjM,GAASua,GAGvBv/B,EAAO8Q,UAAU2uB,YAAc,SAASza,GAClC5nB,KAAK6zB,OAAOnuB,eAAekiB,WACtB5nB,MAAK6zB,OAAOjM,GACnB5nB,KAAKiiC,gBAAkB,IAI3Br/B,EAAO8Q,UAAU0gB,QAAU,WACzBp0B,KAAKuvB,IAAI9Q,MAAQ1M,SAASM,cAAc,OACxCrS,KAAKuvB,IAAI9Q,MAAM7W,UAAY,SAC3B5H,KAAKuvB,IAAI9Q,MAAMpR,MAAM0V,SAAW,WAChC/iB,KAAKuvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,OAC3BzH,KAAKuvB,IAAI9Q,MAAMpR,MAAMo1B,QAAU,QAE/BziC,KAAKuvB,IAAI2d,SAAWn7B,SAASM,cAAc,OAC3CrS,KAAKuvB,IAAI2d,SAAStlC,UAAY,aAC9B5H,KAAKuvB,IAAI2d,SAAS7/B,MAAM0V,SAAW,WACnC/iB,KAAKuvB,IAAI2d,SAAS7/B,MAAM5F,IAAM,MAE9BzH,KAAK4gC,IAAM7uB,SAASC,gBAAgB,6BAA6B,OACjEhS,KAAK4gC,IAAIvzB,MAAM0V,SAAW,WAC1B/iB,KAAK4gC,IAAIvzB,MAAM5F,IAAM,MACrBzH,KAAK4gC,IAAIvzB,MAAM0F,MAAQ/S,KAAK4O,QAAQo+B,SAAW,EAAI,KAEnDhtC,KAAKuvB,IAAI9Q,MAAMxM,YAAYjS,KAAK4gC,KAChC5gC,KAAKuvB,IAAI9Q,MAAMxM,YAAYjS,KAAKuvB,IAAI2d,WAMtCtqC,EAAO8Q,UAAU4uB,KAAO,WAElBtiC,KAAKuvB,IAAI9Q,MAAM9U,YACjB3J,KAAKuvB,IAAI9Q,MAAM9U,WAAWgI,YAAY3R,KAAKuvB,IAAI9Q,QAQnD7b,EAAO8Q,UAAU6uB,KAAO,WAEjBviC,KAAKuvB,IAAI9Q,MAAM9U,YAClB3J,KAAKq0B,KAAK9E,IAAIjE,OAAOrZ,YAAYjS,KAAKuvB,IAAI9Q,QAI9C7b,EAAO8Q,UAAUuI,WAAa,SAASrN,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrD1N,GAAKoF,oBAAoBsI,EAAQrO,KAAK4O,QAASA,IAGjDhM,EAAO8Q,UAAUkN,OAAS,WACxB,GAAIoiB,GAAe,CACnB,KAAK,GAAIpM,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KACO,GAAhC52B,KAAK6zB,OAAO+C,GAAS/O,SAAkEzhB,SAA9CpG,KAAK6gC,iBAAiB/J,WAAWF,IAAuE,GAA7C52B,KAAK6gC,iBAAiB/J,WAAWF,IACvIoM,IAKN,IAAuC,GAAnChjC,KAAK4O,QAAQ5O,KAAK+sC,MAAMllB,SAA2C,GAAvB7nB,KAAKiiC,gBAA+C,GAAxBjiC,KAAK4O,QAAQC,SAAoC,GAAhBm0B,EAC3GhjC,KAAKsiC,WAEF,CACHtiC,KAAKuiC,OACmC,YAApCviC,KAAK4O,QAAQ5O,KAAK+sC,MAAMhqB,UAA8D,eAApC/iB,KAAK4O,QAAQ5O,KAAK+sC,MAAMhqB,UAC5E/iB,KAAKuvB,IAAI9Q,MAAMpR,MAAMhG,KAAO,MAC5BrH,KAAKuvB,IAAI9Q,MAAMpR,MAAMoa,UAAY,OACjCznB,KAAKuvB,IAAI2d,SAAS7/B,MAAMoa,UAAY,OACpCznB,KAAKuvB,IAAI2d,SAAS7/B,MAAMhG,KAAQrH,KAAK4O,QAAQo+B,SAAW,GAAM,KAC9DhtC,KAAKuvB,IAAI2d,SAAS7/B,MAAMmZ,MAAQ,GAChCxmB,KAAK4gC,IAAIvzB,MAAMhG,KAAO,MACtBrH,KAAK4gC,IAAIvzB,MAAMmZ,MAAQ,KAGvBxmB,KAAKuvB,IAAI9Q,MAAMpR,MAAMmZ,MAAQ,MAC7BxmB,KAAKuvB,IAAI9Q,MAAMpR,MAAMoa,UAAY,QACjCznB,KAAKuvB,IAAI2d,SAAS7/B,MAAMoa,UAAY,QACpCznB,KAAKuvB,IAAI2d,SAAS7/B,MAAMmZ,MAASxmB,KAAK4O,QAAQo+B,SAAW,GAAM,KAC/DhtC,KAAKuvB,IAAI2d,SAAS7/B,MAAMhG,KAAO,GAC/BrH,KAAK4gC,IAAIvzB,MAAMmZ,MAAQ,MACvBxmB,KAAK4gC,IAAIvzB,MAAMhG,KAAO,IAGgB,YAApCrH,KAAK4O,QAAQ5O,KAAK+sC,MAAMhqB,UAA8D,aAApC/iB,KAAK4O,QAAQ5O,KAAK+sC,MAAMhqB,UAC5E/iB,KAAKuvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,EAAI3D,OAAO9D,KAAKq0B,KAAK9E,IAAIjE,OAAOje,MAAM5F,IAAIwE,QAAQ,KAAK,KAAO,KACzFjM,KAAKuvB,IAAI9Q,MAAMpR,MAAMoV,OAAS,KAG9BziB,KAAKuvB,IAAI9Q,MAAMpR,MAAMoV,OAAS,EAAI3e,OAAO9D,KAAKq0B,KAAK9E,IAAIjE,OAAOje,MAAM5F,IAAIwE,QAAQ,KAAK,KAAO,KAC5FjM,KAAKuvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,IAGH,GAAtBzH,KAAK4O,QAAQoyB,OACfhhC,KAAKuvB,IAAI9Q,MAAMpR,MAAM0F,MAAQ/S,KAAKuvB,IAAI2d,SAAStd,YAAc,GAAK,KAClE5vB,KAAKuvB,IAAI2d,SAAS7/B,MAAMmZ,MAAQ,GAChCxmB,KAAKuvB,IAAI2d,SAAS7/B,MAAMhG,KAAO,GAC/BrH,KAAK4gC,IAAIvzB,MAAM0F,MAAQ,QAGvB/S,KAAKuvB,IAAI9Q,MAAMpR,MAAM0F,MAAQ/S,KAAK4O,QAAQo+B,SAAW,GAAKhtC,KAAKuvB,IAAI2d,SAAStd,YAAc,GAAK,KAC/F5vB,KAAKmtC,kBAGP,IAAI/d,GAAU,EACd,KAAK,GAAIwH,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KACO,GAAhC52B,KAAK6zB,OAAO+C,GAAS/O,SAAkEzhB,SAA9CpG,KAAK6gC,iBAAiB/J,WAAWF,IAAuE,GAA7C52B,KAAK6gC,iBAAiB/J,WAAWF,KACvIxH,GAAWpvB,KAAK6zB,OAAO+C,GAASxH,QAAU,UAIhDpvB,MAAKuvB,IAAI2d,SAAS9pB,UAAYgM,EAC9BpvB,KAAKuvB,IAAI2d,SAAS7/B,MAAM0iB,WAAe,IAAO/vB,KAAK4O,QAAQo+B,SAAYhtC,KAAK4O,QAAQq+B,YAAe,OAIvGrqC,EAAO8Q,UAAUy5B,gBAAkB,WACjC,GAAIntC,KAAKuvB,IAAI9Q,MAAM9U,WAAY,CAC7B/I,EAAQyQ,gBAAgBrR,KAAKgiC,YAC7B,IAAI7e,GAAU7b,OAAO8lC,iBAAiBptC,KAAKuvB,IAAI9Q,OAAO4uB,WAClDzK,EAAa9+B,OAAOqf,EAAQlX,QAAQ,KAAK,KACzCsG,EAAIqwB,EACJvB,EAAYrhC,KAAK4O,QAAQo+B,SACzBrK,EAAa,IAAO3iC,KAAK4O,QAAQo+B,SACjCx6B,EAAIowB,EAAa,GAAMD,EAAa,CAExC3iC,MAAK4gC,IAAIvzB,MAAM0F,MAAQsuB,EAAY,EAAIuB,EAAa,IAEpD,KAAK,GAAIhM,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KACO,GAAhC52B,KAAK6zB,OAAO+C,GAAS/O,SAAkEzhB,SAA9CpG,KAAK6gC,iBAAiB/J,WAAWF,IAAuE,GAA7C52B,KAAK6gC,iBAAiB/J,WAAWF,KACvI52B,KAAK6zB,OAAO+C,GAASiM,SAAStwB,EAAGC,EAAGxS,KAAKgiC,YAAahiC,KAAK4gC,IAAKS,EAAWsB,GAC3EnwB,GAAKmwB,EAAa3iC,KAAK4O,QAAQq+B,aAKrCrsC,GAAQ8Q,gBAAgB1R,KAAKgiC,eAIjCniC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAoB9B,QAAS2C,GAAUwxB,EAAMzlB,GACvB5O,KAAKK,GAAKM,EAAKiE,aACf5E,KAAKq0B,KAAOA,EAEZr0B,KAAK+zB,gBACHgS,iBAAkB,OAClBuH,aAAc,UACd92B,MAAM,EACN+2B,UAAU,EACVC,YAAa,QACb9H,QACE72B,SAAS,EACTolB,YAAa,UAEf5mB,MAAO,OACPogC,UACE16B,MAAO,GACP26B,cAAe,UACf5F,MAAO,UAET5C,YACEr2B,SAAS,EACTs2B,gBAAiB,cACjBC,MAAO,IAETzyB,YACE9D,SAAS,EACTgE,KAAM,EACNxF,MAAO,UAETsgC,UACE7M,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPjuB,MAAO,OACP8U,SAAS,EACToP,aACE5vB,MAAOiE,IAAIlF,OAAW2G,IAAI3G,QAC1BogB,OAAQlb,IAAIlF,OAAW2G,IAAI3G,UAG/BwnC,QACE/+B,SAAS,EACTmyB,OAAO,EACP35B,MACEwgB,SAAS,EACT9E,SAAU,YAEZyD,OACEqB,SAAS,EACT9E,SAAU,cAGd8Q,QACEiD,gBAKJ92B,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBACpC/zB,KAAKuvB,OACLvvB,KAAK4F,SACL5F,KAAK2D,OAAS,KACd3D,KAAK6zB,UACL7zB,KAAK6tC,oBAAqB,CAE1B,IAAIt5B,GAAKvU,IACTA,MAAKs1B,UAAY,KACjBt1B,KAAKu1B,WAAa,KAGlBv1B,KAAKyoC,eACHh1B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGm0B,OAAOx0B,EAAOnS,QAEnBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGo0B,UAAUz0B,EAAOnS,QAEtB4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGq0B,UAAU10B,EAAOnS,SAKxB/B,KAAK6oC,gBACHp1B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGu0B,aAAa50B,EAAOnS,QAEzBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGw0B,gBAAgB70B,EAAOnS,QAE5B4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGy0B,gBAAgB90B,EAAOnS,SAI9B/B,KAAK+B,SACL/B,KAAKkpC,aACLlpC,KAAK8tC,UAAY9tC,KAAKq0B,KAAKrlB,MAAMY,MACjC5P,KAAKopC,eAELppC,KAAKgiC,eACLhiC,KAAKic,WAAWrN,GAChB5O,KAAK8kC,0BAA4B,GAEjC9kC,KAAKq0B,KAAKE,QAAQ5gB,GAAG,eAAgB,WACnCY,EAAGu5B,UAAYv5B,EAAG8f,KAAKrlB,MAAMY,MAC7B2E,EAAGqsB,IAAIvzB,MAAMhG,KAAO1G,EAAKiJ,OAAOK,QAAQsK,EAAGxB,OAC3CwB,EAAGw5B,aAAa11B,MAAM9D,KAIxBvU,KAAKo0B,UACLp0B,KAAKq0B,KAAKE,QAAQrH,KAAK,UAnIzB,GAAIvsB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BmC,EAAYnC,EAAoB,IAChCsC,EAAWtC,EAAoB,IAC/BuC,EAAavC,EAAoB,IACjC0C,EAAS1C,EAAoB,IAE7BmpC,EAAY,eA6HhBxmC,GAAU6Q,UAAY,GAAIrR,GAK1BQ,EAAU6Q,UAAU0gB,QAAU,WAC5B,GAAI3V,GAAQ1M,SAASM,cAAc,MACnCoM,GAAM7W,UAAY,YAClB5H,KAAKuvB,IAAI9Q,MAAQA,EAGjBze,KAAK4gC,IAAM7uB,SAASC,gBAAgB,6BAA6B,OACjEhS,KAAK4gC,IAAIvzB,MAAM0V,SAAW,WAC1B/iB,KAAK4gC,IAAIvzB,MAAM2F,QAAU,GAAKhT,KAAK4O,QAAQ4+B,aAAavhC,QAAQ,KAAK,IAAM,KAC3EjM,KAAK4gC,IAAIvzB,MAAMo1B,QAAU,QACzBhkB,EAAMxM,YAAYjS,KAAK4gC,KAGvB5gC,KAAK4O,QAAQ++B,SAAS1Z,YAAc,OACpCj0B,KAAKguC,UAAY,GAAIxrC,GAASxC,KAAKq0B,KAAMr0B,KAAK4O,QAAQ++B,SAAU3tC,KAAK4gC,IAAK5gC,KAAK4O,QAAQilB,QAEvF7zB,KAAK4O,QAAQ++B,SAAS1Z,YAAc,QACpCj0B,KAAKiuC,WAAa,GAAIzrC,GAASxC,KAAKq0B,KAAMr0B,KAAK4O,QAAQ++B,SAAU3tC,KAAK4gC,IAAK5gC,KAAK4O,QAAQilB,cACjF7zB,MAAK4O,QAAQ++B,SAAS1Z,YAG7Bj0B,KAAKkuC,WAAa,GAAItrC,GAAO5C,KAAKq0B,KAAMr0B,KAAK4O,QAAQg/B,OAAQ,OAAQ5tC,KAAK4O,QAAQilB,QAClF7zB,KAAKmuC,YAAc,GAAIvrC,GAAO5C,KAAKq0B,KAAMr0B,KAAK4O,QAAQg/B,OAAQ,QAAS5tC,KAAK4O,QAAQilB,QAEpF7zB,KAAKuiC,QAOP1/B,EAAU6Q,UAAUuI,WAAa,SAASrN,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC9G1N,GAAKoF,oBAAoBsI,EAAQrO,KAAK4O,QAASA,GAC/CjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,cACxCjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,cACxCjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,UACxCjO,EAAK+N,aAAa1O,KAAK4O,QAASA,EAAQ,UAEpCA,EAAQs2B,YACuB,gBAAtBt2B,GAAQs2B,YACbt2B,EAAQs2B,WAAWC,kBACqB,WAAtCv2B,EAAQs2B,WAAWC,gBACrBnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,EAEa,WAAtCx2B,EAAQs2B,WAAWC,gBAC1BnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,GAGhCplC,KAAK4O,QAAQs2B,WAAWC,gBAAkB,cAC1CnlC,KAAK4O,QAAQs2B,WAAWE,MAAQ,KAMpCplC,KAAKguC,WACkB5nC,SAArBwI,EAAQ++B,WACV3tC,KAAKguC,UAAU/xB,WAAWjc,KAAK4O,QAAQ++B,UACvC3tC,KAAKiuC,WAAWhyB,WAAWjc,KAAK4O,QAAQ++B,WAIxC3tC,KAAKkuC,YACgB9nC,SAAnBwI,EAAQg/B,SACV5tC,KAAKkuC,WAAWjyB,WAAWjc,KAAK4O,QAAQg/B,QACxC5tC,KAAKmuC,YAAYlyB,WAAWjc,KAAK4O,QAAQg/B,SAIzC5tC,KAAK6zB,OAAOnuB,eAAe2jC,IAC7BrpC,KAAK6zB,OAAOwV,GAAWptB,WAAWrN,GAGlC5O,KAAKuvB,IAAI9Q,OACXze,KAAK+tC,gBAOTlrC,EAAU6Q,UAAU4uB,KAAO,WAErBtiC,KAAKuvB,IAAI9Q,MAAM9U,YACjB3J,KAAKuvB,IAAI9Q,MAAM9U,WAAWgI,YAAY3R,KAAKuvB,IAAI9Q,QAQnD5b,EAAU6Q,UAAU6uB,KAAO,WAEpBviC,KAAKuvB,IAAI9Q,MAAM9U,YAClB3J,KAAKq0B,KAAK9E,IAAIjE,OAAOrZ,YAAYjS,KAAKuvB,IAAI9Q,QAS9C5b,EAAU6Q,UAAU+hB,SAAW,SAAS1zB,GACtC,GACEyT,GADEjB,EAAKvU,KAEPorC,EAAeprC,KAAKs1B,SAGtB,IAAKvzB,EAGA,CAAA,KAAIA,YAAiBlB,IAAWkB,YAAiBjB,IAIpD,KAAM,IAAImF,WAAU,kDAHpBjG,MAAKs1B,UAAYvzB,MAHjB/B,MAAKs1B,UAAY,IAoBnB,IAXI8V,IAEFzqC,EAAKyH,QAAQpI,KAAKyoC,cAAe,SAAUpgC,EAAUgB,GACnD+hC,EAAat3B,IAAIzK,EAAOhB,KAI1BmN,EAAM41B,EAAaj1B,SACnBnW,KAAK4oC,UAAUpzB,IAGbxV,KAAKs1B,UAAW,CAElB,GAAIj1B,GAAKL,KAAKK,EACdM,GAAKyH,QAAQpI,KAAKyoC,cAAe,SAAUpgC,EAAUgB,GACnDkL,EAAG+gB,UAAU3hB,GAAGtK,EAAOhB,EAAUhI,KAInCmV,EAAMxV,KAAKs1B,UAAUnf,SACrBnW,KAAK0oC,OAAOlzB,GAEdxV,KAAKupC,mBACLvpC,KAAK+tC,eACL/tC,KAAK4gB,UAOP/d,EAAU6Q,UAAU8hB,UAAY,SAAS3B,GACvC,GACEre,GADEjB,EAAKvU,IAgBT,IAZIA,KAAKu1B,aACP50B,EAAKyH,QAAQpI,KAAK6oC,eAAgB,SAAUxgC,EAAUgB,GACpDkL,EAAGghB,WAAWvhB,YAAY3K,EAAOhB,KAInCmN,EAAMxV,KAAKu1B,WAAWpf,SACtBnW,KAAKu1B,WAAa,KAClBv1B,KAAKgpC,gBAAgBxzB,IAIlBqe,EAGA,CAAA,KAAIA,YAAkBhzB,IAAWgzB,YAAkB/yB,IAItD,KAAM,IAAImF,WAAU,kDAHpBjG,MAAKu1B,WAAa1B,MAHlB7zB,MAAKu1B,WAAa,IASpB,IAAIv1B,KAAKu1B,WAAY,CAEnB,GAAIl1B,GAAKL,KAAKK,EACdM,GAAKyH,QAAQpI,KAAK6oC,eAAgB,SAAUxgC,EAAUgB,GACpDkL,EAAGghB,WAAW5hB,GAAGtK,EAAOhB,EAAUhI,KAIpCmV,EAAMxV,KAAKu1B,WAAWpf,SACtBnW,KAAK8oC,aAAatzB,GAEpBxV,KAAK2oC,aASP9lC,EAAU6Q,UAAUi1B,UAAY,WAC9B3oC,KAAKupC,mBACLvpC,KAAKouC,sBACLpuC,KAAK+tC,eACL/tC,KAAK4gB,UAEP/d,EAAU6Q,UAAUg1B,OAAkB,SAAUlzB,GAAMxV,KAAK2oC,UAAUnzB,IACrE3S,EAAU6Q,UAAUk1B,UAAkB,SAAUpzB,GAAMxV,KAAK2oC,UAAUnzB,IACrE3S,EAAU6Q,UAAUq1B,gBAAmB,SAAUE,GAC/C,IAAK,GAAI7jC,GAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAAK,CACxC,GAAIqN,GAAQzS,KAAKu1B,WAAWhgB,IAAI0zB,EAAS7jC,GACzCpF,MAAKquC,aAAa57B,EAAOw2B,EAAS7jC,IAGpCpF,KAAK+tC,eACL/tC,KAAK4gB,UAEP/d,EAAU6Q,UAAUo1B,aAAe,SAAUG,GAAWjpC,KAAK+oC,gBAAgBE,IAE7EpmC,EAAU6Q,UAAUs1B,gBAAkB,SAAUC,GAC9C,IAAK,GAAI7jC,GAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAC9BpF,KAAK6zB,OAAOnuB,eAAeujC,EAAS7jC,MACkB,SAArDpF,KAAK6zB,OAAOoV,EAAS7jC,IAAIwJ,QAAQm3B,kBACnC/lC,KAAKiuC,WAAW5L,YAAY4G,EAAS7jC,IACrCpF,KAAKmuC,YAAY9L,YAAY4G,EAAS7jC,IACtCpF,KAAKmuC,YAAYvtB,WAGjB5gB,KAAKguC,UAAU3L,YAAY4G,EAAS7jC,IACpCpF,KAAKkuC,WAAW7L,YAAY4G,EAAS7jC,IACrCpF,KAAKkuC,WAAWttB,gBAEX5gB,MAAK6zB,OAAOoV,EAAS7jC,IAGhCpF,MAAKupC,mBACLvpC,KAAK+tC,eACL/tC,KAAK4gB,UAUP/d,EAAU6Q,UAAU26B,aAAe,SAAU57B,EAAOmkB,GAC7C52B,KAAK6zB,OAAOnuB,eAAekxB,IAY9B52B,KAAK6zB,OAAO+C,GAAS1hB,OAAOzC,GACyB,SAAjDzS,KAAK6zB,OAAO+C,GAAShoB,QAAQm3B,kBAC/B/lC,KAAKiuC,WAAW7L,YAAYxL,EAAS52B,KAAK6zB,OAAO+C,IACjD52B,KAAKmuC,YAAY/L,YAAYxL,EAAS52B,KAAK6zB,OAAO+C,MAGlD52B,KAAKguC,UAAU5L,YAAYxL,EAAS52B,KAAK6zB,OAAO+C,IAChD52B,KAAKkuC,WAAW9L,YAAYxL,EAAS52B,KAAK6zB,OAAO+C,OAlBnD52B,KAAK6zB,OAAO+C,GAAW,GAAIn0B,GAAWgQ,EAAOmkB,EAAS52B,KAAK4O,QAAS5O,KAAK8kC,0BACpB,SAAjD9kC,KAAK6zB,OAAO+C,GAAShoB,QAAQm3B,kBAC/B/lC,KAAKiuC,WAAW/L,SAAStL,EAAS52B,KAAK6zB,OAAO+C,IAC9C52B,KAAKmuC,YAAYjM,SAAStL,EAAS52B,KAAK6zB,OAAO+C,MAG/C52B,KAAKguC,UAAU9L,SAAStL,EAAS52B,KAAK6zB,OAAO+C,IAC7C52B,KAAKkuC,WAAWhM,SAAStL,EAAS52B,KAAK6zB,OAAO+C,MAclD52B,KAAKkuC,WAAWttB,SAChB5gB,KAAKmuC,YAAYvtB,UAGnB/d,EAAU6Q,UAAU06B,oBAAsB,WACxC,GAAsB,MAAlBpuC,KAAKs1B,UAAmB,CAC1B,GACIsB,GADA0X,IAEJ,KAAK1X,IAAW52B,MAAK6zB,OACf7zB,KAAK6zB,OAAOnuB,eAAekxB,KAC7B0X,EAAc1X,MAGlB,KAAK,GAAIhhB,KAAU5V,MAAKs1B,UAAUliB,MAChC,GAAIpT,KAAKs1B,UAAUliB,MAAM1N,eAAekQ,GAAS,CAC/C,GAAId,GAAO9U,KAAKs1B,UAAUliB,MAAMwC,EAChCd,GAAKvC,EAAI5R,EAAK8F,QAAQqO,EAAKvC,EAAE,QAC7B+7B,EAAcx5B,EAAKrC,OAAO1K,KAAK+M,GAGnC,IAAK8hB,IAAW52B,MAAK6zB,OACf7zB,KAAK6zB,OAAOnuB,eAAekxB,IAC7B52B,KAAK6zB,OAAO+C,GAASnB,SAAS6Y,EAAc1X,MAWpD/zB,EAAU6Q,UAAU61B,iBAAmB,WACrC,GAAIvpC,KAAKs1B,WAA+B,MAAlBt1B,KAAKs1B,UAAmB,CAC5C,GAAIiZ,GAAmB,CACvB,KAAK,GAAI34B,KAAU5V,MAAKs1B,UAAUliB,MAChC,GAAIpT,KAAKs1B,UAAUliB,MAAM1N,eAAekQ,GAAS,CAC/C,GAAId,GAAO9U,KAAKs1B,UAAUliB,MAAMwC,EACpBxP,SAAR0O,IACEA,EAAKpP,eAAe,SACHU,SAAf0O,EAAKrC,QACPqC,EAAKrC,MAAQ42B,GAIfv0B,EAAKrC,MAAQ42B,EAEfkF,EAAmBz5B,EAAKrC,OAAS42B,EAAYkF,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKvuC,MAAK6zB,OAAOwV,GACnBrpC,KAAKkuC,WAAW7L,YAAYgH,GAC5BrpC,KAAKmuC,YAAY9L,YAAYgH,GAC7BrpC,KAAKguC,UAAU3L,YAAYgH,GAC3BrpC,KAAKiuC,WAAW5L,YAAYgH,OAEzB,CACH,GAAI52B,IAASpS,GAAIgpC,EAAWja,QAASpvB,KAAK4O,QAAQ0+B,aAClDttC,MAAKquC,aAAa57B,EAAO42B,eAIpBrpC,MAAK6zB,OAAOwV,GACnBrpC,KAAKkuC,WAAW7L,YAAYgH,GAC5BrpC,KAAKmuC,YAAY9L,YAAYgH,GAC7BrpC,KAAKguC,UAAU3L,YAAYgH,GAC3BrpC,KAAKiuC,WAAW5L,YAAYgH,EAG9BrpC,MAAKkuC,WAAWttB,SAChB5gB,KAAKmuC,YAAYvtB,UAQnB/d,EAAU6Q,UAAUkN,OAAS,WAC3B,GAAI4e,IAAU,CAEdx/B,MAAK4gC,IAAIvzB,MAAM2F,QAAU,GAAKhT,KAAK4O,QAAQ4+B,aAAavhC,QAAQ,KAAK,IAAM,MACpD7F,SAAnBpG,KAAKyqC,WAA2BzqC,KAAK+S,OAAS/S,KAAKyqC,WAAazqC,KAAK+S,SACvEysB,GAAU,GAGZA,EAAUx/B,KAAKu/B,cAAgBC,CAE/B,IAAI8K,GAAkBtqC,KAAKq0B,KAAKrlB,MAAMqB,IAAMrQ,KAAKq0B,KAAKrlB,MAAMY,MACxD26B,EAAUD,GAAmBtqC,KAAKwqC,qBAAyBxqC,KAAK+S,OAAS/S,KAAKyqC,SAclF,IAbAzqC,KAAKwqC,oBAAsBF,EAC3BtqC,KAAKyqC,UAAYzqC,KAAK+S,MAGtB/S,KAAK+S,MAAQ/S,KAAKuvB,IAAI9Q,MAAMmR,YAIb,GAAX4P,IACFx/B,KAAK4gC,IAAIvzB,MAAM0F,MAAQpS,EAAKiJ,OAAOK,OAAO,EAAEjK,KAAK+S,OACjD/S,KAAK4gC,IAAIvzB,MAAMhG,KAAO1G,EAAKiJ,OAAOK,QAAQjK,KAAK+S,QAGnC,GAAVw3B,GAA6C,GAA3BvqC,KAAK6tC,mBACzB7tC,KAAK+tC,mBAIL,IAAsB,GAAlB/tC,KAAK8tC,UAAgB,CACvB,GAAIhlB,GAAS9oB,KAAKq0B,KAAKrlB,MAAMY,MAAQ5P,KAAK8tC,UACtC9+B,EAAQhP,KAAKq0B,KAAKrlB,MAAMqB,IAAMrQ,KAAKq0B,KAAKrlB,MAAMY,KAClD,IAAkB,GAAd5P,KAAK+S,MAAY,CACnB,GAAIy7B,GAAmBxuC,KAAK+S,MAAM/D,EAC9B+Z,EAAUD,EAAS0lB,CACvBxuC,MAAK4gC,IAAIvzB,MAAMhG,MAASrH,KAAK+S,MAAQgW,EAAW,MAStD,MAHA/oB,MAAKkuC,WAAWttB,SAChB5gB,KAAKmuC,YAAYvtB,SAEV4e,GAOT38B,EAAU6Q,UAAUq6B,aAAe,WAGjC,GADAntC,EAAQyQ,gBAAgBrR,KAAKgiC,aACX,GAAdhiC,KAAK+S,OAAgC,MAAlB/S,KAAKs1B,UAAmB,CAC7C,GAAI7iB,GAAOrN,EACPqpC,KACAC,KACAC,KACA5L,GAAe,EAGfkG,IACJ,KAAK,GAAIrS,KAAW52B,MAAK6zB,OACnB7zB,KAAK6zB,OAAOnuB,eAAekxB,KAC7BnkB,EAAQzS,KAAK6zB,OAAO+C,GACC,GAAjBnkB,EAAMoV,SAAgEzhB,SAA5CpG,KAAK4O,QAAQilB,OAAOiD,WAAWF,IAAqE,GAA3C52B,KAAK4O,QAAQilB,OAAOiD,WAAWF,IACpHqS,EAASlhC,KAAK6uB,GAIpB,IAAIqS,EAAS1jC,OAAS,EAAG,CAEvB,GAAIqpC,GAAU5uC,KAAKq0B,KAAK1zB,KAAKq0B,cAAeh1B,KAAKq0B,KAAKC,SAAS50B,KAAKqT,OAChE87B,EAAU7uC,KAAKq0B,KAAK1zB,KAAKq0B,aAAa,EAAIh1B,KAAKq0B,KAAKC,SAAS50B,KAAKqT,OAClEwiB,IAIJ,KAFAv1B,KAAK8uC,iBAAiB7F,EAAU1T,EAAYqZ,EAASC,GAEhDzpC,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAC/BqpC,EAAsBxF,EAAS7jC,IAAMpF,KAAK+uC,qBAAqBxZ,EAAW0T,EAAS7jC,IAQrF,IALApF,KAAKgvC,YAAY/F,EAAUwF,EAAuBE,GAIlD5L,EAAe/iC,KAAKivC,aAAahG,EAAU0F,GACvB,GAAhB5L,EAIF,MAHAniC,GAAQ8Q,gBAAgB1R,KAAKgiC,aAC7BhiC,KAAK6tC,oBAAqB,MAC1B7tC,MAAKq0B,KAAKE,QAAQrH,KAAK,SAMzB,KAHAltB,KAAK6tC,oBAAqB,EAGrBzoC,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAC/BqN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IAC7BspC,EAAmBzF,EAAS7jC,IAAMpF,KAAKkvC,qBAAqB3Z,EAAW0T,EAAS7jC,IAAKqN,EAKvF,KAAKrN,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAC/BqN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IACF,QAAvBqN,EAAM7D,QAAQvB,OAChBrN,KAAKmvC,eAAeT,EAAmBzF,EAAS7jC,IAAKqN,EAGzDzS,MAAKovC,eAAenG,EAAUyF,IAKlC9tC,EAAQ8Q,gBAAgB1R,KAAKgiC,cAI/Bn/B,EAAU6Q,UAAUo7B,iBAAmB,SAAU7F,EAAU1T,EAAYqZ,EAASC,GAM9E,GAAIp8B,GAAOrN,EAAG4lB,EAAGlW,CACjB,IAAIm0B,EAAS1jC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAAK,CACpCqN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IAC7BmwB,EAAW0T,EAAS7jC,MACpB,IAAIiqC,GAAgB9Z,EAAW0T,EAAS7jC,GAExC,IAA0B,GAAtBqN,EAAM7D,QAAQ4H,KAAc,CAC9B,GAAI9G,GAAQ5K,KAAKiI,IAAI,EAAGpM,EAAKoP,oBAAoB0C,EAAM6iB,UAAWsZ,EAAS,IAAK,UAChF,KAAK5jB,EAAItb,EAAOsb,EAAIvY,EAAM6iB,UAAU/vB,OAAQylB,IAE1C,GADAlW,EAAOrC,EAAM6iB,UAAUtK,GACV5kB,SAAT0O,EAAoB,CACtB,GAAIA,EAAKvC,EAAIs8B,EAAS,CACpBQ,EAActnC,KAAK+M,EACnB,OAGAu6B,EAActnC,KAAK+M,QAMzB,KAAKkW,EAAI,EAAGA,EAAIvY,EAAM6iB,UAAU/vB,OAAQylB,IACtClW,EAAOrC,EAAM6iB,UAAUtK,GACV5kB,SAAT0O,GACEA,EAAKvC,EAAIq8B,GAAW95B,EAAKvC,EAAIs8B,GAC/BQ,EAActnC,KAAK+M,GAQ/B9U,KAAKsvC,eAAerG,EAAU1T,IAGhC1yB,EAAU6Q,UAAU47B,eAAiB,SAAUrG,EAAU1T,GACvD,GAAI9iB,EACJ,IAAIw2B,EAAS1jC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAEnC,GADAqN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IACC,GAA1BqN,EAAM7D,QAAQ2+B,SAAkB,CAClC,GAAI8B,GAAgB9Z,EAAW0T,EAAS7jC,GACxC,IAAIiqC,EAAc9pC,OAAS,EAAG,CAC5B,GAAIgqC,GAAY,EACZC,EAAiBH,EAAc9pC,OAI/BkqC,EAAYzvC,KAAKq0B,KAAK1zB,KAAKi0B,eAAeya,EAAcA,EAAc9pC,OAAS,GAAGgN,GAAKvS,KAAKq0B,KAAK1zB,KAAKi0B,eAAeya,EAAc,GAAG98B,GACtIm9B,EAAiBF,EAAiBC,CACtCF,GAAYzqC,KAAKwG,IAAIxG,KAAK6qC,KAAK,GAAMH,GAAiB1qC,KAAKiI,IAAI,EAAGjI,KAAKkoB,MAAM0iB,IAG7E,KAAK,GADDE,MACK5kB,EAAI,EAAOwkB,EAAJxkB,EAAoBA,GAAKukB,EACvCK,EAAY7nC,KAAKsnC,EAAcrkB,GAGjCuK,GAAW0T,EAAS7jC,IAAMwqC,KAOpC/sC,EAAU6Q,UAAUs7B,YAAc,SAAU/F,EAAU1T,EAAYoZ,GAChE,GAAIlD,GAAWh5B,EAAOrN,EAAE4lB,EAGpB6kB,EAFAC,KACAC,IAEJ,IAAI9G,EAAS1jC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAE/B,GADAqmC,EAAYlW,EAAW0T,EAAS7jC,IAC5BqmC,EAAUlmC,OAAS,EAErB,GADAkN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IACF,QAAvBqN,EAAM7D,QAAQvB,OAA2D,SAAxCoF,EAAM7D,QAAQ6+B,SAASC,cAA0B,CACpF,GAAIvyB,GAAOswB,EAAU,GAAGj5B,EACpB6I,EAAOowB,EAAU,GAAGj5B,CACxB,KAAKwY,EAAI,EAAGA,EAAIygB,EAAUlmC,OAAQylB,IAChC7P,EAAOA,EAAOswB,EAAUzgB,GAAGxY,EAAIi5B,EAAUzgB,GAAGxY,EAAI2I,EAChDE,EAAOA,EAAOowB,EAAUzgB,GAAGxY,EAAIi5B,EAAUzgB,GAAGxY,EAAI6I,CAElDszB,GAAY1F,EAAS7jC,KAAOkG,IAAK6P,EAAMpO,IAAKsO,EAAM0qB,iBAAkBtzB,EAAM7D,QAAQm3B,sBAE/E,IAA2B,OAAvBtzB,EAAM7D,QAAQvB,MAWrB,IATEwiC,EADoC,QAAlCp9B,EAAM7D,QAAQm3B,iBACE+J,EAGAC,EAGpBpB,EAAY1F,EAAS7jC,KAAOkG,IAAK,EAAGyB,IAAK,EAAGg5B,iBAAkBtzB,EAAM7D,QAAQm3B,iBAAkBiK,QAAQ,GAGjGhlB,EAAI,EAAGA,EAAIygB,EAAUlmC,OAAQylB,IAChC6kB,EAAgB9nC,MACdwK,EAAGk5B,EAAUzgB,GAAGzY,EAChBC,EAAGi5B,EAAUzgB,GAAGxY,EAChBokB,QAASqS,EAAS7jC,IAO5B,IAAI6qC,EACAH,GAAoBvqC,OAAS,IAE/BuqC,EAAoBt5B,KAAK,SAAUrR,EAAGa,GACpC,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAEyxB,QAAU5wB,EAAE4wB,QAEdzxB,EAAEoN,EAAIvM,EAAEuM,IAGnB09B,KACAjwC,KAAKkwC,sBAAsBD,EAAeH,GAC1CnB,EAA4B,eAAI3uC,KAAKmwC,qBAAqBF,EAAeH,GACzEnB,EAA4B,eAAE5I,iBAAmB,OACjDkD,EAASlhC,KAAK,mBAEZgoC,EAAqBxqC,OAAS,IAEhCwqC,EAAqBv5B,KAAK,SAAUrR,EAAGa,GACrC,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAEyxB,QAAU5wB,EAAE4wB,QAEdzxB,EAAEoN,EAAIvM,EAAEuM,IAGnB09B,KACAjwC,KAAKkwC,sBAAsBD,EAAeF,GAC1CpB,EAA6B,gBAAI3uC,KAAKmwC,qBAAqBF,EAAeF,GAC1EpB,EAA6B,gBAAE5I,iBAAmB,QAClDkD,EAASlhC,KAAK,sBAKpBlF,EAAU6Q,UAAUy8B,qBAAuB,SAAUF,EAAeG,GAIlE,IAAK,GAHD3nC,GACA0S,EAAOi1B,EAAa,GAAG59B,EACvB6I,EAAO+0B,EAAa,GAAG59B,EAClBpN,EAAI,EAAGA,EAAIgrC,EAAa7qC,OAAQH,IACvCqD,EAAM2nC,EAAahrC,GAAGmN,EACKnM,SAAvB6pC,EAAcxnC,IAChB0S,EAAOA,EAAOi1B,EAAahrC,GAAGoN,EAAI49B,EAAahrC,GAAGoN,EAAI2I,EACtDE,EAAOA,EAAO+0B,EAAahrC,GAAGoN,EAAI49B,EAAahrC,GAAGoN,EAAI6I,GAGtD40B,EAAcxnC,GAAK4nC,aAAeD,EAAahrC,GAAGoN,CAGtD,KAAK,GAAI89B,KAAQL,GACXA,EAAcvqC,eAAe4qC,KAC/Bn1B,EAAOA,EAAO80B,EAAcK,GAAMD,YAAcJ,EAAcK,GAAMD,YAAcl1B,EAClFE,EAAOA,EAAO40B,EAAcK,GAAMD,YAAcJ,EAAcK,GAAMD,YAAch1B,EAItF,QAAQ/P,IAAK6P,EAAMpO,IAAKsO,IAU1BxY,EAAU6Q,UAAUu7B,aAAe,SAAUhG,EAAU0F,GACrD,GAGoE4B,GAAQC,EAHxEzN,GAAe,EACf0N,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAI7H,EAAS1jC,OAAS,EAAG,CACvB,IAAK,GAAIH,GAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAC/BupC,EAAYjpC,eAAeujC,EAAS7jC,KAClCupC,EAAY1F,EAAS7jC,IAAI4qC,UAAW,IACtCO,EAAS5B,EAAY1F,EAAS7jC,IAAIkG,IAClCklC,EAAS7B,EAAY1F,EAAS7jC,IAAI2H,IAEe,QAA7C4hC,EAAY1F,EAAS7jC,IAAI2gC,kBAC3B0K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACFzwC,KAAKguC,UAAU9a,SAASyd,EAASE,GAEb,GAAlBH,GACF1wC,KAAKiuC,WAAW/a,SAAS0d,EAAUE,GAsCvC,MAlCA/N,GAAe/iC,KAAK+wC,qBAAqBN,EAAgBzwC,KAAKguC,YAAejL,EAC7EA,EAAe/iC,KAAK+wC,qBAAqBL,EAAgB1wC,KAAKiuC,aAAelL,EAEvD,GAAlB2N,GAA2C,GAAjBD,GAC5BzwC,KAAKguC,UAAUgD,WAAY,EAC3BhxC,KAAKiuC,WAAW+C,WAAY,IAG5BhxC,KAAKguC,UAAUgD,WAAY,EAC3BhxC,KAAKiuC,WAAW+C,WAAY,GAG9BhxC,KAAKiuC,WAAWlM,QAAU0O,EAEI,GAA1BzwC,KAAKiuC,WAAWlM,QACW/hC,KAAKguC,UAAUlM,WAAtB,GAAlB4O,EAAqD1wC,KAAKiuC,WAAWl7B,MAChB,EAEzDgwB,EAAe/iC,KAAKguC,UAAUptB,UAAYmiB,EAC1C/iC,KAAKiuC,WAAWpM,iBAAmB7hC,KAAKguC,UAAUpM,WAClDmB,EAAe/iC,KAAKiuC,WAAWrtB,UAAYmiB,GAG3CA,EAAe/iC,KAAKiuC,WAAWrtB,UAAYmiB,EAIH,IAAtCkG,EAAS1iC,QAAQ,mBACnB0iC,EAAS9gC,OAAO8gC,EAAS1iC,QAAQ,kBAAkB,GAEV,IAAvC0iC,EAAS1iC,QAAQ,oBACnB0iC,EAAS9gC,OAAO8gC,EAAS1iC,QAAQ,mBAAmB,GAG/Cw8B,GAWTlgC,EAAU6Q,UAAUq9B,qBAAuB,SAAUE,EAAU1U,GAC7D,GAAI5B,IAAU,CAad,OAZgB,IAAZsW,EACE1U,EAAKhN,IAAI9Q,MAAM9U,aACjB4yB,EAAK+F,OACL3H,GAAU,GAIP4B,EAAKhN,IAAI9Q,MAAM9U,aAClB4yB,EAAKgG,OACL5H,GAAU,GAGPA,GAUT93B,EAAU6Q,UAAU07B,eAAiB,SAAUnG,EAAUyF,GACvD,GAEIwC,GACAzoC,EAAK0oC,EACL1+B,EACArN,EAAE4lB,EALFolB,KACAH,KAKAmB,EAAY,CAGhB,KAAKhsC,EAAI,EAAGA,EAAI6jC,EAAS1jC,OAAQH,IAE/B,GADAqN,EAAQzS,KAAK6zB,OAAOoV,EAAS7jC,IACF,OAAvBqN,EAAM7D,QAAQvB,OACK,GAAjBoF,EAAMoV,UAAoEzhB,SAAhDpG,KAAK4O,QAAQilB,OAAOiD,WAAWmS,EAAS7jC,KAAoE,GAA/CpF,KAAK4O,QAAQilB,OAAOiD,WAAWmS,EAAS7jC,KACjI,IAAK4lB,EAAI,EAAGA,EAAI0jB,EAAmBzF,EAAS7jC,IAAIG,OAAQylB,IACtDolB,EAAaroC,MACXwK,EAAGm8B,EAAmBzF,EAAS7jC,IAAI4lB,GAAGzY,EACtCC,EAAGk8B,EAAmBzF,EAAS7jC,IAAI4lB,GAAGxY,EACtCokB,QAASqS,EAAS7jC,KAEpBgsC,GAAa,CAMrB,IAAiB,GAAbA,EAeJ,IAZAhB,EAAa55B,KAAK,SAAUrR,EAAGa,GAC7B,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAEyxB,QAAU5wB,EAAE4wB,QAEdzxB,EAAEoN,EAAIvM,EAAEuM,IAKnBvS,KAAKkwC,sBAAsBD,EAAeG,GAGrChrC,EAAI,EAAGA,EAAIgrC,EAAa7qC,OAAQH,IAAK,CACxCqN,EAAQzS,KAAK6zB,OAAOuc,EAAahrC,GAAGwxB,QACpC,IAAI+K,GAAW,GAAMlvB,EAAM7D,QAAQ6+B,SAAS16B,KAE5CtK,GAAM2nC,EAAahrC,GAAGmN,CACtB,IAAI8+B,GAAe,CACnB,IAA2BjrC,SAAvB6pC,EAAcxnC,GACZrD,EAAE,EAAIgrC,EAAa7qC,SAAS2rC,EAAepsC,KAAKklB,IAAIomB,EAAahrC,EAAE,GAAGmN,EAAI9J,IAC1ErD,EAAI,IAAwB8rC,EAAepsC,KAAKwG,IAAI4lC,EAAapsC,KAAKklB,IAAIomB,EAAahrC,EAAE,GAAGmN,EAAI9J,KACpG0oC,EAAWnxC,KAAKsxC,iBAAiBJ,EAAcz+B,EAAOkvB,OAEnD,CACH,GAAI4P,GAAUnsC,GAAK6qC,EAAcxnC,GAAK+oC,OAASvB,EAAcxnC,GAAKgpC,UAC9DC,EAAUtsC,GAAK6qC,EAAcxnC,GAAKgpC,SAAW,EAC7CF,GAAUnB,EAAa7qC,SAAS2rC,EAAepsC,KAAKklB,IAAIomB,EAAamB,GAASh/B,EAAI9J,IAClFipC,EAAU,IAAsBR,EAAepsC,KAAKwG,IAAI4lC,EAAapsC,KAAKklB,IAAIomB,EAAasB,GAASn/B,EAAI9J,KAC5G0oC,EAAWnxC,KAAKsxC,iBAAiBJ,EAAcz+B,EAAOkvB,GACtDsO,EAAcxnC,GAAKgpC,UAAY,EAEa,SAAxCh/B,EAAM7D,QAAQ6+B,SAASC,eACzB2D,EAAepB,EAAcxnC,GAAK4nC,YAClCJ,EAAcxnC,GAAK4nC,aAAe59B,EAAMuyB,aAAeoL,EAAahrC,GAAGoN,GAExB,cAAxCC,EAAM7D,QAAQ6+B,SAASC,gBAC9ByD,EAASp+B,MAAQo+B,EAASp+B,MAAQk9B,EAAcxnC,GAAK+oC,OACrDL,EAASroB,QAAWmnB,EAAcxnC,GAAa,SAAI0oC,EAASp+B,MAAS,GAAIo+B,EAASp+B,OAASk9B,EAAcxnC,GAAK+oC,OAAO,GACjF,QAAhC/+B,EAAM7D,QAAQ6+B,SAAS3F,MAAwBqJ,EAASroB,QAAU,GAAIqoB,EAASp+B,MAC1C,SAAhCN,EAAM7D,QAAQ6+B,SAAS3F,QAAmBqJ,EAASroB,QAAU,GAAIqoB,EAASp+B,QAGvFnS,EAAQkS,QAAQs9B,EAAahrC,GAAGmN,EAAI4+B,EAASroB,OAAQsnB,EAAahrC,GAAGoN,EAAI6+B,EAAcF,EAASp+B,MAAON,EAAMuyB,aAAeoL,EAAahrC,GAAGoN,EAAGC,EAAM7K,UAAY,OAAQ5H,KAAKgiC,YAAahiC,KAAK4gC,KAExJ,GAApCnuB,EAAM7D,QAAQ+D,WAAW9D,SAC3BjO,EAAQ0R,UAAU89B,EAAahrC,GAAGmN,EAAI4+B,EAASroB,OAAQsnB,EAAahrC,GAAGoN,EAAI6+B,EAAc5+B,EAAOzS,KAAKgiC,YAAahiC,KAAK4gC,OAW7H/9B,EAAU6Q,UAAUw8B,sBAAwB,SAAUD,EAAeG,GAGnE,IAAK,GADDc,GACK9rC,EAAI,EAAGA,EAAIgrC,EAAa7qC,OAAQH,IACnCA,EAAI,EAAIgrC,EAAa7qC,SACvB2rC,EAAepsC,KAAKklB,IAAIomB,EAAahrC,EAAI,GAAGmN,EAAI69B,EAAahrC,GAAGmN,IAE9DnN,EAAI,IACN8rC,EAAepsC,KAAKwG,IAAI4lC,EAAcpsC,KAAKklB,IAAIomB,EAAahrC,EAAI,GAAGmN,EAAI69B,EAAahrC,GAAGmN,KAErE,GAAhB2+B,IACuC9qC,SAArC6pC,EAAcG,EAAahrC,GAAGmN,KAChC09B,EAAcG,EAAahrC,GAAGmN,IAAMi/B,OAAQ,EAAGC,SAAU,EAAGpB,YAAa,IAE3EJ,EAAcG,EAAahrC,GAAGmN,GAAGi/B,QAAU,IAcjD3uC,EAAU6Q,UAAU49B,iBAAmB,SAAUJ,EAAcz+B,EAAOkvB,GACpE,GAAI5uB,GAAO+V,CAwBX,OAvBIooB,GAAez+B,EAAM7D,QAAQ6+B,SAAS16B,OAASm+B,EAAe,GAChEn+B,EAAuB4uB,EAAfuP,EAA0BvP,EAAWuP,EAE7CpoB,EAAS,EAC2B,QAAhCrW,EAAM7D,QAAQ6+B,SAAS3F,MACzBhf,GAAU,GAAMooB,EAEuB,SAAhCz+B,EAAM7D,QAAQ6+B,SAAS3F,QAC9Bhf,GAAU,GAAMooB,KAKlBn+B,EAAQN,EAAM7D,QAAQ6+B,SAAS16B,MAC/B+V,EAAS,EAC2B,QAAhCrW,EAAM7D,QAAQ6+B,SAAS3F,MACzBhf,GAAU,GAAMrW,EAAM7D,QAAQ6+B,SAAS16B,MAEA,SAAhCN,EAAM7D,QAAQ6+B,SAAS3F,QAC9Bhf,GAAU,GAAMrW,EAAM7D,QAAQ6+B,SAAS16B,SAInCA,MAAOA,EAAO+V,OAAQA,IAUhCjmB,EAAU6Q,UAAUy7B,eAAiB,SAAU7Y,EAAS7jB,GACtD,GAAe,MAAX6jB,GACEA,EAAQ/wB,OAAS,EAAG,CACtB,GAAI+/B,GAAMl5B,EACNulC,EAAY7tC,OAAO9D,KAAK4gC,IAAIvzB,MAAM2F,OAAO/G,QAAQ,KAAK,IAa1D,IAZAq5B,EAAO1kC,EAAQgR,cAAc,OAAQ5R,KAAKgiC,YAAahiC,KAAK4gC,KAC5D0E,EAAK1yB,eAAe,KAAM,QAASH,EAAM7K,WAIvCwE,EADsC,GAApCqG,EAAM7D,QAAQs2B,WAAWr2B,QACvB7O,KAAK4xC,YAAYtb,EAAS7jB,GAG1BzS,KAAK6xC,QAAQvb,GAIiB,GAAhC7jB,EAAM7D,QAAQ82B,OAAO72B,QAAiB,CACxC,GACIijC,GADAvM,EAAW3kC,EAAQgR,cAAc,OAAO5R,KAAKgiC,YAAahiC,KAAK4gC,IAGjEkR,GADsC,OAApCr/B,EAAM7D,QAAQ82B,OAAOzR,YACf,IAAMqC,EAAQ,GAAG/jB,EAAI,MAAgBnG,EAAI,IAAMkqB,EAAQA,EAAQ/wB,OAAS,GAAGgN,EAAI,KAG/E,IAAM+jB,EAAQ,GAAG/jB,EAAI,IAAMo/B,EAAY,IAAMvlC,EAAI,IAAMkqB,EAAQA,EAAQ/wB,OAAS,GAAGgN,EAAI,IAAMo/B,EAEvGpM,EAAS3yB,eAAe,KAAM,QAASH,EAAM7K,UAAY,SACzD29B,EAAS3yB,eAAe,KAAM,IAAKk/B,GAGrCxM,EAAK1yB,eAAe,KAAM,IAAK,IAAMxG,GAGG,GAApCqG,EAAM7D,QAAQ+D,WAAW9D,SAC3B7O,KAAK+xC,YAAYzb,EAAS7jB,EAAOzS,KAAKgiC,YAAahiC,KAAK4gC,OAehE/9B,EAAU6Q,UAAUq+B,YAAc,SAAUzb,EAAS7jB,EAAOnB,EAAesvB,EAAK9X,GAC/D1iB,SAAX0iB,IAAuBA,EAAS,EACpC,KAAK,GAAI1jB,GAAI,EAAGA,EAAIkxB,EAAQ/wB,OAAQH,IAClCxE,EAAQ0R,UAAUgkB,EAAQlxB,GAAGmN,EAAIuW,EAAQwN,EAAQlxB,GAAGoN,EAAGC,EAAOnB,EAAesvB,IAejF/9B,EAAU6Q,UAAUq7B,qBAAuB,SAAUiD,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEAzd,EAAW10B,KAAKq0B,KAAK1zB,KAAK+zB,SAErBtvB,EAAI,EAAGA,EAAI4sC,EAAWzsC,OAAQH,IACrC6sC,EAASvd,EAASsd,EAAW5sC,GAAGmN,GAAKvS,KAAK+S,MAC1Cm/B,EAASF,EAAW5sC,GAAGoN,EACvB2/B,EAAcpqC,MAAMwK,EAAG0/B,EAAQz/B,EAAG0/B,GAGpC,OAAOC,IAcTtvC,EAAU6Q,UAAUw7B,qBAAuB,SAAU8C,EAAYv/B,GAC/D,GACIw/B,GAAQC,EADRC,KAEAzd,EAAW10B,KAAKq0B,KAAK1zB,KAAK+zB,SAC1B6H,EAAOv8B,KAAKguC,UACZ2D,EAAY7tC,OAAO9D,KAAK4gC,IAAIvzB,MAAM2F,OAAO/G,QAAQ,KAAK,IACpB,UAAlCwG,EAAM7D,QAAQm3B,mBAChBxJ,EAAOv8B,KAAKiuC,WAGd,KAAK,GAAI7oC,GAAI,EAAGA,EAAI4sC,EAAWzsC,OAAQH,IACrC6sC,EAASvd,EAASsd,EAAW5sC,GAAGmN,GAAKvS,KAAK+S,MAC1Cm/B,EAASptC,KAAKkoB,MAAMuP,EAAK2H,aAAa8N,EAAW5sC,GAAGoN,IACpD2/B,EAAcpqC,MAAMwK,EAAG0/B,EAAQz/B,EAAG0/B,GAKpC,OAFAz/B,GAAMwyB,gBAAgBngC,KAAKwG,IAAIqmC,EAAWpV,EAAK2H,aAAa,KAErDiO,GAUTtvC,EAAU6Q,UAAU0+B,mBAAqB,SAASl/B,GAMhD,IAAK,GAJDm/B,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrBtmC,EAAItH,KAAKkoB,MAAM9Z,EAAK,GAAGX,GAAK,IAAMzN,KAAKkoB,MAAM9Z,EAAK,GAAGV,GAAK,IAC1DmgC,EAAgB,EAAE,EAClBptC,EAAS2N,EAAK3N,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BitC,EAAW,GAALjtC,EAAU8N,EAAK,GAAKA,EAAK9N,EAAE,GACjCktC,EAAKp/B,EAAK9N,GACVmtC,EAAKr/B,EAAK9N,EAAE,GACZotC,EAAcjtC,EAARH,EAAI,EAAc8N,EAAK9N,EAAE,GAAKmtC,EAUpCE,GAAQlgC,IAAM8/B,EAAG9/B,EAAI,EAAE+/B,EAAG//B,EAAIggC,EAAGhgC,GAAIogC,EAAgBngC,IAAM6/B,EAAG7/B,EAAI,EAAE8/B,EAAG9/B,EAAI+/B,EAAG//B,GAAImgC,GAClFD,GAAQngC,GAAM+/B,EAAG//B,EAAI,EAAEggC,EAAGhgC,EAAIigC,EAAGjgC,GAAIogC,EAAgBngC,GAAM8/B,EAAG9/B,EAAI,EAAE+/B,EAAG//B,EAAIggC,EAAGhgC,GAAImgC,GAGlFvmC,GAAK,IACHqmC,EAAIlgC,EAAI,IACRkgC,EAAIjgC,EAAI,IACRkgC,EAAIngC,EAAI,IACRmgC,EAAIlgC,EAAI,IACR+/B,EAAGhgC,EAAI,IACPggC,EAAG//B,EAAI,GAGX,OAAOpG,IAaTvJ,EAAU6Q,UAAUk+B,YAAc,SAAS1+B,EAAMT,GAC/C,GAAI2yB,GAAQ3yB,EAAM7D,QAAQs2B,WAAWE,KACrC,IAAa,GAATA,GAAwBh/B,SAAVg/B,EAChB,MAAOplC,MAAKoyC,mBAAmBl/B,EAO/B,KAAK,GAJDm/B,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAGnpB,EAAGopB,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3CnnC,EAAItH,KAAKkoB,MAAM9Z,EAAK,GAAGX,GAAK,IAAMzN,KAAKkoB,MAAM9Z,EAAK,GAAGV,GAAK,IAC1DjN,EAAS2N,EAAK3N,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BitC,EAAW,GAALjtC,EAAU8N,EAAK,GAAKA,EAAK9N,EAAE,GACjCktC,EAAKp/B,EAAK9N,GACVmtC,EAAKr/B,EAAK9N,EAAE,GACZotC,EAAcjtC,EAARH,EAAI,EAAc8N,EAAK9N,EAAE,GAAKmtC,EAEpCK,EAAK9tC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI6e,EAAG9/B,EAAI+/B,EAAG//B,EAAE,GAAKzN,KAAK0uB,IAAI6e,EAAG7/B,EAAI8/B,EAAG9/B,EAAE,IAC9DqgC,EAAK/tC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI8e,EAAG//B,EAAIggC,EAAGhgC,EAAE,GAAKzN,KAAK0uB,IAAI8e,EAAG9/B,EAAI+/B,EAAG//B,EAAE,IAC9DsgC,EAAKhuC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI+e,EAAGhgC,EAAIigC,EAAGjgC,EAAE,GAAKzN,KAAK0uB,IAAI+e,EAAG//B,EAAIggC,EAAGhgC,EAAE,IAiB9D0gC,EAAUpuC,KAAK0uB,IAAIsf,EAAK1N,GACxBgO,EAAUtuC,KAAK0uB,IAAIsf,EAAG,EAAE1N,GACxB+N,EAAUruC,KAAK0uB,IAAIqf,EAAKzN,GACxBiO,EAAUvuC,KAAK0uB,IAAIqf,EAAG,EAAEzN,GACxBmO,EAAUzuC,KAAK0uB,IAAIof,EAAKxN,GACxBkO,EAAUxuC,KAAK0uB,IAAIof,EAAG,EAAExN,GAExB2N,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpCzpB,EAAI,EAAEwpB,EAAU,EAAEF,EAASC,EAASE,EACpCL,EAAI,EAAEO,GAAUA,EAASJ,GACrBH,EAAI,IAAIA,EAAI,EAAIA,GACpBC,EAAI,EAAEC,GAAUA,EAASC,GACrBF,EAAI,IAAIA,EAAI,EAAIA,GAEpBR,GAAQlgC,IAAM8gC,EAAUhB,EAAG9/B,EAAIwgC,EAAET,EAAG//B,EAAI+gC,EAAUf,EAAGhgC,GAAKygC,EACxDxgC,IAAM6gC,EAAUhB,EAAG7/B,EAAIugC,EAAET,EAAG9/B,EAAI8gC,EAAUf,EAAG//B,GAAKwgC,GAEpDN,GAAQngC,GAAM6gC,EAAUd,EAAG//B,EAAIqX,EAAE2oB,EAAGhgC,EAAI8gC,EAAUb,EAAGjgC,GAAK0gC,EACxDzgC,GAAM4gC,EAAUd,EAAG9/B,EAAIoX,EAAE2oB,EAAG//B,EAAI6gC,EAAUb,EAAGhgC,GAAKygC,GAEvC,GAATR,EAAIlgC,GAAmB,GAATkgC,EAAIjgC,IAASigC,EAAMH,GACxB,GAATI,EAAIngC,GAAmB,GAATmgC,EAAIlgC,IAASkgC,EAAMH,GACrCnmC,GAAK,IACHqmC,EAAIlgC,EAAI,IACRkgC,EAAIjgC,EAAI,IACRkgC,EAAIngC,EAAI,IACRmgC,EAAIlgC,EAAI,IACR+/B,EAAGhgC,EAAI,IACPggC,EAAG//B,EAAI,GAGX,OAAOpG,IAUXvJ,EAAU6Q,UAAUm+B,QAAU,SAAS3+B,GAGrC,IAAK,GADD9G,GAAI,GACChH,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAE7BgH,GADO,GAALhH,EACG8N,EAAK9N,GAAGmN,EAAI,IAAMW,EAAK9N,GAAGoN,EAG1B,IAAMU,EAAK9N,GAAGmN,EAAI,IAAMW,EAAK9N,GAAGoN,CAGzC,OAAOpG,IAGTvM,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GAe9B,QAAS4C,GAAUuxB,EAAMzlB,GACvB5O,KAAKuvB,KACH6W,WAAY,KACZoN,cACAC,cACAC,cACAC,cACAniC,WACEgiC,cACAC,cACAC,cACAC,gBAGJ3zC,KAAK4F,OACHoJ,OACEY,MAAO,EACPS,IAAK,EACL0mB,YAAa,GAEf6c,QAAS,GAGX5zC,KAAK+zB,gBACHE,YAAa,SAEb6M,iBAAiB,EACjBC,iBAAiB,GAEnB/gC,KAAK4O,QAAUjO,EAAKuE,UAAWlF,KAAK+zB,gBAEpC/zB,KAAKq0B,KAAOA,EAGZr0B,KAAKo0B,UAELp0B,KAAKic,WAAWrN,GAjDlB,GAAIjO,GAAOT,EAAoB,GAC3BmC,EAAYnC,EAAoB,IAChC2B,EAAW3B,EAAoB,IAC/BwD,EAASxD,EAAoB,GAiDjC4C,GAAS4Q,UAAY,GAAIrR,GAUzBS,EAAS4Q,UAAUuI,WAAa,SAASrN,GACnCA,IAEFjO,EAAKgF,iBAAiB,cAAe,kBAAmB,mBAAoB3F,KAAK4O,QAASA,GAItF,UAAYA,KACe,kBAAlBlL,GAAOm8B,OAEhBn8B,EAAOm8B,OAAOjxB,EAAQixB,QAGtBn8B,EAAOmwC,KAAKjlC,EAAQixB,WAS5B/8B,EAAS4Q,UAAU0gB,QAAU,WAC3Bp0B,KAAKuvB,IAAI6W,WAAar0B,SAASM,cAAc,OAC7CrS,KAAKuvB,IAAI5jB,WAAaoG,SAASM,cAAc,OAE7CrS,KAAKuvB,IAAI6W,WAAWx+B,UAAY,sBAChC5H,KAAKuvB,IAAI5jB,WAAW/D,UAAY,uBAMlC9E,EAAS4Q,UAAU4rB,QAAU,WAEvBt/B,KAAKuvB,IAAI6W,WAAWz8B,YACtB3J,KAAKuvB,IAAI6W,WAAWz8B,WAAWgI,YAAY3R,KAAKuvB,IAAI6W,YAElDpmC,KAAKuvB,IAAI5jB,WAAWhC,YACtB3J,KAAKuvB,IAAI5jB,WAAWhC,WAAWgI,YAAY3R,KAAKuvB,IAAI5jB,YAGtD3L,KAAKq0B,KAAO,MAOdvxB,EAAS4Q,UAAUkN,OAAS,WAC1B,GAAIhS,GAAU5O,KAAK4O,QACfhJ,EAAQ5F,KAAK4F,MACbwgC,EAAapmC,KAAKuvB,IAAI6W,WACtBz6B,EAAa3L,KAAKuvB,IAAI5jB,WAGtBm0B,EAAiC,OAAvBlxB,EAAQqlB,YAAwBj0B,KAAKq0B,KAAK9E,IAAI9nB,IAAMzH,KAAKq0B,KAAK9E,IAAI9M,OAC5EqxB,EAAiB1N,EAAWz8B,aAAem2B,CAG/C9/B,MAAKijC,oBAGL,IACInC,IADc9gC,KAAK4O,QAAQqlB,YACTj0B,KAAK4O,QAAQkyB,iBAC/BC,EAAkB/gC,KAAK4O,QAAQmyB,eAGnCn7B,GAAMs9B,iBAAmBpC,EAAkBl7B,EAAMu9B,gBAAkB,EACnEv9B,EAAMw9B,iBAAmBrC,EAAkBn7B,EAAMy9B,gBAAkB,EACnEz9B,EAAMoN,OAASpN,EAAMs9B,iBAAmBt9B,EAAMw9B,iBAC9Cx9B,EAAMmN,MAAQqzB,EAAWxW,YAEzBhqB,EAAM29B,gBAAkBvjC,KAAKq0B,KAAKC,SAAS50B,KAAKsT,OAASpN,EAAMw9B,kBACnC,OAAvBx0B,EAAQqlB,YAAuBj0B,KAAKq0B,KAAKC,SAAS7R,OAAOzP,OAAShT,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,QAC9FpN,EAAM09B,eAAiB,EACvB19B,EAAM69B,gBAAkB79B,EAAM29B,gBAAkB39B,EAAMw9B,iBACtDx9B,EAAM49B,eAAiB,CAGvB,IAAIuQ,GAAwB3N,EAAW4N,YACnCC,EAAwBtoC,EAAWqoC,WAsBvC,OArBA5N,GAAWz8B,YAAcy8B,EAAWz8B,WAAWgI,YAAYy0B,GAC3Dz6B,EAAWhC,YAAcgC,EAAWhC,WAAWgI,YAAYhG,GAE3Dy6B,EAAW/4B,MAAM2F,OAAShT,KAAK4F,MAAMoN,OAAS,KAE9ChT,KAAKk0C,iBAGDH,EACFjU,EAAO1tB,aAAag0B,EAAY2N,GAGhCjU,EAAO7tB,YAAYm0B,GAEjB6N,EACFj0C,KAAKq0B,KAAK9E,IAAIwQ,mBAAmB3tB,aAAazG,EAAYsoC,GAG1Dj0C,KAAKq0B,KAAK9E,IAAIwQ,mBAAmB9tB,YAAYtG,GAGxC3L,KAAKu/B,cAAgBuU,GAO9BhxC,EAAS4Q,UAAUwgC,eAAiB,WAClC,GAAIjgB,GAAcj0B,KAAK4O,QAAQqlB,YAG3BrkB,EAAQjP,EAAK8F,QAAQzG,KAAKq0B,KAAKrlB,MAAMY,MAAO,UAC5CS,EAAM1P,EAAK8F,QAAQzG,KAAKq0B,KAAKrlB,MAAMqB,IAAK,UACxC0mB,EAAc/2B,KAAKq0B,KAAK1zB,KAAKm0B,OAA2C,GAAnC90B,KAAK4F,MAAM4+B,gBAAkB,KAAS59B,UACtE5G,KAAKq0B,KAAK1zB,KAAKm0B,OAAO,GAAGluB,UAC9B0gB,EAAO,GAAIzlB,GAAS,GAAIqC,MAAK0L,GAAQ,GAAI1L,MAAKmM,GAAM0mB,EACxD/2B,MAAKsnB,KAAOA,CAKZ,IAAIiI,GAAMvvB,KAAKuvB,GACfA,GAAI/d,UAAUgiC,WAAajkB,EAAIikB,WAC/BjkB,EAAI/d,UAAUiiC,WAAalkB,EAAIkkB,WAC/BlkB,EAAI/d,UAAUkiC,WAAankB,EAAImkB,WAC/BnkB,EAAI/d,UAAUmiC,WAAapkB,EAAIokB,WAC/BpkB,EAAIikB,cACJjkB,EAAIkkB,cACJlkB,EAAImkB,cACJnkB,EAAIokB,cAEJrsB,EAAKgW,OAGL,KAFA,GAAI6W,GAAmB/tC,OACnB2G,EAAM,EACHua,EAAKkR,WAAmB,IAANzrB,GAAY,CACnCA,GACA,IAAIqnC,GAAM9sB,EAAKC,aACXhV,EAAIvS,KAAKq0B,KAAK1zB,KAAK+zB,SAAS0f,GAC5Bzb,EAAUrR,EAAKqR,SAIf34B,MAAK4O,QAAQkyB,iBACf9gC,KAAKq0C,kBAAkB9hC,EAAG+U,EAAK6X,gBAAiBlL,GAG9C0E,GAAW34B,KAAK4O,QAAQmyB,iBACtBxuB,EAAI,IACkBnM,QAApB+tC,IACFA,EAAmB5hC,GAErBvS,KAAKs0C,kBAAkB/hC,EAAG+U,EAAK+X,gBAAiBpL,IAElDj0B,KAAKu0C,kBAAkBhiC,EAAG0hB,IAG1Bj0B,KAAKw0C,kBAAkBjiC,EAAG0hB,GAG5B3M,EAAKE,OAIP,GAAIxnB,KAAK4O,QAAQmyB,gBAAiB,CAChC,GAAI0T,GAAWz0C,KAAKq0B,KAAK1zB,KAAKm0B,OAAO,GACjC4f,EAAWptB,EAAK+X,cAAcoV,GAC9BE,EAAYD,EAASnvC,QAAUvF,KAAK4F,MAAM2+B,gBAAkB,IAAM,IAE9Cn+B,QAApB+tC,GAA6CA,EAAZQ,IACnC30C,KAAKs0C,kBAAkB,EAAGI,EAAUzgB,GAKxCtzB,EAAKyH,QAAQpI,KAAKuvB,IAAI/d,UAAW,SAAUojC,GACzC,KAAOA,EAAIrvC,QAAQ,CACjB,GAAI4B,GAAOytC,EAAIC,KACX1tC,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWgI,YAAYxK,OAapCrE,EAAS4Q,UAAU2gC,kBAAoB,SAAU9hC,EAAGmW,EAAMuL,GAExD,GAAIrM,GAAQ5nB,KAAKuvB,IAAI/d,UAAUmiC,WAAW7hC,OAE1C,KAAK8V,EAAO,CAEV,GAAIwH,GAAUrd,SAAS2yB,eAAe,GACtC9c,GAAQ7V,SAASM,cAAc,OAC/BuV,EAAM3V,YAAYmd,GAClBxH,EAAMhgB,UAAY,aAClB5H,KAAKuvB,IAAI6W,WAAWn0B,YAAY2V,GAElC5nB,KAAKuvB,IAAIokB,WAAW5rC,KAAK6f,GAEzBA,EAAMktB,WAAW,GAAGC,UAAYrsB,EAEhCd,EAAMva,MAAM5F,IAAsB,OAAfwsB,EAAyBj0B,KAAK4F,MAAMw9B,iBAAmB,KAAQ,IAClFxb,EAAMva,MAAMhG,KAAOkL,EAAI,MAWzBzP,EAAS4Q,UAAU4gC,kBAAoB,SAAU/hC,EAAGmW,EAAMuL,GAExD,GAAIrM,GAAQ5nB,KAAKuvB,IAAI/d,UAAUiiC,WAAW3hC,OAE1C,KAAK8V,EAAO,CAEV,GAAIwH,GAAUrd,SAAS2yB,eAAehc,EACtCd,GAAQ7V,SAASM,cAAc,OAC/BuV,EAAMhgB,UAAY,aAClBggB,EAAM3V,YAAYmd,GAClBpvB,KAAKuvB,IAAI6W,WAAWn0B,YAAY2V,GAElC5nB,KAAKuvB,IAAIkkB,WAAW1rC,KAAK6f,GAEzBA,EAAMktB,WAAW,GAAGC,UAAYrsB,EAGhCd,EAAMva,MAAM5F,IAAsB,OAAfwsB,EAAwB,IAAOj0B,KAAK4F,MAAMs9B,iBAAoB,KACjFtb,EAAMva,MAAMhG,KAAOkL,EAAI,MASzBzP,EAAS4Q,UAAU8gC,kBAAoB,SAAUjiC,EAAG0hB,GAElD,GAAI5E,GAAOrvB,KAAKuvB,IAAI/d,UAAUkiC,WAAW5hC,OAEpCud,KAEHA,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKznB,UAAY,sBACjB5H,KAAKuvB,IAAI5jB,WAAWsG,YAAYod,IAElCrvB,KAAKuvB,IAAImkB,WAAW3rC,KAAKsnB,EAEzB,IAAIzpB,GAAQ5F,KAAK4F,KAEfypB,GAAKhiB,MAAM5F,IADM,OAAfwsB,EACeruB,EAAMw9B,iBAAmB,KAGzBpjC,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,OAAS,KAEnDqc,EAAKhiB,MAAM2F,OAASpN,EAAM29B,gBAAkB,KAC5ClU,EAAKhiB,MAAMhG,KAAQkL,EAAI3M,EAAM09B,eAAiB,EAAK,MASrDxgC,EAAS4Q,UAAU6gC,kBAAoB,SAAUhiC,EAAG0hB,GAElD,GAAI5E,GAAOrvB,KAAKuvB,IAAI/d,UAAUgiC,WAAW1hC,OAEpCud,KAEHA,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKznB,UAAY,sBACjB5H,KAAKuvB,IAAI5jB,WAAWsG,YAAYod,IAElCrvB,KAAKuvB,IAAIikB,WAAWzrC,KAAKsnB,EAEzB,IAAIzpB,GAAQ5F,KAAK4F,KAEfypB,GAAKhiB,MAAM5F,IADM,OAAfwsB,EACe,IAGAj0B,KAAKq0B,KAAKC,SAAS7sB,IAAIuL,OAAS,KAEnDqc,EAAKhiB,MAAMhG,KAAQkL,EAAI3M,EAAM49B,eAAiB,EAAK,KACnDnU,EAAKhiB,MAAM2F,OAASpN,EAAM69B,gBAAkB,MAQ9C3gC,EAAS4Q,UAAUuvB,mBAAqB,WAKjCjjC,KAAKuvB,IAAIoV,mBACZ3kC,KAAKuvB,IAAIoV,iBAAmB5yB,SAASM,cAAc,OACnDrS,KAAKuvB,IAAIoV,iBAAiB/8B,UAAY,qBACtC5H,KAAKuvB,IAAIoV,iBAAiBt3B,MAAM0V,SAAW,WAE3C/iB,KAAKuvB,IAAIoV,iBAAiB1yB,YAAYF,SAAS2yB,eAAe,MAC9D1kC,KAAKuvB,IAAI6W,WAAWn0B,YAAYjS,KAAKuvB,IAAIoV,mBAE3C3kC,KAAK4F,MAAMu9B,gBAAkBnjC,KAAKuvB,IAAIoV,iBAAiB3gB,aACvDhkB,KAAK4F,MAAM4+B,eAAiBxkC,KAAKuvB,IAAIoV,iBAAiBhmB,YAGjD3e,KAAKuvB,IAAIsV,mBACZ7kC,KAAKuvB,IAAIsV,iBAAmB9yB,SAASM,cAAc,OACnDrS,KAAKuvB,IAAIsV,iBAAiBj9B,UAAY,qBACtC5H,KAAKuvB,IAAIsV,iBAAiBx3B,MAAM0V,SAAW,WAE3C/iB,KAAKuvB,IAAIsV,iBAAiB5yB,YAAYF,SAAS2yB,eAAe,MAC9D1kC,KAAKuvB,IAAI6W,WAAWn0B,YAAYjS,KAAKuvB,IAAIsV,mBAE3C7kC,KAAK4F,MAAMy9B,gBAAkBrjC,KAAKuvB,IAAIsV,iBAAiB7gB,aACvDhkB,KAAK4F,MAAM2+B,eAAiBvkC,KAAKuvB,IAAIsV,iBAAiBlmB,aASxD7b,EAAS4Q,UAAU+gB,KAAO,SAASwK,GACjC,MAAOj/B,MAAKsnB,KAAKmN,KAAKwK,IAGxBp/B,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAc9B,QAAS8B,GAAMkR,EAAMgoB,EAAYtsB,GAC/B5O,KAAKK,GAAK,KACVL,KAAK8/B,OAAS,KACd9/B,KAAKkT,KAAOA,EACZlT,KAAKuvB,IAAM,KACXvvB,KAAKk7B,WAAaA,MAClBl7B,KAAK4O,QAAUA,MAEf5O,KAAK8rC,UAAW,EAChB9rC,KAAK6mC,WAAY,EACjB7mC,KAAK4mC,OAAQ,EAEb5mC,KAAKyH,IAAM,KACXzH,KAAKqH,KAAO,KACZrH,KAAK+S,MAAQ,KACb/S,KAAKgT,OAAS,KAEdhT,KAAK08B,gBAAiB,EA7BxB,GAAI4D,GAASpgC,EAAoB,IAC7BS,EAAOT,EAAoB,EAkC/B8B,GAAK0R,UAAUu2B,OAAS,WACtBjqC,KAAK8rC,UAAW,EAChB9rC,KAAK4mC,OAAQ,EACT5mC,KAAK6mC,WAAW7mC,KAAK4gB,UAM3B5e,EAAK0R,UAAUs2B,SAAW,WACxBhqC,KAAK8rC,UAAW,EAChB9rC,KAAK4mC,OAAQ,EACT5mC,KAAK6mC,WAAW7mC,KAAK4gB,UAQ3B5e,EAAK0R,UAAU4E,QAAU,SAASpF,GAChClT,KAAKkT,KAAOA,EACZlT,KAAK4mC,OAAQ,EACT5mC,KAAK6mC,WAAW7mC,KAAK4gB,UAO3B5e,EAAK0R,UAAUyzB,UAAY,SAASrH,GAC9B9/B,KAAK6mC,WACP7mC,KAAKsiC,OACLtiC,KAAK8/B,OAASA,EACV9/B,KAAK8/B,QACP9/B,KAAKuiC,QAIPviC,KAAK8/B,OAASA,GASlB99B,EAAK0R,UAAU/D,UAAY,WAEzB,OAAO,GAOT3N,EAAK0R,UAAU6uB,KAAO,WACpB,OAAO,GAOTvgC,EAAK0R,UAAU4uB,KAAO,WACpB,OAAO,GAMTtgC,EAAK0R,UAAUkN,OAAS,aAOxB5e,EAAK0R,UAAUm0B,YAAc,aAO7B7lC,EAAK0R,UAAUuzB,YAAc,aAS7BjlC,EAAK0R,UAAUshC,qBAAuB,SAAUC,GAC9C,GAAIj1C,KAAK8rC,UAAY9rC,KAAK4O,QAAQq5B,SAAStxB,SAAW3W,KAAKuvB,IAAI2lB,aAAc,CAE3E,GAAI3gC,GAAKvU,KAELk1C,EAAenjC,SAASM,cAAc,MAC1C6iC,GAAattC,UAAY,SACzBstC,EAAalV,MAAQ,mBAErBM,EAAO4U,GACL9rC,gBAAgB,IACfuK,GAAG,MAAO,SAAUtK,GACrBkL,EAAGurB,OAAOuH,kBAAkB9yB,GAC5BlL,EAAMs3B,oBAGRsU,EAAOhjC,YAAYijC,GACnBl1C,KAAKuvB,IAAI2lB,aAAeA,OAEhBl1C,KAAK8rC,UAAY9rC,KAAKuvB,IAAI2lB,eAE9Bl1C,KAAKuvB,IAAI2lB,aAAavrC,YACxB3J,KAAKuvB,IAAI2lB,aAAavrC,WAAWgI,YAAY3R,KAAKuvB,IAAI2lB,cAExDl1C,KAAKuvB,IAAI2lB,aAAe,OAS5BlzC,EAAK0R,UAAUyhC,gBAAkB,SAAUxsC,GACzC,GAAIymB,EACJ,IAAIpvB,KAAK4O,QAAQwmC,SAAU,CACzB,GAAIjf,GAAWn2B,KAAK8/B,OAAOzK,QAAQC,UAAU/f,IAAIvV,KAAKK,GACtD+uB,GAAUpvB,KAAK4O,QAAQwmC,SAASjf,OAGhC/G,GAAUpvB,KAAKkT,KAAKkc,OAGtB,IAAIA,YAAmBkX,SACrB39B,EAAQya,UAAY,GACpBza,EAAQsJ,YAAYmd,OAEjB,IAAehpB,QAAXgpB,EACPzmB,EAAQya,UAAYgM,MAGpB,IAAwB,cAAlBpvB,KAAKkT,KAAKxM,MAA8CN,SAAtBpG,KAAKkT,KAAKkc,QAChD,KAAM,IAAI3rB,OAAM,sCAAwCzD,KAAKK,KAUnE2B,EAAK0R,UAAU2hC,aAAe,SAAU1sC,GACf,MAAnB3I,KAAKkT,KAAK8sB,MACZr3B,EAAQq3B,MAAQhgC,KAAKkT,KAAK8sB,OAAS,GAGnCr3B,EAAQ2sC,gBAAgB,UAS3BtzC,EAAK0R,UAAU6hC,sBAAwB,SAAS5sC,GAC/C,GAAI3I,KAAK4O,QAAQ4mC,gBAAkBx1C,KAAK4O,QAAQ4mC,eAAejwC,OAAS,EAAG,CACzE,GAAIkwC,KAEJ;GAAI5vC,MAAMC,QAAQ9F,KAAK4O,QAAQ4mC,gBAC7BC,EAAaz1C,KAAK4O,QAAQ4mC,mBAEvB,CAAA,GAAmC,OAA/Bx1C,KAAK4O,QAAQ4mC,eAIpB,MAHAC,GAAatvC,OAAOqH,KAAKxN,KAAKkT,MAMhC,IAAK,GAAI9N,GAAI,EAAGA,EAAIqwC,EAAWlwC,OAAQH,IAAK,CAC1C,GAAImR,GAAOk/B,EAAWrwC,GAClB6B,EAAQjH,KAAKkT,KAAKqD,EAET,OAATtP,EACF0B,EAAQ+sC,aAAa,QAAUn/B,EAAMtP,GAGrC0B,EAAQ2sC,gBAAgB,QAAU/+B,MAW1CvU,EAAK0R,UAAUiiC,aAAe,SAAShtC,GAEjC3I,KAAKqN,QACP1M,EAAKkN,cAAclF,EAAS3I,KAAKqN,OACjCrN,KAAKqN,MAAQ,MAIXrN,KAAKkT,KAAK7F,QACZ1M,EAAK+M,WAAW/E,EAAS3I,KAAKkT,KAAK7F,OACnCrN,KAAKqN,MAAQrN,KAAKkT,KAAK7F,QAI3BxN,EAAOD,QAAUoC,GAKb,SAASnC,EAAQD,EAASM,GAiB9B,QAAS+B,GAAgBiR,EAAMgoB,EAAYtsB,GASzC,GARA5O,KAAK4F,OACHwpB,SACErc,MAAO,IAGX/S,KAAKgjB,UAAW,EAGZ9P,EAAM,CACR,GAAkB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAAK7S,GAE7D,IAAgB+F,QAAZ8M,EAAK7C,IACP,KAAM,IAAI5M,OAAM,kCAAoCyP,EAAK7S,IAI7D2B,EAAKzB,KAAKP,KAAMkT,EAAMgoB,EAAYtsB,GAElC5O,KAAK08B,gBAAiB,EACtB18B,KAAK41C,cAAe,EApCtB,GACI5zC,IADS9B,EAAoB,IACtBA,EAAoB,KAC3BkC,EAAYlC,EAAoB,GAqCpC+B,GAAeyR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAEjDC,EAAeyR,UAAUmiC,cAAgB,kBAOzC5zC,EAAeyR,UAAU/D,UAAY,SAASX,GAE5C,MAAQhP,MAAKkT,KAAKtD,MAAQZ,EAAMqB,KAASrQ,KAAKkT,KAAK7C,IAAMrB,EAAMY,OAMjE3N,EAAeyR,UAAUkN,OAAS,WAChC,GAAI2O,GAAMvvB,KAAKuvB,GAsBf,IArBKA,IAEHvvB,KAAKuvB,OACLA,EAAMvvB,KAAKuvB,IAGXA,EAAI+Z,IAAMv3B,SAASM,cAAc,OAIjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI+Z,IAAIr3B,YAAYsd,EAAIH,SAGxBG,EAAI+Z,IAAI,iBAAmBtpC,KAE3BA,KAAK4mC,OAAQ,IAIV5mC,KAAK8/B,OACR,KAAM,IAAIr8B,OAAM,yCAElB,KAAK8rB,EAAI+Z,IAAI3/B,WAAY,CACvB,GAAIgC,GAAa3L,KAAK8/B,OAAOvQ,IAAI5jB,UACjC,KAAKA,EACH,KAAM,IAAIlI,OAAM,iEAElBkI,GAAWsG,YAAYsd,EAAI+Z,KAQ7B,GANAtpC,KAAK6mC,WAAY,EAMb7mC,KAAK4mC,MAAO,CACd5mC,KAAKm1C,gBAAgBn1C,KAAKuvB,IAAIH,SAC9BpvB,KAAKq1C,aAAar1C,KAAKuvB,IAAIH,SAC3BpvB,KAAKu1C,sBAAsBv1C,KAAKuvB,IAAIH,SACpCpvB,KAAK21C,aAAa31C,KAAKuvB,IAAI+Z,IAG3B,IAAI1hC,IAAa5H,KAAKkT,KAAKtL,UAAa,IAAM5H,KAAKkT,KAAKtL,UAAa,KAChE5H,KAAK8rC,SAAW,YAAc,GACnCvc,GAAI+Z,IAAI1hC,UAAY5H,KAAK61C,cAAgBjuC,EAGzC5H,KAAKgjB,SAA6D,WAAlD1b,OAAO8lC,iBAAiB7d,EAAIH,SAASpM,SAGrDhjB,KAAK4F,MAAMwpB,QAAQrc,MAAQ/S,KAAKuvB,IAAIH,QAAQQ,YAC5C5vB,KAAKgT,OAAS,EAEdhT,KAAK4mC,OAAQ,IAQjB3kC,EAAeyR,UAAU6uB,KAAOngC,EAAUsR,UAAU6uB,KAMpDtgC,EAAeyR,UAAU4uB,KAAOlgC,EAAUsR,UAAU4uB,KAMpDrgC,EAAeyR,UAAUm0B,YAAczlC,EAAUsR,UAAUm0B,YAM3D5lC,EAAeyR,UAAUuzB,YAAc,WACrC,GAAI6O,GAAqC,QAA7B91C,KAAK4O,QAAQqlB,WACzBj0B,MAAKuvB,IAAIH,QAAQ/hB,MAAM5F,IAAMquC,EAAQ,GAAK,IAC1C91C,KAAKuvB,IAAIH,QAAQ/hB,MAAMoV,OAASqzB,EAAQ,IAAM,EAE9C,IAAI9iC,GAASlO,KAAKiI,IAAI/M,KAAK8/B,OAAO9sB,OAC9BhT,KAAK8/B,OAAOzK,QAAQhB,KAAKC,SAASkV,gBAAgBx2B,OACtDhT,MAAKuvB,IAAI+Z,IAAIj8B,MAAM5F,IAAMquC,EAAQ,IAAM,GACvC91C,KAAKuvB,IAAI+Z,IAAIj8B,MAAMoV,OAASqzB,EAAQ,GAAK,IACzC91C,KAAKuvB,IAAI+Z,IAAIj8B,MAAM2F,OAASA,EAAS,MAGvCnT,EAAOD,QAAUqC,GAKb,SAASpC,EAAQD,EAASM,GAe9B,QAASgC,GAASgR,EAAMgoB,EAAYtsB,GAalC,GAZA5O,KAAK4F,OACH0pB,KACEvc,MAAO,EACPC,OAAQ,GAEVqc,MACEtc,MAAO,EACPC,OAAQ,IAKRE,GACgB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAI1DlR,GAAKzB,KAAKP,KAAMkT,EAAMgoB,EAAYtsB,GAhCpC,CAAA,GAAI5M,GAAO9B,EAAoB,GACpBA,GAAoB,GAkC/BgC,EAAQwR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAO1CE,EAAQwR,UAAU/D,UAAY,SAASX,GAGrC,GAAImjB,IAAYnjB,EAAMqB,IAAMrB,EAAMY,OAAS,CAC3C,OAAQ5P,MAAKkT,KAAKtD,MAAQZ,EAAMY,MAAQuiB,GAAcnyB,KAAKkT,KAAKtD,MAAQZ,EAAMqB,IAAM8hB,GAMtFjwB,EAAQwR,UAAUkN,OAAS,WACzB,GAAI2O,GAAMvvB,KAAKuvB,GA6Bf,IA5BKA,IAEHvvB,KAAKuvB,OACLA,EAAMvvB,KAAKuvB,IAGXA,EAAI+Z,IAAMv3B,SAASM,cAAc,OAGjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI+Z,IAAIr3B,YAAYsd,EAAIH,SAGxBG,EAAIF,KAAOtd,SAASM,cAAc,OAClCkd,EAAIF,KAAKznB,UAAY,OAGrB2nB,EAAID,IAAMvd,SAASM,cAAc,OACjCkd,EAAID,IAAI1nB,UAAY,MAGpB2nB,EAAI+Z,IAAI,iBAAmBtpC,KAE3BA,KAAK4mC,OAAQ,IAIV5mC,KAAK8/B,OACR,KAAM,IAAIr8B,OAAM,yCAElB,KAAK8rB,EAAI+Z,IAAI3/B,WAAY,CACvB,GAAIy8B,GAAapmC,KAAK8/B,OAAOvQ,IAAI6W,UACjC,KAAKA,EAAY,KAAM,IAAI3iC,OAAM,iEACjC2iC,GAAWn0B,YAAYsd,EAAI+Z,KAE7B,IAAK/Z,EAAIF,KAAK1lB,WAAY,CACxB,GAAIgC,GAAa3L,KAAK8/B,OAAOvQ,IAAI5jB,UACjC,KAAKA,EAAY,KAAM,IAAIlI,OAAM,iEACjCkI,GAAWsG,YAAYsd,EAAIF,MAE7B,IAAKE,EAAID,IAAI3lB,WAAY,CACvB,GAAI4yB,GAAOv8B,KAAK8/B,OAAOvQ,IAAIgN,IAC3B,KAAK5wB,EAAY,KAAM,IAAIlI,OAAM,2DACjC84B,GAAKtqB,YAAYsd,EAAID,KAQvB,GANAtvB,KAAK6mC,WAAY,EAMb7mC,KAAK4mC,MAAO,CACd5mC,KAAKm1C,gBAAgBn1C,KAAKuvB,IAAIH,SAC9BpvB,KAAKq1C,aAAar1C,KAAKuvB,IAAI+Z,KAC3BtpC,KAAKu1C,sBAAsBv1C,KAAKuvB,IAAI+Z,KACpCtpC,KAAK21C,aAAa31C,KAAKuvB,IAAI+Z,IAG3B,IAAI1hC,IAAa5H,KAAKkT,KAAKtL,UAAW,IAAM5H,KAAKkT,KAAKtL,UAAY,KAC7D5H,KAAK8rC,SAAW,YAAc,GACnCvc,GAAI+Z,IAAI1hC,UAAY,WAAaA,EACjC2nB,EAAIF,KAAKznB,UAAY,YAAcA,EACnC2nB,EAAID,IAAI1nB,UAAa,WAAaA,EAGlC5H,KAAK4F,MAAM0pB,IAAItc,OAASuc,EAAID,IAAIQ,aAChC9vB,KAAK4F,MAAM0pB,IAAIvc,MAAQwc,EAAID,IAAIM,YAC/B5vB,KAAK4F,MAAMypB,KAAKtc,MAAQwc,EAAIF,KAAKO,YACjC5vB,KAAK+S,MAAQwc,EAAI+Z,IAAI1Z,YACrB5vB,KAAKgT,OAASuc,EAAI+Z,IAAIxZ,aAEtB9vB,KAAK4mC,OAAQ,EAGf5mC,KAAKg1C,qBAAqBzlB,EAAI+Z,MAOhCpnC,EAAQwR,UAAU6uB,KAAO,WAClBviC,KAAK6mC,WACR7mC,KAAK4gB,UAOT1e,EAAQwR,UAAU4uB,KAAO,WACvB,GAAItiC,KAAK6mC,UAAW,CAClB,GAAItX,GAAMvvB,KAAKuvB,GAEXA,GAAI+Z,IAAI3/B,YAAc4lB,EAAI+Z,IAAI3/B,WAAWgI,YAAY4d,EAAI+Z,KACzD/Z,EAAIF,KAAK1lB,YAAa4lB,EAAIF,KAAK1lB,WAAWgI,YAAY4d,EAAIF,MAC1DE,EAAID,IAAI3lB,YAAc4lB,EAAID,IAAI3lB,WAAWgI,YAAY4d,EAAID,KAE7DtvB,KAAKyH,IAAM,KACXzH,KAAKqH,KAAO,KAEZrH,KAAK6mC,WAAY,IAQrB3kC,EAAQwR,UAAUm0B,YAAc,WAC9B,GAAIj4B,GAAQ5P,KAAKk7B,WAAWxG,SAAS10B,KAAKkT,KAAKtD,OAC3Ck4B,EAAQ9nC,KAAK4O,QAAQk5B,MAErBwB,EAAMtpC,KAAKuvB,IAAI+Z,IACfja,EAAOrvB,KAAKuvB,IAAIF,KAChBC,EAAMtvB,KAAKuvB,IAAID,GAIjBtvB,MAAKqH,KADM,SAATygC,EACUl4B,EAAQ5P,KAAK+S,MAET,QAAT+0B,EACKl4B,EAIAA,EAAQ5P,KAAK+S,MAAQ,EAInCu2B,EAAIj8B,MAAMhG,KAAOrH,KAAKqH,KAAO,KAG7BgoB,EAAKhiB,MAAMhG,KAAQuI,EAAQ5P,KAAK4F,MAAMypB,KAAKtc,MAAQ,EAAK,KAGxDuc,EAAIjiB,MAAMhG,KAAQuI,EAAQ5P,KAAK4F,MAAM0pB,IAAIvc,MAAQ,EAAK,MAOxD7Q,EAAQwR,UAAUuzB,YAAc,WAC9B,GAAIhT,GAAcj0B,KAAK4O,QAAQqlB,YAC3BqV,EAAMtpC,KAAKuvB,IAAI+Z,IACfja,EAAOrvB,KAAKuvB,IAAIF,KAChBC,EAAMtvB,KAAKuvB,IAAID,GAEnB,IAAmB,OAAf2E,EACFqV,EAAIj8B,MAAM5F,KAAWzH,KAAKyH,KAAO,GAAK,KAEtC4nB,EAAKhiB,MAAM5F,IAAS,IACpB4nB,EAAKhiB,MAAM2F,OAAUhT,KAAK8/B,OAAOr4B,IAAMzH,KAAKyH,IAAM,EAAK,KACvD4nB,EAAKhiB,MAAMoV,OAAS,OAEjB,CACH,GAAIszB,GAAgB/1C,KAAK8/B,OAAOzK,QAAQzvB,MAAMoN,OAC1C+c,EAAagmB,EAAgB/1C,KAAK8/B,OAAOr4B,IAAMzH,KAAK8/B,OAAO9sB,OAAShT,KAAKyH,GAE7E6hC,GAAIj8B,MAAM5F,KAAWzH,KAAK8/B,OAAO9sB,OAAShT,KAAKyH,IAAMzH,KAAKgT,QAAU,GAAK,KACzEqc,EAAKhiB,MAAM5F,IAAUsuC,EAAgBhmB,EAAc,KACnDV,EAAKhiB,MAAMoV,OAAS,IAGtB6M,EAAIjiB,MAAM5F,KAAQzH,KAAK4F,MAAM0pB,IAAItc,OAAS,EAAK,MAGjDnT,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAc9B,QAASiC,GAAW+Q,EAAMgoB,EAAYtsB,GAcpC,GAbA5O,KAAK4F,OACH0pB,KACE7nB,IAAK,EACLsL,MAAO,EACPC,OAAQ,GAEVoc,SACEpc,OAAQ,EACRgjC,WAAY,IAKZ9iC,GACgB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAI1DlR,GAAKzB,KAAKP,KAAMkT,EAAMgoB,EAAYtsB,GAhCpC,GAAI5M,GAAO9B,EAAoB,GAmC/BiC,GAAUuR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAO5CG,EAAUuR,UAAU/D,UAAY,SAASX,GAGvC,GAAImjB,IAAYnjB,EAAMqB,IAAMrB,EAAMY,OAAS,CAC3C,OAAQ5P,MAAKkT,KAAKtD,MAAQZ,EAAMY,MAAQuiB,GAAcnyB,KAAKkT,KAAKtD,MAAQZ,EAAMqB,IAAM8hB,GAMtFhwB,EAAUuR,UAAUkN,OAAS,WAC3B,GAAI2O,GAAMvvB,KAAKuvB,GA0Bf,IAzBKA,IAEHvvB,KAAKuvB,OACLA,EAAMvvB,KAAKuvB,IAGXA,EAAI7c,MAAQX,SAASM,cAAc,OAInCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI7c,MAAMT,YAAYsd,EAAIH,SAG1BG,EAAID,IAAMvd,SAASM,cAAc,OACjCkd,EAAI7c,MAAMT,YAAYsd,EAAID,KAG1BC,EAAI7c,MAAM,iBAAmB1S,KAE7BA,KAAK4mC,OAAQ,IAIV5mC,KAAK8/B,OACR,KAAM,IAAIr8B,OAAM,yCAElB,KAAK8rB,EAAI7c,MAAM/I,WAAY,CACzB,GAAIy8B,GAAapmC,KAAK8/B,OAAOvQ,IAAI6W,UACjC,KAAKA,EACH,KAAM,IAAI3iC,OAAM,iEAElB2iC,GAAWn0B,YAAYsd,EAAI7c,OAQ7B,GANA1S,KAAK6mC,WAAY,EAMb7mC,KAAK4mC,MAAO,CACd5mC,KAAKm1C,gBAAgBn1C,KAAKuvB,IAAIH,SAC9BpvB,KAAKq1C,aAAar1C,KAAKuvB,IAAI7c,OAC3B1S,KAAKu1C,sBAAsBv1C,KAAKuvB,IAAI7c,OACpC1S,KAAK21C,aAAa31C,KAAKuvB,IAAI7c,MAG3B,IAAI9K,IAAa5H,KAAKkT,KAAKtL,UAAW,IAAM5H,KAAKkT,KAAKtL,UAAY,KAC7D5H,KAAK8rC,SAAW,YAAc,GACnCvc,GAAI7c,MAAM9K,UAAa,aAAeA,EACtC2nB,EAAID,IAAI1nB,UAAa,WAAaA,EAGlC5H,KAAK+S,MAAQwc,EAAI7c,MAAMkd,YACvB5vB,KAAKgT,OAASuc,EAAI7c,MAAMod,aACxB9vB,KAAK4F,MAAM0pB,IAAIvc,MAAQwc,EAAID,IAAIM,YAC/B5vB,KAAK4F,MAAM0pB,IAAItc,OAASuc,EAAID,IAAIQ,aAChC9vB,KAAK4F,MAAMwpB,QAAQpc,OAASuc,EAAIH,QAAQU,aAGxCP,EAAIH,QAAQ/hB,MAAM2oC,WAAa,EAAIh2C,KAAK4F,MAAM0pB,IAAIvc,MAAQ,KAG1Dwc,EAAID,IAAIjiB,MAAM5F,KAAQzH,KAAKgT,OAAShT,KAAK4F,MAAM0pB,IAAItc,QAAU,EAAK,KAClEuc,EAAID,IAAIjiB,MAAMhG,KAAQrH,KAAK4F,MAAM0pB,IAAIvc,MAAQ,EAAK,KAElD/S,KAAK4mC,OAAQ,EAGf5mC,KAAKg1C,qBAAqBzlB,EAAI7c,QAOhCvQ,EAAUuR,UAAU6uB,KAAO,WACpBviC,KAAK6mC,WACR7mC,KAAK4gB,UAOTze,EAAUuR,UAAU4uB,KAAO,WACrBtiC,KAAK6mC,YACH7mC,KAAKuvB,IAAI7c,MAAM/I,YACjB3J,KAAKuvB,IAAI7c,MAAM/I,WAAWgI,YAAY3R,KAAKuvB,IAAI7c,OAGjD1S,KAAKyH,IAAM,KACXzH,KAAKqH,KAAO,KAEZrH,KAAK6mC,WAAY,IAQrB1kC,EAAUuR,UAAUm0B,YAAc,WAChC,GAAIj4B,GAAQ5P,KAAKk7B,WAAWxG,SAAS10B,KAAKkT,KAAKtD,MAE/C5P,MAAKqH,KAAOuI,EAAQ5P,KAAK4F,MAAM0pB,IAAIvc,MAGnC/S,KAAKuvB,IAAI7c,MAAMrF,MAAMhG,KAAOrH,KAAKqH,KAAO,MAO1ClF,EAAUuR,UAAUuzB,YAAc,WAChC,GAAIhT,GAAcj0B,KAAK4O,QAAQqlB,YAC3BvhB,EAAQ1S,KAAKuvB,IAAI7c,KAGnBA,GAAMrF,MAAM5F,IADK,OAAfwsB,EACgBj0B,KAAKyH,IAAM,KAGVzH,KAAK8/B,OAAO9sB,OAAShT,KAAKyH,IAAMzH,KAAKgT,OAAU,MAItEnT,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAAW8Q,EAAMgoB,EAAYtsB,GASpC,GARA5O,KAAK4F,OACHwpB,SACErc,MAAO,IAGX/S,KAAKgjB,UAAW,EAGZ9P,EAAM,CACR,GAAkB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAAK7S,GAE7D,IAAgB+F,QAAZ8M,EAAK7C,IACP,KAAM,IAAI5M,OAAM,kCAAoCyP,EAAK7S,IAI7D2B,EAAKzB,KAAKP,KAAMkT,EAAMgoB,EAAYtsB,GA/BpC,GAAI0xB,GAASpgC,EAAoB,IAC7B8B,EAAO9B,EAAoB,GAiC/BkC,GAAUsR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAE5CI,EAAUsR,UAAUmiC,cAAgB,aAOpCzzC,EAAUsR,UAAU/D,UAAY,SAASX,GAEvC,MAAQhP,MAAKkT,KAAKtD,MAAQZ,EAAMqB,KAASrQ,KAAKkT,KAAK7C,IAAMrB,EAAMY,OAMjExN,EAAUsR,UAAUkN,OAAS,WAC3B,GAAI2O,GAAMvvB,KAAKuvB,GAsBf,IArBKA,IAEHvvB,KAAKuvB,OACLA,EAAMvvB,KAAKuvB,IAGXA,EAAI+Z,IAAMv3B,SAASM,cAAc,OAIjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI+Z,IAAIr3B,YAAYsd,EAAIH,SAGxBG,EAAI+Z,IAAI,iBAAmBtpC,KAE3BA,KAAK4mC,OAAQ,IAIV5mC,KAAK8/B,OACR,KAAM,IAAIr8B,OAAM,yCAElB,KAAK8rB,EAAI+Z,IAAI3/B,WAAY,CACvB,GAAIy8B,GAAapmC,KAAK8/B,OAAOvQ,IAAI6W,UACjC,KAAKA,EACH,KAAM,IAAI3iC,OAAM,iEAElB2iC,GAAWn0B,YAAYsd,EAAI+Z,KAQ7B,GANAtpC,KAAK6mC,WAAY,EAMb7mC,KAAK4mC,MAAO,CACd5mC,KAAKm1C,gBAAgBn1C,KAAKuvB,IAAIH,SAC9BpvB,KAAKq1C,aAAar1C,KAAKuvB,IAAI+Z,KAC3BtpC,KAAKu1C,sBAAsBv1C,KAAKuvB,IAAI+Z,KACpCtpC,KAAK21C,aAAa31C,KAAKuvB,IAAI+Z,IAG3B,IAAI1hC,IAAa5H,KAAKkT,KAAKtL,UAAa,IAAM5H,KAAKkT,KAAKtL,UAAa,KAChE5H,KAAK8rC,SAAW,YAAc,GACnCvc,GAAI+Z,IAAI1hC,UAAY5H,KAAK61C,cAAgBjuC,EAGzC5H,KAAKgjB,SAA6D,WAAlD1b,OAAO8lC,iBAAiB7d,EAAIH,SAASpM,SAGrDhjB,KAAK4F,MAAMwpB,QAAQrc,MAAQ/S,KAAKuvB,IAAIH,QAAQQ,YAC5C5vB,KAAKgT,OAAShT,KAAKuvB,IAAI+Z,IAAIxZ,aAE3B9vB,KAAK4mC,OAAQ,EAGf5mC,KAAKg1C,qBAAqBzlB,EAAI+Z,KAC9BtpC,KAAKi2C,mBACLj2C,KAAKk2C,qBAOP9zC,EAAUsR,UAAU6uB,KAAO,WACpBviC,KAAK6mC,WACR7mC,KAAK4gB,UAQTxe,EAAUsR,UAAU4uB,KAAO,WACzB,GAAItiC,KAAK6mC,UAAW,CAClB,GAAIyC,GAAMtpC,KAAKuvB,IAAI+Z,GAEfA,GAAI3/B,YACN2/B,EAAI3/B,WAAWgI,YAAY23B,GAG7BtpC,KAAKyH,IAAM,KACXzH,KAAKqH,KAAO,KAEZrH,KAAK6mC,WAAY,IAQrBzkC,EAAUsR,UAAUm0B,YAAc,WAChC,GAGIsO,GACAxmB,EAJAymB,EAAcp2C,KAAK8/B,OAAO/sB,MAC1BnD,EAAQ5P,KAAKk7B,WAAWxG,SAAS10B,KAAKkT,KAAKtD,OAC3CS,EAAMrQ,KAAKk7B,WAAWxG,SAAS10B,KAAKkT,KAAK7C,MAKhC+lC,EAATxmC,IACFA,GAASwmC,GAEP/lC,EAAM,EAAI+lC,IACZ/lC,EAAM,EAAI+lC,EAEZ,IAAIC,GAAWvxC,KAAKiI,IAAIsD,EAAMT,EAAO,EAoBrC,QAlBI5P,KAAKgjB,UACPhjB,KAAKqH,KAAOuI,EACZ5P,KAAK+S,MAAQsjC,EAAWr2C,KAAK4F,MAAMwpB,QAAQrc,MAC3C4c,EAAe3vB,KAAK4F,MAAMwpB,QAAQrc,QAOlC/S,KAAKqH,KAAOuI,EACZ5P,KAAK+S,MAAQsjC,EACb1mB,EAAe7qB,KAAKwG,IAAI+E,EAAMT,EAAO5P,KAAK4F,MAAMwpB,QAAQrc,QAG1D/S,KAAKuvB,IAAI+Z,IAAIj8B,MAAMhG,KAAOrH,KAAKqH,KAAO,KACtCrH,KAAKuvB,IAAI+Z,IAAIj8B,MAAM0F,MAAQsjC,EAAW,KAE9Br2C,KAAK4O,QAAQk5B,OACnB,IAAK,OACH9nC,KAAKuvB,IAAIH,QAAQ/hB,MAAMhG,KAAO,GAC9B,MAEF,KAAK,QACHrH,KAAKuvB,IAAIH,QAAQ/hB,MAAMhG,KAAOvC,KAAKiI,IAAKspC,EAAW1mB,EAAe,EAAI3vB,KAAK4O,QAAQuU,QAAU,GAAK,IAClG,MAEF,KAAK,SACHnjB,KAAKuvB,IAAIH,QAAQ/hB,MAAMhG,KAAOvC,KAAKiI,KAAKspC,EAAW1mB,EAAe,EAAI3vB,KAAK4O,QAAQuU,SAAW,EAAG,GAAK,IACtG,MAEF,SAGIgzB,EAFEn2C,KAAKgjB,SAEOle,KAAKiI,KAAK6C,EAAO,GAInB,EAARA,EACY9K,KAAKwG,KAAKsE,EACnBS,EAAMT,EAAQ5P,KAAK4F,MAAMwpB,QAAQrc,MAAQ,EAAI/S,KAAK4O,QAAQuU,SAIjD,EAGlBnjB,KAAKuvB,IAAIH,QAAQ/hB,MAAMhG,KAAO8uC,EAAc,OAQlD/zC,EAAUsR,UAAUuzB,YAAc,WAChC,GAAIhT,GAAcj0B,KAAK4O,QAAQqlB,YAC3BqV,EAAMtpC,KAAKuvB,IAAI+Z,GAGjBA,GAAIj8B,MAAM5F,IADO,OAAfwsB,EACcj0B,KAAKyH,IAAM,KAGVzH,KAAK8/B,OAAO9sB,OAAShT,KAAKyH,IAAMzH,KAAKgT,OAAU,MAQpE5Q,EAAUsR,UAAUuiC,iBAAmB,WACrC,GAAIj2C,KAAK8rC,UAAY9rC,KAAK4O,QAAQq5B,SAASC,aAAeloC,KAAKuvB,IAAI+mB,SAAU,CAE3E,GAAIA,GAAWvkC,SAASM,cAAc,MACtCikC,GAAS1uC,UAAY,YACrB0uC,EAASvK,aAAe/rC,KAGxBsgC,EAAOgW,GACLltC,gBAAgB,IACfuK,GAAG,OAAQ,cAId3T,KAAKuvB,IAAI+Z,IAAIr3B,YAAYqkC,GACzBt2C,KAAKuvB,IAAI+mB,SAAWA,OAEZt2C,KAAK8rC,UAAY9rC,KAAKuvB,IAAI+mB,WAE9Bt2C,KAAKuvB,IAAI+mB,SAAS3sC,YACpB3J,KAAKuvB,IAAI+mB,SAAS3sC,WAAWgI,YAAY3R,KAAKuvB,IAAI+mB,UAEpDt2C,KAAKuvB,IAAI+mB,SAAW,OAQxBl0C,EAAUsR,UAAUwiC,kBAAoB,WACtC,GAAIl2C,KAAK8rC,UAAY9rC,KAAK4O,QAAQq5B,SAASC,aAAeloC,KAAKuvB,IAAIgnB,UAAW,CAE5E,GAAIA,GAAYxkC,SAASM,cAAc,MACvCkkC,GAAU3uC,UAAY,aACtB2uC,EAAUvK,cAAgBhsC,KAG1BsgC,EAAOiW,GACLntC,gBAAgB,IACfuK,GAAG,OAAQ,cAId3T,KAAKuvB,IAAI+Z,IAAIr3B,YAAYskC,GACzBv2C,KAAKuvB,IAAIgnB,UAAYA,OAEbv2C,KAAK8rC,UAAY9rC,KAAKuvB,IAAIgnB,YAE9Bv2C,KAAKuvB,IAAIgnB,UAAU5sC,YACrB3J,KAAKuvB,IAAIgnB,UAAU5sC,WAAWgI,YAAY3R,KAAKuvB,IAAIgnB,WAErDv2C,KAAKuvB,IAAIgnB,UAAY,OAIzB12C,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAkC9B,QAAS6C,GAAS+V,EAAW5F,EAAMtE,GACjC,KAAM5O,eAAgB+C,IACpB,KAAM,IAAIgW,aAAY,mDAGxB/Y,MAAKw2C,0BAGLx2C,KAAKgZ,iBAAmBF,EAGxB9Y,KAAKy2C,kBAAoB,GACzBz2C,KAAK02C,eAAiB,IAAO12C,KAAKy2C,kBAClCz2C,KAAK22C,WAAa,GAAM32C,KAAK02C,eAC7B12C,KAAK42C,yBAA2B,EAChC52C,KAAK62C,wBAA0B,GAE/B72C,KAAK82C,cAAe,EAEpB92C,KAAK+2C,kBAAoBtjC,IAAI,KAAKujC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,MAG3En3C,KAAK+zB,gBACHqjB,OACEC,KAAM,EACNC,UAAW,GACXC,UAAW,GACX1sB,OAAQ,GACR2sB,MAAO,UACPC,MAAOrxC,OACPigB,SAAU,GACVC,SAAU,GACVoxB,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAUzxC,OACV0xC,MAAO,GACPptC,OACIkB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhBuT,YAAa,UACbJ,gBAAiB,UACjBi5B,eAAgB,UAChBtlC,MAAOrM,OACP+Y,YAAa,EACb64B,oBAAqB5xC,QAEvB6xC,OACE5xB,SAAU,EACVC,SAAU,GACVvT,MAAO,EACPmlC,yBAA0B,EAC1BC,WAAY,IACZ9qC,MAAO,OACP3C,OACEA,MAAM,UACNmB,UAAU,UACVC,MAAO,WAET4rC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVO,iBAAkB,EAClBC,MACE9yC,OAAQ,GACR+yC,IAAK,EACLC,UAAWnyC,QAEboyC,aAAc,QAEhBC,kBAAiB,EACjBC,SACEC,WACE9pC,SAAS,EACT+pC,MAAO,EAAI,GACXC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACEvqC,SAAS,EACTiqC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACExqC,SAAS,EACTyqC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAcnnC,MAAQ,EACRC,OAAQ,EACR6X,OAAQ,GACtBsvB,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,GAE1BC,YACEzrC,SAAS,GAEX0rC,UACE1rC,SAAS,EACT2rC,OAAQjoC,EAAG,GAAIC,EAAG,GAAIopB,KAAM,MAE9B6e,kBACE5rC,SAAS,EACT6rC,kBAAkB,GAEpBC,oBACE9rC,SAAQ,EACR+rC,gBAAiB,IACjBC,YAAa,IACb3hB,UAAW,KACX4hB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEnsC,SAAS,EACTosC,SAAS,EACTv0C,KAAM,aACNw0C,UAAW,IAEbC,qBAAqB,EACrBC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzB1b,OAAQ,KACRD,QAASA,EACTra,SACE4H,MAAO,IACPuqB,UAAW,QACXC,SAAU,GACVC,SAAU,UACVltC,OACEkB,OAAQ,OACRD,WAAY,YAGhB6vC,aAAa,EACbC,WAAW,EACXriB,UAAU,EACVttB,OAAO,EACP4vC,iBAAiB,EACjBC,iBAAiB,EACjB5oC,MAAQ,OACRC,OAAS,OACTg1B,YAAY,GAEdhoC,KAAK47C,UAAYj7C,EAAKuE,UAAWlF,KAAK+zB,gBAEtC/zB,KAAK67C,UAAYzE,SAASa,UAC1Bj4C,KAAK87C,oBAAqB,EAC1B97C,KAAK+7C,mBAAqBC,YAAaC,UAGvCj8C,KAAKk8C,eAAiB,EAAEl8C,KAAKy2C,kBAC7Bz2C,KAAKm8C,wBAA0B,iBAC/Bn8C,KAAKo8C,WAAa,EAClBp8C,KAAKq8C,YAAc,EACnBr8C,KAAKs8C,YAAc,EACnBt8C,KAAKu8C,kBAAoB,EACzBv8C,KAAKw8C,kBAAoB,EACzBx8C,KAAKy8C,eAAiB,KACtBz8C,KAAK08C,mBAAqB,IAG1B,IAAI15C,GAAUhD,IACdA,MAAK6zB,OAAS,GAAI3wB,GAClBlD,KAAK28C,OAAS,GAAIx5C,GAClBnD,KAAK28C,OAAOC,kBAAkB,WAC5B55C,EAAQ65C,YAIV78C,KAAK88C,WAAa,EAClB98C,KAAK+8C,WAAa,EAClB/8C,KAAKg9C,cAAgB,EAIrBh9C,KAAKi9C,qBAELj9C,KAAKo0B,UAELp0B,KAAKk9C,oBAELl9C,KAAKm9C,qBAELn9C,KAAKo9C,uBAELp9C,KAAKq9C,uBAILr9C,KAAKs9C,gBAAgBt9C,KAAKye,MAAME,YAAc,EAAG3e,KAAKye,MAAMuF,aAAe,GAC3EhkB,KAAKmc,UAAU,GACfnc,KAAKic,WAAWrN,GAGhB5O,KAAKu9C,kBAAmB,EACxBv9C,KAAKw9C,mBACLx9C,KAAKy9C,sBAAuB,EAC5Bz9C,KAAK09C,YAAa,EAClB19C,KAAKu7C,wBAA0B,KAG/Bv7C,KAAK29C,oBACL39C,KAAK49C,0BACL59C,KAAK69C,eACL79C,KAAKo3C,SACLp3C,KAAKi4C,SAGLj4C,KAAK89C,eAAqBvrC,EAAK,EAAEC,EAAK,GACtCxS,KAAK+9C,mBAAqBxrC,EAAK,EAAEC,EAAK,GACtCxS,KAAKg+C,iBAAmBzrC,EAAK,EAAEC,EAAK,GACpCxS,KAAKi+C,cACLj+C,KAAKoc,MAAQ,EACbpc,KAAKk+C,cAAgBl+C,KAAKoc,MAG1Bpc,KAAKm+C,UAAY,KACjBn+C,KAAKo+C,UAAY,KAGjBp+C,KAAKq+C,gBACH5qC,IAAO,SAAUpK,EAAO6K,GACtBlR,EAAQs7C,UAAUpqC,EAAOnS,OACzBiB,EAAQ4M,SAEVsF,OAAU,SAAU7L,EAAO6K,GACzBlR,EAAQu7C,aAAarqC,EAAOnS,MAAOmS,EAAOhB,MAC1ClQ,EAAQ4M,SAEV+G,OAAU,SAAUtN,EAAO6K,GACzBlR,EAAQw7C,aAAatqC,EAAOnS,OAC5BiB,EAAQ4M,UAGZ5P,KAAKy+C,gBACHhrC,IAAO,SAAUpK,EAAO6K,GACtBlR,EAAQ07C,UAAUxqC,EAAOnS,OACzBiB,EAAQ4M,SAEVsF,OAAU,SAAU7L,EAAO6K,GACzBlR,EAAQ27C,aAAazqC,EAAOnS,OAC5BiB,EAAQ4M,SAEV+G,OAAU,SAAUtN,EAAO6K,GACzBlR,EAAQ47C,aAAa1qC,EAAOnS,OAC5BiB,EAAQ4M,UAKZ5P,KAAK6+C,QAAS,EACd7+C,KAAK8+C,MAAQ14C,OAGbpG,KAAKsY,QAAQpF,EAAKlT,KAAK47C,UAAUvC,WAAWxqC,SAAW7O,KAAK47C,UAAUjB,mBAAmB9rC,SAGzF7O,KAAK82C,cAAe,EAC6B,GAA7C92C,KAAK47C,UAAUjB,mBAAmB9rC,QACpC7O,KAAK++C,2BAI2B,GAA5B/+C,KAAK47C,UAAUN,WACjBt7C,KAAKg/C,WAAW54C,QAAW,EAAKpG,KAAK47C,UAAUvC,WAAWxqC,SAK1D7O,KAAK47C,UAAUvC,WAAWxqC,SAC5B7O,KAAKi/C,sBAvVT,GAAI/iC,GAAUhc,EAAoB,IAC9BogC,EAASpgC,EAAoB,IAC7Bg/C,EAAYh/C,EAAoB,IAChCS,EAAOT,EAAoB,GAC3Bk6B,EAAal6B,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BoD,EAAYpD,EAAoB,IAChCqD,EAAcrD,EAAoB,IAClCgD,EAAShD,EAAoB,IAC7BiD,EAASjD,EAAoB,IAC7BkD,EAAOlD,EAAoB,IAC3B+C,EAAO/C,EAAoB,IAC3BmD,EAAQnD,EAAoB,IAC5Bi/C,EAAcj/C,EAAoB,IAClCk/C,EAAYl/C,EAAoB,IAChC0/B,EAAU1/B,EAAoB,GAGlCA,GAAoB,IAyUpBgc,EAAQnZ,EAAQ2Q,WAShB3Q,EAAQ2Q,UAAU2rC,eAAiB,WAIjC,IAAK,GAHDC,GAAUvtC,SAASwtC,qBAAsB,UAGpCn6C,EAAI,EAAGA,EAAIk6C,EAAQ/5C,OAAQH,IAAK,CACvC,GAAIo6C,GAAMF,EAAQl6C,GAAGo6C,IACjBr7C,EAAQq7C,GAAO,qBAAqBn7C,KAAKm7C,EAC7C,IAAIr7C,EAEF,MAAOq7C,GAAIrzC,UAAU,EAAGqzC,EAAIj6C,OAASpB,EAAM,GAAGoB,QAIlD,MAAO,OAQTxC,EAAQ2Q,UAAU+rC,UAAY,WAC5B,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIC,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACdF,EAAQH,EAAM,IAAIG,EAAOH,EAAKntC,GAC9ButC,EAAQJ,EAAM,IAAII,EAAOJ,EAAKntC,GAC9BotC,EAAQD,EAAM,IAAIC,EAAOD,EAAKltC,GAC9BotC,EAAQF,EAAM,IAAIE,EAAOF,EAAKltC,GAMtC,OAHY,MAARqtC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpD78C,EAAQ2Q,UAAUssC,YAAc,SAAShxC,GACvC,OAAQuD,EAAI,IAAOvD,EAAM8wC,KAAO9wC,EAAM6wC,MAC9BrtC,EAAI,IAAOxD,EAAM4wC,KAAO5wC,EAAM2wC,QAUxC58C,EAAQ2Q,UAAUsrC,WAAa,SAASiB,EAAkBC,EAAaC,GACjD/5C,SAAhB85C,IACFA,GAAc,GAEK95C,SAAjB+5C,IACFA,GAAe,GAEQ/5C,SAArB65C,IACFA,GAAmB,EAGrB,IACIG,GADApxC,EAAQhP,KAAKy/C,WAGjB,IAAmB,GAAfS,EAAqB,CACvB,GAAIG,GAAgBrgD,KAAK69C,YAAYt4C,MAIjC66C,GAH+B,GAA/BpgD,KAAK47C,UAAUZ,aACwB,GAArCh7C,KAAK47C,UAAUvC,WAAWxqC,SAC5BwxC,GAAiBrgD,KAAK47C,UAAUvC,WAAWC,gBAC/B,UAAY+G,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCrgD,KAAK47C,UAAUvC,WAAWxqC,SAC1BwxC,GAAiBrgD,KAAK47C,UAAUvC,WAAWC,gBACjC,YAAc+G,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAASx7C,KAAKwG,IAAItL,KAAKye,MAAMC,OAAOC,YAAc,IAAK3e,KAAKye,MAAMC,OAAOsF,aAAe,IAC5Fo8B,IAAaE,MAEV,CACH,GAAI7Q,GAAgD,IAApC3qC,KAAKklB,IAAIhb,EAAM8wC,KAAO9wC,EAAM6wC,MACxCU,EAAgD,IAApCz7C,KAAKklB,IAAIhb,EAAM4wC,KAAO5wC,EAAM2wC,MAExCa,EAAaxgD,KAAKye,MAAMC,OAAOC,YAAe8wB,EAC9CgR,EAAazgD,KAAKye,MAAMC,OAAOsF,aAAeu8B,CAElDH,GAA2BK,GAAdD,EAA4BA,EAAaC,EAGpDL,EAAY,IACdA,EAAY,EAId,IAAI90B,GAAStrB,KAAKggD,YAAYhxC,EAC9B,IAAoB,GAAhBmxC,EAAuB,CACzB,GAAIvxC,IAAWmU,SAAUuI,EAAQlP,MAAOgkC,EAAWM,UAAWT,EAC9DjgD,MAAKgnB,OAAOpY,GACZ5O,KAAK6+C,QAAS,EACd7+C,KAAK4P,YAGL0b,GAAO/Y,GAAK6tC,EACZ90B,EAAO9Y,GAAK4tC,EACZ90B,EAAO/Y,GAAK,GAAMvS,KAAKye,MAAMC,OAAOC,YACpC2M,EAAO9Y,GAAK,GAAMxS,KAAKye,MAAMC,OAAOsF,aACpChkB,KAAKmc,UAAUikC,GACfpgD,KAAKs9C,iBAAiBhyB,EAAO/Y,GAAG+Y,EAAO9Y,IAS3CzP,EAAQ2Q,UAAUitC,qBAAuB,WACvC3gD,KAAK4gD,qBACL,KAAK,GAAIC,KAAO7gD,MAAKo3C,MACfp3C,KAAKo3C,MAAM1xC,eAAem7C,IAC5B7gD,KAAK69C,YAAY91C,KAAK84C,IAiB5B99C,EAAQ2Q,UAAU4E,QAAU,SAASpF,EAAMitC,GAOzC,GANqB/5C,SAAjB+5C,IACFA,GAAe,GAGjBngD,KAAK82C,cAAe,EAEhB5jC,GAAQA,EAAKoc,MAAQpc,EAAKkkC,OAASlkC,EAAK+kC,OAC1C,KAAM,IAAIl/B,aAAY,iGAOxB,IAFA/Y,KAAKic,WAAW/I,GAAQA,EAAKtE,SAEzBsE,GAAQA,EAAKoc,KAEf,GAAGpc,GAAQA,EAAKoc,IAAK,CACnB,GAAIwxB,GAAUx9C,EAAUy9C,WAAW7tC,EAAKoc,IAExC,YADAtvB,MAAKsY,QAAQwoC,QAIZ,IAAI5tC,GAAQA,EAAK8tC,OAEpB,GAAG9tC,GAAQA,EAAK8tC,MAAO,CACrB,GAAIC,GAAY19C,EAAY29C,WAAWhuC,EAAK8tC,MAE5C,YADAhhD,MAAKsY,QAAQ2oC,QAKfjhD,MAAKmhD,UAAUjuC,GAAQA,EAAKkkC,OAC5Bp3C,KAAKohD,UAAUluC,GAAQA,EAAK+kC,MAE9Bj4C,MAAKqhD,mBACe,GAAhBlB,IAC+C,GAA7CngD,KAAK47C,UAAUjB,mBAAmB9rC,SACpC7O,KAAKshD,eACLthD,KAAK++C,4BAID/+C,KAAK47C,UAAUN,WACjBt7C,KAAKuhD,aAGTvhD,KAAK4P,SAEP5P,KAAK82C,cAAe,GAOtB/zC,EAAQ2Q,UAAUuI,WAAa,SAAUrN,GACvC,GAAIA,EAAS,CACX,GAAInJ,GAEA4I,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAAa,WAAW,mBACrG,QAAQ,SAAS,aAAa,YAAY,WAAW,aAMvD,IAJA1N,EAAK2F,uBAAuB+H,EAAOrO,KAAK47C,UAAWhtC,GACnDjO,EAAK2F,wBAAwB,SAAStG,KAAK47C,UAAUxE,MAAOxoC,EAAQwoC,OACpEz2C,EAAK2F,wBAAwB,QAAQ,UAAUtG,KAAK47C,UAAU3D,MAAOrpC,EAAQqpC,OAEzErpC,EAAQ8pC,UACV/3C,EAAK+N,aAAa1O,KAAK47C,UAAUlD,QAAS9pC,EAAQ8pC,QAAQ,aAC1D/3C,EAAK+N,aAAa1O,KAAK47C,UAAUlD,QAAS9pC,EAAQ8pC,QAAQ,aAEtD9pC,EAAQ8pC,QAAQU,uBAAuB,CACzCp5C,KAAK47C,UAAUjB,mBAAmB9rC,SAAU,EAC5C7O,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SAAU,EACvD7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAU,CAC3C,KAAKpJ,IAAQmJ,GAAQ8pC,QAAQU,sBACvBxqC,EAAQ8pC,QAAQU,sBAAsB1zC,eAAeD,KACvDzF,KAAK47C,UAAUlD,QAAQU,sBAAsB3zC,GAAQmJ,EAAQ8pC,QAAQU,sBAAsB3zC,IAiDnG,GA3CImJ,EAAQu5B,QAAQnoC,KAAK+2C,iBAAiBtjC,IAAM7E,EAAQu5B,OACpDv5B,EAAQ4yC,SAASxhD,KAAK+2C,iBAAiBC,KAAOpoC,EAAQ4yC,QACtD5yC,EAAQ6yC,aAAazhD,KAAK+2C,iBAAiBE,SAAWroC,EAAQ6yC,YAC9D7yC,EAAQ8yC,YAAY1hD,KAAK+2C,iBAAiBG,QAAUtoC,EAAQ8yC,WAC5D9yC,EAAQ+yC,WAAW3hD,KAAK+2C,iBAAiBI,IAAMvoC,EAAQ+yC,UAE3DhhD,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,gBAC1CjO,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,sBAC1CjO,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,cAC1CjO,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,cAC1CjO,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,YAC1CjO,EAAK+N,aAAa1O,KAAK47C,UAAWhtC,EAAQ,oBAGtCA,EAAQ6rC,mBACVz6C,KAAK4hD,SAAW5hD,KAAK47C,UAAUnB,iBAAiBC,kBAK9C9rC,EAAQqpC,QACkB7xC,SAAxBwI,EAAQqpC,MAAMvtC,QACZ/J,EAAKoD,SAAS6K,EAAQqpC,MAAMvtC,QAC9B1K,KAAK47C,UAAU3D,MAAMvtC,SACrB1K,KAAK47C,UAAU3D,MAAMvtC,MAAMA,MAAQkE,EAAQqpC,MAAMvtC,MACjD1K,KAAK47C,UAAU3D,MAAMvtC,MAAMmB,UAAY+C,EAAQqpC,MAAMvtC,MACrD1K,KAAK47C,UAAU3D,MAAMvtC,MAAMoB,MAAQ8C,EAAQqpC,MAAMvtC,QAGftE,SAA9BwI,EAAQqpC,MAAMvtC,MAAMA,QAA0B1K,KAAK47C,UAAU3D,MAAMvtC,MAAMA,MAAQkE,EAAQqpC,MAAMvtC,MAAMA,OACnEtE,SAAlCwI,EAAQqpC,MAAMvtC,MAAMmB,YAA0B7L,KAAK47C,UAAU3D,MAAMvtC,MAAMmB,UAAY+C,EAAQqpC,MAAMvtC,MAAMmB,WAC3EzF,SAA9BwI,EAAQqpC,MAAMvtC,MAAMoB,QAA0B9L,KAAK47C,UAAU3D,MAAMvtC,MAAMoB,MAAQ8C,EAAQqpC,MAAMvtC,MAAMoB,SAIxG8C,EAAQqpC,MAAMP,WACWtxC,SAAxBwI,EAAQqpC,MAAMvtC,QACZ/J,EAAKoD,SAAS6K,EAAQqpC,MAAMvtC,OAAmB1K,KAAK47C,UAAU3D,MAAMP,UAAY9oC,EAAQqpC,MAAMvtC,MAC3DtE,SAA9BwI,EAAQqpC,MAAMvtC,MAAMA,QAAsB1K,KAAK47C,UAAU3D,MAAMP,UAAY9oC,EAAQqpC,MAAMvtC,MAAMA,SAK1GkE,EAAQwoC,OACNxoC,EAAQwoC,MAAM1sC,MAAO,CACvB,GAAIm3C,GAAclhD,EAAK8J,WAAWmE,EAAQwoC,MAAM1sC,MAChD1K,MAAK47C,UAAUxE,MAAM1sC,MAAMiB,WAAak2C,EAAYl2C,WACpD3L,KAAK47C,UAAUxE,MAAM1sC,MAAMkB,OAASi2C,EAAYj2C,OAChD5L,KAAK47C,UAAUxE,MAAM1sC,MAAMmB,UAAUF,WAAak2C,EAAYh2C,UAAUF,WACxE3L,KAAK47C,UAAUxE,MAAM1sC,MAAMmB,UAAUD,OAASi2C,EAAYh2C,UAAUD,OACpE5L,KAAK47C,UAAUxE,MAAM1sC,MAAMoB,MAAMH,WAAak2C,EAAY/1C,MAAMH,WAChE3L,KAAK47C,UAAUxE,MAAM1sC,MAAMoB,MAAMF,OAASi2C,EAAY/1C,MAAMF,OAGhE,GAAIgD,EAAQilB,OACV,IAAK,GAAIiuB,KAAalzC,GAAQilB,OAC5B,GAAIjlB,EAAQilB,OAAOnuB,eAAeo8C,GAAY,CAC5C,GAAIrvC,GAAQ7D,EAAQilB,OAAOiuB,EAC3B9hD,MAAK6zB,OAAOpgB,IAAIquC,EAAWrvC,GAKjC,GAAI7D,EAAQ2W,QAAS,CACnB,IAAK9f,IAAQmJ,GAAQ2W,QACf3W,EAAQ2W,QAAQ7f,eAAeD,KACjCzF,KAAK47C,UAAUr2B,QAAQ9f,GAAQmJ,EAAQ2W,QAAQ9f,GAG/CmJ,GAAQ2W,QAAQ7a,QAClB1K,KAAK47C,UAAUr2B,QAAQ7a,MAAQ/J,EAAK8J,WAAWmE,EAAQ2W,QAAQ7a,QAiBnE,GAbI,cAAgBkE,KACdA,EAAQmzC,YACV/hD,KAAKgiD,UAAY,GAAI5C,GAAUp/C,KAAKye,OACpCze,KAAKgiD,UAAUruC,GAAG,SAAU3T,KAAKiiD,gBAAgBztB,KAAKx0B,QAGlDA,KAAKgiD,YACPhiD,KAAKgiD,UAAU1iB,gBACRt/B,MAAKgiD,YAKdpzC,EAAQ6yB,OACV,KAAM,IAAIh+B,OAAM,8EAMpBzD,KAAKi9C,qBAELj9C,KAAKkiD,0BAELliD,KAAKmiD,0BAELniD,KAAKoiD,yBAILpiD,KAAKiiD,kBACLjiD,KAAK8jB,QAAQ9jB,KAAK47C,UAAU7oC,MAAO/S,KAAK47C,UAAU5oC,QAClDhT,KAAK6+C,QAAS,EACd7+C,KAAK4P,SAUP7M,EAAQ2Q,UAAU0gB,QAAU,WAE1B,KAAOp0B,KAAKgZ,iBAAiB6J,iBAC3B7iB,KAAKgZ,iBAAiBrH,YAAY3R,KAAKgZ,iBAAiB8J,WAY1D,IATA9iB,KAAKye,MAAQ1M,SAASM,cAAc,OACpCrS,KAAKye,MAAM7W,UAAY,oBACvB5H,KAAKye,MAAMpR,MAAM0V,SAAW,WAC5B/iB,KAAKye,MAAMpR,MAAM2V,SAAW,SAG5BhjB,KAAKye,MAAMC,OAAS3M,SAASM,cAAe,UAC5CrS,KAAKye,MAAMC,OAAOrR,MAAM0V,SAAW,WACnC/iB,KAAKye,MAAMxM,YAAYjS,KAAKye,MAAMC,SAC7B1e,KAAKye,MAAMC,OAAOyH,WAAY,CACjC,GAAIlD,GAAWlR,SAASM,cAAe,MACvC4Q,GAAS5V,MAAM3C,MAAQ,MACvBuY,EAAS5V,MAAM6V,WAAc,OAC7BD,EAAS5V,MAAM8V,QAAW,OAC1BF,EAASG,UAAa,mDACtBpjB,KAAKye,MAAMC,OAAOzM,YAAYgR,GAGhC,GAAI1O,GAAKvU,IACTA,MAAKugC,QACLvgC,KAAKqiD,SACLriD,KAAK2D,OAAS28B,EAAOtgC,KAAKye,MAAMC,QAC9B8hB,iBAAiB,IAEnBxgC,KAAK2D,OAAOgQ,GAAG,MAAaY,EAAG+tC,OAAO9tB,KAAKjgB,IAC3CvU,KAAK2D,OAAOgQ,GAAG,YAAaY,EAAGguC,aAAa/tB,KAAKjgB,IACjDvU,KAAK2D,OAAOgQ,GAAG,OAAaY,EAAGqlB,QAAQpF,KAAKjgB,IAC5CvU,KAAK2D,OAAOgQ,GAAG,QAAaY,EAAGwlB,SAASvF,KAAKjgB,IAC7CvU,KAAK2D,OAAOgQ,GAAG,QAAaY,EAAGulB,SAAStF,KAAKjgB,IAC7CvU,KAAK2D,OAAOgQ,GAAG,YAAaY,EAAGklB,aAAajF,KAAKjgB,IACjDvU,KAAK2D,OAAOgQ,GAAG,OAAaY,EAAGmlB,QAAQlF,KAAKjgB,IAC5CvU,KAAK2D,OAAOgQ,GAAG,UAAaY,EAAGolB,WAAWnF,KAAKjgB,IAC/CvU,KAAK2D,OAAOgQ,GAAG,UAAaY,EAAGiuC,WAAWhuB,KAAKjgB,IAC/CvU,KAAK2D,OAAOgQ,GAAG,aAAaY,EAAGslB,cAAcrF,KAAKjgB,IAClDvU,KAAK2D,OAAOgQ,GAAG,iBAAiBY,EAAGslB,cAAcrF,KAAKjgB,IACtDvU,KAAK2D,OAAOgQ,GAAG,YAAaY,EAAGkuC,kBAAkBjuB,KAAKjgB,IAGtDvU,KAAKgZ,iBAAiB/G,YAAYjS,KAAKye,QASzC1b,EAAQ2Q,UAAUuuC,gBAAkB,WAClC,GAAI1tC,GAAKvU,IACTA,MAAKk/C,UAAYA,EAEjBl/C,KAAKk/C,UAAUwD,QAEX1iD,KAAK47C,UAAUrB,SAAS1rC,SAAW7O,KAAK2iD,aAC1C3iD,KAAKk/C,UAAU1qB,KAAK,KAAQx0B,KAAK4iD,QAAQpuB,KAAKjgB,GAAQ,WACtDvU,KAAKk/C,UAAU1qB,KAAK,KAAQx0B,KAAK6iD,aAAaruB,KAAKjgB,GAAK,SACxDvU,KAAKk/C,UAAU1qB,KAAK,OAAQx0B,KAAK8iD,UAAUtuB,KAAKjgB,GAAM,WACtDvU,KAAKk/C,UAAU1qB,KAAK,OAAQx0B,KAAK6iD,aAAaruB,KAAKjgB,GAAK,SACxDvU,KAAKk/C,UAAU1qB,KAAK,OAAQx0B,KAAK+iD,UAAUvuB,KAAKjgB,GAAM,WACtDvU,KAAKk/C,UAAU1qB,KAAK,OAAQx0B,KAAKgjD,aAAaxuB,KAAKjgB,GAAK,SACxDvU,KAAKk/C,UAAU1qB,KAAK,QAAQx0B,KAAKijD,WAAWzuB,KAAKjgB,GAAK,WACtDvU,KAAKk/C,UAAU1qB,KAAK,QAAQx0B,KAAKgjD,aAAaxuB,KAAKjgB,GAAK,SACxDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKkjD,QAAQ1uB,KAAKjgB,GAAQ,WACtDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAQ,SACxDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKojD,SAAS5uB,KAAKjgB,GAAO,WACtDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAQ,SACxDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKkjD,QAAQ1uB,KAAKjgB,GAAQ,WACtDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAQ,SACxDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKojD,SAAS5uB,KAAKjgB,GAAO,WACtDvU,KAAKk/C,UAAU1qB,KAAK,IAAQx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAQ,SACxDvU,KAAKk/C,UAAU1qB,KAAK,SAASx0B,KAAKkjD,QAAQ1uB,KAAKjgB,GAAO,WACtDvU,KAAKk/C,UAAU1qB,KAAK,SAASx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAO,SACxDvU,KAAKk/C,UAAU1qB,KAAK,WAAWx0B,KAAKojD,SAAS5uB,KAAKjgB,GAAI,WACtDvU,KAAKk/C,UAAU1qB,KAAK,WAAWx0B,KAAKmjD,UAAU3uB,KAAKjgB,GAAK,UAGX,GAA3CvU,KAAK47C,UAAUnB,iBAAiB5rC,UAClC7O,KAAKk/C,UAAU1qB,KAAK,SAASx0B,KAAKqjD,sBAAsB7uB,KAAKjgB,IAC7DvU,KAAKk/C,UAAU1qB,KAAK,MAAMx0B,KAAKsjD,gBAAgB9uB,KAAKjgB,MAUxDxR,EAAQ2Q,UAAU6vC,YAAc,SAAUhqB,GACxC,OACEhnB,EAAGgnB,EAAMW,MAAQv5B,EAAKuG,gBAAgBlH,KAAKye,MAAMC,QACjDlM,EAAG+mB,EAAMY,MAAQx5B,EAAK6G,eAAexH,KAAKye,MAAMC,UASpD3b,EAAQ2Q,UAAUomB,SAAW,SAAUzwB,GACrCrJ,KAAKugC,KAAK9E,QAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,QACnDtrB,KAAKugC,KAAKijB,SAAU,EACpBxjD,KAAKqiD,MAAMjmC,MAAQpc,KAAKyjD,YAExBzjD,KAAK0jD,aAAa1jD,KAAKugC,KAAK9E,UAO9B14B,EAAQ2Q,UAAU+lB,aAAe,WAC/Bz5B,KAAK2jD,oBAUP5gD,EAAQ2Q,UAAUiwC,iBAAmB,WACnC,GAAIpjB,GAAOvgC,KAAKugC,KACZmf,EAAO1/C,KAAK4jD,WAAWrjB,EAAK9E,QAQhC,IALA8E,EAAKlG,UAAW,EAChBkG,EAAK2I,aACL3I,EAAK3jB,YAAc5c,KAAK6jD,kBACxBtjB,EAAKwf,OAAS,KAEF,MAARL,EAAc,CAChBnf,EAAKwf,OAASL,EAAKr/C,GAEdq/C,EAAKoE,cACR9jD,KAAK+jD,cAAcrE,GAAK,GAG1B1/C,KAAKktB,KAAK,aAAa82B,QAAQhkD,KAAKk2B,eAAekhB,OAGnD,KAAK,GAAI6M,KAAYjkD,MAAKkkD,aAAa9M,MACrC,GAAIp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeu+C,GAAW,CACpD,GAAIpgD,GAAS7D,KAAKkkD,aAAa9M,MAAM6M,GACjC74C,GACF/K,GAAIwD,EAAOxD,GACXq/C,KAAM77C,EAGN0O,EAAG1O,EAAO0O,EACVC,EAAG3O,EAAO2O,EACV2xC,OAAQtgD,EAAOsgD,OACfC,OAAQvgD,EAAOugD,OAGjBvgD,GAAOsgD,QAAS,EAChBtgD,EAAOugD,QAAS,EAEhB7jB,EAAK2I,UAAUnhC,KAAKqD,MAW5BrI,EAAQ2Q,UAAUgmB,QAAU,SAAUrwB,GACpCrJ,KAAKqkD,cAAch7C,IAUrBtG,EAAQ2Q,UAAU2wC,cAAgB,SAASh7C,GACzC,IAAIrJ,KAAKugC,KAAKijB,QAAd,CAKAxjD,KAAKskD,aAEL,IAAI7oB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,QACzC/W,EAAKvU,KACLugC,EAAOvgC,KAAKugC,KACZ2I,EAAY3I,EAAK2I,SACrB,IAAIA,GAAaA,EAAU3jC,QAAsC,GAA5BvF,KAAK47C,UAAUH,UAAmB,CAErE,GAAIpgB,GAASI,EAAQlpB,EAAIguB,EAAK9E,QAAQlpB,EAClC+oB,EAASG,EAAQjpB,EAAI+tB,EAAK9E,QAAQjpB,CAGtC02B,GAAU9gC,QAAQ,SAAUgD,GAC1B,GAAIs0C,GAAOt0C,EAAEs0C,IAERt0C,GAAE+4C,SACLzE,EAAKntC,EAAIgC,EAAGgwC,qBAAqBhwC,EAAGiwC,qBAAqBp5C,EAAEmH,GAAK8oB,IAG7DjwB,EAAEg5C,SACL1E,EAAKltC,EAAI+B,EAAGkwC,qBAAqBlwC,EAAGmwC,qBAAqBt5C,EAAEoH,GAAK8oB,MAM/Dt7B,KAAK6+C,SACR7+C,KAAK6+C,QAAS,EACd7+C,KAAK4P,aAIP,IAAkC,GAA9B5P,KAAK47C,UAAUJ,YAAqB,CAEtC,GAAI9uB,GAAQ+O,EAAQlpB,EAAIvS,KAAKugC,KAAK9E,QAAQlpB,EACtCoa,EAAQ8O,EAAQjpB,EAAIxS,KAAKugC,KAAK9E,QAAQjpB,CAE1CxS,MAAKs9C,gBACHt9C,KAAKugC,KAAK3jB,YAAYrK,EAAIma,EAC1B1sB,KAAKugC,KAAK3jB,YAAYpK,EAAIma,GAE5B3sB,KAAK68C,aAWX95C,EAAQ2Q,UAAUimB,WAAa,SAAUtwB,GACvCrJ,KAAK2kD,eAAet7C,IAItBtG,EAAQ2Q,UAAUixC,eAAiB,WACjC3kD,KAAKugC,KAAKlG,UAAW,CACrB,IAAI6O,GAAYlpC,KAAKugC,KAAK2I,SACtBA,IAAaA,EAAU3jC,QACzB2jC,EAAU9gC,QAAQ,SAAUgD,GAE1BA,EAAEs0C,KAAKyE,OAAS/4C,EAAE+4C,OAClB/4C,EAAEs0C,KAAK0E,OAASh5C,EAAEg5C,SAEpBpkD,KAAK6+C,QAAS,EACd7+C,KAAK4P,SAGL5P,KAAK68C,UAEP78C,KAAKktB,KAAK,WAAW82B,QAAQhkD,KAAKk2B,eAAekhB,SAMnDr0C,EAAQ2Q,UAAU4uC,OAAS,SAAUj5C,GACnC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAC7CtrB,MAAKg+C,gBAAkBviB,EACvBz7B,KAAK4kD,WAAWnpB,IASlB14B,EAAQ2Q,UAAU6uC,aAAe,SAAUl5C,GACzC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAC7CtrB,MAAK6kD,iBAAiBppB,IAQxB14B,EAAQ2Q,UAAUkmB,QAAU,SAAUvwB,GACpC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAC7CtrB,MAAKg+C,gBAAkBviB,EACvBz7B,KAAK8kD,cAAcrpB,IAQrB14B,EAAQ2Q,UAAU8uC,WAAa,SAAUn5C,GACvC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAC7CtrB,MAAK+kD,iBAAiBtpB,IAQxB14B,EAAQ2Q,UAAUqmB,SAAW,SAAU1wB,GACrC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAE7CtrB,MAAKugC,KAAKijB,SAAU,EACd,SAAWxjD,MAAKqiD,QACpBriD,KAAKqiD,MAAMjmC,MAAQ,EAIrB,IAAIA,GAAQpc,KAAKqiD,MAAMjmC,MAAQ/S,EAAM+xB,QAAQhf,KAC7Cpc,MAAKglD,MAAM5oC,EAAOqf,IAUpB14B,EAAQ2Q,UAAUsxC,MAAQ,SAAS5oC,EAAOqf,GACxC,GAA+B,GAA3Bz7B,KAAK47C,UAAUxiB,SAAkB,CACnC,GAAI6rB,GAAWjlD,KAAKyjD,WACR,MAARrnC,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAI8oC,GAAsB,IACR9+C,UAAdpG,KAAKugC,MACmB,GAAtBvgC,KAAKugC,KAAKlG,WACZ6qB,EAAsBllD,KAAKmlD,YAAYnlD,KAAKugC,KAAK9E,SAIrD,IAAI7e,GAAc5c,KAAK6jD,kBAEnBuB,EAAYhpC,EAAQ6oC,EACpBI,GAAM,EAAID,GAAa3pB,EAAQlpB,EAAIqK,EAAYrK,EAAI6yC,EACnDE,GAAM,EAAIF,GAAa3pB,EAAQjpB,EAAIoK,EAAYpK,EAAI4yC,CASvD,IAPAplD,KAAKi+C,YAAc1rC,EAAMvS,KAAKukD,qBAAqB9oB,EAAQlpB,GACxCC,EAAMxS,KAAKykD,qBAAqBhpB,EAAQjpB,IAE3DxS,KAAKmc,UAAUC,GACfpc,KAAKs9C,gBAAgB+H,EAAIC,GACzBtlD,KAAKulD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBxlD,KAAKylD,YAAYP,EAC5CllD,MAAKugC,KAAK9E,QAAQlpB,EAAIizC,EAAqBjzC,EAC3CvS,KAAKugC,KAAK9E,QAAQjpB,EAAIgzC,EAAqBhzC,EAY7C,MATAxS,MAAK68C,UAEUzgC,EAAX6oC,EACFjlD,KAAKktB,KAAK,QAASgM,UAAU,MAG7Bl5B,KAAKktB,KAAK,QAASgM,UAAU,MAGxB9c,IAYXrZ,EAAQ2Q,UAAUmmB,cAAgB,SAASxwB,GAEzC,GAAI4kB,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAW,IAChB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAO,GAMpBF,EAAO,CAGT,GAAI7R,GAAQpc,KAAKyjD,YACb7nB,EAAO3N,EAAQ,EACP,GAARA,IACF2N,GAAe,EAAIA,GAErBxf,GAAU,EAAIwf,CAGd,IAAIR,GAAUhB,EAAWoB,YAAYx7B,KAAMqJ,GACvCoyB,EAAUz7B,KAAKujD,YAAYnoB,EAAQ9P,OAGvCtrB,MAAKglD,MAAM5oC,EAAOqf,GAIpBpyB,EAAMD,kBASRrG,EAAQ2Q,UAAU+uC,kBAAoB,SAAUp5C,GAC9C,GAAI+xB,GAAUhB,EAAWoB,YAAYx7B,KAAMqJ,GACvCoyB,EAAUz7B,KAAKujD,YAAYnoB,EAAQ9P,OAGnCtrB,MAAK0lD,UACP1lD,KAAK2lD,gBAAgBlqB,EAKvB,IAAIlnB,GAAKvU,KACL4lD,EAAY,WACdrxC,EAAGsxC,gBAAgBpqB,GAarB,IAXIz7B,KAAK8lD,YACP1zB,cAAcpyB,KAAK8lD,YAEhB9lD,KAAKugC,KAAKlG,WACbr6B,KAAK8lD,WAAal4B,WAAWg4B,EAAW5lD,KAAK47C,UAAUr2B,QAAQ4H,QAOrC,GAAxBntB,KAAK47C,UAAU9vC,MAAe,CAEhC,IAAK,GAAIi6C,KAAU/lD,MAAK67C,SAAS5D,MAC3Bj4C,KAAK67C,SAAS5D,MAAMvyC,eAAeqgD,KACrC/lD,KAAK67C,SAAS5D,MAAM8N,GAAQj6C,OAAQ,QAC7B9L,MAAK67C,SAAS5D,MAAM8N,GAK/B,IAAI5jC,GAAMniB,KAAK4jD,WAAWnoB,EACf,OAAPtZ,IACFA,EAAMniB,KAAKgmD,WAAWvqB,IAEb,MAAPtZ,GACFniB,KAAKimD,aAAa9jC,EAIpB,KAAK,GAAI49B,KAAU//C,MAAK67C,SAASzE,MAC3Bp3C,KAAK67C,SAASzE,MAAM1xC,eAAeq6C,KACjC59B,YAAe/e,IAAQ+e,EAAI9hB,IAAM0/C,GAAU59B,YAAelf,IAAe,MAAPkf,KACpEniB,KAAKkmD,YAAYlmD,KAAK67C,SAASzE,MAAM2I,UAC9B//C,MAAK67C,SAASzE,MAAM2I,GAIjC//C,MAAK4gB,WAYT7d,EAAQ2Q,UAAUmyC,gBAAkB,SAAUpqB,GAC5C,GAOIp7B,GAPA8hB,GACF9a,KAAQrH,KAAKukD,qBAAqB9oB,EAAQlpB,GAC1C9K,IAAQzH,KAAKykD,qBAAqBhpB,EAAQjpB,GAC1CgU,MAAQxmB,KAAKukD,qBAAqB9oB,EAAQlpB,GAC1CkQ,OAAQziB,KAAKykD,qBAAqBhpB,EAAQjpB,IAIxC2zC,EAAgBnmD,KAAK0lD,QAEzB,IAAqBt/C,QAAjBpG,KAAK0lD,SAAuB,CAE9B,GAAItO,GAAQp3C,KAAKo3C,KACjB,KAAK/2C,IAAM+2C,GACT,GAAIA,EAAM1xC,eAAerF,GAAK,CAC5B,GAAIq/C,GAAOtI,EAAM/2C,EACjB,IAAwB+F,SAApBs5C,EAAK0G,YAA4B1G,EAAK2G,kBAAkBlkC,GAAM,CAChEniB,KAAK0lD,SAAWhG,CAChB,SAMR,GAAsBt5C,SAAlBpG,KAAK0lD,SAAwB,CAE/B,GAAIzN,GAAQj4C,KAAKi4C,KACjB,KAAK53C,IAAM43C,GACT,GAAIA,EAAMvyC,eAAerF,GAAK,CAC5B,GAAIimD,GAAOrO,EAAM53C,EACjB,IAAIimD,EAAKC,WAAkCngD,SAApBkgD,EAAKF,YACxBE,EAAKD,kBAAkBlkC,GAAM,CAC/BniB,KAAK0lD,SAAWY,CAChB,SAMR,GAAItmD,KAAK0lD,UAEP,GAAI1lD,KAAK0lD,UAAYS,EAAe,CAClC,GAAI5xC,GAAKvU,IACJuU,GAAGiyC,QACNjyC,EAAGiyC,MAAQ,GAAInjD,GAAMkR,EAAGkK,MAAOlK,EAAGqnC,UAAUr2B,UAM9ChR,EAAGiyC,MAAMC,YAAYhrB,EAAQlpB,EAAI,EAAGkpB,EAAQjpB,EAAI,GAChD+B,EAAGiyC,MAAME,QAAQnyC,EAAGmxC,SAASU,YAC7B7xC,EAAGiyC,MAAMjkB,YAIPviC,MAAKwmD,OACPxmD,KAAKwmD,MAAMlkB,QAYjBv/B,EAAQ2Q,UAAUiyC,gBAAkB,SAAUlqB,GACvCz7B,KAAK0lD,UAAa1lD,KAAK4jD,WAAWnoB,KACrCz7B,KAAK0lD,SAAWt/C,OACZpG,KAAKwmD,OACPxmD,KAAKwmD,MAAMlkB,SAajBv/B,EAAQ2Q,UAAUoQ,QAAU,SAAS/Q,EAAOC,GAC1C,GAAI2zC,IAAY,CACZ5zC,IAAS/S,KAAK47C,UAAU7oC,OAASC,GAAUhT,KAAK47C,UAAU5oC,QAAUhT,KAAKye,MAAMpR,MAAM0F,OAASA,GAAS/S,KAAKye,MAAMpR,MAAM2F,QAAUA,GACpIhT,KAAKye,MAAMpR,MAAM0F,MAAQA,EACzB/S,KAAKye,MAAMpR,MAAM2F,OAASA,EAE1BhT,KAAKye,MAAMC,OAAOrR,MAAM0F,MAAQ,OAChC/S,KAAKye,MAAMC,OAAOrR,MAAM2F,OAAS,OAEjChT,KAAKye,MAAMC,OAAO3L,MAAQ/S,KAAKye,MAAMC,OAAOC,YAC5C3e,KAAKye,MAAMC,OAAO1L,OAAShT,KAAKye,MAAMC,OAAOsF,aAE7ChkB,KAAK47C,UAAU7oC,MAAQA,EACvB/S,KAAK47C,UAAU5oC,OAASA,EAExB2zC,GAAY,IAMR3mD,KAAKye,MAAMC,OAAO3L,OAAS/S,KAAKye,MAAMC,OAAOC,cAC/C3e,KAAKye,MAAMC,OAAO3L,MAAQ/S,KAAKye,MAAMC,OAAOC,YAC5CgoC,GAAY,GAEV3mD,KAAKye,MAAMC,OAAO1L,QAAUhT,KAAKye,MAAMC,OAAOsF,eAChDhkB,KAAKye,MAAMC,OAAO1L,OAAShT,KAAKye,MAAMC,OAAOsF,aAC7C2iC,GAAY,IAIC,GAAbA,GACF3mD,KAAKktB,KAAK,UAAWna,MAAM/S,KAAKye,MAAMC,OAAO3L,MAAMC,OAAOhT,KAAKye,MAAMC,OAAO1L,UAShFjQ,EAAQ2Q,UAAUytC,UAAY,SAAS/J,GACrC,GAAIwP,GAAe5mD,KAAKm+C,SAExB,IAAI/G,YAAiBv2C,IAAWu2C,YAAiBt2C,GAC/Cd,KAAKm+C,UAAY/G,MAEd,IAAIvxC,MAAMC,QAAQsxC,GACrBp3C,KAAKm+C,UAAY,GAAIt9C,GACrBb,KAAKm+C,UAAU1qC,IAAI2jC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAInxC,WAAU,4BAHpBjG,MAAKm+C,UAAY,GAAIt9C,GAgBvB,GAVI+lD,GAEFjmD,EAAKyH,QAAQpI,KAAKq+C,eAAgB,SAAUh2C,EAAUgB,GACpDu9C,EAAa9yC,IAAIzK,EAAOhB,KAK5BrI,KAAKo3C,SAEDp3C,KAAKm+C,UAAW,CAElB,GAAI5pC,GAAKvU,IACTW,GAAKyH,QAAQpI,KAAKq+C,eAAgB,SAAUh2C,EAAUgB,GACpDkL,EAAG4pC,UAAUxqC,GAAGtK,EAAOhB,IAIzB,IAAImN,GAAMxV,KAAKm+C,UAAUhoC,QACzBnW,MAAKs+C,UAAU9oC,GAEjBxV,KAAK6mD,oBAQP9jD,EAAQ2Q,UAAU4qC,UAAY,SAAS9oC,GAErC,IAAK,GADDnV,GACK+E,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C/E,EAAKmV,EAAIpQ,EACT,IAAI8N,GAAOlT,KAAKm+C,UAAU5oC,IAAIlV,GAC1Bq/C,EAAO,GAAIt8C,GAAK8P,EAAMlT,KAAK28C,OAAQ38C,KAAK6zB,OAAQ7zB,KAAK47C,UAEzD,IADA57C,KAAKo3C,MAAM/2C,GAAMq/C,IACG,GAAfA,EAAKyE,QAAkC,GAAfzE,EAAK0E,QAAgC,OAAX1E,EAAKntC,GAAyB,OAAXmtC,EAAKltC,GAAa,CAC1F,GAAIqY,GAAS,EAASrV,EAAIjQ,OAAS,GAC/BuhD,EAAQ,EAAIhiD,KAAKimB,GAAKjmB,KAAKE,QACZ,IAAf06C,EAAKyE,SAAkBzE,EAAKntC,EAAIsY,EAAS/lB,KAAK4Y,IAAIopC,IACnC,GAAfpH,EAAK0E,SAAkB1E,EAAKltC,EAAIqY,EAAS/lB,KAAKyY,IAAIupC,IAExD9mD,KAAK6+C,QAAS,EAGhB7+C,KAAK2gD,uBAC4C,GAA7C3gD,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,4BAEP/+C,KAAK+mD,0BACL/mD,KAAKgnD,kBACLhnD,KAAKinD,kBAAkBjnD,KAAKo3C,OAC5Bp3C,KAAKknD,gBAQPnkD,EAAQ2Q,UAAU6qC,aAAe,SAAS/oC,EAAI2xC,GAE5C,IAAK,GADD/P,GAAQp3C,KAAKo3C,MACRhyC,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI/E,GAAKmV,EAAIpQ,GACTs6C,EAAOtI,EAAM/2C,GACb6S,EAAOi0C,EAAY/hD,EACnBs6C;EAEFA,EAAK0H,cAAcl0C,EAAMlT,KAAK47C,YAI9B8D,EAAO,GAAIt8C,GAAKikD,WAAYrnD,KAAK28C,OAAQ38C,KAAK6zB,OAAQ7zB,KAAK47C,WAC3DxE,EAAM/2C,GAAMq/C,GAGhB1/C,KAAK6+C,QAAS,EACmC,GAA7C7+C,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,4BAEP/+C,KAAK2gD,uBACL3gD,KAAKinD,kBAAkB7P,IAQzBr0C,EAAQ2Q,UAAU8qC,aAAe,SAAShpC,GAExC,IAAK,GADD4hC,GAAQp3C,KAAKo3C,MACRhyC,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI/E,GAAKmV,EAAIpQ,SACNgyC,GAAM/2C,GAEfL,KAAK2gD,uBAC4C,GAA7C3gD,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,4BAEP/+C,KAAK+mD,0BACL/mD,KAAKgnD,kBACLhnD,KAAK6mD,mBACL7mD,KAAKinD,kBAAkB7P,IASzBr0C,EAAQ2Q,UAAU0tC,UAAY,SAASnJ,GACrC,GAAIqP,GAAetnD,KAAKo+C,SAExB,IAAInG,YAAiBp3C,IAAWo3C,YAAiBn3C,GAC/Cd,KAAKo+C,UAAYnG,MAEd,IAAIpyC,MAAMC,QAAQmyC,GACrBj4C,KAAKo+C,UAAY,GAAIv9C,GACrBb,KAAKo+C,UAAU3qC,IAAIwkC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIhyC,WAAU,4BAHpBjG,MAAKo+C,UAAY,GAAIv9C,GAgBvB,GAVIymD,GAEF3mD,EAAKyH,QAAQpI,KAAKy+C,eAAgB,SAAUp2C,EAAUgB,GACpDi+C,EAAaxzC,IAAIzK,EAAOhB,KAK5BrI,KAAKi4C,SAEDj4C,KAAKo+C,UAAW,CAElB,GAAI7pC,GAAKvU,IACTW,GAAKyH,QAAQpI,KAAKy+C,eAAgB,SAAUp2C,EAAUgB,GACpDkL,EAAG6pC,UAAUzqC,GAAGtK,EAAOhB,IAIzB,IAAImN,GAAMxV,KAAKo+C,UAAUjoC,QACzBnW,MAAK0+C,UAAUlpC,GAGjBxV,KAAKgnD,mBAQPjkD,EAAQ2Q,UAAUgrC,UAAY,SAAUlpC,GAItC,IAAK,GAHDyiC,GAAQj4C,KAAKi4C,MACbmG,EAAYp+C,KAAKo+C,UAEZh5C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI/E,GAAKmV,EAAIpQ,GAETmiD,EAAUtP,EAAM53C,EAChBknD,IACFA,EAAQC,YAGV,IAAIt0C,GAAOkrC,EAAU7oC,IAAIlV,GAAKonD,iBAAoB,GAClDxP,GAAM53C,GAAM,GAAI4C,GAAKiQ,EAAMlT,KAAMA,KAAK47C,WAExC57C,KAAK6+C,QAAS,EACd7+C,KAAKinD,kBAAkBhP,GACvBj4C,KAAK0nD,qBACL1nD,KAAK+mD,0BAC4C,GAA7C/mD,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,6BASTh8C,EAAQ2Q,UAAUirC,aAAe,SAAUnpC,GAGzC,IAAK,GAFDyiC,GAAQj4C,KAAKi4C,MACbmG,EAAYp+C,KAAKo+C,UACZh5C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI/E,GAAKmV,EAAIpQ,GAET8N,EAAOkrC,EAAU7oC,IAAIlV,GACrBimD,EAAOrO,EAAM53C,EACbimD,IAEFA,EAAKkB,aACLlB,EAAKc,cAAcl0C,EAAMlT,KAAK47C,WAC9B0K,EAAKpP,YAILoP,EAAO,GAAIrjD,GAAKiQ,EAAMlT,KAAMA,KAAK47C,WACjC57C,KAAKi4C,MAAM53C,GAAMimD,GAIrBtmD,KAAK0nD,qBAC4C,GAA7C1nD,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,4BAEP/+C,KAAK6+C,QAAS,EACd7+C,KAAKinD,kBAAkBhP,IAQzBl1C,EAAQ2Q,UAAUkrC,aAAe,SAAUppC,GAEzC,IAAK,GADDyiC,GAAQj4C,KAAKi4C,MACR7yC,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI/E,GAAKmV,EAAIpQ,GACTkhD,EAAOrO,EAAM53C,EACbimD,KACc,MAAZA,EAAKqB,WACA3nD,MAAK4nD,QAAiB,QAAS,MAAEtB,EAAKqB,IAAItnD,IAEnDimD,EAAKkB,mBACEvP,GAAM53C,IAIjBL,KAAK6+C,QAAS,EACd7+C,KAAKinD,kBAAkBhP,GAC0B,GAA7Cj4C,KAAK47C,UAAUjB,mBAAmB9rC,SAAwC,GAArB7O,KAAK82C,eAC5D92C,KAAKshD,eACLthD,KAAK++C,4BAEP/+C,KAAK+mD,2BAOPhkD,EAAQ2Q,UAAUszC,gBAAkB,WAClC,GAAI3mD,GACA+2C,EAAQp3C,KAAKo3C,MACba,EAAQj4C,KAAKi4C,KACjB,KAAK53C,IAAM+2C,GACLA,EAAM1xC,eAAerF,KACvB+2C,EAAM/2C,GAAI43C,SACVb,EAAM/2C,GAAIwnD,gBAId,KAAKxnD,IAAM43C,GACT,GAAIA,EAAMvyC,eAAerF,GAAK,CAC5B,GAAIimD,GAAOrO,EAAM53C,EACjBimD,GAAK/9B,KAAO,KACZ+9B,EAAK99B,GAAK,KACV89B,EAAKpP,YAaXn0C,EAAQ2Q,UAAUuzC,kBAAoB,SAAS9kC,GAC7C,GAAI9hB,GAGAob,EAAWrV,OACXsV,EAAWtV,MACf,KAAK/F,IAAM8hB,GACT,GAAIA,EAAIzc,eAAerF,GAAK,CAC1B,GAAI4G,GAAQkb,EAAI9hB,GAAI4U,UACN7O,UAAVa,IACFwU,EAAyBrV,SAAbqV,EAA0BxU,EAAQnC,KAAKwG,IAAIrE,EAAOwU,GAC9DC,EAAyBtV,SAAbsV,EAA0BzU,EAAQnC,KAAKiI,IAAI9F,EAAOyU,IAMpE,GAAiBtV,SAAbqV,GAAuCrV,SAAbsV,EAC5B,IAAKrb,IAAM8hB,GACLA,EAAIzc,eAAerF,IACrB8hB,EAAI9hB,GAAIynD,cAAcrsC,EAAUC,IAUxC3Y,EAAQ2Q,UAAUkN,OAAS,WACzB5gB,KAAK8jB,QAAQ9jB,KAAK47C,UAAU7oC,MAAO/S,KAAK47C,UAAU5oC,QAClDhT,KAAK68C,WAOP95C,EAAQ2Q,UAAUmpC,QAAU,WAC1B,GAAI32B,GAAMlmB,KAAKye,MAAMC,OAAOyH,WAAW,MAEnC4hC,EAAI/nD,KAAKye,MAAMC,OAAO3L,MACtB5H,EAAInL,KAAKye,MAAMC,OAAO1L,MAC1BkT,GAAIE,UAAU,EAAG,EAAG2hC,EAAG58C,GAGvB+a,EAAI8hC,OACJ9hC,EAAI+hC,UAAUjoD,KAAK4c,YAAYrK,EAAGvS,KAAK4c,YAAYpK,GACnD0T,EAAI9J,MAAMpc,KAAKoc,MAAOpc,KAAKoc,OAE3Bpc,KAAK89C,eACHvrC,EAAKvS,KAAKukD,qBAAqB,GAC/B/xC,EAAKxS,KAAKykD,qBAAqB,IAEjCzkD,KAAK+9C,mBACHxrC,EAAKvS,KAAKukD,qBAAqBvkD,KAAKye,MAAMC,OAAOC,aACjDnM,EAAKxS,KAAKykD,qBAAqBzkD,KAAKye,MAAMC,OAAOsF,eAInDhkB,KAAKkoD,gBAAgB,sBAAsBhiC,IACjB,GAAtBlmB,KAAKugC,KAAKlG,UAA4Cj0B,SAAvBpG,KAAKugC,KAAKlG,UAA4D,GAAlCr6B,KAAK47C,UAAUF,kBACpF17C,KAAKkoD,gBAAgB,aAAahiC,IAGV,GAAtBlmB,KAAKugC,KAAKlG,UAA4Cj0B,SAAvBpG,KAAKugC,KAAKlG,UAA4D,GAAlCr6B,KAAK47C,UAAUD,kBACpF37C,KAAKkoD,gBAAgB,aAAahiC,GAAI,GAGT,GAA3BlmB,KAAK87C,oBACP97C,KAAKkoD,gBAAgB,oBAAoBhiC,GAO3CA,EAAIiiC,WASNplD,EAAQ2Q,UAAU4pC,gBAAkB,SAAS8K,EAASC,GAC3BjiD,SAArBpG,KAAK4c,cACP5c,KAAK4c,aACHrK,EAAG,EACHC,EAAG,IAISpM,SAAZgiD,IACFpoD,KAAK4c,YAAYrK,EAAI61C,GAEPhiD,SAAZiiD,IACFroD,KAAK4c,YAAYpK,EAAI61C,GAGvBroD,KAAKktB,KAAK,gBAQZnqB,EAAQ2Q,UAAUmwC,gBAAkB,WAClC,OACEtxC,EAAGvS,KAAK4c,YAAYrK,EACpBC,EAAGxS,KAAK4c,YAAYpK,IASxBzP,EAAQ2Q,UAAUyI,UAAY,SAASC,GACrCpc,KAAKoc,MAAQA,GAQfrZ,EAAQ2Q,UAAU+vC,UAAY,WAC5B,MAAOzjD,MAAKoc,OAUdrZ,EAAQ2Q,UAAU6wC,qBAAuB,SAAShyC,GAChD,OAAQA,EAAIvS,KAAK4c,YAAYrK,GAAKvS,KAAKoc,OAUzCrZ,EAAQ2Q,UAAU8wC,qBAAuB,SAASjyC,GAChD,MAAOA,GAAIvS,KAAKoc,MAAQpc,KAAK4c,YAAYrK,GAU3CxP,EAAQ2Q,UAAU+wC,qBAAuB,SAASjyC,GAChD,OAAQA,EAAIxS,KAAK4c,YAAYpK,GAAKxS,KAAKoc,OAUzCrZ,EAAQ2Q,UAAUgxC,qBAAuB,SAASlyC,GAChD,MAAOA,GAAIxS,KAAKoc,MAAQpc,KAAK4c,YAAYpK,GAU3CzP,EAAQ2Q,UAAU+xC,YAAc,SAAU/gC,GACxC,OAAQnS,EAAGvS,KAAKwkD,qBAAqB9/B,EAAInS,GAAIC,EAAGxS,KAAK0kD,qBAAqBhgC,EAAIlS,KAShFzP,EAAQ2Q,UAAUyxC,YAAc,SAAUzgC,GACxC,OAAQnS,EAAGvS,KAAKukD,qBAAqB7/B,EAAInS,GAAIC,EAAGxS,KAAKykD,qBAAqB//B,EAAIlS,KAUhFzP,EAAQ2Q,UAAU40C,WAAa,SAASpiC,EAAIqiC,GACvBniD,SAAfmiD,IACFA,GAAa,EAIf,IAAInR,GAAQp3C,KAAKo3C,MACbtL,IAEJ,KAAK,GAAIzrC,KAAM+2C,GACTA,EAAM1xC,eAAerF,KACvB+2C,EAAM/2C,GAAImoD,eAAexoD,KAAKoc,MAAMpc,KAAK89C,cAAc99C,KAAK+9C,mBACxD3G,EAAM/2C,GAAIyjD,aACZhY,EAAS/jC,KAAK1H,IAGV+2C,EAAM/2C,GAAIooD,UAAYF,IACxBnR,EAAM/2C,GAAIqoD,KAAKxiC,GAOvB,KAAK,GAAI9a,GAAI,EAAGu9C,EAAO7c,EAASvmC,OAAYojD,EAAJv9C,EAAUA,KAC5CgsC,EAAMtL,EAAS1gC,IAAIq9C,UAAYF,IACjCnR,EAAMtL,EAAS1gC,IAAIs9C,KAAKxiC,IAW9BnjB,EAAQ2Q,UAAUk1C,WAAa,SAAS1iC,GACtC,GAAI+xB,GAAQj4C,KAAKi4C,KACjB,KAAK,GAAI53C,KAAM43C,GACb,GAAIA,EAAMvyC,eAAerF,GAAK,CAC5B,GAAIimD,GAAOrO,EAAM53C,EACjBimD,GAAKjoB,SAASr+B,KAAKoc,OACfkqC,EAAKC,WACPtO,EAAM53C,GAAIqoD,KAAKxiC,KAYvBnjB,EAAQ2Q,UAAUm1C,kBAAoB,SAAS3iC,GAC7C,GAAI+xB,GAAQj4C,KAAKi4C,KACjB,KAAK,GAAI53C,KAAM43C,GACTA,EAAMvyC,eAAerF,IACvB43C,EAAM53C,GAAIwoD,kBAAkB3iC,IASlCnjB,EAAQ2Q,UAAU6tC,WAAa,WACgB,GAAzCvhD,KAAK47C,UAAUb,wBACjB/6C,KAAK8oD,qBAKP,KADA,GAAIxxC,GAAQ,EACLtX,KAAK6+C,QAAUvnC,EAAQtX,KAAK47C,UAAUL,yBAC3Cv7C,KAAK+oD,eACLzxC,GAEFtX,MAAKg/C,WAAW54C,QAAU,GAAM,GACa,GAAzCpG,KAAK47C,UAAUb,wBACjB/6C,KAAKgpD,uBAUTjmD,EAAQ2Q,UAAUo1C,oBAAsB,WACtC,GAAI1R,GAAQp3C,KAAKo3C,KACjB,KAAK,GAAI/2C,KAAM+2C,GACTA,EAAM1xC,eAAerF,IACJ,MAAf+2C,EAAM/2C,GAAIkS,GAA4B,MAAf6kC,EAAM/2C,GAAImS,IACnC4kC,EAAM/2C,GAAI4oD,UAAU12C,EAAI6kC,EAAM/2C,GAAI8jD,OAClC/M,EAAM/2C,GAAI4oD,UAAUz2C,EAAI4kC,EAAM/2C,GAAI+jD,OAClChN,EAAM/2C,GAAI8jD,QAAS,EACnB/M,EAAM/2C,GAAI+jD,QAAS,IAW3BrhD,EAAQ2Q,UAAUs1C,oBAAsB,WACtC,GAAI5R,GAAQp3C,KAAKo3C,KACjB,KAAK,GAAI/2C,KAAM+2C,GACTA,EAAM1xC,eAAerF,IACM,MAAzB+2C,EAAM/2C,GAAI4oD,UAAU12C,IACtB6kC,EAAM/2C,GAAI8jD,OAAS/M,EAAM/2C,GAAI4oD,UAAU12C,EACvC6kC,EAAM/2C,GAAI+jD,OAAShN,EAAM/2C,GAAI4oD,UAAUz2C,IAa/CzP,EAAQ2Q,UAAUw1C,UAAY,SAASC,GACrC,GAAI/R,GAAQp3C,KAAKo3C,KACjB,KAAK,GAAI/2C,KAAM+2C,GACb,GAAIA,EAAM1xC,eAAerF,IAAO+2C,EAAM/2C,GAAI+oD,SAASD,GACjD,OAAO,CAGX,QAAO,GAUTpmD,EAAQ2Q,UAAU21C,mBAAqB,WACrC,GAEItJ,GAFA5tB,EAAWnyB,KAAK62C,wBAChBO,EAAQp3C,KAAKo3C,MAEbkS,GAAe,CAEnB,IAAItpD,KAAK47C,UAAUR,YAAc,EAC/B,IAAK2E,IAAU3I,GACTA,EAAM1xC,eAAeq6C,KACvB3I,EAAM2I,GAAQwJ,oBAAoBp3B,EAAUnyB,KAAK47C,UAAUR,aAC3DkO,GAAe,OAKnB,KAAKvJ,IAAU3I,GACTA,EAAM1xC,eAAeq6C,KACvB3I,EAAM2I,GAAQyJ,aAAar3B,GAC3Bm3B,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgBzpD,KAAK47C,UAAUP,YAAcv2C,KAAKiI,IAAI/M,KAAKoc,MAAM,IACrE,OAAIqtC,GAAgB,GAAIzpD,KAAK47C,UAAUR,aAC9B,EAGAp7C,KAAKkpD,UAAUO,GAG1B,OAAO,GAQT1mD,EAAQ2Q,UAAUq1C,aAAe,WAC/B,IAAK/oD,KAAKu9C,kBACW,GAAfv9C,KAAK6+C,OAAgB,CACvB,GAAI6K,IAAmB,EACnBC,GAAsB,CAE1B3pD,MAAK4pD,sBAAsB,8BAC3B,IAAIC,GAAa7pD,KAAK4pD,sBAAsB,qBACD,IAAvC5pD,KAAK47C,UAAUZ,aAAansC,SAA0D,GAAvC7O,KAAK47C,UAAUZ,aAAaC,UAC7E0O,EAAsB3pD,KAAK8pD,mBAAmB,sBAGhD,KAAK,GAAI1kD,GAAI,EAAGA,EAAIykD,EAAWtkD,OAAQH,IAAMskD,EAAmBG,EAAW,IAAMH,CAGjF1pD,MAAK6+C,OAAS6K,GAAoBC,EAElC3pD,KAAKu7C,4BAYXx4C,EAAQ2Q,UAAUq2C,eAAiB,WAEjC/pD,KAAK8+C,MAAQ14C,OAEbpG,KAAKgqD,oBAGLhqD,KAAK4P,OAGL,IAAIq6C,GAAkB/lD,KAAK00B,MACvBsxB,EAAW,CACflqD,MAAK+oD,cAEL,KADA,GAAIoB,GAAejmD,KAAK00B,MAAQqxB,EACzBE,EAAe,IAAKnqD,KAAK02C,eAAiB12C,KAAK22C,aAAeuT,EAAWlqD,KAAK42C,0BACnF52C,KAAK+oD,eACLoB,EAAejmD,KAAK00B,MAAQqxB,EAC5BC,GAGF,IAAIvT,GAAazyC,KAAK00B,KACtB54B,MAAK68C,UACL78C,KAAK22C,WAAazyC,KAAK00B,MAAQ+d,GAGX,mBAAXrvC,UACTA,OAAO8iD,sBAAwB9iD,OAAO8iD,uBAAyB9iD,OAAO+iD,0BACvC/iD,OAAOgjD,6BAA+BhjD,OAAOijD,yBAM9ExnD,EAAQ2Q,UAAU9D,MAAQ,WACxB,GAAmB,GAAf5P,KAAK6+C,QAAqC,GAAnB7+C,KAAK88C,YAAsC,GAAnB98C,KAAK+8C,YAAyC,GAAtB/8C,KAAKg9C,eAM9E,GALiC,GAA7Bh9C,KAAKy9C,uBACPz9C,KAAKktB,KAAK,sBACVltB,KAAKy9C,sBAAuB,IAGzBz9C,KAAK8+C,MAAO,CACf,GAAI0L,GAAKzhD,UAAUC,UAAUyhD,cAEzBC,GAAkB,CACQ,KAA1BF,EAAGjkD,QAAQ,YACbmkD,GAAkB,EAEa,IAAxBF,EAAGjkD,QAAQ,WACdikD,EAAGjkD,QAAQ,WAAa,KAC1BmkD,GAAkB,GAKpB1qD,KAAK8+C,MADgB,GAAnB4L,EACWpjD,OAAOsmB,WAAW5tB,KAAK+pD,eAAev1B,KAAKx0B,MAAOA,KAAK02C,gBAGvDpvC,OAAO8iD,sBAAsBpqD,KAAK+pD,eAAev1B,KAAKx0B,MAAOA,KAAK02C,qBAMnF,IADA12C,KAAK68C,UACD78C,KAAKu7C,wBAA0B,EAAG,CAKpC,GAAIhnC,GAAKvU,KACLkU,GACFy2C,WAAYp2C,EAAGgnC,wBAEjBhnC,GAAGgnC,wBAA0B,EAC7BhnC,EAAGkpC,sBAAuB,EAC1B7vB,WAAW,WACTrZ,EAAG2Y,KAAK,aAAchZ,IACrB,KAWTnR,EAAQ2Q,UAAUs2C,kBAAoB,WACpC,GAAuB,GAAnBhqD,KAAK88C,YAAsC,GAAnB98C,KAAK+8C,WAAiB,CAChD,GAAIngC,GAAc5c,KAAK6jD,iBACvB7jD,MAAKs9C,gBAAgB1gC,EAAYrK,EAAEvS,KAAK88C,WAAYlgC,EAAYpK,EAAExS,KAAK+8C,YAEzE,GAA0B,GAAtB/8C,KAAKg9C,cAAoB,CAC3B,GAAI1xB,IACF/Y,EAAGvS,KAAKye,MAAMC,OAAOC,YAAc,EACnCnM,EAAGxS,KAAKye,MAAMC,OAAOsF,aAAe,EAEtChkB,MAAKglD,MAAMhlD,KAAKoc,OAAO,EAAIpc,KAAKg9C,eAAgB1xB,KAQpDvoB,EAAQ2Q,UAAUk3C,aAAe,WACF,GAAzB5qD,KAAKu9C,iBACPv9C,KAAKu9C,kBAAmB,GAGxBv9C,KAAKu9C,kBAAmB,EACxBv9C,KAAK4P,UAWT7M,EAAQ2Q,UAAU0uC,uBAAyB,SAASjC,GAIlD,GAHqB/5C,SAAjB+5C,IACFA,GAAe,GAE0B,GAAvCngD,KAAK47C,UAAUZ,aAAansC,SAA0D,GAAvC7O,KAAK47C,UAAUZ,aAAaC,QAAiB,CAC9Fj7C,KAAK0nD,oBAEL,KAAK,GAAI3H,KAAU//C,MAAK4nD,QAAiB,QAAS,MAC5C5nD,KAAK4nD,QAAiB,QAAS,MAAEliD,eAAeq6C,IACwB35C,SAAtEpG,KAAKi4C,MAAMj4C,KAAK4nD,QAAiB,QAAS,MAAE7H,GAAQ8K,qBAC/C7qD,MAAK4nD,QAAiB,QAAS,MAAE7H,OAK3C,CAEH//C,KAAK4nD,QAAiB,QAAS,QAC/B,KAAK,GAAI7B,KAAU/lD,MAAKi4C,MAClBj4C,KAAKi4C,MAAMvyC,eAAeqgD,KAC5B/lD,KAAKi4C,MAAM8N,GAAQ4B,IAAM,MAM/B3nD,KAAK+mD,0BACA5G,IACHngD,KAAK6+C,QAAS,EACd7+C,KAAK4P,UAWT7M,EAAQ2Q,UAAUg0C,mBAAqB,WACrC,GAA2C,GAAvC1nD,KAAK47C,UAAUZ,aAAansC,SAA0D,GAAvC7O,KAAK47C,UAAUZ,aAAaC,QAC7E,IAAK,GAAI8K,KAAU/lD,MAAKi4C,MACtB,GAAIj4C,KAAKi4C,MAAMvyC,eAAeqgD,GAAS,CACrC,GAAIO,GAAOtmD,KAAKi4C,MAAM8N,EACtB,IAAgB,MAAZO,EAAKqB,IAAa,CACpB,GAAI5H,GAAS,UAAU3rC,OAAOkyC,EAAKjmD,GACnCL,MAAK4nD,QAAiB,QAAS,MAAE7H,GAAU,GAAI38C,IACtC/C,GAAG0/C,EACF1I,KAAK,EACLG,MAAM,SACNC,MAAM,GACNqT,mBAAmB,SACb9qD,KAAK47C,WACrB0K,EAAKqB,IAAM3nD,KAAK4nD,QAAiB,QAAS,MAAE7H,GAC5CuG,EAAKqB,IAAIkD,aAAevE,EAAKjmD,GAC7BimD,EAAKyE,wBAYfhoD,EAAQ2Q,UAAU8iC,wBAA0B,WAC1C,IAAK,GAAIwU,KAAS7L,GACZA,EAAYz5C,eAAeslD,KAC7BjoD,EAAQ2Q,UAAUs3C,GAAS7L,EAAY6L,KAQ7CjoD,EAAQ2Q,UAAUu3C,cAAgB,WAChCp7C,QAAQC,IAAI,mEACZ9P,KAAKkrD,kBAMPnoD,EAAQ2Q,UAAUw3C,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIpL,KAAU//C,MAAKo3C,MACtB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIL,GAAO1/C,KAAKo3C,MAAM2I,GAClBqL,GAAkBprD,KAAKo3C,MAAM+M,OAC7BkH,GAAkBrrD,KAAKo3C,MAAMgN,QAC7BpkD,KAAKm+C,UAAU/qC,MAAM2sC,GAAQxtC,GAAKzN,KAAKkoB,MAAM0yB,EAAKntC,IAAMvS,KAAKm+C,UAAU/qC,MAAM2sC,GAAQvtC,GAAK1N,KAAKkoB,MAAM0yB,EAAKltC,KAC5G24C,EAAUpjD,MAAM1H,GAAG0/C,EAAOxtC,EAAEzN,KAAKkoB,MAAM0yB,EAAKntC,GAAGC,EAAE1N,KAAKkoB,MAAM0yB,EAAKltC,GAAG44C,eAAeA,EAAeC,eAAeA,IAIvHrrD,KAAKm+C,UAAUjpC,OAAOi2C,IAMxBpoD,EAAQ2Q,UAAU43C,aAAe,WAC/B,GAAIH,KACJ,KAAK,GAAIpL,KAAU//C,MAAKo3C,MACtB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIL,GAAO1/C,KAAKo3C,MAAM2I,EACtBoL,GAAUpL,IAAWxtC,EAAEzN,KAAKkoB,MAAM0yB,EAAKntC,GAAGC,EAAE1N,KAAKkoB,MAAM0yB,EAAKltC,IAGhE,MAAO24C,IAWTpoD,EAAQ2Q,UAAU63C,YAAc,SAAUxL,EAAQnxC,GAChD,GAAI5O,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrB35C,SAAZwI,IACFA,KAEF,IAAI48C,IAAgBj5C,EAAGvS,KAAKo3C,MAAM2I,GAAQxtC,EAAGC,EAAGxS,KAAKo3C,MAAM2I,GAAQvtC,EACnE5D,GAAQmU,SAAWyoC,EACnB58C,EAAQ68C,aAAe1L,EAEvB//C,KAAKgnB,OAAOpY,OAGZiB,SAAQC,IAAI,iCAWhB/M,EAAQ2Q,UAAUsT,OAAS,SAAUpY,GACnC,MAAgBxI,UAAZwI,OACFA,OAGwBxI,SAAtBwI,EAAQka,SAAoCla,EAAQka,QAAavW,EAAG,EAAGC,EAAG,IACpDpM,SAAtBwI,EAAQka,OAAOvW,IAA6B3D,EAAQka,OAAOvW,EAAK,GAC1CnM,SAAtBwI,EAAQka,OAAOtW,IAA6B5D,EAAQka,OAAOtW,EAAK,GAC1CpM,SAAtBwI,EAAQwN,QAAoCxN,EAAQwN,MAAYpc,KAAKyjD,aAC/Cr9C,SAAtBwI,EAAQmU,WAAoCnU,EAAQmU,SAAY/iB,KAAK6jD,mBAC/Cz9C,SAAtBwI,EAAQ8xC,YAAoC9xC,EAAQ8xC,WAAapwC,SAAS,IAC1E1B,EAAQ8xC,aAAc,IAAsB9xC,EAAQ8xC,WAAapwC,SAAS,IAC1E1B,EAAQ8xC,aAAc,IAAsB9xC,EAAQ8xC,cACrBt6C,SAA/BwI,EAAQ8xC,UAAUpwC,WAA0B1B,EAAQ8xC,UAAUpwC,SAAW,KACpClK,SAArCwI,EAAQ8xC,UAAUgL,iBAAgC98C,EAAQ8xC,UAAUgL,eAAiB,qBAEzF1rD,MAAK2rD,YAAY/8C,KAcnB7L,EAAQ2Q,UAAUi4C,YAAc,SAAU/8C,GACxC,GAAgBxI,SAAZwI,EAEF,YADAA,KAKF5O,MAAKskD,cACiB,GAAlB11C,EAAQg9C,SACV5rD,KAAKy8C,eAAiB7tC,EAAQ68C,aAC9BzrD,KAAK08C,mBAAqB9tC,EAAQka,QAIb,GAAnB9oB,KAAKo8C,YACPp8C,KAAK6rD,kBAAkB,GAGzB7rD,KAAKq8C,YAAcr8C,KAAKyjD,YACxBzjD,KAAKu8C,kBAAoBv8C,KAAK6jD,kBAC9B7jD,KAAKs8C,YAAc1tC,EAAQwN,MAI3Bpc,KAAKmc,UAAUnc,KAAKs8C,YACpB,IAAIwP,GAAa9rD,KAAKmlD,aAAa5yC,EAAG,GAAMvS,KAAKye,MAAMC,OAAOC,YAAanM,EAAG,GAAMxS,KAAKye,MAAMC,OAAOsF,eAClG+nC,GACFx5C,EAAGu5C,EAAWv5C,EAAI3D,EAAQmU,SAASxQ,EACnCC,EAAGs5C,EAAWt5C,EAAI5D,EAAQmU,SAASvQ,EAErCxS,MAAKw8C,mBACHjqC,EAAGvS,KAAKu8C,kBAAkBhqC,EAAIw5C,EAAmBx5C,EAAIvS,KAAKs8C,YAAc1tC,EAAQka,OAAOvW,EACvFC,EAAGxS,KAAKu8C,kBAAkB/pC,EAAIu5C,EAAmBv5C,EAAIxS,KAAKs8C,YAAc1tC,EAAQka,OAAOtW,GAIvD,GAA9B5D,EAAQ8xC,UAAUpwC,SACO,MAAvBtQ,KAAKy8C,gBACPz8C,KAAKgsD,eAAiBhsD,KAAK68C,QAC3B78C,KAAK68C,QAAU78C,KAAKisD,gBAGpBjsD,KAAKmc,UAAUnc,KAAKs8C,aACpBt8C,KAAKs9C,gBAAgBt9C,KAAKw8C,kBAAkBjqC,EAAGvS,KAAKw8C,kBAAkBhqC,GACtExS,KAAK68C,YAIP78C,KAAKk8C,eAAiB,GAAKl8C,KAAKy2C,kBAAoB7nC,EAAQ8xC,UAAUpwC,SAAW,OAAU,EAAItQ,KAAKy2C,kBACpGz2C,KAAKm8C,wBAA0BvtC,EAAQ8xC,UAAUgL,eACjD1rD,KAAKgsD,eAAiBhsD,KAAK68C,QAC3B78C,KAAK68C,QAAU78C,KAAK6rD,kBACpB7rD,KAAK68C,UACL78C,KAAK6+C,QAAS,EACd7+C,KAAK4P,UAKT7M,EAAQ2Q,UAAUu4C,cAAgB,WAChC,GAAIT,IAAgBj5C,EAAGvS,KAAKo3C,MAAMp3C,KAAKy8C,gBAAgBlqC,EAAGC,EAAGxS,KAAKo3C,MAAMp3C,KAAKy8C,gBAAgBjqC,GACzFs5C,EAAa9rD,KAAKmlD,aAAa5yC,EAAG,GAAMvS,KAAKye,MAAMC,OAAOC,YAAanM,EAAG,GAAMxS,KAAKye,MAAMC,OAAOsF,eAClG+nC,GACFx5C,EAAGu5C,EAAWv5C,EAAIi5C,EAAaj5C,EAC/BC,EAAGs5C,EAAWt5C,EAAIg5C,EAAah5C,GAE7B+pC,EAAoBv8C,KAAK6jD,kBACzBrH,GACFjqC,EAAGgqC,EAAkBhqC,EAAIw5C,EAAmBx5C,EAAIvS,KAAKoc,MAAQpc,KAAK08C,mBAAmBnqC,EACrFC,EAAG+pC,EAAkB/pC,EAAIu5C,EAAmBv5C,EAAIxS,KAAKoc,MAAQpc,KAAK08C,mBAAmBlqC,EAGvFxS,MAAKs9C,gBAAgBd,EAAkBjqC,EAAEiqC,EAAkBhqC,GAC3DxS,KAAKgsD,kBAGPjpD,EAAQ2Q,UAAU4wC,YAAc,WACH,MAAvBtkD,KAAKy8C,iBACPz8C,KAAK68C,QAAU78C,KAAKgsD,eACpBhsD,KAAKy8C,eAAiB,KACtBz8C,KAAK08C,mBAAqB,OAS9B35C,EAAQ2Q,UAAUm4C,kBAAoB,SAAUzP,GAC9Cp8C,KAAKo8C,WAAaA,GAAcp8C,KAAKo8C,WAAap8C,KAAKk8C,eACvDl8C,KAAKo8C,YAAcp8C,KAAKk8C,cAExB,IAAI9qB,GAAWzwB,EAAK6P,gBAAgBxQ,KAAKm8C,yBAAyBn8C,KAAKo8C,WAEvEp8C,MAAKmc,UAAUnc,KAAKq8C,aAAer8C,KAAKs8C,YAAct8C,KAAKq8C,aAAejrB,GAC1EpxB,KAAKs9C,gBACHt9C,KAAKu8C,kBAAkBhqC,GAAKvS,KAAKw8C,kBAAkBjqC,EAAIvS,KAAKu8C,kBAAkBhqC,GAAK6e,EACnFpxB,KAAKu8C,kBAAkB/pC,GAAKxS,KAAKw8C,kBAAkBhqC,EAAIxS,KAAKu8C,kBAAkB/pC,GAAK4e,GAGrFpxB,KAAKgsD,iBACLhsD,KAAK6+C,QAAS,EAGV7+C,KAAKo8C,YAAc,IACrBp8C,KAAKo8C,WAAa,EAEhBp8C,KAAK68C,QADoB,MAAvB78C,KAAKy8C,eACQz8C,KAAKisD,cAGLjsD,KAAKgsD,eAEtBhsD,KAAKktB,KAAK,uBAIdnqB,EAAQ2Q,UAAUs4C,eAAiB,aAQnCjpD,EAAQ2Q,UAAUivC,SAAW,WAC3B,OAAQ3iD,KAAKgiD,WAAahiD,KAAKgiD,UAAUkK,QAQ3CnpD,EAAQ2Q,UAAU2qB,SAAW,WAC3B,MAAOr+B,MAAKmc,aAQdpZ,EAAQ2Q,UAAUy4C,SAAW,WAC3B,MAAOnsD,MAAKyjD,aAQd1gD,EAAQ2Q,UAAU04C,qBAAuB,WACvC,MAAOpsD,MAAKmlD,aAAa5yC,EAAG,GAAMvS,KAAKye,MAAMC,OAAOC,YAAanM,EAAG,GAAMxS,KAAKye,MAAMC,OAAOsF,gBAI9FnkB,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAoB9B,QAAS+C,GAAMokD,EAAYrkD,EAASqpD,GAClC,IAAKrpD,EACH,KAAM,qBAER,IAAIqL,IAAU,QAAQ,WAClButC,EAAYj7C,EAAKyN,sBAAsBC,EAAOg+C,EAClDrsD,MAAK4O,QAAUgtC,EAAU3D,MACzBj4C,KAAK04C,QAAUkD,EAAUlD,QACzB14C,KAAK4O,QAAsB,aAAIy9C,EAA+B,aAG9DrsD,KAAKgD,QAAUA,EAGfhD,KAAKK,GAAS+F,OACdpG,KAAKssD,OAASlmD,OACdpG,KAAKusD,KAASnmD,OACdpG,KAAKggC,MAAS55B,OACdpG,KAAKwsD,cAAgBxsD,KAAK4O,QAAQmE,MAAQ/S,KAAK4O,QAAQspC,yBACvDl4C,KAAKiH,MAASb,OACdpG,KAAK8rC,UAAW,EAChB9rC,KAAK8L,OAAQ,EACb9L,KAAKysD,iBAAmBhlD,IAAI,EAAEJ,KAAK,EAAE0L,MAAM,EAAEC,OAAO,EAAE05C,MAAM,GAC5D1sD,KAAK2sD,YAAa,EAElB3sD,KAAKuoB,KAAO,KACZvoB,KAAKwoB,GAAK,KACVxoB,KAAK2nD,IAAM,KAIX3nD,KAAK4sD,kBACL5sD,KAAK6sD,gBAEL7sD,KAAKumD,WAAY,EAEjBvmD,KAAK8sD,YAAc,EACnB9sD,KAAK+sD,aAAc,EAEnB/sD,KAAKonD,cAAcC,GAEnBrnD,KAAKgtD,qBAAsB,EAC3BhtD,KAAKitD,cAAgB1kC,KAAK,KAAMC,GAAG,KAAM0kC,cACzCltD,KAAKmtD,cAAgB,KA7DvB,GAAIxsD,GAAOT,EAAoB,GAC3BkD,EAAOlD,EAAoB,GAoE/B+C,GAAKyQ,UAAU0zC,cAAgB,SAASC,GACtC,GAAKA,EAAL,CAIA,GAAIh5C,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,QACjE,2BAA2B,aAAa,mBAAmB,OAAO,eAoCpE,QAlCA1N,EAAKoF,oBAAoBsI,EAAQrO,KAAK4O,QAASy4C,GAEvBjhD,SAApBihD,EAAW9+B,OAA+BvoB,KAAKssD,OAASjF,EAAW9+B,MACjDniB,SAAlBihD,EAAW7+B,KAA+BxoB,KAAKusD,KAAOlF,EAAW7+B,IAE/CpiB,SAAlBihD,EAAWhnD,KAA+BL,KAAKK,GAAKgnD,EAAWhnD,IAC1C+F,SAArBihD,EAAWz/B,QAA+B5nB,KAAK4nB,MAAQy/B,EAAWz/B,MAAO5nB,KAAK2sD,YAAa,GAEtEvmD,SAArBihD,EAAWrnB,QAA6BhgC,KAAKggC,MAAQqnB,EAAWrnB,OAC3C55B,SAArBihD,EAAWpgD,QAA6BjH,KAAKiH,MAAQogD,EAAWpgD,OAC1Cb,SAAtBihD,EAAW9hD,SAA6BvF,KAAK04C,QAAQK,aAAesO,EAAW9hD,QAE1Da,SAArBihD,EAAW38C,QACb1K,KAAK4O,QAAQ4pC,cAAe,EACxB73C,EAAKoD,SAASsjD,EAAW38C,QAC3B1K,KAAK4O,QAAQlE,MAAMA,MAAQ28C,EAAW38C,MACtC1K,KAAK4O,QAAQlE,MAAMmB,UAAYw7C,EAAW38C,QAGXtE,SAA3BihD,EAAW38C,MAAMA,QAA0B1K,KAAK4O,QAAQlE,MAAMA,MAAQ28C,EAAW38C,MAAMA,OACxDtE,SAA/BihD,EAAW38C,MAAMmB,YAA0B7L,KAAK4O,QAAQlE,MAAMmB,UAAYw7C,EAAW38C,MAAMmB,WAChEzF,SAA3BihD,EAAW38C,MAAMoB,QAA0B9L,KAAK4O,QAAQlE,MAAMoB,MAAQu7C,EAAW38C,MAAMoB,SAK/F9L,KAAKk3C,UAELl3C,KAAK8sD,WAAa9sD,KAAK8sD,YAAoC1mD,SAArBihD,EAAWt0C,MACjD/S,KAAK+sD,YAAc/sD,KAAK+sD,aAAsC3mD,SAAtBihD,EAAW9hD,OAEnDvF,KAAKwsD,cAAgBxsD,KAAK4O,QAAQmE,MAAO/S,KAAK4O,QAAQspC,yBAG9Cl4C,KAAK4O,QAAQvB,OACnB,IAAK,OAAiBrN,KAAK0oD,KAAO1oD,KAAKotD,SAAW,MAClD,KAAK,QAAiBptD,KAAK0oD,KAAO1oD,KAAKqtD,UAAY,MACnD,KAAK,eAAiBrtD,KAAK0oD,KAAO1oD,KAAKstD,gBAAkB,MACzD,KAAK,YAAiBttD,KAAK0oD,KAAO1oD,KAAKutD,aAAe,MACtD,SAAsBvtD,KAAK0oD,KAAO1oD,KAAKotD,aAO3CnqD,EAAKyQ,UAAUwjC,QAAU,WACvBl3C,KAAKwnD,aAELxnD,KAAKuoB,KAAOvoB,KAAKgD,QAAQo0C,MAAMp3C,KAAKssD,SAAW,KAC/CtsD,KAAKwoB,GAAKxoB,KAAKgD,QAAQo0C,MAAMp3C,KAAKusD,OAAS,KAC3CvsD,KAAKumD,UAAavmD,KAAKuoB,MAAQvoB,KAAKwoB,GAEhCxoB,KAAKumD,WACPvmD,KAAKuoB,KAAKilC,WAAWxtD,MACrBA,KAAKwoB,GAAGglC,WAAWxtD,QAGfA,KAAKuoB,MACPvoB,KAAKuoB,KAAKklC,WAAWztD,MAEnBA,KAAKwoB,IACPxoB,KAAKwoB,GAAGilC,WAAWztD,QAQzBiD,EAAKyQ,UAAU8zC,WAAa,WACtBxnD,KAAKuoB,OACPvoB,KAAKuoB,KAAKklC,WAAWztD,MACrBA,KAAKuoB,KAAO,MAEVvoB,KAAKwoB,KACPxoB,KAAKwoB,GAAGilC,WAAWztD,MACnBA,KAAKwoB,GAAK,MAGZxoB,KAAKumD,WAAY,GAQnBtjD,EAAKyQ,UAAU0yC,SAAW,WACxB,MAA6B,kBAAfpmD,MAAKggC,MAAuBhgC,KAAKggC,QAAUhgC,KAAKggC,OAQhE/8B,EAAKyQ,UAAUuB,SAAW,WACxB,MAAOjV,MAAKiH,OASdhE,EAAKyQ,UAAUo0C,cAAgB,SAASx8C,EAAKyB,GAC3C,IAAK/M,KAAK8sD,YAA6B1mD,SAAfpG,KAAKiH,MAAqB,CAChD,GAAImV,IAASpc,KAAK4O,QAAQ0X,SAAWtmB,KAAK4O,QAAQyX,WAAatZ,EAAMzB,EACrEtL,MAAK4O,QAAQmE,OAAQ/S,KAAKiH,MAAQqE,GAAO8Q,EAAQpc,KAAK4O,QAAQyX,SAC9DrmB,KAAKwsD,cAAgBxsD,KAAK4O,QAAQmE,MAAO/S,KAAK4O,QAAQspC,2BAU1Dj1C,EAAKyQ,UAAUg1C,KAAO,WACpB,KAAM,uCAQRzlD,EAAKyQ,UAAU2yC,kBAAoB,SAASlkC,GAC1C,GAAIniB,KAAKumD,UAAW,CAClB,GAAI33B,GAAU,GACV8+B,EAAQ1tD,KAAKuoB,KAAKhW,EAClBo7C,EAAQ3tD,KAAKuoB,KAAK/V,EAClBo7C,EAAM5tD,KAAKwoB,GAAGjW,EACds7C,EAAM7tD,KAAKwoB,GAAGhW,EACds7C,EAAO3rC,EAAI9a,KACX0mD,EAAO5rC,EAAI1a,IAEX6iB,EAAOtqB,KAAKguD,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAen/B,GAAPtE,EAGR,OAAO,GAIXrnB,EAAKyQ,UAAUu6C,UAAY,WACzB,GAAIC,GAAWluD,KAAK4O,QAAQlE,KAgB5B,OAfiC,MAA7B1K,KAAK4O,QAAQ4pC,aACf0V,GACEriD,UAAW7L,KAAKwoB,GAAG5Z,QAAQlE,MAAMmB,UAAUD,OAC3CE,MAAO9L,KAAKwoB,GAAG5Z,QAAQlE,MAAMoB,MAAMF,OACnClB,MAAO1K,KAAKwoB,GAAG5Z,QAAQlE,MAAMkB,SAGK,QAA7B5L,KAAK4O,QAAQ4pC,cAAuD,GAA7Bx4C,KAAK4O,QAAQ4pC,gBAC3D0V,GACEriD,UAAW7L,KAAKuoB,KAAK3Z,QAAQlE,MAAMmB,UAAUD,OAC7CE,MAAO9L,KAAKuoB,KAAK3Z,QAAQlE,MAAMoB,MAAMF,OACrClB,MAAO1K,KAAKuoB,KAAK3Z,QAAQlE,MAAMkB,SAId,GAAjB5L,KAAK8rC,SAA4BoiB,EAASriD,UACvB,GAAd7L,KAAK8L,MAAuBoiD,EAASpiD,MACToiD,EAASxjD,OAWhDzH,EAAKyQ,UAAU05C,UAAY,SAASlnC,GAKlC,GAHAA,EAAIY,YAAc9mB,KAAKiuD,YACvB/nC,EAAIO,UAAczmB,KAAKmuD,gBAEnBnuD,KAAKuoB,MAAQvoB,KAAKwoB,GAAI,CAExB,GAGI9V,GAHAi1C,EAAM3nD,KAAKouD,MAAMloC,EAIrB,IAAIlmB,KAAK4nB,MAAO,CACd,GAAyC,GAArC5nB,KAAK4O,QAAQosC,aAAansC,SAA0B,MAAP84C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKruD,KAAKuoB,KAAKhW,EAAIo1C,EAAIp1C,GAAK,IAAKvS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,IAClE+7C,EAAY,IAAK,IAAKtuD,KAAKuoB,KAAK/V,EAAIm1C,EAAIn1C,GAAK,IAAKxS,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,GACtEE,IAASH,EAAE87C,EAAW77C,EAAE87C,OAGxB57C,GAAQ1S,KAAKuuD,aAAa,GAE5BvuD,MAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,QAG3C,CACH,GAAID,GAAGC,EACHqY,EAAS7qB,KAAK04C,QAAQK,aAAe,EACrC2G,EAAO1/C,KAAKuoB,IACXm3B,GAAK3sC,OACR2sC,EAAK+O,OAAOvoC,GAEVw5B,EAAK3sC,MAAQ2sC,EAAK1sC,QACpBT,EAAImtC,EAAKntC,EAAImtC,EAAK3sC,MAAQ,EAC1BP,EAAIktC,EAAKltC,EAAIqY,IAGbtY,EAAImtC,EAAKntC,EAAIsY,EACbrY,EAAIktC,EAAKltC,EAAIktC,EAAK1sC,OAAS,GAE7BhT,KAAK0uD,QAAQxoC,EAAK3T,EAAGC,EAAGqY,GACxBnY,EAAQ1S,KAAK2uD,eAAep8C,EAAGC,EAAGqY,EAAQ,IAC1C7qB,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,KAUhDvP,EAAKyQ,UAAUy6C,cAAgB,WAC7B,MAAqB,IAAjBnuD,KAAK8rC,SACChnC,KAAKiI,IAAIjI,KAAKwG,IAAItL,KAAKwsD,cAAexsD,KAAK4O,QAAQ0X,UAAW,GAAItmB,KAAK4uD,iBAG7D,GAAd5uD,KAAK8L,MACAhH,KAAKiI,IAAIjI,KAAKwG,IAAItL,KAAK4O,QAAQupC,WAAYn4C,KAAK4O,QAAQ0X,UAAW,GAAItmB,KAAK4uD,iBAG5E9pD,KAAKiI,IAAI/M,KAAK4O,QAAQmE,MAAO,GAAI/S,KAAK4uD,kBAKnD3rD,EAAKyQ,UAAUm7C,mBAAqB,WAClC,GAAIC,GAAO,KACPC,EAAO,KACPzO,EAAStgD,KAAK4O,QAAQosC,aAAaE,UACnCx0C,EAAO1G,KAAK4O,QAAQosC,aAAat0C,KAEjCqX,EAAKjZ,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GACpCyL,EAAKlZ,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EA2JxC,OA1JY,YAAR9L,GAA8B,iBAARA,EACpB5B,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACjExS,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACpBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GACxBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,GAEvBhe,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAC7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,GAGzBhe,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACzBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GACxBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,GAEvBhe,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAC7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,IAGtB,YAARtX,IACFooD,EAAYxO,EAAStiC,EAAdD,EAAmB/d,KAAKuoB,KAAKhW,EAAIu8C,IAGnChqD,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,KACtExS,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACpBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GACxBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,GAEvB/d,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAC7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,GAGzB/d,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACzBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GACxBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,GAEvB/d,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAC7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,IAGtB,YAARrX,IACFqoD,EAAYzO,EAASviC,EAAdC,EAAmBhe,KAAKuoB,KAAK/V,EAAIu8C,IAI7B,iBAARroD,EACH5B,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACrEs8C,EAAO9uD,KAAKuoB,KAAKhW,EAEfw8C,EADE/uD,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACjBxS,KAAKwoB,GAAGhW,GAAK,EAAE8tC,GAAUtiC,EAGzBhe,KAAKwoB,GAAGhW,GAAK,EAAE8tC,GAAUtiC,GAG3BlZ,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,KAExEs8C,EADE9uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,EACjBvS,KAAKwoB,GAAGjW,GAAK,EAAE+tC,GAAUviC,EAGzB/d,KAAKwoB,GAAGjW,GAAK,EAAE+tC,GAAUviC,EAElCgxC,EAAO/uD,KAAKuoB,KAAK/V,GAGJ,cAAR9L,GAELooD,EADE9uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,EACjBvS,KAAKwoB,GAAGjW,GAAK,EAAE+tC,GAAUviC,EAGzB/d,KAAKwoB,GAAGjW,GAAK,EAAE+tC,GAAUviC,EAElCgxC,EAAO/uD,KAAKuoB,KAAK/V,GAEF,YAAR9L,GACPooD,EAAO9uD,KAAKuoB,KAAKhW,EAEfw8C,EADE/uD,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACjBxS,KAAKwoB,GAAGhW,GAAK,EAAE8tC,GAAUtiC,EAGzBhe,KAAKwoB,GAAGhW,GAAK,EAAE8tC,GAAUtiC,GAI9BlZ,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,GACjExS,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACpBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAExBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,EAC9B8wC,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,GAE/B9uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAE7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,EAC9B8wC,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,EAAO9uD,KAAKwoB,GAAGjW,EAAGu8C,GAGhC9uD,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACzBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAExBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,EAC9B8wC,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,GAE/B9uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAE7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAAStiC,EAC9B+wC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAAStiC,EAC9B8wC,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,EAAO9uD,KAAKwoB,GAAGjW,EAAIu8C,IAInChqD,KAAKklB,IAAIhqB,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAAKzN,KAAKklB,IAAIhqB,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,KACtExS,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,EACpBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAExBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,GAE/B/uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAE7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,GAGjC/uD,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,IACzBxS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAExBu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,GAE/B/uD,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,IAE7Bu8C,EAAO9uD,KAAKuoB,KAAKhW,EAAI+tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKuoB,KAAK/V,EAAI8tC,EAASviC,EAC9BgxC,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,EAAO/uD,KAAKwoB,GAAGhW,EAAIu8C,MAOtCx8C,EAAEu8C,EAAMt8C,EAAEu8C,IAQpB9rD,EAAKyQ,UAAU06C,MAAQ,SAAUloC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAOhnB,KAAKuoB,KAAKhW,EAAGvS,KAAKuoB,KAAK/V,GACO,GAArCxS,KAAK4O,QAAQosC,aAAansC,QAAiB,CAC7C,GAAyC,GAArC7O,KAAK4O,QAAQosC,aAAaC,QAAkB,CAC9C,GAAI0M,GAAM3nD,KAAK6uD,oBACf,OAAa,OAATlH,EAAIp1C,GACN2T,EAAIe,OAAOjnB,KAAKwoB,GAAGjW,EAAGvS,KAAKwoB,GAAGhW,GAC9B0T,EAAIlH,SACG,OAKPkH,EAAI8oC,iBAAiBrH,EAAIp1C,EAAEo1C,EAAIn1C,EAAExS,KAAKwoB,GAAGjW,EAAGvS,KAAKwoB,GAAGhW,GACpD0T,EAAIlH,SACG2oC,GAMT,MAFAzhC,GAAI8oC,iBAAiBhvD,KAAK2nD,IAAIp1C,EAAEvS,KAAK2nD,IAAIn1C,EAAExS,KAAKwoB,GAAGjW,EAAGvS,KAAKwoB,GAAGhW,GAC9D0T,EAAIlH,SACGhf,KAAK2nD,IAMd,MAFAzhC,GAAIe,OAAOjnB,KAAKwoB,GAAGjW,EAAGvS,KAAKwoB,GAAGhW,GAC9B0T,EAAIlH,SACG,MAYX/b,EAAKyQ,UAAUg7C,QAAU,SAAUxoC,EAAK3T,EAAGC,EAAGqY,GAE5C3E,EAAIa,YACJb,EAAI4E,IAAIvY,EAAGC,EAAGqY,EAAQ,EAAG,EAAI/lB,KAAKimB,IAAI,GACtC7E,EAAIlH,UAWN/b,EAAKyQ,UAAU86C,OAAS,SAAUtoC,EAAKwC,EAAMnW,EAAGC,GAC9C,GAAIkW,EAAM,CACRxC,EAAIQ,MAAS1mB,KAAKuoB,KAAKujB,UAAY9rC,KAAKwoB,GAAGsjB,SAAY,QAAU,IACjE9rC,KAAK4O,QAAQ+oC,SAAW,MAAQ33C,KAAK4O,QAAQgpC,QAC7C,IAAI8U,EAEJ,IAAuB,GAAnB1sD,KAAK2sD,WAAoB,CAC3B,GAAInrB,GAAQx9B,OAAO0kB,GAAM5gB,MAAM,MAC3BmnD,EAAYztB,EAAMj8B,OAClBoyC,EAAY7zC,OAAO9D,KAAK4O,QAAQ+oC,UAAY,CAChD+U,GAAQl6C,GAAK,EAAIy8C,GAAa,EAAItX,CAGlC,KAAK,GADD5kC,GAAQmT,EAAIgpC,YAAY1tB,EAAM,IAAIzuB,MAC7B3N,EAAI,EAAO6pD,EAAJ7pD,EAAeA,IAAK,CAClC,GAAIqhB,GAAYP,EAAIgpC,YAAY1tB,EAAMp8B,IAAI2N,KAC1CA,GAAQ0T,EAAY1T,EAAQ0T,EAAY1T,EAE1C,GAAIC,GAAShT,KAAK4O,QAAQ+oC,SAAWsX,EACjC5nD,EAAOkL,EAAIQ,EAAQ,EACnBtL,EAAM+K,EAAIQ,EAAS,CAGvBhT,MAAKysD,iBAAmBhlD,IAAIA,EAAIJ,KAAKA,EAAK0L,MAAMA,EAAMC,OAAOA,EAAO05C,MAAMA,GAI9CtmD,SAA1BpG,KAAK4O,QAAQipC,UAAoD,OAA1B73C,KAAK4O,QAAQipC,UAA+C,SAA1B73C,KAAK4O,QAAQipC,WACxF3xB,EAAIiB,UAAYnnB,KAAK4O,QAAQipC,SAC7B3xB,EAAIipC,SAASnvD,KAAKysD,gBAAgBplD,KAChCrH,KAAKysD,gBAAgBhlD,IACrBzH,KAAKysD,gBAAgB15C,MACrB/S,KAAKysD,gBAAgBz5C,SAIzBkT,EAAIiB,UAAYnnB,KAAK4O,QAAQ8oC,WAAa,QAC1CxxB,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAgB,SACpBglC,EAAQ1sD,KAAKysD,gBAAgBC,KAC7B,KAAK,GAAItnD,GAAI,EAAO6pD,EAAJ7pD,EAAeA,IAC7B8gB,EAAIyB,SAAS6Z,EAAMp8B,GAAImN,EAAGm6C,GAC1BA,GAAS/U,IAcf10C,EAAKyQ,UAAU65C,cAAgB,SAASrnC,GAERA,EAAIY,YAAb,GAAjB9mB,KAAK8rC,SAAuC9rC,KAAK4O,QAAQlE,MAAMmB,UAC5C,GAAd7L,KAAK8L,MAAkC9L,KAAK4O,QAAQlE,MAAMoB,MACnB9L,KAAK4O,QAAQlE,MAAMA,MAEnEwb,EAAIO,UAAYzmB,KAAKmuD,eAErB,IAAIxG,GAAM,IAEV,IAAoBvhD,SAAhB8f,EAAIkpC,SAA6ChpD,SAApB8f,EAAImpC,YAA2B,CAE9D,GAAIC,IAAW,EAEbA,GAD+BlpD,SAA7BpG,KAAK4O,QAAQypC,KAAK9yC,QAAkDa,SAA1BpG,KAAK4O,QAAQypC,KAAKC,KACnDt4C,KAAK4O,QAAQypC,KAAK9yC,OAAOvF,KAAK4O,QAAQypC,KAAKC,MAG3C,EAAE,GAIgB,mBAApBpyB,GAAImpC,aACbnpC,EAAImpC,YAAYC,GAChBppC,EAAIqpC,eAAiB,IAGrBrpC,EAAIkpC,QAAUE,EACdppC,EAAIspC,cAAgB,GAItB7H,EAAM3nD,KAAKouD,MAAMloC,GAGc,mBAApBA,GAAImpC,aACbnpC,EAAImpC,aAAa,IACjBnpC,EAAIqpC,eAAiB,IAGrBrpC,EAAIkpC,SAAW,GACflpC,EAAIspC,cAAgB,OAKtBtpC,GAAIa,YACJb,EAAIupC,QAAU,QACsBrpD,SAAhCpG,KAAK4O,QAAQypC,KAAKE,UAEpBryB,EAAIwpC,WAAW1vD,KAAKuoB,KAAKhW,EAAEvS,KAAKuoB,KAAK/V,EAAExS,KAAKwoB,GAAGjW,EAAEvS,KAAKwoB,GAAGhW,GACpDxS,KAAK4O,QAAQypC,KAAK9yC,OAAOvF,KAAK4O,QAAQypC,KAAKC,IAAIt4C,KAAK4O,QAAQypC,KAAKE,UAAUv4C,KAAK4O,QAAQypC,KAAKC,MAE9DlyC,SAA7BpG,KAAK4O,QAAQypC,KAAK9yC,QAAkDa,SAA1BpG,KAAK4O,QAAQypC,KAAKC,IAEnEpyB,EAAIwpC,WAAW1vD,KAAKuoB,KAAKhW,EAAEvS,KAAKuoB,KAAK/V,EAAExS,KAAKwoB,GAAGjW,EAAEvS,KAAKwoB,GAAGhW,GACpDxS,KAAK4O,QAAQypC,KAAK9yC,OAAOvF,KAAK4O,QAAQypC,KAAKC,OAIhDpyB,EAAIc,OAAOhnB,KAAKuoB,KAAKhW,EAAGvS,KAAKuoB,KAAK/V,GAClC0T,EAAIe,OAAOjnB,KAAKwoB,GAAGjW,EAAGvS,KAAKwoB,GAAGhW,IAEhC0T,EAAIlH,QAIN,IAAIhf,KAAK4nB,MAAO,CACd,GAAIlV,EACJ,IAAyC,GAArC1S,KAAK4O,QAAQosC,aAAansC,SAA0B,MAAP84C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKruD,KAAKuoB,KAAKhW,EAAIo1C,EAAIp1C,GAAK,IAAKvS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,IAClE+7C,EAAY,IAAK,IAAKtuD,KAAKuoB,KAAK/V,EAAIm1C,EAAIn1C,GAAK,IAAKxS,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,GACtEE,IAASH,EAAE87C,EAAW77C,EAAE87C,OAGxB57C,GAAQ1S,KAAKuuD,aAAa,GAE5BvuD,MAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,KAUhDvP,EAAKyQ,UAAU66C,aAAe,SAAUoB,GACtC,OACEp9C,GAAI,EAAIo9C,GAAc3vD,KAAKuoB,KAAKhW,EAAIo9C,EAAa3vD,KAAKwoB,GAAGjW,EACzDC,GAAI,EAAIm9C,GAAc3vD,KAAKuoB,KAAK/V,EAAIm9C,EAAa3vD,KAAKwoB,GAAGhW,IAa7DvP,EAAKyQ,UAAUi7C,eAAiB,SAAUp8C,EAAGC,EAAGqY,EAAQ8kC,GACtD,GAAI7I,GAA6B,GAApB6I,EAAa,EAAE,GAAS7qD,KAAKimB,EAC1C,QACExY,EAAGA,EAAIsY,EAAS/lB,KAAK4Y,IAAIopC,GACzBt0C,EAAGA,EAAIqY,EAAS/lB,KAAKyY,IAAIupC,KAW7B7jD,EAAKyQ,UAAU45C,iBAAmB,SAASpnC,GACzC,GAAIxT,EAOJ,IALqB,GAAjB1S,KAAK8rC,UAAqB5lB,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMmB,UAAWqa,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMmB,WAC1F,GAAd7L,KAAK8L,OAAgBoa,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMoB,MAAWoa,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMoB,QACnFoa,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMA,MAAWwb,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMA,OACjHwb,EAAIO,UAAYzmB,KAAKmuD,gBAEjBnuD,KAAKuoB,MAAQvoB,KAAKwoB,GAAI,CAExB,GAAIm/B,GAAM3nD,KAAKouD,MAAMloC,GAEjB4gC,EAAQhiD,KAAK8qD,MAAO5vD,KAAKwoB,GAAGhW,EAAIxS,KAAKuoB,KAAK/V,EAAKxS,KAAKwoB,GAAGjW,EAAIvS,KAAKuoB,KAAKhW,GACrEhN,GAAU,GAAK,EAAIvF,KAAK4O,QAAQmE,OAAS/S,KAAK4O,QAAQwpC,gBAE1D,IAAyC,GAArCp4C,KAAK4O,QAAQosC,aAAansC,SAA0B,MAAP84C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKruD,KAAKuoB,KAAKhW,EAAIo1C,EAAIp1C,GAAK,IAAKvS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,IAClE+7C,EAAY,IAAK,IAAKtuD,KAAKuoB,KAAK/V,EAAIm1C,EAAIn1C,GAAK,IAAKxS,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,GACtEE,IAASH,EAAE87C,EAAW77C,EAAE87C,OAGxB57C,GAAQ1S,KAAKuuD,aAAa,GAG5BroC,GAAI2pC,MAAMn9C,EAAMH,EAAGG,EAAMF,EAAGs0C,EAAOvhD,GACnC2gB,EAAInH,OACJmH,EAAIlH,SAGAhf,KAAK4nB,OACP5nB,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,OAG3C,CAEH,GAAID,GAAGC,EACHqY,EAAS,IAAO/lB,KAAKiI,IAAI,IAAI/M,KAAK04C,QAAQK,cAC1C2G,EAAO1/C,KAAKuoB,IACXm3B,GAAK3sC,OACR2sC,EAAK+O,OAAOvoC,GAEVw5B,EAAK3sC,MAAQ2sC,EAAK1sC,QACpBT,EAAImtC,EAAKntC,EAAiB,GAAbmtC,EAAK3sC,MAClBP,EAAIktC,EAAKltC,EAAIqY,IAGbtY,EAAImtC,EAAKntC,EAAIsY,EACbrY,EAAIktC,EAAKltC,EAAkB,GAAdktC,EAAK1sC,QAEpBhT,KAAK0uD,QAAQxoC,EAAK3T,EAAGC,EAAGqY,EAGxB,IAAIi8B,GAAQ,GAAMhiD,KAAKimB,GACnBxlB,GAAU,GAAK,EAAIvF,KAAK4O,QAAQmE,OAAS/S,KAAK4O,QAAQwpC,gBAC1D1lC,GAAQ1S,KAAK2uD,eAAep8C,EAAGC,EAAGqY,EAAQ,IAC1C3E,EAAI2pC,MAAMn9C,EAAMH,EAAGG,EAAMF,EAAGs0C,EAAOvhD,GACnC2gB,EAAInH,OACJmH,EAAIlH,SAGAhf,KAAK4nB,QACPlV,EAAQ1S,KAAK2uD,eAAep8C,EAAGC,EAAGqY,EAAQ,IAC1C7qB,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,MAclDvP,EAAKyQ,UAAU25C,WAAa,SAASnnC,GAEd,GAAjBlmB,KAAK8rC,UAAqB5lB,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMmB,UAAWqa,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMmB,WAC1F,GAAd7L,KAAK8L,OAAgBoa,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMoB,MAAWoa,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMoB,QACnFoa,EAAIY,YAAc9mB,KAAK4O,QAAQlE,MAAMA,MAAWwb,EAAIiB,UAAYnnB,KAAK4O,QAAQlE,MAAMA,OAEjHwb,EAAIO,UAAYzmB,KAAKmuD,eAErB,IAAIrH,GAAOvhD,CAEX,IAAIvF,KAAKuoB,MAAQvoB,KAAKwoB,GAAI,CACxBs+B,EAAQhiD,KAAK8qD,MAAO5vD,KAAKwoB,GAAGhW,EAAIxS,KAAKuoB,KAAK/V,EAAKxS,KAAKwoB,GAAGjW,EAAIvS,KAAKuoB,KAAKhW,EACrE,IASIo1C,GATA5pC,EAAM/d,KAAKwoB,GAAGjW,EAAIvS,KAAKuoB,KAAKhW,EAC5ByL,EAAMhe,KAAKwoB,GAAGhW,EAAIxS,KAAKuoB,KAAK/V,EAC5Bs9C,EAAoBhrD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE7C+xC,EAAiB/vD,KAAKuoB,KAAKynC,iBAAiB9pC,EAAK4gC,EAAQhiD,KAAKimB,IAC9DklC,GAAmBH,EAAoBC,GAAkBD,EACzDpC,EAAQ,EAAoB1tD,KAAKuoB,KAAKhW,GAAK,EAAI09C,GAAmBjwD,KAAKwoB,GAAGjW,EAC1Eo7C,EAAQ,EAAoB3tD,KAAKuoB,KAAK/V,GAAK,EAAIy9C,GAAmBjwD,KAAKwoB,GAAGhW,CAGrC,IAArCxS,KAAK4O,QAAQosC,aAAaC,SAAwD,GAArCj7C,KAAK4O,QAAQosC,aAAansC,QACzE84C,EAAM3nD,KAAK2nD,IAEiC,GAArC3nD,KAAK4O,QAAQosC,aAAansC,UACjC84C,EAAM3nD,KAAK6uD,sBAG4B,GAArC7uD,KAAK4O,QAAQosC,aAAansC,SAA4B,MAAT84C,EAAIp1C,IACnDu0C,EAAQhiD,KAAK8qD,MAAO5vD,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,EAAKxS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,GACzDwL,EAAM/d,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,EACtByL,EAAMhe,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,EACtBs9C,EAAoBhrD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE/C,IAGI4vC,GAAIC,EAHJqC,EAAelwD,KAAKwoB,GAAGwnC,iBAAiB9pC,EAAK4gC,GAC7CqJ,GAAiBL,EAAoBI,GAAgBJ,CA6BzD,IA1ByC,GAArC9vD,KAAK4O,QAAQosC,aAAansC,SAA4B,MAAT84C,EAAIp1C,GACpDq7C,GAAO,EAAIuC,GAAiBxI,EAAIp1C,EAAI49C,EAAgBnwD,KAAKwoB,GAAGjW,EAC5Ds7C,GAAO,EAAIsC,GAAiBxI,EAAIn1C,EAAI29C,EAAgBnwD,KAAKwoB,GAAGhW,IAG3Do7C,GAAO,EAAIuC,GAAiBnwD,KAAKuoB,KAAKhW,EAAI49C,EAAgBnwD,KAAKwoB,GAAGjW,EAClEs7C,GAAO,EAAIsC,GAAiBnwD,KAAKuoB,KAAK/V,EAAI29C,EAAgBnwD,KAAKwoB,GAAGhW,GAGpE0T,EAAIa,YACJb,EAAIc,OAAO0mC,EAAMC,GACwB,GAArC3tD,KAAK4O,QAAQosC,aAAansC,SAA4B,MAAT84C,EAAIp1C,EACnD2T,EAAI8oC,iBAAiBrH,EAAIp1C,EAAEo1C,EAAIn1C,EAAEo7C,EAAKC,GAGtC3nC,EAAIe,OAAO2mC,EAAKC,GAElB3nC,EAAIlH,SAGJzZ,GAAU,GAAK,EAAIvF,KAAK4O,QAAQmE,OAAS/S,KAAK4O,QAAQwpC,iBACtDlyB,EAAI2pC,MAAMjC,EAAKC,EAAK/G,EAAOvhD,GAC3B2gB,EAAInH,OACJmH,EAAIlH,SAGAhf,KAAK4nB,MAAO,CACd,GAAIlV,EACJ,IAAyC,GAArC1S,KAAK4O,QAAQosC,aAAansC,SAA0B,MAAP84C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKruD,KAAKuoB,KAAKhW,EAAIo1C,EAAIp1C,GAAK,IAAKvS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,IAClE+7C,EAAY,IAAK,IAAKtuD,KAAKuoB,KAAK/V,EAAIm1C,EAAIn1C,GAAK,IAAKxS,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,GACtEE,IAASH,EAAE87C,EAAW77C,EAAE87C,OAGxB57C,GAAQ1S,KAAKuuD,aAAa,GAE5BvuD,MAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,QAG3C,CAEH,GACID,GAAGC,EAAGq9C,EADNnQ,EAAO1/C,KAAKuoB,KAEZsC,EAAS,IAAO/lB,KAAKiI,IAAI,IAAI/M,KAAK04C,QAAQK,aACzC2G,GAAK3sC,OACR2sC,EAAK+O,OAAOvoC,GAEVw5B,EAAK3sC,MAAQ2sC,EAAK1sC,QACpBT,EAAImtC,EAAKntC,EAAiB,GAAbmtC,EAAK3sC,MAClBP,EAAIktC,EAAKltC,EAAIqY,EACbglC,GACEt9C,EAAGA,EACHC,EAAGktC,EAAKltC,EACRs0C,MAAO,GAAMhiD,KAAKimB,MAIpBxY,EAAImtC,EAAKntC,EAAIsY,EACbrY,EAAIktC,EAAKltC,EAAkB,GAAdktC,EAAK1sC,OAClB68C,GACEt9C,EAAGmtC,EAAKntC,EACRC,EAAGA,EACHs0C,MAAO,GAAMhiD,KAAKimB,KAGtB7E,EAAIa,YAEJb,EAAI4E,IAAIvY,EAAGC,EAAGqY,EAAQ,EAAG,EAAI/lB,KAAKimB,IAAI,GACtC7E,EAAIlH,QAGJ,IAAIzZ,IAAU,GAAK,EAAIvF,KAAK4O,QAAQmE,OAAS/S,KAAK4O,QAAQwpC,gBAC1DlyB,GAAI2pC,MAAMA,EAAMt9C,EAAGs9C,EAAMr9C,EAAGq9C,EAAM/I,MAAOvhD,GACzC2gB,EAAInH,OACJmH,EAAIlH,SAGAhf,KAAK4nB,QACPlV,EAAQ1S,KAAK2uD,eAAep8C,EAAGC,EAAGqY,EAAQ,IAC1C7qB,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAOlV,EAAMH,EAAGG,EAAMF,MAmBlDvP,EAAKyQ,UAAUs6C,mBAAqB,SAAUoC,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAInnD,GAAc,CAClB,IAAItJ,KAAKuoB,MAAQvoB,KAAKwoB,GACpB,GAAyC,GAArCxoB,KAAK4O,QAAQosC,aAAansC,QAAiB,CAC7C,GAAIigD,GAAMC,CACV,IAAyC,GAArC/uD,KAAK4O,QAAQosC,aAAansC,SAAwD,GAArC7O,KAAK4O,QAAQosC,aAAaC,QACzE6T,EAAO9uD,KAAK2nD,IAAIp1C,EAChBw8C,EAAO/uD,KAAK2nD,IAAIn1C,MAEb,CACH,GAAIm1C,GAAM3nD,KAAK6uD,oBACfC,GAAOnH,EAAIp1C,EACXw8C,EAAOpH,EAAIn1C,EAEb,GACIsS,GACA1f,EAAE6I,EAAEsE,EAAEC,EAAGk+C,EAAOC,EAFhBC,EAAc,GAGlB,KAAKxrD,EAAI,EAAO,GAAJA,EAAQA,IAClB6I,EAAI,GAAI7I,EACRmN,EAAIzN,KAAK0uB,IAAI,EAAEvlB,EAAE,GAAGmiD,EAAM,EAAEniD,GAAG,EAAIA,GAAI6gD,EAAOhqD,KAAK0uB,IAAIvlB,EAAE,GAAGqiD,EAC5D99C,EAAI1N,KAAK0uB,IAAI,EAAEvlB,EAAE,GAAGoiD,EAAM,EAAEpiD,GAAG,EAAIA,GAAI8gD,EAAOjqD,KAAK0uB,IAAIvlB,EAAE,GAAGsiD,EACxDnrD,EAAI,IACN0f,EAAW9kB,KAAK6wD,mBAAmBH,EAAMC,EAAMp+C,EAAEC,EAAGg+C,EAAGC,GACvDG,EAAyBA,EAAX9rC,EAAyBA,EAAW8rC,GAEpDF,EAAQn+C,EAAGo+C,EAAQn+C,CAErBlJ,GAAcsnD,MAGdtnD,GAActJ,KAAK6wD,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIl+C,GAAGC,EAAGuL,EAAIC,EACV6M,EAAS,IAAO7qB,KAAK04C,QAAQK,aAC7B2G,EAAO1/C,KAAKuoB,IACZm3B,GAAK3sC,MAAQ2sC,EAAK1sC,QACpBT,EAAImtC,EAAKntC,EAAI,GAAMmtC,EAAK3sC,MACxBP,EAAIktC,EAAKltC,EAAIqY,IAGbtY,EAAImtC,EAAKntC,EAAIsY,EACbrY,EAAIktC,EAAKltC,EAAI,GAAMktC,EAAK1sC,QAE1B+K,EAAKxL,EAAIi+C,EACTxyC,EAAKxL,EAAIi+C,EACTnnD,EAAcxE,KAAKklB,IAAIllB,KAAKqqB,KAAKpR,EAAGA,EAAKC,EAAGA,GAAM6M,GAGpD,MAAI7qB,MAAKysD,gBAAgBplD,KAAOmpD,GAC9BxwD,KAAKysD,gBAAgBplD,KAAOrH,KAAKysD,gBAAgB15C,MAAQy9C,GACzDxwD,KAAKysD,gBAAgBhlD,IAAMgpD,GAC3BzwD,KAAKysD,gBAAgBhlD,IAAMzH,KAAKysD,gBAAgBz5C,OAASy9C,EAClD,EAGAnnD,GAIXrG,EAAKyQ,UAAUm9C,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAI1+C,GAAI69C,EAAKa,EAAIH,EACft+C,EAAI69C,EAAKY,EAAIF,EACbhzC,EAAKxL,EAAIi+C,EACTxyC,EAAKxL,EAAIi+C,CAQX,OAAO3rD,MAAKqqB,KAAKpR,EAAGA,EAAKC,EAAGA,IAQ9B/a,EAAKyQ,UAAU2qB,SAAW,SAASjiB,GACjCpc,KAAK4uD,gBAAkB,EAAIxyC,GAI7BnZ,EAAKyQ,UAAUu2B,OAAS,WACtBjqC,KAAK8rC,UAAW,GAGlB7oC,EAAKyQ,UAAUs2B,SAAW,WACxBhqC,KAAK8rC,UAAW,GAGlB7oC,EAAKyQ,UAAUq3C,mBAAqB,WACjB,OAAb/qD,KAAK2nD,KAA8B,OAAd3nD,KAAKuoB,MAA6B,OAAZvoB,KAAKwoB,KAClDxoB,KAAK2nD,IAAIp1C,EAAI,IAAOvS,KAAKuoB,KAAKhW,EAAIvS,KAAKwoB,GAAGjW,GAC1CvS,KAAK2nD,IAAIn1C,EAAI,IAAOxS,KAAKuoB,KAAK/V,EAAIxS,KAAKwoB,GAAGhW,KAQ9CvP,EAAKyQ,UAAUm1C,kBAAoB,SAAS3iC,GAC1C,GAAgC,GAA5BlmB,KAAKgtD,oBAA6B,CACpC,GAA+B,OAA3BhtD,KAAKitD,aAAa1kC,MAA0C,OAAzBvoB,KAAKitD,aAAazkC,GAAa,CACpE,GAAI0oC,GAAa,cAAc98C,OAAOpU,KAAKK,IACvC8wD,EAAW,YAAY/8C,OAAOpU,KAAKK,IACnCu7C,GACYxE,OAAO3kC,MAAM,GAAIoY,OAAO,GACxB6tB,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAcnnC,MAAM,EAAGC,OAAQ,EAAG6X,OAAO,IAEhG7qB,MAAKitD,aAAa1kC,KAAO,GAAInlB,IAC1B/C,GAAG6wD,EACF1Z,MAAM,MACJ9sC,OAAOiB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEiwC,GACV57C,KAAKitD,aAAazkC,GAAK,GAAIplB,IACxB/C,GAAG8wD,EACF3Z,MAAM,MACN9sC,OAAOiB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEiwC,GAG2B,GAAnC57C,KAAKitD,aAAa1kC,KAAKujB,UAAsD,GAAjC9rC,KAAKitD,aAAazkC,GAAGsjB,WACnE9rC,KAAKitD,aAAaC,UAAYltD,KAAKoxD,wBAAwBlrC,GAC3DlmB,KAAKitD,aAAa1kC,KAAKhW,EAAIvS,KAAKitD,aAAaC,UAAU3kC,KAAKhW,EAC5DvS,KAAKitD,aAAa1kC,KAAK/V,EAAIxS,KAAKitD,aAAaC,UAAU3kC,KAAK/V,EAC5DxS,KAAKitD,aAAazkC,GAAGjW,EAAIvS,KAAKitD,aAAaC,UAAU1kC,GAAGjW,EACxDvS,KAAKitD,aAAazkC,GAAGhW,EAAIxS,KAAKitD,aAAaC,UAAU1kC,GAAGhW,GAG1DxS,KAAKitD,aAAa1kC,KAAKmgC,KAAKxiC,GAC5BlmB,KAAKitD,aAAazkC,GAAGkgC,KAAKxiC,OAG1BlmB,MAAKitD,cAAgB1kC,KAAK,KAAMC,GAAG,KAAM0kC,eAQ7CjqD,EAAKyQ,UAAU29C,oBAAsB,WACnCrxD,KAAKgtD,qBAAsB,GAO7B/pD,EAAKyQ,UAAU49C,qBAAuB,WACpCtxD,KAAKgtD,qBAAsB,GAU7B/pD,EAAKyQ,UAAU69C,wBAA0B,SAASh/C,EAAEC,GAClD,GAAI06C,GAAYltD,KAAKitD,aAAaC,UAC9BsE,EAAe1sD,KAAKqqB,KAAKrqB,KAAK0uB,IAAIjhB,EAAI26C,EAAU3kC,KAAKhW,EAAE,GAAKzN,KAAK0uB,IAAIhhB,EAAI06C,EAAU3kC,KAAK/V,EAAE,IAC1Fi/C,EAAe3sD,KAAKqqB,KAAKrqB,KAAK0uB,IAAIjhB,EAAI26C,EAAU1kC,GAAGjW,EAAI,GAAKzN,KAAK0uB,IAAIhhB,EAAI06C,EAAU1kC,GAAGhW,EAAI,GAE9F,OAAmB,IAAfg/C,GACFxxD,KAAKmtD,cAAgBntD,KAAKuoB,KAC1BvoB,KAAKuoB,KAAOvoB,KAAKitD,aAAa1kC,KACvBvoB,KAAKitD,aAAa1kC,MAEL,GAAbkpC,GACPzxD,KAAKmtD,cAAgBntD,KAAKwoB,GAC1BxoB,KAAKwoB,GAAKxoB,KAAKitD,aAAazkC,GACrBxoB,KAAKitD,aAAazkC,IAGlB,MASXvlB,EAAKyQ,UAAUg+C,qBAAuB,WACG,GAAnC1xD,KAAKitD,aAAa1kC,KAAKujB,WACzB9rC,KAAKuoB,KAAOvoB,KAAKmtD,cACjBntD,KAAKmtD,cAAgB,KACrBntD,KAAKitD,aAAa1kC,KAAKyhB,YAEY,GAAjChqC,KAAKitD,aAAazkC,GAAGsjB,WACvB9rC,KAAKwoB,GAAKxoB,KAAKmtD,cACfntD,KAAKmtD,cAAgB,KACrBntD,KAAKitD,aAAazkC,GAAGwhB,aAUzB/mC,EAAKyQ,UAAU09C,wBAA0B,SAASlrC,GAChD,GASIyhC,GATAb,EAAQhiD,KAAK8qD,MAAO5vD,KAAKwoB,GAAGhW,EAAIxS,KAAKuoB,KAAK/V,EAAKxS,KAAKwoB,GAAGjW,EAAIvS,KAAKuoB,KAAKhW,GACrEwL,EAAM/d,KAAKwoB,GAAGjW,EAAIvS,KAAKuoB,KAAKhW,EAC5ByL,EAAMhe,KAAKwoB,GAAGhW,EAAIxS,KAAKuoB,KAAK/V,EAC5Bs9C,EAAoBhrD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAC7C+xC,EAAiB/vD,KAAKuoB,KAAKynC,iBAAiB9pC,EAAK4gC,EAAQhiD,KAAKimB,IAC9DklC,GAAmBH,EAAoBC,GAAkBD,EACzDpC,EAAQ,EAAoB1tD,KAAKuoB,KAAKhW,GAAK,EAAI09C,GAAmBjwD,KAAKwoB,GAAGjW,EAC1Eo7C,EAAQ,EAAoB3tD,KAAKuoB,KAAK/V,GAAK,EAAIy9C,GAAmBjwD,KAAKwoB,GAAGhW,CAGrC,IAArCxS,KAAK4O,QAAQosC,aAAaC,SAAwD,GAArCj7C,KAAK4O,QAAQosC,aAAansC,QACzE84C,EAAM3nD,KAAK2nD,IAEiC,GAArC3nD,KAAK4O,QAAQosC,aAAansC,UACjC84C,EAAM3nD,KAAK6uD,sBAG4B,GAArC7uD,KAAK4O,QAAQosC,aAAansC,SAA4B,MAAT84C,EAAIp1C,IACnDu0C,EAAQhiD,KAAK8qD,MAAO5vD,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,EAAKxS,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,GACzDwL,EAAM/d,KAAKwoB,GAAGjW,EAAIo1C,EAAIp1C,EACtByL,EAAMhe,KAAKwoB,GAAGhW,EAAIm1C,EAAIn1C,EACtBs9C,EAAoBhrD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE/C,IAGI4vC,GAAIC,EAHJqC,EAAelwD,KAAKwoB,GAAGwnC,iBAAiB9pC,EAAK4gC,GAC7CqJ,GAAiBL,EAAoBI,GAAgBJ,CAYzD,OATyC,IAArC9vD,KAAK4O,QAAQosC,aAAansC,SAA4B,MAAT84C,EAAIp1C,GACnDq7C,GAAO,EAAIuC,GAAiBxI,EAAIp1C,EAAI49C,EAAgBnwD,KAAKwoB,GAAGjW,EAC5Ds7C,GAAO,EAAIsC,GAAiBxI,EAAIn1C,EAAI29C,EAAgBnwD,KAAKwoB,GAAGhW,IAG5Do7C,GAAO,EAAIuC,GAAiBnwD,KAAKuoB,KAAKhW,EAAI49C,EAAgBnwD,KAAKwoB,GAAGjW,EAClEs7C,GAAO,EAAIsC,GAAiBnwD,KAAKuoB,KAAK/V,EAAI29C,EAAgBnwD,KAAKwoB,GAAGhW,IAG5D+V,MAAMhW,EAAEm7C,EAAMl7C,EAAEm7C,GAAOnlC,IAAIjW,EAAEq7C,EAAIp7C,EAAEq7C,KAG7ChuD,EAAOD,QAAUqD,GAIb,SAASpD,EAAQD,EAASM,GAQ9B,QAASgD,KACPlD,KAAK+W,QACL/W,KAAK2xD,aAAe,EARtB,GAAIhxD,GAAOT,EAAoB,EAe/BgD,GAAO0uD,UACJhmD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3IzI,EAAOwQ,UAAUqD,MAAQ,WACvB/W,KAAK6zB,UACL7zB,KAAK6zB,OAAOtuB,OAAS,WAEnB,GAAIH,GAAI,CACR;IAAM,GAAI1E,KAAKV,MACTA,KAAK0F,eAAehF,IACtB0E,GAGJ,OAAOA,KAWXlC,EAAOwQ,UAAU6B,IAAM,SAAUusC,GAC/B,GAAIrvC,GAAQzS,KAAK6zB,OAAOiuB,EACxB,IAAa17C,QAATqM,EAAoB,CAEtB,GAAIvK,GAAQlI,KAAK2xD,aAAezuD,EAAO0uD,QAAQrsD,MAC/CvF,MAAK2xD,eACLl/C,KACAA,EAAM/H,MAAQxH,EAAO0uD,QAAQ1pD,GAC7BlI,KAAK6zB,OAAOiuB,GAAarvC,EAG3B,MAAOA,IAUTvP,EAAOwQ,UAAUD,IAAM,SAAUquC,EAAWz0C,GAK1C,MAJArN,MAAK6zB,OAAOiuB,GAAaz0C,EACrBA,EAAM3C,QACR2C,EAAM3C,MAAQ/J,EAAK8J,WAAW4C,EAAM3C,QAE/B2C,GAGTxN,EAAOD,QAAUsD,GAKb,SAASrD,GAMb,QAASsD,KACPnD,KAAK28C,UAEL38C,KAAKqI,SAAWjC,OAQlBjD,EAAOuQ,UAAUkpC,kBAAoB,SAASv0C,GAC5CrI,KAAKqI,SAAWA,GASlBlF,EAAOuQ,UAAUm+C,KAAO,SAASC,EAAKC,GACpC,GAAIC,GAAMhyD,KAAK28C,OAAOmV,EACtB,IAAW1rD,QAAP4rD,EAAkB,CAEpB,GAAIrV,GAAS38C,IACbgyD,GAAM,GAAIC,OACVjyD,KAAK28C,OAAOmV,GAAOE,EACnBA,EAAIE,OAAS,WACPvV,EAAOt0C,UACTs0C,EAAOt0C,SAASrI,OAIpBgyD,EAAIG,QAAU,WACfnyD,KAAKw/C,IAAMuS,EACPpV,EAAOt0C,UACZs0C,EAAOt0C,SAASrI,OAIdgyD,EAAIxS,IAAMsS,EAGZ,MAAOE,IAGTnyD,EAAOD,QAAUuD,GAKb,SAAStD,EAAQD,EAASM,GA6B9B,QAASkD,GAAKikD,EAAY+K,EAAWC,EAAWhG,GAC9C,GAAIzQ,GAAYj7C,EAAKyN,uBAAuB,SAASi+C,EACrDrsD,MAAK4O,QAAUgtC,EAAUxE,MAEzBp3C,KAAK8rC,UAAW,EAChB9rC,KAAK8L,OAAQ,EAEb9L,KAAKi4C,SACLj4C,KAAK6nD,gBACL7nD,KAAKsyD,iBAELtyD,KAAKuyD,kBAAoB,EAGzBvyD,KAAKK,GAAK+F,OACVpG,KAAKuS,EAAI,KACTvS,KAAKwS,EAAI,KACTxS,KAAKorD,gBAAiB,EACtBprD,KAAKqrD,gBAAiB,EACtBrrD,KAAKmkD,QAAS,EACdnkD,KAAKokD,QAAS,EACdpkD,KAAKwyD,qBAAsB,EAC3BxyD,KAAKyyD,kBAAsB,EAC3BzyD,KAAK0yD,gBAAkBrG,EAAiBjV,MAAMvsB,OAC9C7qB,KAAK2yD,aAAc,EACnB3yD,KAAK83C,MAAQ,GACb93C,KAAK4yD,kBAAmB,EACxB5yD,KAAK6yD,qBAAsB,EAC3B7yD,KAAKysD,iBAAmBhlD,IAAI,EAAEJ,KAAK,EAAE0L,MAAM,EAAEC,OAAO,EAAE05C,MAAM,GAG5D1sD,KAAKoyD,UAAYA,EACjBpyD,KAAKqyD,UAAYA,EAGjBryD,KAAK8yD,GAAK,EACV9yD,KAAK+yD,GAAK,EACV/yD,KAAKgzD,GAAK,EACVhzD,KAAKizD,GAAK,EACVjzD,KAAKi5C,QAAUoT,EAAiB3T,QAAQO,QACxCj5C,KAAKipD,WAAa12C,EAAE,KAAKC,EAAE,MAE3BxS,KAAKonD,cAAcC,EAAYzL,GAG/B57C,KAAKkzD,eACLlzD,KAAKmzD,mBAAqB,EAC1BnzD,KAAKozD,eAAiB,EACtBpzD,KAAKqzD,uBAA0BhH,EAAiBhT,WAAWa,YAAYnnC,MACvE/S,KAAKszD,wBAA0BjH,EAAiBhT,WAAWa,YAAYlnC,OACvEhT,KAAKuzD,wBAA0BlH,EAAiBhT,WAAWa,YAAYrvB,OACvE7qB,KAAKm6C,sBAAwBkS,EAAiBhT,WAAWc,sBACzDn6C,KAAKwzD,gBAAkB,EAGvBxzD,KAAK4uD,gBAAkB,EACvB5uD,KAAKyzD,aAAe,EACpBzzD,KAAK89C,eAAiBvrC,EAAK,KAAMC,EAAK,MACtCxS,KAAK+9C,mBAAqBxrC,EAAM,IAAKC,EAAM,KAC3CxS,KAAK6qD,aAAe,KAtFtB,GAAIlqD,GAAOT,EAAoB,EA4F/BkD,GAAKsQ,UAAUw/C,aAAe,WAE5BlzD,KAAK0zD,eAAiBttD,OACtBpG,KAAK2zD,YAAc,EACnB3zD,KAAK4zD,kBACL5zD,KAAK6zD,kBACL7zD,KAAK8zD,oBAOP1wD,EAAKsQ,UAAU85C,WAAa,SAASlH,GACH,IAA5BtmD,KAAKi4C,MAAM1xC,QAAQ+/C,IACrBtmD,KAAKi4C,MAAMlwC,KAAKu+C,GAEqB,IAAnCtmD,KAAK6nD,aAAathD,QAAQ+/C,IAC5BtmD,KAAK6nD,aAAa9/C,KAAKu+C,GAEzBtmD,KAAKmzD,mBAAqBnzD,KAAK6nD,aAAatiD,QAO9CnC,EAAKsQ,UAAU+5C,WAAa,SAASnH,GACnC,GAAIp+C,GAAQlI,KAAKi4C,MAAM1xC,QAAQ+/C,EAClB,KAATp+C,GACFlI,KAAKi4C,MAAM9vC,OAAOD,EAAO,GAE3BA,EAAQlI,KAAK6nD,aAAathD,QAAQ+/C,GACrB,IAATp+C,GACFlI,KAAK6nD,aAAa1/C,OAAOD,EAAO,GAElClI,KAAKmzD,mBAAqBnzD,KAAK6nD,aAAatiD,QAS9CnC,EAAKsQ,UAAU0zC,cAAgB,SAASC,EAAYzL,GAClD,GAAKyL,EAAL,CAIA,GAAIh5C,IAAU,cAAc,sBAAsB,QAAQ,QAAQ,cAAc,SAAS,YACvF,WAAW,WAAW,WAAW,QAAQ,OAkB3C,IAhBA1N,EAAKoF,oBAAoBsI,EAAQrO,KAAK4O,QAASy4C,GAGzBjhD,SAAlBihD,EAAWhnD,KAA0BL,KAAKK,GAAKgnD,EAAWhnD,IACrC+F,SAArBihD,EAAWz/B,QAA0B5nB,KAAK4nB,MAAQy/B,EAAWz/B,MAAO5nB,KAAK+zD,cAAgB1M,EAAWz/B,OAC/ExhB,SAArBihD,EAAWrnB,QAA0BhgC,KAAKggC,MAAQqnB,EAAWrnB,OAC5C55B,SAAjBihD,EAAW90C,IAA0BvS,KAAKuS,EAAI80C,EAAW90C,GACxCnM,SAAjBihD,EAAW70C,IAA0BxS,KAAKwS,EAAI60C,EAAW70C,GACpCpM,SAArBihD,EAAWpgD,QAA0BjH,KAAKiH,MAAQogD,EAAWpgD,OACxCb,SAArBihD,EAAWvP,QAA0B93C,KAAK83C,MAAQuP,EAAWvP,MAAO93C,KAAK4yD,kBAAmB,GAGzDxsD,SAAnCihD,EAAWmL,sBAAoCxyD,KAAKwyD,oBAAsBnL,EAAWmL,qBAClDpsD,SAAnCihD,EAAWoL,mBAAoCzyD,KAAKyyD,iBAAsBpL,EAAWoL,kBAClDrsD,SAAnCihD,EAAW2M,kBAAoCh0D,KAAKg0D,gBAAsB3M,EAAW2M,iBAEzE5tD,SAAZpG,KAAKK,GACP,KAAM,sBAIR,IAAkC,gBAAvBL,MAAK4O,QAAQ6D,OAAqD,gBAAvBzS,MAAK4O,QAAQ6D,OAA4C,IAAtBzS,KAAK4O,QAAQ6D,MAAc,CAClH,GAAIwhD,GAAWj0D,KAAKqyD,UAAU98C,IAAIvV,KAAK4O,QAAQ6D,MAC/C,KAAK,GAAIhN,KAAQwuD,GACXA,EAASvuD,eAAeD,KAC1BzF,KAAK4O,QAAQnJ,GAAQwuD,EAASxuD,IAUpC,GAH0BW,SAAtBihD,EAAWx8B,SAA+B7qB,KAAK0yD,gBAAkB1yD,KAAK4O,QAAQic,QACzDzkB,SAArBihD,EAAW38C,QAA+B1K,KAAK4O,QAAQlE,MAAQ/J,EAAK8J,WAAW48C,EAAW38C,QAEpEtE,SAAtBpG,KAAK4O,QAAQ6oC,OAA2C,IAArBz3C,KAAK4O,QAAQ6oC,MAAY,CAC9D,IAAIz3C,KAAKoyD,UAIP,KAAM,uBAHNpyD,MAAKk0D,SAAWl0D,KAAKoyD,UAAUP,KAAK7xD,KAAK4O,QAAQ6oC,MAAOz3C,KAAK4O,QAAQulD,aAkCzE,OA3BkC/tD,SAA9BihD,EAAW+D,gBACbprD,KAAKmkD,QAAUkD,EAAW+D,eAC1BprD,KAAKorD,eAAiB/D,EAAW+D,gBAEThlD,SAAjBihD,EAAW90C,GAA0C,GAAvBvS,KAAKorD,iBAC1CprD,KAAKmkD,QAAS,GAIkB/9C,SAA9BihD,EAAWgE,gBACbrrD,KAAKokD,QAAUiD,EAAWgE,eAC1BrrD,KAAKqrD,eAAiBhE,EAAWgE,gBAETjlD,SAAjBihD,EAAW70C,GAA0C,GAAvBxS,KAAKqrD,iBAC1CrrD,KAAKokD,QAAS,GAGhBpkD,KAAK2yD,YAAc3yD,KAAK2yD,aAAsCvsD,SAAtBihD,EAAWx8B,OAEzB,SAAtB7qB,KAAK4O,QAAQ4oC,QACfx3C,KAAK4O,QAAQ0oC,UAAYsE,EAAUxE,MAAM/wB,SACzCrmB,KAAK4O,QAAQ2oC,UAAYqE,EAAUxE,MAAM9wB,UAMnCtmB,KAAK4O,QAAQ4oC,OACnB,IAAK,WAAiBx3C,KAAK0oD,KAAO1oD,KAAKo0D,cAAep0D,KAAKyuD,OAASzuD,KAAKq0D,eAAiB,MAC1F,KAAK,MAAiBr0D,KAAK0oD,KAAO1oD,KAAKs0D,SAAUt0D,KAAKyuD,OAASzuD,KAAKu0D,UAAY,MAChF,KAAK,SAAiBv0D,KAAK0oD,KAAO1oD,KAAKw0D,YAAax0D,KAAKyuD,OAASzuD,KAAKy0D,aAAe,MACtF,KAAK,UAAiBz0D,KAAK0oD,KAAO1oD,KAAK00D,aAAc10D,KAAKyuD,OAASzuD,KAAK20D,cAAgB,MAExF,KAAK,QAAiB30D,KAAK0oD,KAAO1oD,KAAK40D,WAAY50D,KAAKyuD,OAASzuD,KAAK60D,YAAc,MACpF,KAAK,OAAiB70D,KAAK0oD,KAAO1oD,KAAK80D,UAAW90D,KAAKyuD,OAASzuD,KAAK+0D,WAAa,MAClF,KAAK,MAAiB/0D,KAAK0oD,KAAO1oD,KAAKg1D,SAAUh1D,KAAKyuD,OAASzuD,KAAKi1D,YAAc,MAClF,KAAK,SAAiBj1D,KAAK0oD,KAAO1oD,KAAKk1D,YAAal1D,KAAKyuD,OAASzuD,KAAKi1D,YAAc,MACrF,KAAK,WAAiBj1D,KAAK0oD,KAAO1oD,KAAKm1D,cAAen1D,KAAKyuD,OAASzuD,KAAKi1D,YAAc,MACvF,KAAK,eAAiBj1D,KAAK0oD,KAAO1oD,KAAKo1D,kBAAmBp1D,KAAKyuD,OAASzuD,KAAKi1D,YAAc,MAC3F,KAAK,OAAiBj1D,KAAK0oD,KAAO1oD,KAAKq1D,UAAWr1D,KAAKyuD,OAASzuD,KAAKi1D,YAAc,MACnF,SAAsBj1D,KAAK0oD,KAAO1oD,KAAK00D,aAAc10D,KAAKyuD,OAASzuD,KAAK20D,eAG1E30D,KAAKs1D,WAOPlyD,EAAKsQ,UAAUu2B,OAAS,WACtBjqC,KAAK8rC,UAAW,EAChB9rC,KAAKs1D,UAMPlyD,EAAKsQ,UAAUs2B,SAAW,WACxBhqC,KAAK8rC,UAAW,EAChB9rC,KAAKs1D,UAOPlyD,EAAKsQ,UAAU6hD,eAAiB,WAC9Bv1D,KAAKs1D,UAOPlyD,EAAKsQ,UAAU4hD,OAAS,WACtBt1D,KAAK+S,MAAQ3M,OACbpG,KAAKgT,OAAS5M,QAQhBhD,EAAKsQ,UAAU0yC,SAAW,WACxB,MAA6B,kBAAfpmD,MAAKggC,MAAuBhgC,KAAKggC,QAAUhgC,KAAKggC,OAShE58B,EAAKsQ,UAAUs8C,iBAAmB,SAAU9pC,EAAK4gC,GAC/C,GAAI3nC,GAAc,CAMlB,QAJKnf,KAAK+S,OACR/S,KAAKyuD,OAAOvoC,GAGNlmB,KAAK4O,QAAQ4oC,OACnB,IAAK,SACL,IAAK,MACH,MAAOx3C,MAAK4O,QAAQic,OAAQ1L,CAE9B,KAAK,UACH,GAAIha,GAAInF,KAAK+S,MAAQ,EACjB/M,EAAIhG,KAAKgT,OAAS,EAClB+0C,EAAKjjD,KAAKyY,IAAIupC,GAAS3hD,EACvBgG,EAAKrG,KAAK4Y,IAAIopC,GAAS9gD,CAC3B,OAAOb,GAAIa,EAAIlB,KAAKqqB,KAAK44B,EAAIA,EAAI58C,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAInL,MAAK+S,MACAjO,KAAKwG,IACRxG,KAAKklB,IAAIhqB,KAAK+S,MAAQ,EAAIjO,KAAK4Y,IAAIopC,IACnChiD,KAAKklB,IAAIhqB,KAAKgT,OAAS,EAAIlO,KAAKyY,IAAIupC,KAAW3nC,EAI5C,IAYf/b,EAAKsQ,UAAU8hD,UAAY,SAAS1C,EAAIC,GACtC/yD,KAAK8yD,GAAKA,EACV9yD,KAAK+yD,GAAKA,GASZ3vD,EAAKsQ,UAAU+hD,UAAY,SAAS3C,EAAIC,GACtC/yD,KAAK8yD,IAAMA,EACX9yD,KAAK+yD,IAAMA,GAOb3vD,EAAKsQ,UAAU81C,aAAe,SAASr3B,GACrC,GAAKnyB,KAAKmkD,OAORnkD,KAAK8yD,GAAK,EACV9yD,KAAKgzD,GAAK,MARM,CAChB,GAAIj1C,GAAO/d,KAAKi5C,QAAUj5C,KAAKgzD,GAC3Bj2C,GAAQ/c,KAAK8yD,GAAK/0C,GAAM/d,KAAK4O,QAAQyoC,IACzCr3C,MAAKgzD,IAAMj2C,EAAKoV,EAChBnyB,KAAKuS,GAAMvS,KAAKgzD,GAAK7gC,EAOvB,GAAKnyB,KAAKokD,OAORpkD,KAAK+yD,GAAK,EACV/yD,KAAKizD,GAAK,MARM,CAChB,GAAIj1C,GAAOhe,KAAKi5C,QAAUj5C,KAAKizD,GAC3Bj2C,GAAQhd,KAAK+yD,GAAK/0C,GAAMhe,KAAK4O,QAAQyoC,IACzCr3C,MAAKizD,IAAMj2C,EAAKmV,EAChBnyB,KAAKwS,GAAMxS,KAAKizD,GAAK9gC,IAezB/uB,EAAKsQ,UAAU61C,oBAAsB,SAASp3B,EAAUipB,GACtD,GAAKp7C,KAAKmkD,OAQRnkD,KAAK8yD,GAAK,EACV9yD,KAAKgzD,GAAK,MATM,CAChB,GAAIj1C,GAAO/d,KAAKi5C,QAAUj5C,KAAKgzD,GAC3Bj2C,GAAQ/c,KAAK8yD,GAAK/0C,GAAM/d,KAAK4O,QAAQyoC,IACzCr3C,MAAKgzD,IAAMj2C,EAAKoV,EAChBnyB,KAAKgzD,GAAMluD,KAAKklB,IAAIhqB,KAAKgzD,IAAM5X,EAAiBp7C,KAAKgzD,GAAK,EAAK5X,GAAeA,EAAep7C,KAAKgzD,GAClGhzD,KAAKuS,GAAMvS,KAAKgzD,GAAK7gC,EAOvB,GAAKnyB,KAAKokD,OAQRpkD,KAAK+yD,GAAK,EACV/yD,KAAKizD,GAAK,MATM,CAChB,GAAIj1C,GAAOhe,KAAKi5C,QAAUj5C,KAAKizD,GAC3Bj2C,GAAQhd,KAAK+yD,GAAK/0C,GAAMhe,KAAK4O,QAAQyoC,IACzCr3C,MAAKizD,IAAMj2C,EAAKmV,EAChBnyB,KAAKizD,GAAMnuD,KAAKklB,IAAIhqB,KAAKizD,IAAM7X,EAAiBp7C,KAAKizD,GAAK,EAAK7X,GAAeA,EAAep7C,KAAKizD,GAClGjzD,KAAKwS,GAAMxS,KAAKizD,GAAK9gC,IAYzB/uB,EAAKsQ,UAAUgiD,QAAU,WACvB,MAAQ11D,MAAKmkD,QAAUnkD,KAAKokD,QAQ9BhhD,EAAKsQ,UAAU01C,SAAW,SAASD,GACjC,GAAIwM,GAAW7wD,KAAKqqB,KAAKrqB,KAAK0uB,IAAIxzB,KAAKgzD,GAAG,GAAKluD,KAAK0uB,IAAIxzB,KAAKizD,GAAG,GAEhE,OAAQ0C,GAAWxM,GAOrB/lD,EAAKsQ,UAAUowC,WAAa,WAC1B,MAAO9jD,MAAK8rC,UAOd1oC,EAAKsQ,UAAUuB,SAAW,WACxB,MAAOjV,MAAKiH,OASd7D,EAAKsQ,UAAUkiD,YAAc,SAASrjD,EAAGC,GACvC,GAAIuL,GAAK/d,KAAKuS,EAAIA,EACdyL,EAAKhe,KAAKwS,EAAIA,CAClB,OAAO1N,MAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,IAUlC5a,EAAKsQ,UAAUo0C,cAAgB,SAASx8C,EAAKyB,GAC3C,IAAK/M,KAAK2yD,aAA8BvsD,SAAfpG,KAAKiH,MAC5B,GAAI8F,GAAOzB,EACTtL,KAAK4O,QAAQic,QAAS7qB,KAAK4O,QAAQ0oC,UAAYt3C,KAAK4O,QAAQ2oC,WAAa,MAEtE,CACH,GAAIn7B,IAASpc,KAAK4O,QAAQ2oC,UAAYv3C,KAAK4O,QAAQ0oC,YAAcvqC,EAAMzB,EACvEtL,MAAK4O,QAAQic,QAAS7qB,KAAKiH,MAAQqE,GAAO8Q,EAAQpc,KAAK4O,QAAQ0oC,UAGnEt3C,KAAK0yD,gBAAkB1yD,KAAK4O,QAAQic,QAQtCznB,EAAKsQ,UAAUg1C,KAAO,WACpB,KAAM,wCAQRtlD,EAAKsQ,UAAU+6C,OAAS,WACtB,KAAM,0CAQRrrD,EAAKsQ,UAAU2yC,kBAAoB,SAASlkC,GAC1C,MAAQniB,MAAKqH,KAAoB8a,EAAIqE,OAC7BxmB,KAAKqH,KAAOrH,KAAK+S,MAAQoP,EAAI9a,MAC7BrH,KAAKyH,IAAoB0a,EAAIM,QAC7BziB,KAAKyH,IAAMzH,KAAKgT,OAASmP,EAAI1a,KAGvCrE,EAAKsQ,UAAUmhD,aAAe,WAG5B,IAAK70D,KAAK+S,QAAU/S,KAAKgT,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAIhT,KAAKiH,MAAO,CACdjH,KAAK4O,QAAQic,OAAQ7qB,KAAK0yD,eAC1B,IAAIt2C,GAAQpc,KAAKk0D,SAASlhD,OAAShT,KAAKk0D,SAASnhD,KACnC3M,UAAVgW,GACFrJ,EAAQ/S,KAAK4O,QAAQic,QAAS7qB,KAAKk0D,SAASnhD,MAC5CC,EAAShT,KAAK4O,QAAQic,OAAQzO,GAASpc,KAAKk0D,SAASlhD,SAGrDD,EAAQ,EACRC,EAAS,OAIXD,GAAQ/S,KAAKk0D,SAASnhD,MACtBC,EAAShT,KAAKk0D,SAASlhD,MAEzBhT,MAAK+S,MAASA,EACd/S,KAAKgT,OAASA,EAEdhT,KAAKwzD,gBAAkB,EACnBxzD,KAAK+S,MAAQ,GAAK/S,KAAKgT,OAAS,IAClChT,KAAK+S,OAAUjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAA0Bn6C,KAAKqzD,uBAClFrzD,KAAKgT,QAAUlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKszD,wBACjFtzD,KAAK4O,QAAQic,QAAS/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKuzD,wBACxFvzD,KAAKwzD,gBAAkBxzD,KAAK+S,MAAQA,KAM1C3P,EAAKsQ,UAAUkhD,WAAa,SAAU1uC,GACpClmB,KAAK60D,aAAa3uC,GAElBlmB,KAAKqH,KAASrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EACpC/S,KAAKyH,IAASzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAErC,IAAIqG,EACJ,IAA2B,GAAvBrZ,KAAKk0D,SAASnhD,MAAa,CAE7B,GAAI/S,KAAK2zD,YAAc,EAAG,CACxB,GAAIltC,GAAczmB,KAAK2zD,YAAc,EAAK,GAAK,CAC/CltC,IAAazmB,KAAK4uD,gBAClBnoC,EAAY3hB,KAAKwG,IAAI,GAAMtL,KAAK+S,MAAM0T,GAEtCP,EAAI2vC,YAAc,GAClB3vC,EAAI4vC,UAAU91D,KAAKk0D,SAAUl0D,KAAKqH,KAAOof,EAAWzmB,KAAKyH,IAAMgf,EAAWzmB,KAAK+S,MAAQ,EAAE0T,EAAWzmB,KAAKgT,OAAS,EAAEyT,GAItHP,EAAI2vC,YAAc,EAClB3vC,EAAI4vC,UAAU91D,KAAKk0D,SAAUl0D,KAAKqH,KAAMrH,KAAKyH,IAAKzH,KAAK+S,MAAO/S,KAAKgT,QACnEqG,EAASrZ,KAAKwS,EAAIxS,KAAKgT,OAAS,MAIhCqG,GAASrZ,KAAKwS,CAGhBxS,MAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAG8G,EAAQjT,OAAW,QAI1DhD,EAAKsQ,UAAU6gD,WAAa,SAAUruC,GACpC,IAAKlmB,KAAK+S,MAAO,CACf,GAAIkG,GAAS,EACT88C,EAAW/1D,KAAKg2D,YAAY9vC,EAChClmB,MAAK+S,MAAQgjD,EAAShjD,MAAQ,EAAIkG,EAClCjZ,KAAKgT,OAAS+iD,EAAS/iD,OAAS,EAAIiG,EAEpCjZ,KAAK+S,OAAuE,GAA7DjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAA+Bn6C,KAAKqzD,uBACvFrzD,KAAKgT,QAAuE,GAA7DlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAA+Bn6C,KAAKszD,wBACvFtzD,KAAKwzD,gBAAkBxzD,KAAK+S,OAASgjD,EAAShjD,MAAQ,EAAIkG,KAM9D7V,EAAKsQ,UAAU4gD,SAAW,SAAUpuC,GAClClmB,KAAKu0D,WAAWruC,GAEhBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAElC,IAAIijD,GAAmB,IACnB92C,EAAcnf,KAAK4O,QAAQuQ,YAC3B+2C,EAAqBl2D,KAAK4O,QAAQopC,qBAAuB,EAAIh4C,KAAK4O,QAAQuQ,WAE9E+G,GAAIY,YAAc9mB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUD,OAAS5L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMF,OAAS5L,KAAK4O,QAAQlE,MAAMkB,OAGtI5L,KAAK2zD,YAAc,IACrBztC,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiwC,UAAUn2D,KAAKqH,KAAK,EAAE6e,EAAIO,UAAWzmB,KAAKyH,IAAI,EAAEye,EAAIO,UAAWzmB,KAAK+S,MAAM,EAAEmT,EAAIO,UAAWzmB,KAAKgT,OAAO,EAAEkT,EAAIO,UAAWzmB,KAAK4O,QAAQic,QACzI3E,EAAIlH,UAENkH,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYnnB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUF,WAAa3L,KAAK4O,QAAQlE,MAAMiB,WAE7Fua,EAAIiwC,UAAUn2D,KAAKqH,KAAMrH,KAAKyH,IAAKzH,KAAK+S,MAAO/S,KAAKgT,OAAQhT,KAAK4O,QAAQic,QACzE3E,EAAInH,OACJmH,EAAIlH,SAEJhf,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,IAI5CpP,EAAKsQ,UAAU2gD,gBAAkB,SAAUnuC,GACzC,IAAKlmB,KAAK+S,MAAO,CACf,GAAIkG,GAAS,EACT88C,EAAW/1D,KAAKg2D,YAAY9vC,GAC5BrT,EAAOkjD,EAAShjD,MAAQ,EAAIkG,CAChCjZ,MAAK+S,MAAQF,EACb7S,KAAKgT,OAASH,EAGd7S,KAAK+S,OAAUjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKqzD,uBACjFrzD,KAAKgT,QAAUlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKszD,wBACjFtzD,KAAK4O,QAAQic,QAAS/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKuzD,wBACxFvzD,KAAKwzD,gBAAkBxzD,KAAK+S,MAAQF,IAIxCzP,EAAKsQ,UAAU0gD,cAAgB,SAAUluC,GACvClmB,KAAKq0D,gBAAgBnuC,GACrBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAElC,IAAIijD,GAAmB,IACnB92C,EAAcnf,KAAK4O,QAAQuQ,YAC3B+2C,EAAqBl2D,KAAK4O,QAAQopC,qBAAuB,EAAIh4C,KAAK4O,QAAQuQ,WAE9E+G,GAAIY,YAAc9mB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUD,OAAS5L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMF,OAAS5L,KAAK4O,QAAQlE,MAAMkB,OAGtI5L,KAAK2zD,YAAc,IACrBztC,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIkwC,SAASp2D,KAAKuS,EAAIvS,KAAK+S,MAAM,EAAI,EAAEmT,EAAIO,UAAWzmB,KAAKwS,EAAgB,GAAZxS,KAAKgT,OAAa,EAAEkT,EAAIO,UAAWzmB,KAAK+S,MAAQ,EAAEmT,EAAIO,UAAWzmB,KAAKgT,OAAS,EAAEkT,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYnnB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUF,WAAa3L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMH,WAAa3L,KAAK4O,QAAQlE,MAAMiB,WAChJua,EAAIkwC,SAASp2D,KAAKuS,EAAIvS,KAAK+S,MAAM,EAAG/S,KAAKwS,EAAgB,GAAZxS,KAAKgT,OAAYhT,KAAK+S,MAAO/S,KAAKgT,QAC/EkT,EAAInH,OACJmH,EAAIlH,SAEJhf,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,IAI5CpP,EAAKsQ,UAAU+gD,cAAgB,SAAUvuC,GACvC,IAAKlmB,KAAK+S,MAAO,CACf,GAAIkG,GAAS,EACT88C,EAAW/1D,KAAKg2D,YAAY9vC,GAC5BmwC,EAAWvxD,KAAKiI,IAAIgpD,EAAShjD,MAAOgjD,EAAS/iD,QAAU,EAAIiG,CAC/DjZ,MAAK4O,QAAQic,OAASwrC,EAAW,EAEjCr2D,KAAK+S,MAAQsjD,EACbr2D,KAAKgT,OAASqjD,EAKdr2D,KAAK4O,QAAQic,QAAuE,GAA7D/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAA+Bn6C,KAAKuzD,wBAC/FvzD,KAAKwzD,gBAAkBxzD,KAAK4O,QAAQic,OAAQ,GAAIwrC,IAIpDjzD,EAAKsQ,UAAU8gD,YAAc,SAAUtuC,GACrClmB,KAAKy0D,cAAcvuC,GACnBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAElC,IAAIijD,GAAmB,IACnB92C,EAAcnf,KAAK4O,QAAQuQ,YAC3B+2C,EAAqBl2D,KAAK4O,QAAQopC,qBAAuB,EAAIh4C,KAAK4O,QAAQuQ,WAE9E+G,GAAIY,YAAc9mB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUD,OAAS5L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMF,OAAS5L,KAAK4O,QAAQlE,MAAMkB,OAGtI5L,KAAK2zD,YAAc,IACrBztC,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIowC,OAAOt2D,KAAKuS,EAAGvS,KAAKwS,EAAGxS,KAAK4O,QAAQic,OAAO,EAAE3E,EAAIO,WACrDP,EAAIlH,UAENkH,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYnnB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUF,WAAa3L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMH,WAAa3L,KAAK4O,QAAQlE,MAAMiB,WAChJua,EAAIowC,OAAOt2D,KAAKuS,EAAGvS,KAAKwS,EAAGxS,KAAK4O,QAAQic,QACxC3E,EAAInH,OACJmH,EAAIlH,SAEJhf,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,IAG5CpP,EAAKsQ,UAAUihD,eAAiB,SAAUzuC,GACxC,IAAKlmB,KAAK+S,MAAO,CACf,GAAIgjD,GAAW/1D,KAAKg2D,YAAY9vC,EAEhClmB,MAAK+S,MAAyB,IAAjBgjD,EAAShjD,MACtB/S,KAAKgT,OAA2B,EAAlB+iD,EAAS/iD,OACnBhT,KAAK+S,MAAQ/S,KAAKgT,SACpBhT,KAAK+S,MAAQ/S,KAAKgT,OAEpB,IAAIujD,GAAcv2D,KAAK+S,KAGvB/S,MAAK+S,OAAUjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKqzD,uBACjFrzD,KAAKgT,QAAUlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKszD,wBACjFtzD,KAAK4O,QAAQic,QAAU/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKuzD,wBACzFvzD,KAAKwzD,gBAAkBxzD,KAAK+S,MAAQwjD,IAIxCnzD,EAAKsQ,UAAUghD,aAAe,SAAUxuC,GACtClmB,KAAK20D,eAAezuC,GACpBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAElC,IAAIijD,GAAmB,IACnB92C,EAAcnf,KAAK4O,QAAQuQ,YAC3B+2C,EAAqBl2D,KAAK4O,QAAQopC,qBAAuB,EAAIh4C,KAAK4O,QAAQuQ,WAE9E+G,GAAIY,YAAc9mB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUD,OAAS5L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMF,OAAS5L,KAAK4O,QAAQlE,MAAMkB,OAGtI5L,KAAK2zD,YAAc,IACrBztC,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIswC,QAAQx2D,KAAKqH,KAAK,EAAE6e,EAAIO,UAAWzmB,KAAKyH,IAAI,EAAEye,EAAIO,UAAWzmB,KAAK+S,MAAM,EAAEmT,EAAIO,UAAWzmB,KAAKgT,OAAO,EAAEkT,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYnnB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUF,WAAa3L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMH,WAAa3L,KAAK4O,QAAQlE,MAAMiB,WAEhJua,EAAIswC,QAAQx2D,KAAKqH,KAAMrH,KAAKyH,IAAKzH,KAAK+S,MAAO/S,KAAKgT,QAClDkT,EAAInH,OACJmH,EAAIlH,SACJhf,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,IAG5CpP,EAAKsQ,UAAUshD,SAAW,SAAU9uC,GAClClmB,KAAKy2D,WAAWvwC,EAAK,WAGvB9iB,EAAKsQ,UAAUyhD,cAAgB,SAAUjvC,GACvClmB,KAAKy2D,WAAWvwC,EAAK,aAGvB9iB,EAAKsQ,UAAU0hD,kBAAoB,SAAUlvC,GAC3ClmB,KAAKy2D,WAAWvwC,EAAK,iBAGvB9iB,EAAKsQ,UAAUwhD,YAAc,SAAUhvC,GACrClmB,KAAKy2D,WAAWvwC,EAAK,WAGvB9iB,EAAKsQ,UAAU2hD,UAAY,SAAUnvC,GACnClmB,KAAKy2D,WAAWvwC,EAAK,SAGvB9iB,EAAKsQ,UAAUuhD,aAAe,WAC5B,IAAKj1D,KAAK+S,MAAO,CACf/S,KAAK4O,QAAQic,OAAQ7qB,KAAK0yD,eAC1B,IAAI7/C,GAAO,EAAI7S,KAAK4O,QAAQic,MAC5B7qB,MAAK+S,MAAQF,EACb7S,KAAKgT,OAASH,EAGd7S,KAAK+S,OAAUjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKqzD,uBACjFrzD,KAAKgT,QAAUlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKszD,wBACjFtzD,KAAK4O,QAAQic,QAAsE,GAA7D/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAA+Bn6C,KAAKuzD,wBAC9FvzD,KAAKwzD,gBAAkBxzD,KAAK+S,MAAQF,IAIxCzP,EAAKsQ,UAAU+iD,WAAa,SAAUvwC,EAAKsxB,GACzCx3C,KAAKi1D,aAAa/uC,GAElBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,CAElC,IAAIijD,GAAmB,IACnB92C,EAAcnf,KAAK4O,QAAQuQ,YAC3B+2C,EAAqBl2D,KAAK4O,QAAQopC,qBAAuB,EAAIh4C,KAAK4O,QAAQuQ,YAC1Eu3C,EAAmB,CAGvB,QAAQlf,GACN,IAAK,MAAiBkf,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3CxwC,EAAIY,YAAc9mB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUD,OAAS5L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMF,OAAS5L,KAAK4O,QAAQlE,MAAMkB,OAEtI5L,KAAK2zD,YAAc,IACrBztC,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIsxB,GAAOx3C,KAAKuS,EAAGvS,KAAKwS,EAAGxS,KAAK4O,QAAQic,OAAQ6rC,EAAmBxwC,EAAIO,WACvEP,EAAIlH,UAENkH,EAAIO,WAAazmB,KAAK8rC,SAAWoqB,EAAqB/2C,IAAiBnf,KAAK2zD,YAAc,EAAKsC,EAAmB,GAClH/vC,EAAIO,WAAazmB,KAAK4uD,gBACtB1oC,EAAIO,UAAY3hB,KAAKwG,IAAItL,KAAK+S,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYnnB,KAAK8rC,SAAW9rC,KAAK4O,QAAQlE,MAAMmB,UAAUF,WAAa3L,KAAK8L,MAAQ9L,KAAK4O,QAAQlE,MAAMoB,MAAMH,WAAa3L,KAAK4O,QAAQlE,MAAMiB,WAChJua,EAAIsxB,GAAOx3C,KAAKuS,EAAGvS,KAAKwS,EAAGxS,KAAK4O,QAAQic,QACxC3E,EAAInH,OACJmH,EAAIlH,SAEAhf,KAAK4nB,OACP5nB,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,EAAIxS,KAAKgT,OAAS,EAAG5M,OAAW,OAAM,IAIpFhD,EAAKsQ,UAAUqhD,YAAc,SAAU7uC,GACrC,IAAKlmB,KAAK+S,MAAO,CACf,GAAIkG,GAAS,EACT88C,EAAW/1D,KAAKg2D,YAAY9vC,EAChClmB,MAAK+S,MAAQgjD,EAAShjD,MAAQ,EAAIkG,EAClCjZ,KAAKgT,OAAS+iD,EAAS/iD,OAAS,EAAIiG,EAGpCjZ,KAAK+S,OAAUjO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKqzD,uBACjFrzD,KAAKgT,QAAUlO,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKszD,wBACjFtzD,KAAK4O,QAAQic,QAAS/lB,KAAKwG,IAAItL,KAAK2zD,YAAc,EAAG3zD,KAAKm6C,uBAAyBn6C,KAAKuzD,wBACxFvzD,KAAKwzD,gBAAkBxzD,KAAK+S,OAASgjD,EAAShjD,MAAQ,EAAIkG,KAI9D7V,EAAKsQ,UAAUohD,UAAY,SAAU5uC,GACnClmB,KAAK+0D,YAAY7uC,GACjBlmB,KAAKqH,KAAOrH,KAAKuS,EAAIvS,KAAK+S,MAAQ,EAClC/S,KAAKyH,IAAMzH,KAAKwS,EAAIxS,KAAKgT,OAAS,EAElChT,KAAKwuD,OAAOtoC,EAAKlmB,KAAK4nB,MAAO5nB,KAAKuS,EAAGvS,KAAKwS,IAI5CpP,EAAKsQ,UAAU86C,OAAS,SAAUtoC,EAAKwC,EAAMnW,EAAGC,EAAGs1B,EAAO6uB,EAAUC,GAClE,GAAIluC,GAAQ5kB,OAAO9D,KAAK4O,QAAQ+oC,UAAY33C,KAAKyzD,aAAezzD,KAAKuyD,kBAAmB,CACtFrsC,EAAIQ,MAAQ1mB,KAAK8rC,SAAW,QAAU,IAAM9rC,KAAK4O,QAAQ+oC,SAAW,MAAQ33C,KAAK4O,QAAQgpC,QAEzF,IAAIpW,GAAQ9Y,EAAK5gB,MAAM,MACnBmnD,EAAYztB,EAAMj8B,OAClBoyC,EAAY7zC,OAAO9D,KAAK4O,QAAQ+oC,UAAY,EAC5C+U,EAAQl6C,GAAK,EAAIy8C,GAAa,EAAItX,CAChB,IAAlBif,IACFlK,EAAQl6C,GAAK,EAAIy8C,IAAc,EAAItX,GAKrC,KAAK,GADD5kC,GAAQmT,EAAIgpC,YAAY1tB,EAAM,IAAIzuB,MAC7B3N,EAAI,EAAO6pD,EAAJ7pD,EAAeA,IAAK,CAClC,GAAIqhB,GAAYP,EAAIgpC,YAAY1tB,EAAMp8B,IAAI2N,KAC1CA,GAAQ0T,EAAY1T,EAAQ0T,EAAY1T,EAE1C,GAAIC,GAAShT,KAAK4O,QAAQ+oC,SAAWsX,EACjC5nD,EAAOkL,EAAIQ,EAAQ,EACnBtL,EAAM+K,EAAIQ,EAAS,CACC,QAApBkT,EAAIwB,eACNjgB,GAAO,GAAMkwC,GAEf33C,KAAKysD,iBAAmBhlD,IAAIA,EAAIJ,KAAKA,EAAK0L,MAAMA,EAAMC,OAAOA,EAAO05C,MAAMA,GAG5CtmD,SAA1BpG,KAAK4O,QAAQipC,UAAoD,OAA1B73C,KAAK4O,QAAQipC,UAA+C,SAA1B73C,KAAK4O,QAAQipC,WACxF3xB,EAAIiB,UAAYnnB,KAAK4O,QAAQipC,SAC7B3xB,EAAIipC,SAAS9nD,EAAMI,EAAKsL,EAAOC,IAIjCkT,EAAIiB,UAAYnnB,KAAK4O,QAAQ8oC,WAAa,QAC1CxxB,EAAIuB,UAAYqgB,GAAS,SACzB5hB,EAAIwB,aAAeivC,GAAY,QAC/B,KAAK,GAAIvxD,GAAI,EAAO6pD,EAAJ7pD,EAAeA,IAC7B8gB,EAAIyB,SAAS6Z,EAAMp8B,GAAImN,EAAGm6C,GAC1BA,GAAS/U,IAMfv0C,EAAKsQ,UAAUsiD,YAAc,SAAS9vC,GACpC,GAAmB9f,SAAfpG,KAAK4nB,MAAqB,CAC5B1B,EAAIQ,MAAQ1mB,KAAK8rC,SAAW,QAAU,IAAM9rC,KAAK4O,QAAQ+oC,SAAW,MAAQ33C,KAAK4O,QAAQgpC,QAMzF,KAAK,GAJDpW,GAAQxhC,KAAK4nB,MAAM9f,MAAM,MACzBkL,GAAUlP,OAAO9D,KAAK4O,QAAQ+oC,UAAY,GAAKnW,EAAMj8B,OACrDwN,EAAQ,EAEH3N,EAAI,EAAGk3B,EAAOkF,EAAMj8B,OAAY+2B,EAAJl3B,EAAUA,IAC7C2N,EAAQjO,KAAKiI,IAAIgG,EAAOmT,EAAIgpC,YAAY1tB,EAAMp8B,IAAI2N,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,GAGlC,OAAQD,MAAS,EAAGC,OAAU,IAUlC5P,EAAKsQ,UAAU+0C,OAAS,WACtB,MAAmBriD,UAAfpG,KAAK+S,MACD/S,KAAKuS,EAAIvS,KAAK+S,MAAO/S,KAAK4uD,iBAAoB5uD,KAAK89C,cAAcvrC,GACjEvS,KAAKuS,EAAIvS,KAAK+S,MAAO/S,KAAK4uD,gBAAoB5uD,KAAK+9C,kBAAkBxrC,GACrEvS,KAAKwS,EAAIxS,KAAKgT,OAAOhT,KAAK4uD,iBAAoB5uD,KAAK89C,cAActrC,GACjExS,KAAKwS,EAAIxS,KAAKgT,OAAOhT,KAAK4uD,gBAAoB5uD,KAAK+9C,kBAAkBvrC,GAGpE,GAQXpP,EAAKsQ,UAAUmjD,OAAS,WACtB,MAAQ72D,MAAKuS,GAAKvS,KAAK89C,cAAcvrC,GAC7BvS,KAAKuS,EAAIvS,KAAK+9C,kBAAkBxrC,GAChCvS,KAAKwS,GAAKxS,KAAK89C,cAActrC,GAC7BxS,KAAKwS,EAAIxS,KAAK+9C,kBAAkBvrC,GAW1CpP,EAAKsQ,UAAU80C,eAAiB,SAASpsC,EAAM0hC,EAAcC,GAC3D/9C,KAAK4uD,gBAAkB,EAAIxyC,EAC3Bpc,KAAKyzD,aAAer3C,EACpBpc,KAAK89C,cAAgBA,EACrB99C,KAAK+9C,kBAAoBA,GAS3B36C,EAAKsQ,UAAU2qB,SAAW,SAASjiB,GACjCpc,KAAK4uD,gBAAkB,EAAIxyC,EAC3Bpc,KAAKyzD,aAAer3C,GAQtBhZ,EAAKsQ,UAAUojD,cAAgB,WAC7B92D,KAAKgzD,GAAK,EACVhzD,KAAKizD,GAAK,GASZ7vD,EAAKsQ,UAAUqjD,eAAiB,SAASC,GACvC,GAAIC,GAAej3D,KAAKgzD,GAAKhzD,KAAKgzD,GAAKgE,CAEvCh3D,MAAKgzD,GAAKluD,KAAKqqB,KAAK8nC,EAAaj3D,KAAK4O,QAAQyoC,MAC9C4f,EAAej3D,KAAKizD,GAAKjzD,KAAKizD,GAAK+D,EAEnCh3D,KAAKizD,GAAKnuD,KAAKqqB,KAAK8nC,EAAaj3D,KAAK4O,QAAQyoC,OAGhDx3C,EAAOD,QAAUwD,GAKb,SAASvD,GAWb,QAASwD,GAAMyV,EAAWvG,EAAGC,EAAGkW,EAAMrb,GAElCrN,KAAK8Y,UADHA,EACeA,EAGA/G,SAASsiB,KAIdjuB,SAAViH,IACe,gBAANkF,IACTlF,EAAQkF,EACRA,EAAInM,QACqB,gBAATsiB,IAChBrb,EAAQqb,EACRA,EAAOtiB,QAGPiH,GACEqqC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVltC,OACEkB,OAAQ,OACRD,WAAY,aAMpB3L,KAAKuS,EAAI,EACTvS,KAAKwS,EAAI,EACTxS,KAAKmjB,QAAU,EAEL/c,SAANmM,GAAyBnM,SAANoM,GACrBxS,KAAKymD,YAAYl0C,EAAGC,GAETpM,SAATsiB,GACF1oB,KAAK0mD,QAAQh+B,GAIf1oB,KAAKye,MAAQ1M,SAASM,cAAc,MACpC,IAAI6kD,GAAYl3D,KAAKye,MAAMpR,KAC3B6pD,GAAUn0C,SAAW,WACrBm0C,EAAUpgC,WAAa,SACvBogC,EAAUtrD,OAAS,aAAeyB,EAAM3C,MAAMkB,OAC9CsrD,EAAUxsD,MAAQ2C,EAAMqqC,UACxBwf,EAAUvf,SAAWtqC,EAAMsqC,SAAW,KACtCuf,EAAUC,WAAa9pD,EAAMuqC,SAC7Bsf,EAAU/zC,QAAUnjB,KAAKmjB,QAAU,KACnC+zC,EAAUp4C,gBAAkBzR,EAAM3C,MAAMiB,WACxCurD,EAAU1nC,aAAe,MACzB0nC,EAAUzlC,gBAAkB,MAC5BylC,EAAUE,mBAAqB,MAC/BF,EAAUznC,UAAY,wCACtBynC,EAAUG,WAAa,SACvBr3D,KAAK8Y,UAAU7G,YAAYjS,KAAKye,OAOlCpb,EAAMqQ,UAAU+yC,YAAc,SAASl0C,EAAGC,GACxCxS,KAAKuS,EAAI0X,SAAS1X,GAClBvS,KAAKwS,EAAIyX,SAASzX,IAOpBnP,EAAMqQ,UAAUgzC,QAAU,SAASt3B,GAC7BA,YAAmBkX,UACrBtmC,KAAKye,MAAM2E,UAAY,GACvBpjB,KAAKye,MAAMxM,YAAYmd,IAGvBpvB,KAAKye,MAAM2E,UAAYgM,GAQ3B/rB,EAAMqQ,UAAU6uB,KAAO,SAAUA,GAK/B,GAJan8B,SAATm8B,IACFA,GAAO,GAGLA,EAAM,CACR,GAAIvvB,GAAShT,KAAKye,MAAMuF,aACpBjR,EAAS/S,KAAKye,MAAME,YACpBuV,EAAYl0B,KAAKye,MAAM9U,WAAWqa,aAClCszC,EAAWt3D,KAAKye,MAAM9U,WAAWgV,YAEjClX,EAAOzH,KAAKwS,EAAIQ,CAChBvL,GAAMuL,EAAShT,KAAKmjB,QAAU+Q,IAChCzsB,EAAMysB,EAAYlhB,EAAShT,KAAKmjB,SAE9B1b,EAAMzH,KAAKmjB,UACb1b,EAAMzH,KAAKmjB,QAGb,IAAI9b,GAAOrH,KAAKuS,CACZlL,GAAO0L,EAAQ/S,KAAKmjB,QAAUm0C,IAChCjwD,EAAOiwD,EAAWvkD,EAAQ/S,KAAKmjB,SAE7B9b,EAAOrH,KAAKmjB,UACd9b,EAAOrH,KAAKmjB,SAGdnjB,KAAKye,MAAMpR,MAAMhG,KAAOA,EAAO,KAC/BrH,KAAKye,MAAMpR,MAAM5F,IAAMA,EAAM,KAC7BzH,KAAKye,MAAMpR,MAAMypB,WAAa,cAG9B92B,MAAKsiC,QAOTj/B,EAAMqQ,UAAU4uB,KAAO,WACrBtiC,KAAKye,MAAMpR,MAAMypB,WAAa,UAGhCj3B,EAAOD,QAAUyD,GAKb,SAASxD,EAAQD,GAarB,QAAS23D,GAAUrkD,GAEjB,MADAoc,GAAMpc,EACCskD,IAoCT,QAASl6B,KACPp1B,EAAQ,EACRzH,EAAI6uB,EAAI/K,OAAO,GAQjB,QAASiD,KACPtf,IACAzH,EAAI6uB,EAAI/K,OAAOrc,GAOjB,QAASuvD,KACP,MAAOnoC,GAAI/K,OAAOrc,EAAQ,GAS5B,QAASwvD,GAAej3D,GACtB,MAAOk3D,GAAkBxpD,KAAK1N,GAShC,QAASm3D,GAAOzyD,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIuQ,KAAQvQ,GACXA,EAAEN,eAAe6Q,KACnBpR,EAAEoR,GAAQvQ,EAAEuQ,GAIlB,OAAOpR,GAeT,QAAS+S,GAASiK,EAAKmjB,EAAMr+B,GAG3B,IAFA,GAAIuG,GAAO83B,EAAKx9B,MAAM,KAClB+vD,EAAI11C,EACD3U,EAAKjI,QAAQ,CAClB,GAAIkD,GAAM+E,EAAKsE,OACXtE,GAAKjI,QAEFsyD,EAAEpvD,KACLovD,EAAEpvD,OAEJovD,EAAIA,EAAEpvD,IAINovD,EAAEpvD,GAAOxB,GAWf,QAAS6wD,GAAQlnC,EAAO8uB,GAOtB,IANA,GAAIt6C,GAAGC,EACH6xB,EAAU,KAGV6gC,GAAUnnC,GACVlxB,EAAOkxB,EACJlxB,EAAKogC,QACVi4B,EAAOhwD,KAAKrI,EAAKogC,QACjBpgC,EAAOA,EAAKogC,MAId,IAAIpgC,EAAK03C,MACP,IAAKhyC,EAAI,EAAGC,EAAM3F,EAAK03C,MAAM7xC,OAAYF,EAAJD,EAASA,IAC5C,GAAIs6C,EAAKr/C,KAAOX,EAAK03C,MAAMhyC,GAAG/E,GAAI,CAChC62B,EAAUx3B,EAAK03C,MAAMhyC,EACrB,OAiBN,IAZK8xB,IAEHA,GACE72B,GAAIq/C,EAAKr/C,IAEPuwB,EAAM8uB,OAERxoB,EAAQ8gC,KAAOJ,EAAM1gC,EAAQ8gC,KAAMpnC,EAAM8uB,QAKxCt6C,EAAI2yD,EAAOxyD,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAIoH,GAAIurD,EAAO3yD,EAEVoH,GAAE4qC,QACL5qC,EAAE4qC,UAE4B,IAA5B5qC,EAAE4qC,MAAM7wC,QAAQ2wB,IAClB1qB,EAAE4qC,MAAMrvC,KAAKmvB,GAKbwoB,EAAKsY,OACP9gC,EAAQ8gC,KAAOJ,EAAM1gC,EAAQ8gC,KAAMtY,EAAKsY,OAS5C,QAASC,GAAQrnC,EAAO01B,GAKtB,GAJK11B,EAAMqnB,QACTrnB,EAAMqnB,UAERrnB,EAAMqnB,MAAMlwC,KAAKu+C,GACb11B,EAAM01B,KAAM,CACd,GAAI0R,GAAOJ,KAAUhnC,EAAM01B,KAC3BA,GAAK0R,KAAOJ,EAAMI,EAAM1R,EAAK0R,OAajC,QAASE,GAAWtnC,EAAOrI,EAAMC,EAAI9hB,EAAMsxD,GACzC,GAAI1R,IACF/9B,KAAMA,EACNC,GAAIA,EACJ9hB,KAAMA,EAQR,OALIkqB,GAAM01B,OACRA,EAAK0R,KAAOJ,KAAUhnC,EAAM01B,OAE9BA,EAAK0R,KAAOJ,EAAMtR,EAAK0R,SAAYA,GAE5B1R,EAOT,QAAS6R,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAAL93D,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3C+mB,GAGF,GAAG,CACD,GAAIgxC,IAAY,CAGhB,IAAS,KAAL/3D,EAAU,CAGZ,IADA,GAAI2E,GAAI8C,EAAQ,EACQ,KAAjBonB,EAAI/K,OAAOnf,IAA8B,KAAjBkqB,EAAI/K,OAAOnf,IACxCA,GAEF,IAAqB,MAAjBkqB,EAAI/K,OAAOnf,IAA+B,IAAjBkqB,EAAI/K,OAAOnf,GAAU,CAEhD,KAAY,IAAL3E,GAAgB,MAALA,GAChB+mB,GAEFgxC,IAAY,GAGhB,GAAS,KAAL/3D,GAA6B,KAAjBg3D,IAAsB,CAEpC,KAAY,IAALh3D,GAAgB,MAALA,GAChB+mB,GAEFgxC,IAAY,EAEd,GAAS,KAAL/3D,GAA6B,KAAjBg3D,IAAsB,CAEpC,KAAY,IAALh3D,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBg3D,IAAsB,CAEpCjwC,IACAA,GACA,OAGAA,IAGJgxC,GAAY,EAId,KAAY,KAAL/3D,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3C+mB,UAGGgxC,EAGP,IAAS,IAAL/3D,EAGF,YADA23D,EAAYC,EAAUI,UAKxB,IAAIC,GAAKj4D,EAAIg3D,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACRlxC,QACAA,IAKF,IAAImxC,EAAWl4D,GAIb,MAHA23D,GAAYC,EAAUI,UACtBF,EAAQ93D,MACR+mB,IAMF,IAAIkwC,EAAej3D,IAAW,KAALA,EAAU,CAIjC,IAHA83D,GAAS93D,EACT+mB,IAEOkwC,EAAej3D,IACpB83D,GAAS93D,EACT+mB,GAYF,OAVa,SAAT+wC,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEAj0D,MAAMR,OAAOy0D,MACrBA,EAAQz0D,OAAOy0D,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALn4D,EAAU,CAEZ,IADA+mB,IACY,IAAL/mB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBg3D,MAC1Cc,GAAS93D,EACA,KAALA,GACF+mB,IAEFA,GAEF,IAAS,KAAL/mB,EACF,KAAMo4D,GAAe,2BAIvB,OAFArxC,UACA4wC,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAALr4D,GACL83D,GAAS93D,EACT+mB,GAEF,MAAM,IAAIzO,aAAY,yBAA2BggD,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAI5mC,KAwBJ,IAtBA0M,IACA66B,IAGa,UAATI,IACF3nC,EAAMooC,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtB3nC,EAAMlqB,KAAO6xD,EACbJ,KAIEC,GAAaC,EAAUO,aACzBhoC,EAAMvwB,GAAKk4D,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgBroC,GAGH,KAAT2nC,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGOvnC,GAAM8uB,WACN9uB,GAAM01B,WACN11B,GAAMA,MAENA,EAOT,QAASqoC,GAAiBroC,GACxB,KAAiB,KAAV2nC,GAAyB,KAATA,GACrBW,EAAetoC,GACF,KAAT2nC,GACFJ,IAWN,QAASe,GAAetoC,GAEtB,GAAIuoC,GAAWC,EAAcxoC,EAC7B,IAAIuoC,EAIF,WAFAE,GAAUzoC,EAAOuoC,EAMnB,IAAInB,GAAOsB,EAAwB1oC,EACnC,KAAIonC,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAIx4D,GAAKk4D,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBjoC,GAAMvwB,GAAMk4D,EACZJ,QAIAoB,GAAmB3oC,EAAOvwB,IAS9B,QAAS+4D,GAAexoC,GACtB,GAAIuoC,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAASzyD,KAAO,WAChByxD,IAGIC,GAAaC,EAAUO,aACzBO,EAAS94D,GAAKk4D,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAASr5B,OAASlP,EAClBuoC,EAASzZ,KAAO9uB,EAAM8uB,KACtByZ,EAAS7S,KAAO11B,EAAM01B,KACtB6S,EAASvoC,MAAQA,EAAMA,MAGvBqoC,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAASzZ,WACTyZ,GAAS7S,WACT6S,GAASvoC,YACTuoC,GAASr5B,OAGXlP,EAAM4oC,YACT5oC,EAAM4oC,cAER5oC,EAAM4oC,UAAUzxD,KAAKoxD,GAGvB,MAAOA,GAYT,QAASG,GAAyB1oC,GAEhC,MAAa,QAAT2nC,GACFJ,IAGAvnC,EAAM8uB,KAAO+Z,IACN,QAES,QAATlB,GACPJ,IAGAvnC,EAAM01B,KAAOmT,IACN,QAES,SAATlB,GACPJ,IAGAvnC,EAAMA,MAAQ6oC,IACP,SAGF,KAQT,QAASF,GAAmB3oC,EAAOvwB,GAEjC,GAAIq/C,IACFr/C,GAAIA,GAEF23D,EAAOyB,GACPzB,KACFtY,EAAKsY,KAAOA,GAEdF,EAAQlnC,EAAO8uB,GAGf2Z,EAAUzoC,EAAOvwB,GAQnB,QAASg5D,GAAUzoC,EAAOrI,GACxB,KAAgB,MAATgwC,GAA0B,MAATA,GAAe,CACrC,GAAI/vC,GACA9hB,EAAO6xD,CACXJ,IAEA,IAAIgB,GAAWC,EAAcxoC,EAC7B,IAAIuoC,EACF3wC,EAAK2wC,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvBrwC,GAAK+vC,EACLT,EAAQlnC,GACNvwB,GAAImoB,IAEN2vC,IAIF,GAAIH,GAAOyB,IAGPnT,EAAO4R,EAAWtnC,EAAOrI,EAAMC,EAAI9hB,EAAMsxD,EAC7CC,GAAQrnC,EAAO01B,GAEf/9B,EAAOC,GASX,QAASixC,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAItiD,GAAOgiD,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAI5xD,GAAQsxD,CACZrgD,GAAS8/C,EAAMzhD,EAAMtP,GAErBkxD,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAI3gD,aAAY2gD,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAarwD,EAAQ,KAStF,QAAS6wD,GAAMrwC,EAAMixC,GACnB,MAAQjxC,GAAKnjB,QAAUo0D,EAAajxC,EAAQA,EAAK7d,OAAO,EAAG,IAAM,MASnE,QAAS+uD,GAASC,EAAQC,EAAQjwB,GAC5BhkC,MAAMC,QAAQ+zD,GAChBA,EAAOzxD,QAAQ,SAAU2xD,GACnBl0D,MAAMC,QAAQg0D,GAChBA,EAAO1xD,QAAQ,SAAU4xD,GACvBnwB,EAAGkwB,EAAOC,KAIZnwB,EAAGkwB,EAAOD,KAKVj0D,MAAMC,QAAQg0D,GAChBA,EAAO1xD,QAAQ,SAAU4xD,GACvBnwB,EAAGgwB,EAAQG,KAIbnwB,EAAGgwB,EAAQC,GAWjB,QAAS/Y,GAAY7tC,GA+BjB,QAAS+mD,GAAYC,GACnB,GAAIC,IACF5xC,KAAM2xC,EAAQ3xC,KACdC,GAAI0xC,EAAQ1xC,GAId,OAFAovC,GAAMuC,EAAWD,EAAQlC,MACzBmC,EAAU9sD,MAAyB,MAAhB6sD,EAAQxzD,KAAgB,QAAU,OAC9CyzD,EApCX,GAAIrZ,GAAUyW,EAASrkD,GACnBknD,GACFhjB,SACAa,SACArpC,WAkFF,OA9EIkyC,GAAQ1J,OACV0J,EAAQ1J,MAAMhvC,QAAQ,SAAUiyD,GAC9B,GAAIC,IACFj6D,GAAIg6D,EAAQh6D,GACZunB,MAAO5jB,OAAOq2D,EAAQzyC,OAASyyC,EAAQh6D,IAEzCu3D,GAAM0C,EAAWD,EAAQrC,MACrBsC,EAAU7iB,QACZ6iB,EAAU9iB,MAAQ,SAEpB4iB,EAAUhjB,MAAMrvC,KAAKuyD,KAKrBxZ,EAAQ7I,OAgBV6I,EAAQ7I,MAAM7vC,QAAQ,SAAU8xD,GAC9B,GAAI3xC,GAAMC,CAERD,GADE2xC,EAAQ3xC,eAAgBpiB,QACnB+zD,EAAQ3xC,KAAK6uB,OAIlB/2C,GAAI65D,EAAQ3xC,MAKdC,EADE0xC,EAAQ1xC,aAAcriB,QACnB+zD,EAAQ1xC,GAAG4uB,OAId/2C,GAAI65D,EAAQ1xC,IAIZ0xC,EAAQ3xC,eAAgBpiB,SAAU+zD,EAAQ3xC,KAAK0vB,OACjDiiB,EAAQ3xC,KAAK0vB,MAAM7vC,QAAQ,SAAUmyD,GACnC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUniB,MAAMlwC,KAAKoyD,KAIzBP,EAASrxC,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAI+xC,GAAUrC,EAAWkC,EAAW7xC,EAAKloB,GAAImoB,EAAGnoB,GAAI65D,EAAQxzD,KAAMwzD,EAAQlC,MACtEmC,EAAYF,EAAYM,EAC5BH,GAAUniB,MAAMlwC,KAAKoyD,KAGnBD,EAAQ1xC,aAAcriB,SAAU+zD,EAAQ1xC,GAAGyvB,OAC7CiiB,EAAQ1xC,GAAGyvB,MAAM7vC,QAAQ,SAAUmyD,GACjC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUniB,MAAMlwC,KAAKoyD,OAOzBrZ,EAAQkX,OACVoC,EAAUxrD,QAAUkyC,EAAQkX,MAGvBoC,EAnyBT,GAAI/B,IACFC,KAAO,EACPG,UAAY,EACZG,WAAY,EACZE,QAAU,GAIRH,GACF6B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJ1rC,EAAM,GACNpnB,EAAQ,EACRzH,EAAI,GACJ83D,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxB/3D,GAAQ23D,SAAWA,EACnB33D,EAAQmhD,WAAaA,GAKjB,SAASlhD,EAAQD,GAGrB,QAASshD,GAAW+Z,EAAWrsD,GAC7B,GAAIqpC,MACAb,IACJp3C,MAAK4O,SACHqpC,OACEO,cAAc,GAEhBpB,OACE8jB,eAAe,EACfzwD,YAAY,IAIArE,SAAZwI,IACF5O,KAAK4O,QAAQwoC,MAAqB,cAAIxoC,EAAQssD,eAAgB,EAC9Dl7D,KAAK4O,QAAQwoC,MAAkB,WAAOxoC,EAAQnE,YAAgB,EAC9DzK,KAAK4O,QAAQqpC,MAAoB,aAAKrpC,EAAQ4pC,cAAgB,EAKhE,KAAK,GAFD2iB,GAASF,EAAUhjB,MACnBmjB,EAASH,EAAU7jB,MACdhyC,EAAI,EAAGA,EAAI+1D,EAAO51D,OAAQH,IAAK,CACtC,GAAIkhD,MACA+U,EAAQF,EAAO/1D,EACnBkhD,GAAS,GAAI+U,EAAMh7D,GACnBimD,EAAW,KAAI+U,EAAMC,OACrBhV,EAAS,GAAI+U,EAAM7xD,OACnB88C,EAAiB,WAAI+U,EAAM5lB,WAG3B6Q,EAAY,MAAI+U,EAAM3wD,MACtB47C,EAAmB,aAAsBlgD,SAAlBkgD,EAAY,OAAkB,EAAQtmD,KAAK4O,QAAQ4pC,aAC1EP,EAAMlwC,KAAKu+C,GAGb,IAAK,GAAIlhD,GAAI,EAAGA,EAAIg2D,EAAO71D,OAAQH,IAAK,CACtC,GAAIs6C,MACA6b,EAAQH,EAAOh2D,EACnBs6C,GAAS,GAAI6b,EAAMl7D,GACnBq/C,EAAiB,WAAI6b,EAAM9lB,WAC3BiK,EAAQ,EAAI6b,EAAMhpD,EAClBmtC,EAAQ,EAAI6b,EAAM/oD,EAClBktC,EAAY,MAAI6b,EAAM3zC,MAEpB83B,EAAY,MADuB,GAAjC1/C,KAAK4O,QAAQwoC,MAAM3sC,WACL8wD,EAAM7wD,MAGUtE,SAAhBm1D,EAAM7wD,OAAuBiB,WAAW4vD,EAAM7wD,MAAOkB,OAAO2vD,EAAM7wD,OAAStE,OAE7Fs5C,EAAa,OAAI6b,EAAM1oD,KACvB6sC,EAAqB,eAAI1/C,KAAK4O,QAAQwoC,MAAM8jB,cAC5Cxb,EAAqB,eAAI1/C,KAAK4O,QAAQwoC,MAAM8jB,cAC5C9jB,EAAMrvC,KAAK23C,GAGb,OAAQtI,MAAMA,EAAOa,MAAMA,GAG7Br4C,EAAQshD,WAAaA,GAIjB,SAASrhD,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAX0H,SAA2BA,OAAe,QAAKpH,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAX0H,QACQA,OAAe,QAAKpH,EAAoB,IAGxC,WACf,KAAMuD,OAAM,+DAOZ,SAAS5D,EAAQD,EAASM,GAqB9B,QAASw1B,MAnBT,GAAIxZ,GAAUhc,EAAoB,IAC9BogC,EAASpgC,EAAoB,IAC7BS,EAAOT,EAAoB,GAQ3Bk/C,GAPUl/C,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IACjBA,EAAoB,IACjBA,EAAoB,IACrBA,EAAoB,IACvBA,EAAoB,IAClBA,EAAoB,IAYpCgc,GAAQwZ,EAAKhiB,WASbgiB,EAAKhiB,UAAU0gB,QAAU,SAAUtb,GACjC9Y,KAAKuvB,OAELvvB,KAAKuvB,IAAI7vB,KAAuBqS,SAASM,cAAc,OACvDrS,KAAKuvB,IAAI5jB,WAAuBoG,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIwQ,mBAAuBhuB,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIuT,qBAAuB/wB,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIia,gBAAuBz3B,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIisC,cAAuBzpD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIksC,eAAuB1pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIjE,OAAuBvZ,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIloB,KAAuB0K,SAASM,cAAc,OACvDrS,KAAKuvB,IAAI/I,MAAuBzU,SAASM,cAAc,OACvDrS,KAAKuvB,IAAI9nB,IAAuBsK,SAASM,cAAc,OACvDrS,KAAKuvB,IAAI9M,OAAuB1Q,SAASM,cAAc,OACvDrS,KAAKuvB,IAAImsC,UAAuB3pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIosC,aAAuB5pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIqsC,cAAuB7pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIssC,iBAAuB9pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIusC,eAAuB/pD,SAASM,cAAc,OACvDrS,KAAKuvB,IAAIwsC,kBAAuBhqD,SAASM,cAAc,OAEvDrS,KAAKuvB,IAAI7vB,KAAKkI,UAA4B,oBAC1C5H,KAAKuvB,IAAI5jB,WAAW/D,UAAsB,sBAC1C5H,KAAKuvB,IAAIwQ,mBAAmBn4B,UAAc,+BAC1C5H,KAAKuvB,IAAIuT,qBAAqBl7B,UAAY,iCAC1C5H,KAAKuvB,IAAIia,gBAAgB5hC,UAAiB,kBAC1C5H,KAAKuvB,IAAIisC,cAAc5zD,UAAmB,gBAC1C5H,KAAKuvB,IAAIksC,eAAe7zD,UAAkB,iBAC1C5H,KAAKuvB,IAAI9nB,IAAIG,UAA6B,eAC1C5H,KAAKuvB,IAAI9M,OAAO7a,UAA0B,kBAC1C5H,KAAKuvB,IAAIloB,KAAKO,UAA4B,UAC1C5H,KAAKuvB,IAAIjE,OAAO1jB,UAA0B,UAC1C5H,KAAKuvB,IAAI/I,MAAM5e,UAA2B,UAC1C5H,KAAKuvB,IAAImsC,UAAU9zD,UAAuB,aAC1C5H,KAAKuvB,IAAIosC,aAAa/zD,UAAoB,gBAC1C5H,KAAKuvB,IAAIqsC,cAAch0D,UAAmB,aAC1C5H,KAAKuvB,IAAIssC,iBAAiBj0D,UAAgB,gBAC1C5H,KAAKuvB,IAAIusC,eAAel0D,UAAkB,aAC1C5H,KAAKuvB,IAAIwsC,kBAAkBn0D,UAAe,gBAE1C5H,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAI5jB,YACnC3L,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAIwQ,oBACnC//B,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAIuT,sBACnC9iC,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAIia,iBACnCxpC,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAIisC,eACnCx7D,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAIksC,gBACnCz7D,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAI9nB,KACnCzH,KAAKuvB,IAAI7vB,KAAKuS,YAAYjS,KAAKuvB,IAAI9M,QAEnCziB,KAAKuvB,IAAIia,gBAAgBv3B,YAAYjS,KAAKuvB,IAAIjE,QAC9CtrB,KAAKuvB,IAAIisC,cAAcvpD,YAAYjS,KAAKuvB,IAAIloB,MAC5CrH,KAAKuvB,IAAIksC,eAAexpD,YAAYjS,KAAKuvB,IAAI/I,OAE7CxmB,KAAKuvB,IAAIia,gBAAgBv3B,YAAYjS,KAAKuvB,IAAImsC,WAC9C17D,KAAKuvB,IAAIia,gBAAgBv3B,YAAYjS,KAAKuvB,IAAIosC,cAC9C37D,KAAKuvB,IAAIisC,cAAcvpD,YAAYjS,KAAKuvB,IAAIqsC,eAC5C57D,KAAKuvB,IAAIisC,cAAcvpD,YAAYjS,KAAKuvB,IAAIssC,kBAC5C77D,KAAKuvB,IAAIksC,eAAexpD,YAAYjS,KAAKuvB,IAAIusC,gBAC7C97D,KAAKuvB,IAAIksC,eAAexpD,YAAYjS,KAAKuvB,IAAIwsC,mBAE7C/7D,KAAK2T,GAAG,cAAe3T,KAAK4gB,OAAO4T,KAAKx0B,OACxCA,KAAK2T,GAAG,SAAU3T,KAAK4gB,OAAO4T,KAAKx0B,OACnCA,KAAK2T,GAAG,QAAS3T,KAAK85B,SAAStF,KAAKx0B,OACpCA,KAAK2T,GAAG,QAAS3T,KAAK+5B,SAASvF,KAAKx0B,OACpCA,KAAK2T,GAAG,YAAa3T,KAAKy5B,aAAajF,KAAKx0B,OAC5CA,KAAK2T,GAAG,OAAQ3T,KAAK05B,QAAQlF,KAAKx0B,OAIlCA,KAAK2D,OAAS28B,EAAOtgC,KAAKuvB,IAAI7vB,MAC5B0J,gBAAgB,IAElBpJ,KAAKg8D,YAEL,IAAIznD,GAAKvU,KACLi8D,GACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBAgChB,IA9BAA,EAAO7zD,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAIqzD,IAAQ7yD,GAAO+K,OAAOvO,MAAM6N,UAAUglB,MAAMn4B,KAAK+E,UAAW,GAC5DiP,GAAGouC,YACLpuC,EAAG2Y,KAAK7U,MAAM9D,EAAI2nD,GAGtB3nD,GAAG5Q,OAAOgQ,GAAGtK,EAAOR,GACpB0L,EAAGynD,UAAU3yD,GAASR,IAIxB7I,KAAK4F,OACHlG,QACAiM,cACA69B,mBACAgyB,iBACAC,kBACAnwC,UACAjkB,QACAmf,SACA/e,OACAgb,UACA7W,UACAuwD,UAAW,EACXC,aAAc,GAEhBp8D,KAAKu5B,UAGAzgB,EAAW,KAAM,IAAIrV,OAAM,wBAChCqV,GAAU7G,YAAYjS,KAAKuvB,IAAI7vB,OA4BjCg2B,EAAKhiB,UAAUuI,WAAa,SAAUrN,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cAAe,aAAc,iBACtH1N,GAAKgF,gBAAgB0I,EAAQrO,KAAK4O,QAASA,GAEvC,cAAgBA,KACdA,EAAQmzC,WACV/hD,KAAKgiD,UAAY,GAAI5C,GAAUp/C,KAAKuvB,IAAI7vB,MAGpCM,KAAKgiD,YACPhiD,KAAKgiD,UAAU1iB,gBACRt/B,MAAKgiD,YAMlBhiD,KAAKq8D,kBASP,GALAr8D,KAAK8B,WAAWsG,QAAQ,SAAUk0D,GAChCA,EAAUrgD,WAAWrN,KAInBA,GAAWA,EAAQkH,MACrB,KAAM,IAAIrS,OAAM,wEAIlBzD,MAAK4gB,UAOP8U,EAAKhiB,UAAUivC,SAAW,WACxB,OAAQ3iD,KAAKgiD,WAAahiD,KAAKgiD,UAAUkK,QAM3Cx2B,EAAKhiB,UAAU4rB,QAAU,WAEvBt/B,KAAK+W,QAGL/W,KAAK8T,MAGL9T,KAAKu8D,kBAGDv8D,KAAKuvB,IAAI7vB,KAAKiK,YAChB3J,KAAKuvB,IAAI7vB,KAAKiK,WAAWgI,YAAY3R,KAAKuvB,IAAI7vB,MAEhDM,KAAKuvB,IAAM,KAGPvvB,KAAKgiD,YACPhiD,KAAKgiD,UAAU1iB,gBACRt/B,MAAKgiD,UAId,KAAK,GAAI34C,KAASrJ,MAAKg8D,UACjBh8D,KAAKg8D,UAAUt2D,eAAe2D,UACzBrJ,MAAKg8D,UAAU3yD,EAG1BrJ,MAAKg8D,UAAY,KACjBh8D,KAAK2D,OAAS,KAGd3D,KAAK8B,WAAWsG,QAAQ,SAAUk0D,GAChCA,EAAUh9B,YAGZt/B,KAAKq0B,KAAO,MAQdqB,EAAKhiB,UAAU+sB,cAAgB,SAAUnG,GACvC,IAAKt6B,KAAKo1B,WACR,KAAM,IAAI3xB,OAAM,yDAGlBzD,MAAKo1B,WAAWqL,cAAcnG,IAOhC5E,EAAKhiB,UAAUgtB,cAAgB,WAC7B,IAAK1gC,KAAKo1B,WACR,KAAM,IAAI3xB,OAAM,yDAGlB;MAAOzD,MAAKo1B,WAAWsL,iBAQzBhL,EAAKhiB,UAAUw2B,gBAAkB,WAC/B,MAAOlqC,MAAKq1B,SAAWr1B,KAAKq1B,QAAQ6U,uBAetCxU,EAAKhiB,UAAUqD,MAAQ,SAASylD,KAEzBA,GAAQA,EAAKz6D,QAChB/B,KAAKy1B,SAAS,QAIX+mC,GAAQA,EAAK3oC,SAChB7zB,KAAKw1B,UAAU,QAIZgnC,GAAQA,EAAK5tD,WAChB5O,KAAK8B,WAAWsG,QAAQ,SAAUk0D,GAChCA,EAAUrgD,WAAWqgD,EAAUvoC,kBAGjC/zB,KAAKic,WAAWjc,KAAK+zB,kBAazB2B,EAAKhiB,UAAUqiB,IAAM,SAASnnB,GAE5B,GAAI6tD,GAAYz8D,KAAKq2B,eAGjBzmB,EAAQ6sD,EAAUnxD,IAClB+E,EAAMosD,EAAU1vD,GACpB,IAAa,MAAT6C,GAAwB,MAAPS,EAAa,CAChC,GAAI8hB,GAAY9hB,EAAIzJ,UAAYgJ,EAAMhJ,SACtB,IAAZurB,IAEFA,EAAW,OAEbviB,EAAQ,GAAI1L,MAAK0L,EAAMhJ,UAAuB,IAAXurB,GACnC9hB,EAAM,GAAInM,MAAKmM,EAAIzJ,UAAuB,IAAXurB,GAIjC,GAAc,OAAVviB,GAA0B,OAARS,EAAtB,CAIA,GAAIylB,GAAWlnB,GAA+BxI,SAApBwI,EAAQknB,QAAyBlnB,EAAQknB,SAAU,CAC7E91B,MAAKgP,MAAMkkB,SAAStjB,EAAOS,EAAKylB,KAsBlCJ,EAAKhiB,UAAUmiB,UAAY,SAASjmB,EAAOS,EAAKzB,GAC9C,GAAIknB,GAAWlnB,GAA+BxI,SAApBwI,EAAQknB,QAAyBlnB,EAAQknB,SAAU,CAC7E,IAAwB,GAApBxwB,UAAUC,OAAa,CACzB,GAAIyJ,GAAQ1J,UAAU,EACtBtF,MAAKgP,MAAMkkB,SAASlkB,EAAMY,MAAOZ,EAAMqB,IAAKylB,OAG5C91B,MAAKgP,MAAMkkB,SAAStjB,EAAOS,EAAKylB,IAcpCJ,EAAKhiB,UAAUsT,OAAS,SAASsT,EAAM1rB,GACrC,GAAIujB,GAAWnyB,KAAKgP,MAAMqB,IAAMrQ,KAAKgP,MAAMY,MACvC3B,EAAItN,EAAK8F,QAAQ6zB,EAAM,QAAQ1zB,UAE/BgJ,EAAQ3B,EAAIkkB,EAAW,EACvB9hB,EAAMpC,EAAIkkB,EAAW,EACrB2D,EAAWlnB,GAA+BxI,SAApBwI,EAAQknB,QAAyBlnB,EAAQknB,SAAU,CAE7E91B,MAAKgP,MAAMkkB,SAAStjB,EAAOS,EAAKylB,IAOlCJ,EAAKhiB,UAAUgpD,UAAY,WACzB,GAAI1tD,GAAQhP,KAAKgP,MAAMisB,UACvB,QACErrB,MAAO,GAAI1L,MAAK8K,EAAMY,OACtBS,IAAK,GAAInM,MAAK8K,EAAMqB,OAQxBqlB,EAAKhiB,UAAUkN,OAAS,WACtB,GAAI4e,IAAU,EACZ5wB,EAAU5O,KAAK4O,QACfhJ,EAAQ5F,KAAK4F,MACb2pB,EAAMvvB,KAAKuvB,GAEb,IAAKA,EAAL,CAG2B,OAAvB3gB,EAAQqlB,aACVtzB,EAAKgH,aAAa4nB,EAAI7vB,KAAM,OAC5BiB,EAAKsH,gBAAgBsnB,EAAI7vB,KAAM,YAG/BiB,EAAKsH,gBAAgBsnB,EAAI7vB,KAAM,OAC/BiB,EAAKgH,aAAa4nB,EAAI7vB,KAAM,WAI9B6vB,EAAI7vB,KAAK2N,MAAM6mB,UAAYvzB,EAAKiJ,OAAOK,OAAO2E,EAAQslB,UAAW,IACjE3E,EAAI7vB,KAAK2N,MAAM8mB,UAAYxzB,EAAKiJ,OAAOK,OAAO2E,EAAQulB,UAAW,IACjE5E,EAAI7vB,KAAK2N,MAAM0F,MAAQpS,EAAKiJ,OAAOK,OAAO2E,EAAQmE,MAAO,IAGzDnN,EAAMgG,OAAOvE,MAAUkoB,EAAIia,gBAAgB5Z,YAAcL,EAAIia,gBAAgB7qB,aAAe,EAC5F/Y,EAAMgG,OAAO4a,MAAS5gB,EAAMgG,OAAOvE,KACnCzB,EAAMgG,OAAOnE,KAAU8nB,EAAIia,gBAAgB1Z,aAAeP,EAAIia,gBAAgBxlB,cAAgB,EAC9Fpe,EAAMgG,OAAO6W,OAAS7c,EAAMgG,OAAOnE,GACnC,IAAIk1D,GAAkBptC,EAAI7vB,KAAKowB,aAAeP,EAAI7vB,KAAKskB,aACnD44C,EAAkBrtC,EAAI7vB,KAAKkwB,YAAcL,EAAI7vB,KAAKif,WAIb,KAArC4Q,EAAIia,gBAAgBxlB,eACtBpe,EAAMgG,OAAOvE,KAAOzB,EAAMgG,OAAOnE,IACjC7B,EAAMgG,OAAO4a,MAAS5gB,EAAMgG,OAAOvE,MAEP,IAA1BkoB,EAAI7vB,KAAKskB,eACX44C,EAAkBD,GAKpB/2D,EAAM0lB,OAAOtY,OAASuc,EAAIjE,OAAOwE,aACjClqB,EAAMyB,KAAK2L,OAAWuc,EAAIloB,KAAKyoB,aAC/BlqB,EAAM4gB,MAAMxT,OAAUuc,EAAI/I,MAAMsJ,aAChClqB,EAAM6B,IAAIuL,OAAYuc,EAAI9nB,IAAIuc,eAAoBpe,EAAMgG,OAAOnE,IAC/D7B,EAAM6c,OAAOzP,OAASuc,EAAI9M,OAAOuB,eAAiBpe,EAAMgG,OAAO6W,MAM/D,IAAIoN,GAAgB/qB,KAAKiI,IAAInH,EAAMyB,KAAK2L,OAAQpN,EAAM0lB,OAAOtY,OAAQpN,EAAM4gB,MAAMxT,QAC7E6pD,EAAaj3D,EAAM6B,IAAIuL,OAAS6c,EAAgBjqB,EAAM6c,OAAOzP,OAC/D2pD,EAAmB/2D,EAAMgG,OAAOnE,IAAM7B,EAAMgG,OAAO6W,MACrD8M,GAAI7vB,KAAK2N,MAAM2F,OAASrS,EAAKiJ,OAAOK,OAAO2E,EAAQoE,OAAQ6pD,EAAa,MAGxEj3D,EAAMlG,KAAKsT,OAASuc,EAAI7vB,KAAKowB,aAC7BlqB,EAAM+F,WAAWqH,OAASpN,EAAMlG,KAAKsT,OAAS2pD,CAC9C,IAAI3lC,GAAkBpxB,EAAMlG,KAAKsT,OAASpN,EAAM6B,IAAIuL,OAASpN,EAAM6c,OAAOzP,OACxE2pD,CACF/2D,GAAM4jC,gBAAgBx2B,OAAUgkB,EAChCpxB,EAAM41D,cAAcxoD,OAAYgkB,EAChCpxB,EAAM61D,eAAezoD,OAAWpN,EAAM41D,cAAcxoD,OAGpDpN,EAAMlG,KAAKqT,MAAQwc,EAAI7vB,KAAKkwB,YAC5BhqB,EAAM+F,WAAWoH,MAAQnN,EAAMlG,KAAKqT,MAAQ6pD,EAC5Ch3D,EAAMyB,KAAK0L,MAAQwc,EAAIisC,cAAc78C,cAAkB/Y,EAAMgG,OAAOvE,KACpEzB,EAAM41D,cAAczoD,MAAQnN,EAAMyB,KAAK0L,MACvCnN,EAAM4gB,MAAMzT,MAAQwc,EAAIksC,eAAe98C,cAAgB/Y,EAAMgG,OAAO4a,MACpE5gB,EAAM61D,eAAe1oD,MAAQnN,EAAM4gB,MAAMzT,KACzC,IAAI+pD,GAAcl3D,EAAMlG,KAAKqT,MAAQnN,EAAMyB,KAAK0L,MAAQnN,EAAM4gB,MAAMzT,MAAQ6pD,CAC5Eh3D,GAAM0lB,OAAOvY,MAAiB+pD,EAC9Bl3D,EAAM4jC,gBAAgBz2B,MAAQ+pD,EAC9Bl3D,EAAM6B,IAAIsL,MAAoB+pD,EAC9Bl3D,EAAM6c,OAAO1P,MAAiB+pD,EAG9BvtC,EAAI5jB,WAAW0B,MAAM2F,OAAmBpN,EAAM+F,WAAWqH,OAAS,KAClEuc,EAAIwQ,mBAAmB1yB,MAAM2F,OAAWpN,EAAM+F,WAAWqH,OAAS,KAClEuc,EAAIuT,qBAAqBz1B,MAAM2F,OAASpN,EAAM4jC,gBAAgBx2B,OAAS,KACvEuc,EAAIia,gBAAgBn8B,MAAM2F,OAAcpN,EAAM4jC,gBAAgBx2B,OAAS,KACvEuc,EAAIisC,cAAcnuD,MAAM2F,OAAgBpN,EAAM41D,cAAcxoD,OAAS,KACrEuc,EAAIksC,eAAepuD,MAAM2F,OAAepN,EAAM61D,eAAezoD,OAAS,KAEtEuc,EAAI5jB,WAAW0B,MAAM0F,MAAmBnN,EAAM+F,WAAWoH,MAAQ,KACjEwc,EAAIwQ,mBAAmB1yB,MAAM0F,MAAWnN,EAAM4jC,gBAAgBz2B,MAAQ,KACtEwc,EAAIuT,qBAAqBz1B,MAAM0F,MAASnN,EAAM+F,WAAWoH,MAAQ,KACjEwc,EAAIia,gBAAgBn8B,MAAM0F,MAAcnN,EAAM0lB,OAAOvY,MAAQ,KAC7Dwc,EAAI9nB,IAAI4F,MAAM0F,MAA0BnN,EAAM6B,IAAIsL,MAAQ,KAC1Dwc,EAAI9M,OAAOpV,MAAM0F,MAAuBnN,EAAM6c,OAAO1P,MAAQ,KAG7Dwc,EAAI5jB,WAAW0B,MAAMhG,KAAiB,IACtCkoB,EAAI5jB,WAAW0B,MAAM5F,IAAiB,IACtC8nB,EAAIwQ,mBAAmB1yB,MAAMhG,KAAUzB,EAAMyB,KAAK0L,MAAQnN,EAAMgG,OAAOvE,KAAQ,KAC/EkoB,EAAIwQ,mBAAmB1yB,MAAM5F,IAAS,IACtC8nB,EAAIuT,qBAAqBz1B,MAAMhG,KAAO,IACtCkoB,EAAIuT,qBAAqBz1B,MAAM5F,IAAO7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAIia,gBAAgBn8B,MAAMhG,KAAYzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAIia,gBAAgBn8B,MAAM5F,IAAY7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAIisC,cAAcnuD,MAAMhG,KAAc,IACtCkoB,EAAIisC,cAAcnuD,MAAM5F,IAAc7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAIksC,eAAepuD,MAAMhG,KAAczB,EAAMyB,KAAK0L,MAAQnN,EAAM0lB,OAAOvY,MAAS,KAChFwc,EAAIksC,eAAepuD,MAAM5F,IAAa7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAI9nB,IAAI4F,MAAMhG,KAAwBzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAI9nB,IAAI4F,MAAM5F,IAAwB,IACtC8nB,EAAI9M,OAAOpV,MAAMhG,KAAqBzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAI9M,OAAOpV,MAAM5F,IAAsB7B,EAAM6B,IAAIuL,OAASpN,EAAM4jC,gBAAgBx2B,OAAU,KAI1FhT,KAAK+8D,kBAGL,IAAIj0C,GAAS9oB,KAAK4F,MAAMu2D,SACG,WAAvBvtD,EAAQqlB,cACVnL,GAAUhkB,KAAKiI,IAAI/M,KAAK4F,MAAM4jC,gBAAgBx2B,OAAShT,KAAK4F,MAAM0lB,OAAOtY,OACvEhT,KAAK4F,MAAMgG,OAAOnE,IAAMzH,KAAK4F,MAAMgG,OAAO6W,OAAQ,IAEtD8M,EAAIjE,OAAOje,MAAMhG,KAAO,IACxBkoB,EAAIjE,OAAOje,MAAM5F,IAAOqhB,EAAS,KACjCyG,EAAIloB,KAAKgG,MAAMhG,KAAS,IACxBkoB,EAAIloB,KAAKgG,MAAM5F,IAASqhB,EAAS,KACjCyG,EAAI/I,MAAMnZ,MAAMhG,KAAQ,IACxBkoB,EAAI/I,MAAMnZ,MAAM5F,IAAQqhB,EAAS,IAGjC,IAAIk0C,GAAwC,GAAxBh9D,KAAK4F,MAAMu2D,UAAiB,SAAW,GACvDc,EAAmBj9D,KAAK4F,MAAMu2D,WAAan8D,KAAK4F,MAAMw2D,aAAe,SAAW,EACpF7sC,GAAImsC,UAAUruD,MAAMypB,WAAsBkmC,EAC1CztC,EAAIosC,aAAatuD,MAAMypB,WAAmBmmC,EAC1C1tC,EAAIqsC,cAAcvuD,MAAMypB,WAAkBkmC,EAC1CztC,EAAIssC,iBAAiBxuD,MAAMypB,WAAemmC,EAC1C1tC,EAAIusC,eAAezuD,MAAMypB,WAAiBkmC,EAC1CztC,EAAIwsC,kBAAkB1uD,MAAMypB,WAAcmmC,EAG1Cj9D,KAAK8B,WAAWsG,QAAQ,SAAUk0D,GAChC98B,EAAU88B,EAAU17C,UAAY4e,IAE9BA,GAEFx/B,KAAK4gB,WAKT8U,EAAKhiB,UAAUwpD,QAAU,WACvB,KAAM,IAAIz5D,OAAM,wDAUlBiyB,EAAKhiB,UAAUwsB,eAAiB,SAAS5F,GACvC,IAAKt6B,KAAKm1B,YACR,KAAM,IAAI1xB,OAAM,sCAGlBzD,MAAKm1B,YAAY+K,eAAe5F,IAQlC5E,EAAKhiB,UAAUysB,eAAiB,WAC9B,IAAKngC,KAAKm1B,YACR,KAAM,IAAI1xB,OAAM,sCAGlB,OAAOzD,MAAKm1B,YAAYgL,kBAU1BzK,EAAKhiB,UAAUqhB,QAAU,SAASxiB,GAChC,GAAI2oB,GAAal7B,KAAKgP,MAAMksB,WAAWl7B,KAAK4F,MAAM0lB,OAAOvY,MACzD,OAAO,IAAI7O,MAAKqO,EAAI2oB,EAAW9e,MAAQ8e,EAAWpS,SAWpD4M,EAAKhiB,UAAUuhB,cAAgB,SAAS1iB,GACtC,GAAI2oB,GAAal7B,KAAKgP,MAAMksB,WAAWl7B,KAAK4F,MAAMlG,KAAKqT,MACvD,OAAO,IAAI7O,MAAKqO,EAAI2oB,EAAW9e,MAAQ8e,EAAWpS,SAWpD4M,EAAKhiB,UAAUihB,UAAY,SAAS2F,GAClC,GAAIY,GAAal7B,KAAKgP,MAAMksB,WAAWl7B,KAAK4F,MAAM0lB,OAAOvY,MACzD,QAAQunB,EAAK1zB,UAAYs0B,EAAWpS,QAAUoS,EAAW9e,OAa3DsZ,EAAKhiB,UAAUmhB,gBAAkB,SAASyF,GACxC,GAAIY,GAAal7B,KAAKgP,MAAMksB,WAAWl7B,KAAK4F,MAAMlG,KAAKqT,MACvD,QAAQunB,EAAK1zB,UAAYs0B,EAAWpS,QAAUoS,EAAW9e,OAQ3DsZ,EAAKhiB,UAAU2oD,gBAAkB,WACA,GAA3Br8D,KAAK4O,QAAQolB,WACfh0B,KAAKm9D,mBAGLn9D,KAAKu8D,mBAST7mC,EAAKhiB,UAAUypD,iBAAmB,WAChC,GAAI5oD,GAAKvU,IAETA,MAAKu8D,kBAELv8D,KAAKo9D,UAAY,WACf,MAA6B,IAAzB7oD,EAAG3F,QAAQolB,eAEbzf,GAAGgoD,uBAIDhoD,EAAGgb,IAAI7vB,OAKJ6U,EAAGgb,IAAI7vB,KAAKkwB,aAAerb,EAAG3O,MAAM6kC,WACtCl2B,EAAGgb,IAAI7vB,KAAKowB,cAAgBvb,EAAG3O,MAAMy3D,cACtC9oD,EAAG3O,MAAM6kC,UAAYl2B,EAAGgb,IAAI7vB,KAAKkwB,YACjCrb,EAAG3O,MAAMy3D,WAAa9oD,EAAGgb,IAAI7vB,KAAKowB,aAElCvb,EAAG2Y,KAAK,aAMdvsB,EAAK+H,iBAAiBpB,OAAQ,SAAUtH,KAAKo9D,WAE7Cp9D,KAAKs9D,WAAaC,YAAYv9D,KAAKo9D,UAAW,MAOhD1nC,EAAKhiB,UAAU6oD,gBAAkB,WAC3Bv8D,KAAKs9D,aACPlrC,cAAcpyB,KAAKs9D,YACnBt9D,KAAKs9D,WAAal3D,QAIpBzF,EAAKuI,oBAAoB5B,OAAQ,SAAUtH,KAAKo9D,WAChDp9D,KAAKo9D,UAAY,MAQnB1nC,EAAKhiB,UAAUomB,SAAW,WACxB95B,KAAKu5B,MAAM4B,eAAgB,GAQ7BzF,EAAKhiB,UAAUqmB,SAAW,WACxB/5B,KAAKu5B,MAAM4B,eAAgB,GAQ7BzF,EAAKhiB,UAAU+lB,aAAe,WAC5Bz5B,KAAKu5B,MAAMikC,iBAAmBx9D,KAAK4F,MAAMu2D,WAQ3CzmC,EAAKhiB,UAAUgmB,QAAU,SAAUrwB,GAGjC,GAAKrJ,KAAKu5B,MAAM4B,cAAhB,CAEA,GAAIlN,GAAQ5kB,EAAM+xB,QAAQE,OAEtBmiC,EAAez9D,KAAK09D,gBACpBC,EAAe39D,KAAK49D,cAAc59D,KAAKu5B,MAAMikC,iBAAmBvvC,EAEhE0vC,IAAgBF,GAClBz9D,KAAK4gB,WAUT8U,EAAKhiB,UAAUkqD,cAAgB,SAAUzB,GAGvC,MAFAn8D,MAAK4F,MAAMu2D,UAAYA,EACvBn8D,KAAK+8D,mBACE/8D,KAAK4F,MAAMu2D,WAQpBzmC,EAAKhiB,UAAUqpD,iBAAmB,WAEhC,GAAIX,GAAet3D,KAAKwG,IAAItL,KAAK4F,MAAM4jC,gBAAgBx2B,OAAShT,KAAK4F,MAAM0lB,OAAOtY,OAAQ,EAc1F,OAbIopD,IAAgBp8D,KAAK4F,MAAMw2D,eAGG,UAA5Bp8D,KAAK4O,QAAQqlB,cACfj0B,KAAK4F,MAAMu2D,WAAcC,EAAep8D,KAAK4F,MAAMw2D,cAErDp8D,KAAK4F,MAAMw2D,aAAeA,GAIxBp8D,KAAK4F,MAAMu2D,UAAY,IAAGn8D,KAAK4F,MAAMu2D,UAAY,GACjDn8D,KAAK4F,MAAMu2D,UAAYC,IAAcp8D,KAAK4F,MAAMu2D,UAAYC,GAEzDp8D,KAAK4F,MAAMu2D,WAQpBzmC,EAAKhiB,UAAUgqD,cAAgB,WAC7B,MAAO19D,MAAK4F,MAAMu2D,WAGpBt8D,EAAOD,QAAU81B,GAKb,SAAS71B,EAAQD,EAASM,GAE9B,GAAIogC,GAASpgC,EAAoB,GAOjCN,GAAQ47B,YAAc,SAAS7yB,EAASU,GACtC,GAAIw0D,GAAY,KAMZhiC,EAAUyE,EAAOj3B,MAAMy0D,aAAaz0D,EAAOw0D,GAC3CziC,EAAUkF,EAAOj3B,MAAM00D,iBAAiB/9D,KAAM69D,EAAWhiC,EAASxyB,EAWtE,OAPI/E,OAAM82B,EAAQ9P,OAAO4O,SACvBkB,EAAQ9P,OAAO4O,MAAQ7wB,EAAM6wB,OAE3B51B,MAAM82B,EAAQ9P,OAAO6O,SACvBiB,EAAQ9P,OAAO6O,MAAQ9wB,EAAM8wB,OAGxBiB,IAML,SAASv7B,EAAQD,GAGrBA,EAAY,IACVs3B,QAAS,UACToD,KAAM,QAER16B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVo+D,OAAQ,aACR1jC,KAAM,QAER16B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,SAASC,EAAQD,GAGrBA,EAAY,IACVo3C,KAAM,OACNG,IAAK,kBACL8mB,KAAM,OACNnG,QAAS,WACTG,QAAS,WACTiG,SAAU,YACVjnB,SAAU,YACVknB,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,+BAEtB3+D,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVo3C,KAAM,WACNG,IAAK,uBACL8mB,KAAM,QACNnG,QAAS,iBACTG,QAAS,iBACTiG,SAAU,gBACVjnB,SAAU,gBACVknB,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,2CAEtB3+D,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,WAKoC,mBAA7B4+D,4BAKTA,yBAAyB9qD,UAAU4iD,OAAS,SAAS/jD,EAAGC,EAAGjG,GACzDvM,KAAK+mB,YACL/mB,KAAK8qB,IAAIvY,EAAGC,EAAGjG,EAAG,EAAG,EAAEzH,KAAKimB,IAAI,IASlCyzC,yBAAyB9qD,UAAU+qD,OAAS,SAASlsD,EAAGC,EAAGjG,GACzDvM,KAAK+mB,YACL/mB,KAAKiT,KAAKV,EAAIhG,EAAGiG,EAAIjG,EAAO,EAAJA,EAAW,EAAJA,IASjCiyD,yBAAyB9qD,UAAU6a,SAAW,SAAShc,EAAGC,EAAGjG,GAE3DvM,KAAK+mB,WAEL,IAAI3b,GAAQ,EAAJmB,EACJmyD,EAAKtzD,EAAI,EACTuzD,EAAK75D,KAAKqqB,KAAK,GAAK,EAAI/jB,EACxBD,EAAIrG,KAAKqqB,KAAK/jB,EAAIA,EAAIszD,EAAKA,EAE/B1+D,MAAKgnB,OAAOzU,EAAGC,GAAKrH,EAAIwzD,IACxB3+D,KAAKinB,OAAO1U,EAAImsD,EAAIlsD,EAAImsD,GACxB3+D,KAAKinB,OAAO1U,EAAImsD,EAAIlsD,EAAImsD,GACxB3+D,KAAKinB,OAAO1U,EAAGC,GAAKrH,EAAIwzD,IACxB3+D,KAAKonB,aASPo3C,yBAAyB9qD,UAAUkrD,aAAe,SAASrsD,EAAGC,EAAGjG,GAE/DvM,KAAK+mB,WAEL,IAAI3b,GAAQ,EAAJmB,EACJmyD,EAAKtzD,EAAI,EACTuzD,EAAK75D,KAAKqqB,KAAK,GAAK,EAAI/jB,EACxBD,EAAIrG,KAAKqqB,KAAK/jB,EAAIA,EAAIszD,EAAKA,EAE/B1+D,MAAKgnB,OAAOzU,EAAGC,GAAKrH,EAAIwzD,IACxB3+D,KAAKinB,OAAO1U,EAAImsD,EAAIlsD,EAAImsD,GACxB3+D,KAAKinB,OAAO1U,EAAImsD,EAAIlsD,EAAImsD,GACxB3+D,KAAKinB,OAAO1U,EAAGC,GAAKrH,EAAIwzD,IACxB3+D,KAAKonB,aASPo3C,yBAAyB9qD,UAAUmrD,KAAO,SAAStsD,EAAGC,EAAGjG,GAEvDvM,KAAK+mB,WAEL,KAAK,GAAI+3C,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAIj0C,GAAUi0C,EAAI,IAAM,EAAS,IAAJvyD,EAAc,GAAJA,CACvCvM,MAAKinB,OACD1U,EAAIsY,EAAS/lB,KAAKyY,IAAQ,EAAJuhD,EAAQh6D,KAAKimB,GAAK,IACxCvY,EAAIqY,EAAS/lB,KAAK4Y,IAAQ,EAAJohD,EAAQh6D,KAAKimB,GAAK,KAI9C/qB,KAAKonB,aAMPo3C,yBAAyB9qD,UAAUyiD,UAAY,SAAS5jD,EAAGC,EAAGu1C,EAAG58C,EAAGoB,GAClE,GAAIwyD,GAAMj6D,KAAKimB,GAAG,GACE,GAAhBg9B,EAAM,EAAIx7C,IAAYA,EAAMw7C,EAAI,GAChB,EAAhB58C,EAAM,EAAIoB,IAAYA,EAAMpB,EAAI,GACpCnL,KAAK+mB,YACL/mB,KAAKgnB,OAAOzU,EAAEhG,EAAEiG,GAChBxS,KAAKinB,OAAO1U,EAAEw1C,EAAEx7C,EAAEiG,GAClBxS,KAAK8qB,IAAIvY,EAAEw1C,EAAEx7C,EAAEiG,EAAEjG,EAAEA,EAAM,IAAJwyD,EAAY,IAAJA,GAAQ,GACrC/+D,KAAKinB,OAAO1U,EAAEw1C,EAAEv1C,EAAErH,EAAEoB,GACpBvM,KAAK8qB,IAAIvY,EAAEw1C,EAAEx7C,EAAEiG,EAAErH,EAAEoB,EAAEA,EAAE,EAAM,GAAJwyD,GAAO,GAChC/+D,KAAKinB,OAAO1U,EAAEhG,EAAEiG,EAAErH,GAClBnL,KAAK8qB,IAAIvY,EAAEhG,EAAEiG,EAAErH,EAAEoB,EAAEA,EAAM,GAAJwyD,EAAW,IAAJA,GAAQ,GACpC/+D,KAAKinB,OAAO1U,EAAEC,EAAEjG,GAChBvM,KAAK8qB,IAAIvY,EAAEhG,EAAEiG,EAAEjG,EAAEA,EAAM,IAAJwyD,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyB9qD,UAAU8iD,QAAU,SAASjkD,EAAGC,EAAGu1C,EAAG58C,GAC7D,GAAI6zD,GAAQ,SACRC,EAAMlX,EAAI,EAAKiX,EACfE,EAAM/zD,EAAI,EAAK6zD,EACfG,EAAK5sD,EAAIw1C,EACTqX,EAAK5sD,EAAIrH,EACTk0D,EAAK9sD,EAAIw1C,EAAI,EACbuX,EAAK9sD,EAAIrH,EAAI,CAEjBnL,MAAK+mB,YACL/mB,KAAKgnB,OAAOzU,EAAG+sD,GACft/D,KAAKu/D,cAAchtD,EAAG+sD,EAAKJ,EAAIG,EAAKJ,EAAIzsD,EAAG6sD,EAAI7sD,GAC/CxS,KAAKu/D,cAAcF,EAAKJ,EAAIzsD,EAAG2sD,EAAIG,EAAKJ,EAAIC,EAAIG,GAChDt/D,KAAKu/D,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDp/D,KAAKu/D,cAAcF,EAAKJ,EAAIG,EAAI7sD,EAAG+sD,EAAKJ,EAAI3sD,EAAG+sD,IAQjDd,yBAAyB9qD,UAAU0iD,SAAW,SAAS7jD,EAAGC,EAAGu1C,EAAG58C,GAC9D,GAAImB,GAAI,EAAE,EACNkzD,EAAWzX,EACX0X,EAAWt0D,EAAImB,EAEf0yD,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAK5sD,EAAIitD,EACTJ,EAAK5sD,EAAIitD,EACTJ,EAAK9sD,EAAIitD,EAAW,EACpBF,EAAK9sD,EAAIitD,EAAW,EACpBC,EAAMltD,GAAKrH,EAAIs0D,EAAS,GACxBE,EAAMntD,EAAIrH,CAEdnL,MAAK+mB,YACL/mB,KAAKgnB,OAAOm4C,EAAIG,GAEhBt/D,KAAKu/D,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDp/D,KAAKu/D,cAAcF,EAAKJ,EAAIG,EAAI7sD,EAAG+sD,EAAKJ,EAAI3sD,EAAG+sD,GAE/Ct/D,KAAKu/D,cAAchtD,EAAG+sD,EAAKJ,EAAIG,EAAKJ,EAAIzsD,EAAG6sD,EAAI7sD,GAC/CxS,KAAKu/D,cAAcF,EAAKJ,EAAIzsD,EAAG2sD,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhDt/D,KAAKinB,OAAOk4C,EAAIO,GAEhB1/D,KAAKu/D,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnD3/D,KAAKu/D,cAAcF,EAAKJ,EAAIU,EAAKptD,EAAGmtD,EAAMR,EAAI3sD,EAAGmtD,GAEjD1/D,KAAKinB,OAAO1U,EAAG+sD,IAOjBd,yBAAyB9qD,UAAUm8C,MAAQ,SAASt9C,EAAGC,EAAGs0C,EAAOvhD,GAE/D,GAAIq6D,GAAKrtD,EAAIhN,EAAST,KAAK4Y,IAAIopC,GAC3B+Y,EAAKrtD,EAAIjN,EAAST,KAAKyY,IAAIupC,GAI3BgZ,EAAKvtD,EAAa,GAAThN,EAAeT,KAAK4Y,IAAIopC,GACjCiZ,EAAKvtD,EAAa,GAATjN,EAAeT,KAAKyY,IAAIupC,GAGjCkZ,EAAKJ,EAAKr6D,EAAS,EAAIT,KAAK4Y,IAAIopC,EAAQ,GAAMhiD,KAAKimB,IACnDk1C,EAAKJ,EAAKt6D,EAAS,EAAIT,KAAKyY,IAAIupC,EAAQ,GAAMhiD,KAAKimB,IAGnDm1C,EAAKN,EAAKr6D,EAAS,EAAIT,KAAK4Y,IAAIopC,EAAQ,GAAMhiD,KAAKimB,IACnDo1C,EAAKN,EAAKt6D,EAAS,EAAIT,KAAKyY,IAAIupC,EAAQ,GAAMhiD,KAAKimB,GAEvD/qB,MAAK+mB,YACL/mB,KAAKgnB,OAAOzU,EAAGC,GACfxS,KAAKinB,OAAO+4C,EAAIC,GAChBjgE,KAAKinB,OAAO64C,EAAIC,GAChB//D,KAAKinB,OAAOi5C,EAAIC,GAChBngE,KAAKonB,aASPo3C,yBAAyB9qD,UAAUg8C,WAAa,SAASn9C,EAAEC,EAAE89C,EAAGC,EAAG6P,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAU76D,MAC1BvF,MAAKgnB,OAAOzU,EAAGC,EAKf,KAJA,GAAIuL,GAAMuyC,EAAG/9C,EAAIyL,EAAMuyC,EAAG/9C,EACtB+tD,EAAQviD,EAAGD,EACXyiD,EAAgB17D,KAAKqqB,KAAMpR,EAAGA,EAAKC,EAAGA,GACtCyiD,EAAU,EAAG/X,GAAK,EACf8X,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAIvlD,GAAQnW,KAAKqqB,KAAMkxC,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAHxiD,IAAM9C,GAASA,GACnB1I,GAAK0I,EACLzI,GAAK+tD,EAAMtlD,EACXjb,KAAK0oD,EAAO,SAAW,UAAUn2C,EAAEC,GACnCguD,GAAiBH,EACjB3X,GAAQA,MAUV,SAAS7oD,EAAQD,EAASM,GAE9B,GAAIwgE,GAAexgE,EAAoB,IACnCygE,EAAezgE,EAAoB,IACnC0gE,EAAe1gE,EAAoB,IACnC2gE,EAAiB3gE,EAAoB,IACrC4gE,EAAoB5gE,EAAoB,IACxC6gE,EAAkB7gE,EAAoB,IACtC8gE,EAA0B9gE,EAAoB,GAQlDN,GAAQqhE,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAex7D,eAAey7D,KAChCnhE,KAAKmhE,GAAiBD,EAAeC,KAY3CvhE,EAAQwhE,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAex7D,eAAey7D,KAChCnhE,KAAKmhE,GAAiB/6D,SAW5BxG,EAAQq9C,mBAAqB,WAC3Bj9C,KAAKihE,WAAWP,GAChB1gE,KAAKqhE,2BACkC,GAAnCrhE,KAAK47C,UAAUnD,kBACjBz4C,KAAKshE,6BAUT1hE,EAAQu9C,mBAAqB,WAC3Bn9C,KAAKozD,eAAiB,EACtBpzD,KAAKuhE,aAAe,EACpBvhE,KAAKihE,WAAWN,IASlB/gE,EAAQs9C,kBAAoB,WAC1Bl9C,KAAK4nD,WACL5nD,KAAKwhE,cAAgB,WACrBxhE,KAAK4nD,QAAgB,UACrB5nD,KAAK4nD,QAAgB,OAAE,YAAcxQ,SACnCa,SACA4F,eACA6V,eAAkB,EAClB+N,YAAer7D,QACjBpG,KAAK4nD,QAAgB,UACrB5nD,KAAK4nD,QAAiB,SAAKxQ,SACzBa,SACA4F,eACA6V,eAAkB,EAClB+N,YAAer7D,QAEjBpG,KAAK69C,YAAc79C,KAAK4nD,QAAgB,OAAE,WAAwB,YAElE5nD,KAAKihE,WAAWL,IASlBhhE,EAAQw9C,qBAAuB,WAC7Bp9C,KAAKkkD,cAAgB9M,SAAWa,UAEhCj4C,KAAKihE,WAAWJ,IASlBjhE,EAAQuiD,wBAA0B,WAEhCniD,KAAK0hE,8BAA+B,EACpC1hE,KAAK2hE,sBAAuB,EAEmB,GAA3C3hE,KAAK47C,UAAUnB,iBAAiB5rC,SAELzI,SAAzBpG,KAAK4hE,kBACP5hE,KAAK4hE,gBAAkB7vD,SAASM,cAAc,OAC9CrS,KAAK4hE,gBAAgBh6D,UAAY,0BACjC5H,KAAK4hE,gBAAgBvhE,GAAK,0BAExBL,KAAK4hE,gBAAgBv0D,MAAMo1B,QADR,GAAjBziC,KAAK4hD,SAC8B,QAGA,OAEvC5hD,KAAKye,MAAMxM,YAAYjS,KAAK4hE,kBAGLx7D,SAArBpG,KAAK6hE,cACP7hE,KAAK6hE,YAAc9vD,SAASM,cAAc,OAC1CrS,KAAK6hE,YAAYj6D,UAAY,gCAC7B5H,KAAK6hE,YAAYxhE,GAAK,gCAEpBL,KAAK6hE,YAAYx0D,MAAMo1B,QADJ,GAAjBziC,KAAK4hD,SAC0B,OAGA,QAEnC5hD,KAAKye,MAAMxM,YAAYjS,KAAK6hE,cAGRz7D,SAAlBpG,KAAK8hE,WACP9hE,KAAK8hE,SAAW/vD,SAASM,cAAc,OACvCrS,KAAK8hE,SAASl6D,UAAY,gCAC1B5H,KAAK8hE,SAASzhE,GAAK,gCACnBL,KAAK8hE,SAASz0D,MAAMo1B,QAAUziC,KAAK4hE,gBAAgBv0D,MAAMo1B,QACzDziC,KAAKye,MAAMxM,YAAYjS,KAAK8hE,WAI9B9hE,KAAKihE,WAAWH,GAGhB9gE,KAAKqjD,yBAGwBj9C,SAAzBpG,KAAK4hE,kBAEP5hE,KAAKqjD,wBAGLrjD,KAAKye,MAAM9M,YAAY3R,KAAK4hE,iBAC5B5hE,KAAKye,MAAM9M,YAAY3R,KAAK6hE,aAC5B7hE,KAAKye,MAAM9M,YAAY3R,KAAK8hE,UAE5B9hE,KAAK4hE,gBAAkBx7D,OACvBpG,KAAK6hE,YAAcz7D,OACnBpG,KAAK8hE,SAAW17D,OAEhBpG,KAAKohE,YAAYN,KAWvBlhE,EAAQsiD,wBAA0B,WAChCliD,KAAKihE,WAAWF,GAEhB/gE,KAAK+hE,mBACoC,GAArC/hE,KAAK47C,UAAUtB,WAAWzrC,SAC5B7O,KAAKgiE,2BAUTpiE,EAAQy9C,qBAAuB,WAC7Br9C,KAAKihE,WAAWD,KAMd,SAASnhE,EAAQD,EAASM,GAiB9B,QAASk/C,GAAUtmC,GACjB9Y,KAAKksD,QAAS,EAEdlsD,KAAKuvB,KACHzW,UAAWA,GAGb9Y,KAAKuvB,IAAI0yC,QAAUlwD,SAASM,cAAc,OAC1CrS,KAAKuvB,IAAI0yC,QAAQr6D,UAAY,UAE7B5H,KAAKuvB,IAAIzW,UAAU7G,YAAYjS,KAAKuvB,IAAI0yC,SAExCjiE,KAAK2D,OAAS28B,EAAOtgC,KAAKuvB,IAAI0yC,SAAUzhC,iBAAiB,IACzDxgC,KAAK2D,OAAOgQ,GAAG,MAAO3T,KAAKkiE,cAAc1tC,KAAKx0B,MAG9C,IAAIuU,GAAKvU,KACLi8D,GACF,QAAS,QACT,YAAa,OACb,YAAa,OAAQ,UACrB,aAAc,iBAEhBA,GAAO7zD,QAAQ,SAAUiB,GACvBkL,EAAG5Q,OAAOgQ,GAAGtK,EAAO,SAAUA,GAC5BA,EAAMs3B,sBAKV3gC,KAAKmiE,aAAe7hC,EAAOh5B,QAASk5B,iBAAiB,IACrDxgC,KAAKmiE,aAAaxuD,GAAG,MAAO,SAAUtK,GAE/B+4D,EAAW/4D,EAAMG,OAAQsP,IAC5BvE,EAAG8tD,eAKPriE,KAAKsiE,YAActiE,KAAKqiE,WAAW7tC,KAAKx0B,MAiF1C,QAASoiE,GAAWz5D,EAASm3B,GAC3B,KAAOn3B,GAAS,CACd,GAAIA,IAAYm3B,EACd,OAAO,CAETn3B,GAAUA,EAAQgB,WAEpB,OAAO,EA9IT,GAAIu1C,GAAYh/C,EAAoB,IAChCgc,EAAUhc,EAAoB,IAC9BogC,EAASpgC,EAAoB,IAC7BS,EAAOT,EAAoB,EAuD/Bgc,GAAQkjC,EAAU1rC,WAGlB0rC,EAAUloB,QAAU,KAKpBkoB,EAAU1rC,UAAU4rB,QAAU,WAC5Bt/B,KAAKqiE,aAGLriE,KAAKuvB,IAAI0yC,QAAQt4D,WAAWgI,YAAY3R,KAAKuvB,IAAI0yC,SAGjDjiE,KAAK2D,OAAS,KACd3D,KAAKmiE,aAAe,MAQtB/iB,EAAU1rC,UAAU6uD,SAAW,WAEzBnjB,EAAUloB,SACZkoB,EAAUloB,QAAQmrC,aAEpBjjB,EAAUloB,QAAUl3B,KAEpBA,KAAKksD,QAAS,EACdlsD,KAAKuvB,IAAI0yC,QAAQ50D,MAAMo1B,QAAU,OACjC9hC,EAAKgH,aAAa3H,KAAKuvB,IAAIzW,UAAW,cAEtC9Y,KAAKktB,KAAK,UACVltB,KAAKktB,KAAK,YAIVgyB,EAAU1qB,KAAK,MAAOx0B,KAAKsiE,cAO7BljB,EAAU1rC,UAAU2uD,WAAa,WAC/BriE,KAAKksD,QAAS,EACdlsD,KAAKuvB,IAAI0yC,QAAQ50D,MAAMo1B,QAAU,GACjC9hC,EAAKsH,gBAAgBjI,KAAKuvB,IAAIzW,UAAW,cACzComC,EAAUsjB,OAAO,MAAOxiE,KAAKsiE,aAE7BtiE,KAAKktB,KAAK,UACVltB,KAAKktB,KAAK,eAQZkyB,EAAU1rC,UAAUwuD,cAAgB,SAAU74D,GAE5CrJ,KAAKuiE,WACLl5D,EAAMs3B,mBAsBR9gC,EAAOD,QAAUw/C,GAKb,SAASv/C,GAeb,QAASqc,GAAQiG,GACf,MAAIA,GAAY6oC,EAAM7oC,GAAtB,OAWF,QAAS6oC,GAAM7oC,GACb,IAAK,GAAI1Z,KAAOyT,GAAQxI,UACtByO,EAAI1Z,GAAOyT,EAAQxI,UAAUjL,EAE/B,OAAO0Z,GAxBTtiB,EAAOD,QAAUsc,EAoCjBA,EAAQxI,UAAUC,GAClBuI,EAAQxI,UAAUhL,iBAAmB,SAASW,EAAOwgC,GAInD,MAHA7pC,MAAKyiE,WAAaziE,KAAKyiE,gBACtBziE,KAAKyiE,WAAWp5D,GAASrJ,KAAKyiE,WAAWp5D,QACvCtB,KAAK8hC,GACD7pC,MAaTkc,EAAQxI,UAAUgvD,KAAO,SAASr5D,EAAOwgC,GAIvC,QAASl2B,KACPgvD,EAAK7uD,IAAIzK,EAAOsK,GAChBk2B,EAAGxxB,MAAMrY,KAAMsF,WALjB,GAAIq9D,GAAO3iE,IAUX,OATAA,MAAKyiE,WAAaziE,KAAKyiE,eAOvB9uD,EAAGk2B,GAAKA,EACR7pC,KAAK2T,GAAGtK,EAAOsK,GACR3T,MAaTkc,EAAQxI,UAAUI,IAClBoI,EAAQxI,UAAUkvD,eAClB1mD,EAAQxI,UAAUmvD,mBAClB3mD,EAAQxI,UAAUxK,oBAAsB,SAASG,EAAOwgC,GAItD,GAHA7pC,KAAKyiE,WAAaziE,KAAKyiE,eAGnB,GAAKn9D,UAAUC,OAEjB,MADAvF,MAAKyiE,cACEziE,IAIT,IAAI8iE,GAAY9iE,KAAKyiE,WAAWp5D,EAChC,KAAKy5D,EAAW,MAAO9iE,KAGvB,IAAI,GAAKsF,UAAUC,OAEjB,aADOvF,MAAKyiE,WAAWp5D,GAChBrJ,IAKT,KAAK,GADD+iE,GACK39D,EAAI,EAAGA,EAAI09D,EAAUv9D,OAAQH,IAEpC,GADA29D,EAAKD,EAAU19D,GACX29D,IAAOl5B,GAAMk5B,EAAGl5B,KAAOA,EAAI,CAC7Bi5B,EAAU36D,OAAO/C,EAAG,EACpB,OAGJ,MAAOpF,OAWTkc,EAAQxI,UAAUwZ,KAAO,SAAS7jB,GAChCrJ,KAAKyiE,WAAaziE,KAAKyiE,cACvB,IAAIvG,MAAUxjC,MAAMn4B,KAAK+E,UAAW,GAChCw9D,EAAY9iE,KAAKyiE,WAAWp5D,EAEhC,IAAIy5D,EAAW,CACbA,EAAYA,EAAUpqC,MAAM,EAC5B,KAAK,GAAItzB,GAAI,EAAGC,EAAMy9D,EAAUv9D,OAAYF,EAAJD,IAAWA,EACjD09D,EAAU19D,GAAGiT,MAAMrY,KAAMk8D,GAI7B,MAAOl8D,OAWTkc,EAAQxI,UAAUsoD,UAAY,SAAS3yD,GAErC,MADArJ,MAAKyiE,WAAaziE,KAAKyiE,eAChBziE,KAAKyiE,WAAWp5D,QAWzB6S,EAAQxI,UAAUsvD,aAAe,SAAS35D,GACxC,QAAUrJ,KAAKg8D,UAAU3yD,GAAO9D,SAM9B,SAAS1F,GA8MX,QAASojE,GAAUp/D,EAAQ6C,EAAM2B,GAC7B,MAAIxE,GAAO6E,iBACA7E,EAAO6E,iBAAiBhC,EAAM2B,GAAU,OAGnDxE,GAAOoF,YAAY,KAAOvC,EAAM2B,GASpC,QAAS66D,GAAoB72D,GAGzB,MAAc,YAAVA,EAAE3F,KACK1C,OAAOm/D,aAAa92D,EAAEuf,OAI7Bw3C,EAAK/2D,EAAEuf,OACAw3C,EAAK/2D,EAAEuf,OAGdy3C,EAAah3D,EAAEuf,OACRy3C,EAAah3D,EAAEuf,OAInB5nB,OAAOm/D,aAAa92D,EAAEuf,OAAO6+B,cASxC,QAAS6Y,GAAMj3D,GACX,GAAI1D,GAAU0D,EAAE7C,QAAU6C,EAAE5C,WACxB85D,EAAW56D,EAAQ66D,OAGvB,QAAK,IAAM76D,EAAQf,UAAY,KAAKrB,QAAQ,eAAiB,IAClD,EAIQ,SAAZg9D,GAAmC,UAAZA,GAAoC,YAAZA,GAA2B56D,EAAQ86D,iBAA8C,QAA3B96D,EAAQ86D,gBAUxH,QAASC,GAAgBC,EAAYC,GACjC,MAAOD,GAAWntD,OAAOxO,KAAK,OAAS47D,EAAWptD,OAAOxO,KAAK,KASlE,QAAS67D,GAAgBC,GACrBA,EAAeA,KAEf,IACIr7D,GADAs7D,GAAmB,CAGvB,KAAKt7D,IAAOu7D,GACJF,EAAar7D,GACbs7D,GAAmB,EAGvBC,EAAiBv7D,GAAO,CAGvBs7D,KACDE,GAAmB,GAe3B,QAASC,GAAYC,EAAWC,EAAWx7D,EAAQ+N,EAAQ0tD,GACvD,GAAIj/D,GACAiD,EACAi8D,IAGJ,KAAK7B,EAAW0B,GACZ,QAUJ,KANc,SAAVv7D,GAAqB27D,EAAYJ,KACjCC,GAAaD,IAKZ/+D,EAAI,EAAGA,EAAIq9D,EAAW0B,GAAW5+D,SAAUH,EAC5CiD,EAAWo6D,EAAW0B,GAAW/+D,GAI7BiD,EAASm8D,KAAOR,EAAiB37D,EAASm8D,MAAQn8D,EAASyvC,OAM3DlvC,GAAUP,EAASO,SAOT,YAAVA,GAAwB86D,EAAgBU,EAAW/7D,EAAS+7D,cAIxDztD,GAAUtO,EAASo8D,OAASJ,GAC5B5B,EAAW0B,GAAWh8D,OAAO/C,EAAG,GAGpCk/D,EAAQv8D,KAAKM,GAIrB,OAAOi8D,GASX,QAASI,GAAgBr4D,GACrB,GAAI+3D,KAkBJ,OAhBI/3D,GAAEogC,UACF23B,EAAUr8D,KAAK,SAGfsE,EAAEs4D,QACFP,EAAUr8D,KAAK,OAGfsE,EAAEkgC,SACF63B,EAAUr8D,KAAK,QAGfsE,EAAEu4D,SACFR,EAAUr8D,KAAK,QAGZq8D,EAaX,QAASS,GAAcx8D,EAAUgE,GACzBhE,EAASgE,MAAO,IACZA,EAAEjD,gBACFiD,EAAEjD,iBAGFiD,EAAEs0B,iBACFt0B,EAAEs0B,kBAGNt0B,EAAE/C,aAAc,EAChB+C,EAAEy4D,cAAe,GAWzB,QAASC,GAAiBZ,EAAW93D,GAGjC,IAAIi3D,EAAMj3D,GAAV,CAIA,GACIjH,GADA09D,EAAYoB,EAAYC,EAAWO,EAAgBr4D,GAAIA,EAAE3F,MAEzDo9D,KACAkB,GAA8B,CAGlC,KAAK5/D,EAAI,EAAGA,EAAI09D,EAAUv9D,SAAUH,EAO5B09D,EAAU19D,GAAGo/D,KACbQ,GAA8B,EAG9BlB,EAAahB,EAAU19D,GAAGo/D,KAAO,EACjCK,EAAc/B,EAAU19D,GAAGiD,SAAUgE,IAMpC24D,GAAgCf,GACjCY,EAAc/B,EAAU19D,GAAGiD,SAAUgE,EAOzCA,GAAE3F,MAAQu9D,GAAqBM,EAAYJ,IAC3CN,EAAgBC,IAUxB,QAASmB,GAAW54D,GAIhBA,EAAEuf,MAA0B,gBAAXvf,GAAEuf,MAAoBvf,EAAEuf,MAAQvf,EAAE64D,OAEnD,IAAIf,GAAYjB,EAAoB72D,EAGpC,IAAK83D,EAIL,MAAc,SAAV93D,EAAE3F,MAAmBy+D,GAAsBhB,OAC3CgB,GAAqB,OAIzBJ,GAAiBZ,EAAW93D,GAShC,QAASk4D,GAAY97D,GACjB,MAAc,SAAPA,GAAyB,QAAPA,GAAwB,OAAPA,GAAuB,QAAPA,EAW9D,QAAS28D,KACL73C,aAAa83C,GACbA,EAAez3C,WAAWi2C,EAAiB,KAS/C,QAASyB,KACL,IAAKC,EAAc,CACfA,IACA,KAAK,GAAI98D,KAAO26D,GAIR36D,EAAM,IAAY,IAANA,GAIZ26D,EAAK19D,eAAe+C,KACpB88D,EAAanC,EAAK36D,IAAQA,GAItC,MAAO88D,GAUX,QAASC,GAAgB/8D,EAAK27D,EAAWx7D,GAcrC,MAVKA,KACDA,EAAS08D,IAAiB78D,GAAO,UAAY,YAKnC,YAAVG,GAAwBw7D,EAAU7+D,SAClCqD,EAAS,WAGNA,EAYX,QAAS68D,GAAchB,EAAOj3D,EAAMnF,EAAUO,GAI1Co7D,EAAiBS,GAAS,EAIrB77D,IACDA,EAAS48D,EAAgBh4D,EAAK,OAUlC,IA2BIpI,GA3BAsgE,EAAoB,WAChBzB,EAAmBr7D,IACjBo7D,EAAiBS,GACnBW,KAUJO,EAAoB,SAASt5D,GACzBw4D,EAAcx8D,EAAUgE,GAKT,UAAXzD,IACAu8D,EAAqBjC,EAAoB72D,IAK7CuhB,WAAWi2C,EAAiB,IAOpC,KAAKz+D,EAAI,EAAGA,EAAIoI,EAAKjI,SAAUH,EAC3BwgE,EAAYp4D,EAAKpI,GAAIA,EAAIoI,EAAKjI,OAAS,EAAImgE,EAAoBC,EAAmB/8D,EAAQ67D,EAAOr/D,GAczG,QAASwgE,GAAYvB,EAAah8D,EAAUO,EAAQi9D,EAAe/tB,GAG/DusB,EAAcA,EAAYp4D,QAAQ,OAAQ,IAE1C,IACI7G,GACAqD,EACA+E,EAHAs4D,EAAWzB,EAAYv8D,MAAM,KAI7Bs8D,IAIJ,IAAI0B,EAASvgE,OAAS,EAClB,MAAOkgE,GAAcpB,EAAayB,EAAUz9D,EAAUO,EAO1D,KAFA4E,EAAuB,MAAhB62D,GAAuB,KAAOA,EAAYv8D,MAAM,KAElD1C,EAAI,EAAGA,EAAIoI,EAAKjI,SAAUH,EAC3BqD,EAAM+E,EAAKpI,GAGP2gE,EAAiBt9D,KACjBA,EAAMs9D,EAAiBt9D,IAMvBG,GAAoB,YAAVA,GAAwBo9D,EAAWv9D,KAC7CA,EAAMu9D,EAAWv9D,GACjB27D,EAAUr8D,KAAK,UAIfw8D,EAAY97D,IACZ27D,EAAUr8D,KAAKU,EAMvBG,GAAS48D,EAAgB/8D,EAAK27D,EAAWx7D,GAIpC65D,EAAWh6D,KACZg6D,EAAWh6D,OAIfy7D,EAAYz7D,EAAK27D,EAAWx7D,GAASi9D,EAAexB,GAQpD5B,EAAWh6D,GAAKo9D,EAAgB,UAAY,SACxCx9D,SAAUA,EACV+7D,UAAWA,EACXx7D,OAAQA,EACR47D,IAAKqB,EACL/tB,MAAOA,EACP2sB,MAAOJ,IAYf,QAAS4B,GAAcC,EAAc79D,EAAUO,GAC3C,IAAK,GAAIxD,GAAI,EAAGA,EAAI8gE,EAAa3gE,SAAUH,EACvCwgE,EAAYM,EAAa9gE,GAAIiD,EAAUO,GAjhB/C,IAAK,GAlDD28D,GA6BAF,EArIAjC,GACI+C,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,WACJC,GAAI,MACJC,GAAI,QACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,GAAI,KACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,IAAK,QAWTnE,GACIoE,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,KAaTxC,GACIyC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,MAST5D,GACIn8D,OAAU,MACVggE,QAAW,OACXC,SAAU,QACVC,OAAU,OAiBdrH,KAOAsH,KAQA/F,KAcAmB,GAAqB,EAQrBlB,GAAmB,EAMd7+D,EAAI,EAAO,GAAJA,IAAUA,EACtBg+D,EAAK,IAAMh+D,GAAK,IAAMA,CAM1B,KAAKA,EAAI,EAAQ,GAALA,IAAUA,EAClBg+D,EAAKh+D,EAAI,IAAMA,CA8gBnB69D,GAAUlxD,SAAU,WAAYkzD,GAChChC,EAAUlxD,SAAU,UAAWkzD,GAC/BhC,EAAUlxD,SAAU,QAASkzD,EAE7B,IAAI/lB,IAiBA1qB,KAAM,SAAShnB,EAAMnF,EAAUO,GAG3B,MAFAq9D,GAAcz4D,YAAgB3H,OAAQ2H,GAAQA,GAAOnF,EAAUO,GAC/DmhE,EAAYv8D,EAAO,IAAM5E,GAAUP,EAC5BrI,MAoBXwiE,OAAQ,SAASh1D,EAAM5E,GAKnB,MAJImhE,GAAYv8D,EAAO,IAAM5E,WAClBmhE,GAAYv8D,EAAO,IAAM5E,GAChC5I,KAAKw0B,KAAKhnB,EAAM,aAAe5E,IAE5B5I,MAUXgqE,QAAS,SAASx8D,EAAM5E,GAEpB,MADAmhE,GAAYv8D,EAAO,IAAM5E,KAClB5I,MAUX0iD,MAAO,WAGH,MAFA+f,MACAsH,KACO/pE,MAIjBH,GAAOD,QAAUs/C,GAMb,SAASr/C,EAAQD,EAASM,GAE9B,GAAI+pE,IAA0D,SAASC,EAAQrqE,IAM/E,SAAWuG,GA0RP,QAAS+jE,GAAIhlE,EAAGa,EAAGvF,GACf,OAAQ6E,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIvF,CAC/C,SAAS,KAAM,IAAIgD,OAAM,iBAIjC,QAAS2mE,GAAWjlE,EAAGa,GACnB,MAAON,IAAenF,KAAK4E,EAAGa,GAGlC,QAASqkE,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACAxnD,SAAW,GACXynD,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAASC,GACVtnE,GAAOunE,+BAAgC,GAChB,mBAAZp7D,UAA2BA,QAAQq7D,MAC9Cr7D,QAAQq7D,KAAK,wBAA0BF,GAI/C,QAASG,GAAUH,EAAKnhC,GACpB,GAAIuhC,IAAY,CAChB,OAAOlmE,GAAO,WAKV,MAJIkmE,KACAL,EAASC,GACTI,GAAY,GAETvhC,EAAGxxB,MAAMrY,KAAMsF,YACvBukC,GAGP,QAASwhC,GAAgB90D,EAAMy0D,GACtBM,GAAa/0D,KACdw0D,EAASC,GACTM,GAAa/0D,IAAQ,GAI7B,QAASg1D,GAASC,EAAMl0D,GACpB,MAAO,UAAUnS,GACb,MAAOsmE,GAAaD,EAAKjrE,KAAKP,KAAMmF,GAAImS,IAGhD,QAASo0D,GAAgBF,EAAMG,GAC3B,MAAO,UAAUxmE,GACb,MAAOnF,MAAK4rE,aAAaC,QAAQL,EAAKjrE,KAAKP,KAAMmF,GAAIwmE,IAmB7D,QAASG,MAIT,QAASC,GAAOC,EAAQC,GAChBA,KAAiB,GACjBC,EAAcF,GAElBG,EAAWnsE,KAAMgsE,GACjBhsE,KAAKosE,GAAK,GAAIloE,OAAM8nE,EAAOI,IAI/B,QAASC,GAAS/7D,GACd,GAAIg8D,GAAkBC,EAAqBj8D,GACvCk8D,EAAQF,EAAgBptC,MAAQ,EAChCutC,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgBM,OAAS,EAClCC,EAAQP,EAAgBQ,MAAQ,EAChCC,EAAOT,EAAgBU,KAAO,EAC9Bn0C,EAAQyzC,EAAgBW,MAAQ,EAChCn0C,EAAUwzC,EAAgBY,QAAU,EACpCn0C,EAAUuzC,EAAgBa,QAAU,EACpCn0C,EAAeszC,EAAgBc,aAAe,CAGlDptE,MAAKqtE,eAAiBr0C,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJ74B,KAAKstE,OAASP,EACF,EAARF,EAIJ7sE,KAAKutE,SAAWZ,EACD,EAAXF,EACQ,GAARD,EAEJxsE,KAAKoT,SAELpT,KAAKwtE,QAAU9pE,GAAOkoE,aAEtB5rE,KAAKytE,UAQT,QAASvoE,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNokE,EAAWpkE,EAAGZ,KACdD,EAAEC,GAAKY,EAAEZ,GAYjB,OARIglE,GAAWpkE,EAAG,cACdb,EAAEF,SAAWe,EAAEf,UAGfmlE,EAAWpkE,EAAG,aACdb,EAAEyB,QAAUZ,EAAEY,SAGXzB,EAGX,QAASgnE,GAAW3jD,EAAID,GACpB,GAAInjB,GAAGK,EAAMioE,CAiCb,IA/BqC,mBAA1BnlD,GAAKolD,mBACZnlD,EAAGmlD,iBAAmBplD,EAAKolD,kBAER,mBAAZplD,GAAKqlD,KACZplD,EAAGolD,GAAKrlD,EAAKqlD,IAEM,mBAAZrlD,GAAKslD,KACZrlD,EAAGqlD,GAAKtlD,EAAKslD,IAEM,mBAAZtlD,GAAKulD,KACZtlD,EAAGslD,GAAKvlD,EAAKulD,IAEW,mBAAjBvlD,GAAKwlD,UACZvlD,EAAGulD,QAAUxlD,EAAKwlD,SAEG,mBAAdxlD,GAAKylD,OACZxlD,EAAGwlD,KAAOzlD,EAAKylD,MAEQ,mBAAhBzlD,GAAK0lD,SACZzlD,EAAGylD,OAAS1lD,EAAK0lD,QAEO,mBAAjB1lD,GAAK2lD,UACZ1lD,EAAG0lD,QAAU3lD,EAAK2lD,SAEE,mBAAb3lD,GAAK4lD,MACZ3lD,EAAG2lD,IAAM5lD,EAAK4lD,KAEU,mBAAjB5lD,GAAKilD,UACZhlD,EAAGglD,QAAUjlD,EAAKilD,SAGlBY,GAAiB7oE,OAAS,EAC1B,IAAKH,IAAKgpE,IACN3oE,EAAO2oE,GAAiBhpE,GACxBsoE,EAAMnlD,EAAK9iB,GACQ,mBAARioE,KACPllD,EAAG/iB,GAAQioE,EAKvB,OAAOllD,GAGX,QAAS6lD,GAASC,GACd,MAAa,GAATA,EACOxpE,KAAK6qC,KAAK2+B,GAEVxpE,KAAKC,MAAMupE,GAM1B,QAAS7C,GAAa6C,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAK3pE,KAAKklB,IAAIskD,GACvB9/C,EAAO8/C,GAAU,EAEdG,EAAOlpE,OAASgpE,GACnBE,EAAS,IAAMA,CAEnB,QAAQjgD,EAAQggD,EAAY,IAAM,GAAM,KAAOC,EAGnD,QAASC,GAA0BC,EAAMnpE,GACrC,GAAIopE,IAAO51C,aAAc,EAAG2zC,OAAQ,EAUpC,OARAiC,GAAIjC,OAASnnE,EAAMonE,QAAU+B,EAAK/B,QACC,IAA9BpnE,EAAM05B,OAASyvC,EAAKzvC,QACrByvC,EAAK11C,QAAQxlB,IAAIm7D,EAAIjC,OAAQ,KAAKkC,QAAQrpE,MACxCopE,EAAIjC,OAGViC,EAAI51C,cAAgBxzB,GAAUmpE,EAAK11C,QAAQxlB,IAAIm7D,EAAIjC,OAAQ,KAEpDiC,EAGX,QAASE,GAAkBH,EAAMnpE,GAC7B,GAAIopE,EAUJ,OATAppE,GAAQupE,EAAOvpE,EAAOmpE,GAClBA,EAAKK,SAASxpE,GACdopE,EAAMF,EAA0BC,EAAMnpE,IAEtCopE,EAAMF,EAA0BlpE,EAAOmpE,GACvCC,EAAI51C,cAAgB41C,EAAI51C,aACxB41C,EAAIjC,QAAUiC,EAAIjC,QAGfiC,EAIX,QAASK,GAAY/1C,EAAW3iB,GAC5B,MAAO,UAAUm3D,EAAK/B,GAClB,GAAIuD,GAAKC,CAUT,OARe,QAAXxD,GAAoBrnE,OAAOqnE,KAC3BN,EAAgB90D,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5G44D,EAAMzB,EAAKA,EAAM/B,EAAQA,EAASwD,GAGtCzB,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwB,EAAMxrE,GAAO4M,SAASo9D,EAAK/B,GAC3ByD,EAAgCpvE,KAAMkvE,EAAKh2C,GACpCl5B,MAIf,QAASovE,GAAgCC,EAAK/+D,EAAUg/D,EAAUC,GAC9D,GAAIv2C,GAAe1oB,EAAS+8D,cACxBN,EAAOz8D,EAASg9D,MAChBX,EAASr8D,EAASi9D,OACtBgC,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzCv2C,GACAq2C,EAAIjD,GAAGoD,SAASH,EAAIjD,GAAKpzC,EAAes2C,GAExCvC,GACA0C,GAAUJ,EAAK,OAAQK,GAAUL,EAAK,QAAUtC,EAAOuC,GAEvD3C,GACAgD,GAAeN,EAAKK,GAAUL,EAAK,SAAW1C,EAAS2C,GAEvDC,GACA7rE,GAAO6rE,aAAaF,EAAKtC,GAAQJ,GAKzC,QAAS7mE,GAAQ8pE,GACb,MAAiD,mBAA1CzpE,OAAOuN,UAAUzO,SAAS1E,KAAKqvE,GAG1C,QAAS3rE,GAAO2rE,GACZ,MAAiD,kBAA1CzpE,OAAOuN,UAAUzO,SAAS1E,KAAKqvE,IAClCA,YAAiB1rE,MAIzB,QAAS2rE,GAAchW,EAAQC,EAAQgW,GACnC,GAGI1qE,GAHAC,EAAMP,KAAKwG,IAAIuuD,EAAOt0D,OAAQu0D,EAAOv0D,QACrCwqE,EAAajrE,KAAKklB,IAAI6vC,EAAOt0D,OAASu0D,EAAOv0D,QAC7CyqE,EAAQ,CAEZ,KAAK5qE,EAAI,EAAOC,EAAJD,EAASA,KACZ0qE,GAAejW,EAAOz0D,KAAO00D,EAAO10D,KACnC0qE,GAAeG,EAAMpW,EAAOz0D,MAAQ6qE,EAAMnW,EAAO10D,MACnD4qE,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAM1lB,cAAcx+C,QAAQ,QAAS,KACnDkkE,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAAS5D,GAAqBgE,GAC1B,GACIC,GACA/qE,EAFA6mE,IAIJ,KAAK7mE,IAAQ8qE,GACLnG,EAAWmG,EAAa9qE,KACxB+qE,EAAiBN,EAAezqE,GAC5B+qE,IACAlE,EAAgBkE,GAAkBD,EAAY9qE,IAK1D,OAAO6mE,GAGX,QAASmE,GAASxhE,GACd,GAAIqI,GAAOo5D,CAEX,IAA8B,IAA1BzhE,EAAM1I,QAAQ,QACd+Q,EAAQ,EACRo5D,EAAS,UAER,CAAA,GAA+B,IAA3BzhE,EAAM1I,QAAQ,SAKnB,MAJA+Q,GAAQ,GACRo5D,EAAS,QAMbhtE,GAAOuL,GAAS,SAAUmwB,EAAQl3B,GAC9B,GAAI9C,GAAGurE,EACHC,EAASltE,GAAO8pE,QAAQv+D,GACxB4hE,IAYJ,IAVsB,gBAAXzxC,KACPl3B,EAAQk3B,EACRA,EAASh5B,GAGbuqE,EAAS,SAAUvrE,GACf,GAAI5E,GAAIkD,KAASotE,MAAMC,IAAIL,EAAQtrE,EACnC,OAAOwrE,GAAOrwE,KAAKmD,GAAO8pE,QAAShtE,EAAG4+B,GAAU,KAGvC,MAATl3B,EACA,MAAOyoE,GAAOzoE,EAGd,KAAK9C,EAAI,EAAOkS,EAAJlS,EAAWA,IACnByrE,EAAQ9oE,KAAK4oE,EAAOvrE,GAExB,OAAOyrE,IAKnB,QAASZ,GAAMe,GACX,GAAIC,IAAiBD,EACjB/pE,EAAQ,CAUZ,OARsB,KAAlBgqE,GAAuBC,SAASD,KAE5BhqE,EADAgqE,GAAiB,EACTnsE,KAAKC,MAAMksE,GAEXnsE,KAAK6qC,KAAKshC,IAInBhqE,EAGX,QAASkqE,GAAYjyC,EAAM0tC,GACvB,MAAO,IAAI1oE,MAAKA,KAAKktE,IAAIlyC,EAAM0tC,EAAQ,EAAG,IAAIyE,aAGlD,QAASC,GAAYpyC,EAAMqyC,EAAKC,GAC5B,MAAOC,IAAW/tE,IAAQw7B,EAAM,GAAI,GAAKqyC,EAAMC,IAAOD,EAAKC,GAAK1E,KAGpE,QAAS4E,GAAWxyC,GAChB,MAAOyyC,GAAWzyC,GAAQ,IAAM,IAGpC,QAASyyC,GAAWzyC,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAASgtC,GAAc1rE,GACnB,GAAIwiB,EACAxiB,GAAEoxE,IAAyB,KAAnBpxE,EAAE2tE,IAAInrD,WACdA,EACIxiB,EAAEoxE,GAAGx0C,IAAS,GAAK58B,EAAEoxE,GAAGx0C,IAAS,GAAKA,GACtC58B,EAAEoxE,GAAGC,IAAQ,GAAKrxE,EAAEoxE,GAAGC,IAAQV,EAAY3wE,EAAEoxE,GAAGv0C,IAAO78B,EAAEoxE,GAAGx0C,KAAUy0C,GACtErxE,EAAEoxE,GAAG10C,IAAQ,GAAK18B,EAAEoxE,GAAG10C,IAAQ,GAAKA,GACpC18B,EAAEoxE,GAAG30C,IAAU,GAAKz8B,EAAEoxE,GAAG30C,IAAU,GAAKA,GACxCz8B,EAAEoxE,GAAG50C,IAAU,GAAKx8B,EAAEoxE,GAAG50C,IAAU,GAAKA,GACxCx8B,EAAEoxE,GAAG70C,IAAe,GAAKv8B,EAAEoxE,GAAG70C,IAAe,IAAMA,GACnD,GAEAv8B,EAAE2tE,IAAI2D,qBAAkCz0C,GAAXra,GAAmBA,EAAW6uD,MAC3D7uD,EAAW6uD,IAGfrxE,EAAE2tE,IAAInrD,SAAWA,GAIzB,QAAS+uD,GAAQvxE,GAgBb,MAfkB,OAAdA,EAAEwxE,WACFxxE,EAAEwxE,UAAY1tE,MAAM9D,EAAE4rE,GAAG6F,YACrBzxE,EAAE2tE,IAAInrD,SAAW,IAChBxiB,EAAE2tE,IAAI7D,QACN9pE,EAAE2tE,IAAIxD,eACNnqE,EAAE2tE,IAAIzD,YACNlqE,EAAE2tE,IAAIvD,gBACNpqE,EAAE2tE,IAAItD,gBAEPrqE,EAAEutE,UACFvtE,EAAEwxE,SAAWxxE,EAAEwxE,UACa,IAAxBxxE,EAAE2tE,IAAI1D,eACwB,IAA9BjqE,EAAE2tE,IAAI5D,aAAahlE,SAGxB/E,EAAEwxE,SAGb,QAASE,GAAgBzpE,GACrB,MAAOA,GAAMA,EAAIgiD,cAAcx+C,QAAQ,IAAK,KAAOxD,EAMvD,QAAS0pE,GAAaC,GAGlB,IAFA,GAAWpnD,GAAGxD,EAAMqY,EAAQ/3B,EAAxB1C,EAAI,EAEDA,EAAIgtE,EAAM7sE,QAAQ,CAKrB,IAJAuC,EAAQoqE,EAAgBE,EAAMhtE,IAAI0C,MAAM,KACxCkjB,EAAIljB,EAAMvC,OACViiB,EAAO0qD,EAAgBE,EAAMhtE,EAAI,IACjCoiB,EAAOA,EAAOA,EAAK1f,MAAM,KAAO,KACzBkjB,EAAI,GAAG,CAEV,GADA6U,EAASwyC,EAAWvqE,EAAM4wB,MAAM,EAAG1N,GAAGhjB,KAAK,MAEvC,MAAO63B,EAEX,IAAIrY,GAAQA,EAAKjiB,QAAUylB,GAAK6kD,EAAc/nE,EAAO0f,GAAM,IAASwD,EAAI,EAEpE,KAEJA,KAEJ5lB,IAEJ,MAAO,MAGX,QAASitE,GAAW97D,GAChB,GAAI+7D,GAAY,IAChB,KAAK1yC,GAAQrpB,IAASg8D,GAClB,IACID,EAAY5uE,GAAOm8B,UACjB,WAAkC,GAAIxzB,GAAI,GAAI5I,OAAM,gCAAiE,MAA7B4I,GAAEmmE,KAAO,mBAA0BnmE,KAE7H3I,GAAOm8B,OAAOyyC,GAChB,MAAOjmE,IAEb,MAAOuzB,IAAQrpB,GAInB,QAASw4D,GAAOa,EAAO6C,GACnB,MAAOA,GAAMxE,OAASvqE,GAAOksE,GAAO8C,KAAKD,EAAMvE,SAAW,GACtDxqE,GAAOksE,GAAO+C,QAoMtB,QAASC,GAAuBhD,GAC5B,MAAIA,GAAMzrE,MAAM,YACLyrE,EAAM3jE,QAAQ,WAAY,IAE9B2jE,EAAM3jE,QAAQ,MAAO,IAGhC,QAAS4mE,GAAmBzzC,GACxB,GAA4Ch6B,GAAGG,EAA3CgD,EAAQ62B,EAAOj7B,MAAM2uE,GAEzB,KAAK1tE,EAAI,EAAGG,EAASgD,EAAMhD,OAAYA,EAAJH,EAAYA,IAEvCmD,EAAMnD,GADN2tE,GAAqBxqE,EAAMnD,IAChB2tE,GAAqBxqE,EAAMnD,IAE3BwtE,EAAuBrqE,EAAMnD,GAIhD,OAAO,UAAUiqE,GACb,GAAIZ,GAAS,EACb,KAAKrpE,EAAI,EAAOG,EAAJH,EAAYA,IACpBqpE,GAAUlmE,EAAMnD,YAAc0kC,UAAWvhC,EAAMnD,GAAG7E,KAAK8uE,EAAKjwC,GAAU72B,EAAMnD,EAEhF,OAAOqpE,IAKf,QAASuE,GAAaxyE,EAAG4+B,GACrB,MAAK5+B,GAAEuxE,WAIP3yC,EAAS6zC,EAAa7zC,EAAQ5+B,EAAEorE,cAE3BsH,GAAgB9zC,KACjB8zC,GAAgB9zC,GAAUyzC,EAAmBzzC,IAG1C8zC,GAAgB9zC,GAAQ5+B,IATpBA,EAAEorE,aAAauH,cAY9B,QAASF,GAAa7zC,EAAQS,GAG1B,QAASuzC,GAA4BxD,GACjC,MAAO/vC,GAAOwzC,eAAezD,IAAUA,EAH3C,GAAIxqE,GAAI,CAOR,KADAkuE,GAAsBC,UAAY,EAC3BnuE,GAAK,GAAKkuE,GAAsBnlE,KAAKixB,IACxCA,EAASA,EAAOnzB,QAAQqnE,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCnuE,GAAK,CAGT,OAAOg6B,GAUX,QAASo0C,GAAsBjb,EAAOyT,GAClC,GAAI7mE,GAAG6zD,EAASgT,EAAO+B,OACvB,QAAQxV,GACR,IAAK,IACD,MAAOkb,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAO1a,GAAS2a,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAO7a,GAAS8a,GAAsBC,EAC1C,KAAK,IACD,GAAI/a,EACA,MAAOya,GAGf,KAAK,KACD,GAAIza,EACA,MAAOgb,GAGf,KAAK,MACD,GAAIhb,EACA,MAAO0a,GAGf,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAOlI,GAAOwB,QAAQ2G,cAC1B,KAAK,IACD,MAAOC,GACX,KAAK,IACL,IAAK,KACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,OACD,MAAOC,GACX,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,MAAOvb,GAASgb,GAAsBQ,EAC1C,KAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOA,GACX,KAAK,KACD,MAAOC,GACX,SAEI,MADAtvE,GAAI,GAAIuvE,QAAOC,GAAaC,GAAerc,EAAMtsD,QAAQ,KAAM,KAAM,OAK7E,QAAS4oE,GAA0BC,GAC/BA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAO3wE,MAAMkwE,QAClCW,EAAUD,EAAkBA,EAAkBxvE,OAAS,OACvDgI,GAASynE,EAAU,IAAI7wE,MAAM8wE,MAA0B,IAAK,EAAG,GAC/Dn8C,IAAuB,GAAXvrB,EAAM,IAAW0iE,EAAM1iE,EAAM,GAE7C,OAAoB,MAAbA,EAAM,IAAcurB,EAAUA,EAIzC,QAASo8C,GAAwB3c,EAAOqX,EAAO5D,GAC3C,GAAI7mE,GAAGgwE,EAAgBnJ,EAAO4F,EAE9B,QAAQrZ,GAER,IAAK,IACY,MAATqX,IACAuF,EAAc/3C,IAA8B,GAApB6yC,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAuF,EAAc/3C,IAAS6yC,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACDzqE,EAAI6mE,EAAOwB,QAAQ4H,YAAYxF,GAEtB,MAALzqE,EACAgwE,EAAc/3C,IAASj4B,EAEvB6mE,EAAOmC,IAAIxD,aAAeiF,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAuF,EAActD,IAAQ5B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACAuF,EAActD,IAAQ5B,EAAMhmD,SAAS2lD,EAAO,KAEhD,MAEJ,KAAK,MACL,IAAK,OACY,MAATA,IACA5D,EAAOqJ,WAAapF,EAAML,GAG9B,MAEJ,KAAK,KACDuF,EAAc93C,IAAQ35B,GAAO4xE,kBAAkB1F,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACDuF,EAAc93C,IAAQ4yC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACD5D,EAAOuJ,MAAQvJ,EAAOwB,QAAQgI,KAAK5F,EACnC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACDuF,EAAcj4C,IAAQ+yC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACDuF,EAAcl4C,IAAUgzC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACDuF,EAAcn4C,IAAUizC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACDuF,EAAcp4C,IAAekzC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACD5D,EAAOI,GAAK,GAAIloE,MAAyB,IAApBsgB,WAAWorD,GAChC,MAEJ,KAAK,IACL,IAAK,KACD5D,EAAOyJ,SAAU,EACjBzJ,EAAOgC,KAAO6G,EAA0BjF,EACxC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACDzqE,EAAI6mE,EAAOwB,QAAQkI,cAAc9F,GAExB,MAALzqE,GACA6mE,EAAO2J,GAAK3J,EAAO2J,OACnB3J,EAAO2J,GAAM,EAAIxwE,GAEjB6mE,EAAOmC,IAAIyH,eAAiBhG,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACDrX,EAAQA,EAAM1tD,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACD0tD,EAAQA,EAAM1tD,OAAO,EAAG,GACpB+kE,IACA5D,EAAO2J,GAAK3J,EAAO2J,OACnB3J,EAAO2J,GAAGpd,GAAS0X,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACD5D,EAAO2J,GAAK3J,EAAO2J,OACnB3J,EAAO2J,GAAGpd,GAAS70D,GAAO4xE,kBAAkB1F,IAIpD,QAASiG,GAAsB7J,GAC3B,GAAIjkB,GAAG+tB,EAAUhJ,EAAMiJ,EAASxE,EAAKC,EAAKwE,CAE1CjuB,GAAIikB,EAAO2J,GACC,MAAR5tB,EAAEkuB,IAAqB,MAAPluB,EAAEmuB,GAAoB,MAAPnuB,EAAEouB,GACjC5E,EAAM,EACNC,EAAM,EAMNsE,EAAW3L,EAAIpiB,EAAEkuB,GAAIjK,EAAO4F,GAAGv0C,IAAOo0C,GAAW/tE,KAAU,EAAG,GAAGw7B,MACjE4tC,EAAO3C,EAAIpiB,EAAEmuB,EAAG,GAChBH,EAAU5L,EAAIpiB,EAAEouB,EAAG,KAEnB5E,EAAMvF,EAAOwB,QAAQ4I,MAAM7E,IAC3BC,EAAMxF,EAAOwB,QAAQ4I,MAAM5E,IAE3BsE,EAAW3L,EAAIpiB,EAAEsuB,GAAIrK,EAAO4F,GAAGv0C,IAAOo0C,GAAW/tE,KAAU6tE,EAAKC,GAAKtyC,MACrE4tC,EAAO3C,EAAIpiB,EAAEA,EAAG,GAEL,MAAPA,EAAE37C,GAEF2pE,EAAUhuB,EAAE37C,EACEmlE,EAAVwE,KACEjJ,GAINiJ,EAFc,MAAPhuB,EAAE17C,EAEC07C,EAAE17C,EAAIklE,EAGNA,GAGlByE,EAAOM,GAAmBR,EAAUhJ,EAAMiJ,EAASvE,EAAKD,GAExDvF,EAAO4F,GAAGv0C,IAAQ24C,EAAK92C,KACvB8sC,EAAOqJ,WAAaW,EAAKO,UAO7B,QAASC,GAAexK,GACpB,GAAI5mE,GAAG65B,EAAkBw3C,EAAaC,EAAzB9G,IAEb,KAAI5D,EAAOI,GAAX,CA6BA,IAzBAqK,EAAcE,EAAiB3K,GAG3BA,EAAO2J,IAAyB,MAAnB3J,EAAO4F,GAAGC,KAAqC,MAApB7F,EAAO4F,GAAGx0C,KAClDy4C,EAAsB7J,GAItBA,EAAOqJ,aACPqB,EAAYvM,EAAI6B,EAAO4F,GAAGv0C,IAAOo5C,EAAYp5C,KAEzC2uC,EAAOqJ,WAAa3D,EAAWgF,KAC/B1K,EAAOmC,IAAI2D,oBAAqB,GAGpC7yC,EAAO23C,GAAYF,EAAW,EAAG1K,EAAOqJ,YACxCrJ,EAAO4F,GAAGx0C,IAAS6B,EAAK43C,cACxB7K,EAAO4F,GAAGC,IAAQ5yC,EAAKoyC,cAQtBjsE,EAAI,EAAO,EAAJA,GAAyB,MAAhB4mE,EAAO4F,GAAGxsE,KAAcA,EACzC4mE,EAAO4F,GAAGxsE,GAAKwqE,EAAMxqE,GAAKqxE,EAAYrxE,EAI1C,MAAW,EAAJA,EAAOA,IACV4mE,EAAO4F,GAAGxsE,GAAKwqE,EAAMxqE,GAAsB,MAAhB4mE,EAAO4F,GAAGxsE,GAAqB,IAANA,EAAU,EAAI,EAAK4mE,EAAO4F,GAAGxsE,EAGrF4mE,GAAOI,IAAMJ,EAAOyJ,QAAUmB,GAAcE,IAAUz+D,MAAM,KAAMu3D,GAG/C,MAAf5D,EAAOgC,MACPhC,EAAOI,GAAG2K,cAAc/K,EAAOI,GAAG4K,gBAAkBhL,EAAOgC,OAInE,QAASiJ,GAAejL,GACpB,GAAIM,EAEAN,GAAOI,KAIXE,EAAkBC,EAAqBP,EAAO4B,IAC9C5B,EAAO4F,IACHtF,EAAgBptC,KAChBotC,EAAgBM,MAChBN,EAAgBU,IAChBV,EAAgBW,KAChBX,EAAgBY,OAChBZ,EAAgBa,OAChBb,EAAgBc,aAGpBoJ,EAAexK,IAGnB,QAAS2K,GAAiB3K,GACtB,GAAIpzC,GAAM,GAAI10B,KACd,OAAI8nE,GAAOyJ,SAEH78C,EAAIs+C,iBACJt+C,EAAIi+C,cACJj+C,EAAIy4C,eAGAz4C,EAAI4E,cAAe5E,EAAIwF,WAAYxF,EAAIuF,WAKvD,QAASg5C,GAA4BnL,GACjC,GAAIA,EAAO6B,KAAOnqE,GAAO0zE,SAErB,WADAC,IAASrL,EAIbA,GAAO4F,MACP5F,EAAOmC,IAAI7D,OAAQ,CAGnB,IACIllE,GAAGkyE,EAAaC,EAAQhf,EAAOif,EAD/B1C,EAAS,GAAK9I,EAAO4B,GAErB6J,EAAe3C,EAAOvvE,OACtBmyE,EAAyB,CAI7B,KAFAH,EAAStE,EAAajH,EAAO6B,GAAI7B,EAAOwB,SAASrpE,MAAM2uE,QAElD1tE,EAAI,EAAGA,EAAImyE,EAAOhyE,OAAQH,IAC3BmzD,EAAQgf,EAAOnyE,GACfkyE,GAAexC,EAAO3wE,MAAMqvE,EAAsBjb,EAAOyT,SAAgB,GACrEsL,IACAE,EAAU1C,EAAOjqE,OAAO,EAAGiqE,EAAOvuE,QAAQ+wE,IACtCE,EAAQjyE,OAAS,GACjBymE,EAAOmC,IAAI3D,YAAYziE,KAAKyvE,GAEhC1C,EAASA,EAAOp8C,MAAMo8C,EAAOvuE,QAAQ+wE,GAAeA,EAAY/xE,QAChEmyE,GAA0BJ,EAAY/xE,QAGtCwtE,GAAqBxa,IACjB+e,EACAtL,EAAOmC,IAAI7D,OAAQ,EAGnB0B,EAAOmC,IAAI5D,aAAaxiE,KAAKwwD,GAEjC2c,EAAwB3c,EAAO+e,EAAatL,IAEvCA,EAAO+B,UAAYuJ,GACxBtL,EAAOmC,IAAI5D,aAAaxiE,KAAKwwD,EAKrCyT,GAAOmC,IAAI1D,cAAgBgN,EAAeC,EACtC5C,EAAOvvE,OAAS,GAChBymE,EAAOmC,IAAI3D,YAAYziE,KAAK+sE,GAI5B9I,EAAOuJ,OAASvJ,EAAO4F,GAAG10C,IAAQ,KAClC8uC,EAAO4F,GAAG10C,KAAS,IAGnB8uC,EAAOuJ,SAAU,GAA6B,KAApBvJ,EAAO4F,GAAG10C,MACpC8uC,EAAO4F,GAAG10C,IAAQ,GAGtBs5C,EAAexK,GACfE,EAAcF,GAGlB,QAAS4I,IAAexpE,GACpB,MAAOA,GAAEa,QAAQ,sCAAuC,SAAU0rE,EAASrlC,EAAIC,EAAIC,EAAIolC,GACnF,MAAOtlC,IAAMC,GAAMC,GAAMolC,IAKjC,QAASjD,IAAavpE,GAClB,MAAOA,GAAEa,QAAQ,yBAA0B,QAI/C,QAAS4rE,IAA2B7L,GAChC,GAAI8L,GACAC,EAEAC,EACA5yE,EACA6yE,CAEJ,IAAyB,IAArBjM,EAAO6B,GAAGtoE,OAGV,MAFAymE,GAAOmC,IAAIvD,eAAgB,OAC3BoB,EAAOI,GAAK,GAAIloE,MAAKg0E,KAIzB,KAAK9yE,EAAI,EAAGA,EAAI4mE,EAAO6B,GAAGtoE,OAAQH,IAC9B6yE,EAAe,EACfH,EAAa3L,KAAeH,GACN,MAAlBA,EAAOyJ,UACPqC,EAAWrC,QAAUzJ,EAAOyJ,SAEhCqC,EAAW3J,IAAM9D,IACjByN,EAAWjK,GAAK7B,EAAO6B,GAAGzoE,GAC1B+xE,EAA4BW,GAEvB/F,EAAQ+F,KAKbG,GAAgBH,EAAW3J,IAAI1D,cAG/BwN,GAAqD,GAArCH,EAAW3J,IAAI5D,aAAahlE,OAE5CuyE,EAAW3J,IAAIgK,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrB5yE,GAAO8mE,EAAQ+L,GAAcD,GAIjC,QAAST,IAASrL,GACd,GAAI5mE,GAAGgzE,EACHtD,EAAS9I,EAAO4B,GAChBzpE,EAAQk0E,GAASh0E,KAAKywE,EAE1B,IAAI3wE,EAAO,CAEP,IADA6nE,EAAOmC,IAAIrD,KAAM,EACZ1lE,EAAI,EAAGgzE,EAAIE,GAAS/yE,OAAY6yE,EAAJhzE,EAAOA,IACpC,GAAIkzE,GAASlzE,GAAG,GAAGf,KAAKywE,GAAS,CAE7B9I,EAAO6B,GAAKyK,GAASlzE,GAAG,IAAMjB,EAAM,IAAM,IAC1C,OAGR,IAAKiB,EAAI,EAAGgzE,EAAIG,GAAShzE,OAAY6yE,EAAJhzE,EAAOA,IACpC,GAAImzE,GAASnzE,GAAG,GAAGf,KAAKywE,GAAS,CAC7B9I,EAAO6B,IAAM0K,GAASnzE,GAAG,EACzB,OAGJ0vE,EAAO3wE,MAAMkwE,MACbrI,EAAO6B,IAAM,KAEjBsJ,EAA4BnL,OAE5BA,GAAOgG,UAAW,EAK1B,QAASwG,IAAmBxM,GACxBqL,GAASrL,GACLA,EAAOgG,YAAa,UACbhG,GAAOgG,SACdtuE,GAAO+0E,wBAAwBzM,IAIvC,QAASv+D,IAAImnC,EAAK/K,GACd,GAAczkC,GAAVwpE,IACJ,KAAKxpE,EAAI,EAAGA,EAAIwvC,EAAIrvC,SAAUH,EAC1BwpE,EAAI7mE,KAAK8hC,EAAG+K,EAAIxvC,GAAIA,GAExB,OAAOwpE,GAGX,QAAS8J,IAAkB1M,GACvB,GAAuB2L,GAAnB/H,EAAQ5D,EAAO4B,EACfgC,KAAUxpE,EACV4lE,EAAOI,GAAK,GAAIloE,MACTD,EAAO2rE,GACd5D,EAAOI,GAAK,GAAIloE,OAAM0rE,GAC6B,QAA3C+H,EAAUgB,GAAgBt0E,KAAKurE,IACvC5D,EAAOI,GAAK,GAAIloE,OAAMyzE,EAAQ,IACN,gBAAV/H,GACd4I,GAAmBxM,GACZlmE,EAAQ8pE,IACf5D,EAAO4F,GAAKnkE,GAAImiE,EAAMl3C,MAAM,GAAI,SAAUvW,GACtC,MAAO8H,UAAS9H,EAAK,MAEzBq0D,EAAexK,IACU,gBAAZ,GACbiL,EAAejL,GACU,gBAAZ,GAEbA,EAAOI,GAAK,GAAIloE,MAAK0rE,GAErBlsE,GAAO+0E,wBAAwBzM,GAIvC,QAAS8K,IAAStkE,EAAGhS,EAAG4L,EAAGjB,EAAG8nC,EAAG7nC,EAAGwtE,GAGhC,GAAI35C,GAAO,GAAI/6B,MAAKsO,EAAGhS,EAAG4L,EAAGjB,EAAG8nC,EAAG7nC,EAAGwtE,EAMtC,OAHQ,MAAJpmE,GACAysB,EAAK1B,YAAY/qB,GAEdysB,EAGX,QAAS23C,IAAYpkE,GACjB,GAAIysB,GAAO,GAAI/6B,MAAKA,KAAKktE,IAAI/4D,MAAM,KAAM/S,WAIzC,OAHQ,MAAJkN,GACAysB,EAAK45C,eAAermE,GAEjBysB,EAGX,QAAS65C,IAAalJ,EAAO/vC,GACzB,GAAqB,gBAAV+vC,GACP,GAAKtrE,MAAMsrE,IAKP,GADAA,EAAQ/vC,EAAO61C,cAAc9F,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQ3lD,SAAS2lD,EAAO,GAShC,OAAOA,GASX,QAASmJ,IAAkBjE,EAAQxG,EAAQ0K,EAAeC,EAAUp5C,GAChE,MAAOA,GAAOq5C,aAAa5K,GAAU,IAAK0K,EAAelE,EAAQmE,GAGrE,QAASC,IAAaC,EAAgBH,EAAen5C,GACjD,GAAIvvB,GAAW5M,GAAO4M,SAAS6oE,GAAgBnvD,MAC3C+O,EAAU/L,GAAM1c,EAASme,GAAG,MAC5BqK,EAAU9L,GAAM1c,EAASme,GAAG,MAC5BoK,EAAQ7L,GAAM1c,EAASme,GAAG,MAC1Bs+C,EAAO//C,GAAM1c,EAASme,GAAG,MACzBk+C,EAAS3/C,GAAM1c,EAASme,GAAG,MAC3B+9C,EAAQx/C,GAAM1c,EAASme,GAAG,MAE1BytC,EAAOnjC,EAAUqgD,GAAuBhuE,IAAM,IAAK2tB,IACnC,IAAZD,IAAkB,MAClBA,EAAUsgD,GAAuB54E,IAAM,KAAMs4B,IACnC,IAAVD,IAAgB,MAChBA,EAAQugD,GAAuBjuE,IAAM,KAAM0tB,IAClC,IAATk0C,IAAe,MACfA,EAAOqM,GAAuBhtE,IAAM,KAAM2gE,IAC/B,IAAXJ,IAAiB,MACjBA,EAASyM,GAAuBnmC,IAAM,KAAM05B,IAClC,IAAVH,IAAgB,OAAS,KAAMA,EAKvC,OAHAtQ,GAAK,GAAK8c,EACV9c,EAAK,IAAMid,EAAiB,EAC5Bjd,EAAK,GAAKr8B,EACHk5C,GAAkB1gE,SAAU6jD,GAgBvC,QAASuV,IAAWpC,EAAKgK,EAAgBC,GACrC,GAEIC,GAFAlpE,EAAMipE,EAAuBD,EAC7BG,EAAkBF,EAAuBjK,EAAIrC,KAajD,OATIwM,GAAkBnpE,IAClBmpE,GAAmB,GAGDnpE,EAAM,EAAxBmpE,IACAA,GAAmB,GAGvBD,EAAiB71E,GAAO2rE,GAAK57D,IAAI+lE,EAAiB,MAE9C1M,KAAMhoE,KAAK6qC,KAAK4pC,EAAehD,YAAc,GAC7Cr3C,KAAMq6C,EAAer6C,QAK7B,QAASo3C,IAAmBp3C,EAAM4tC,EAAMiJ,EAASuD,EAAsBD,GACnE,GAA6CI,GAAWlD,EAApDnqE,EAAIwqE,GAAY13C,EAAM,EAAG,GAAGw6C,WAOhC;MALAttE,GAAU,IAANA,EAAU,EAAIA,EAClB2pE,EAAqB,MAAXA,EAAkBA,EAAUsD,EACtCI,EAAYJ,EAAiBjtE,GAAKA,EAAIktE,EAAuB,EAAI,IAAUD,EAAJjtE,EAAqB,EAAI,GAChGmqE,EAAY,GAAKzJ,EAAO,IAAMiJ,EAAUsD,GAAkBI,EAAY,GAGlEv6C,KAAMq3C,EAAY,EAAIr3C,EAAOA,EAAO,EACpCq3C,UAAWA,EAAY,EAAKA,EAAY7E,EAAWxyC,EAAO,GAAKq3C,GAQvE,QAASoD,IAAW3N,GAChB,GAAI4D,GAAQ5D,EAAO4B,GACfxuC,EAAS4sC,EAAO6B,EAIpB,OAFA7B,GAAOwB,QAAUxB,EAAOwB,SAAW9pE,GAAOkoE,WAAWI,EAAO8B,IAE9C,OAAV8B,GAAmBxwC,IAAWh5B,GAAuB,KAAVwpE,EACpClsE,GAAOk2E,SAASlP,WAAW,KAGjB,gBAAVkF,KACP5D,EAAO4B,GAAKgC,EAAQ5D,EAAOwB,QAAQqM,SAASjK,IAG5ClsE,GAAOmD,SAAS+oE,GACT,GAAI7D,GAAO6D,GAAO,IAClBxwC,EACHt5B,EAAQs5B,GACRy4C,GAA2B7L,GAE3BmL,EAA4BnL,GAGhC0M,GAAkB1M,GAGf,GAAID,GAAOC,KAyCtB,QAAS8N,IAAOjwC,EAAIkwC,GAChB,GAAInL,GAAKxpE,CAIT,IAHuB,IAAnB20E,EAAQx0E,QAAgBO,EAAQi0E,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQx0E,OACT,MAAO7B,KAGX,KADAkrE,EAAMmL,EAAQ,GACT30E,EAAI,EAAGA,EAAI20E,EAAQx0E,SAAUH,EAC1B20E,EAAQ30E,GAAGykC,GAAI+kC,KACfA,EAAMmL,EAAQ30E,GAGtB,OAAOwpE,GAgsBX,QAASe,IAAeN,EAAKpoE,GACzB,GAAI+yE,EAGJ,OAAqB,gBAAV/yE,KACPA,EAAQooE,EAAIzD,aAAawJ,YAAYnuE,GAEhB,gBAAVA,IACAooE,GAIf2K,EAAal1E,KAAKwG,IAAI+jE,EAAIpwC,OAClBkyC,EAAY9B,EAAInwC,OAAQj4B,IAChCooE,EAAIjD,GAAG,OAASiD,EAAIpB,OAAS,MAAQ,IAAM,SAAShnE,EAAO+yE,GACpD3K,GAGX,QAASK,IAAUL,EAAK4K,GACpB,MAAO5K,GAAIjD,GAAG,OAASiD,EAAIpB,OAAS,MAAQ,IAAMgM,KAGtD,QAASxK,IAAUJ,EAAK4K,EAAMhzE,GAC1B,MAAa,UAATgzE,EACOtK,GAAeN,EAAKpoE,GAEpBooE,EAAIjD,GAAG,OAASiD,EAAIpB,OAAS,MAAQ,IAAMgM,GAAMhzE,GAIhE,QAASizE,IAAaD,EAAME,GACxB,MAAO,UAAUlzE,GACb,MAAa,OAATA,GACAwoE,GAAUzvE,KAAMi6E,EAAMhzE,GACtBvD,GAAO6rE,aAAavvE,KAAMm6E,GACnBn6E,MAEA0vE,GAAU1vE,KAAMi6E,IAkCnC,QAASG,IAAarN,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAASsN,IAAa7N,GAGlB,MAAe,QAARA,EAAiB,IAmL5B,QAAS8N,IAAmB/jE,GACxB7S,GAAO4M,SAASu5B,GAAGtzB,GAAQ,WACvB,MAAOvW,MAAKoT,MAAMmD,IA0D1B,QAASgkE,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAYj3E,OAE1Bi3E,GAAYj3E,OADZ82E,EACqBrP,EACb,uGAGAznE,IAEaA,IAl7E7B,IAtVA,GAAIA,IAIAg3E,GAGAt1E,GANAw1E,GAAU,QAEVD,GAAgC,mBAAXzQ,GAAyBA,EAASlqE,KAEvDgtB,GAAQloB,KAAKkoB,MACbtnB,GAAiBS,OAAOuN,UAAUhO,eAGlC23B,GAAO,EACPD,GAAQ,EACRy0C,GAAO,EACP30C,GAAO,EACPD,GAAS,EACTD,GAAS,EACTD,GAAc,EAGd6C,MAGAwuC,MAGAmE,GAA+B,mBAAX1yE,IAA0BA,EAAOD,QAGrD+4E,GAAkB,sBAClBkC,GAA0B,uDAI1BC,GAAmB,gIAGnBhI,GAAmB,mKACnBQ,GAAwB,yCAGxBkB,GAA2B,QAC3BP,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BQ,GAAmB,MACnBL,GAAiB,mHACjBG,GAAqB,uBACrBC,GAAc,KACdF,GAAwB,yBACxBK,GAAoB,UAGpBhB,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzBwE,GAAW,4IAEX0C,GAAY,uBAEZzC,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXtD,GAAuB,kBAIvB+F,IADyB,0CAA0ClzE,MAAM,MAErEmzE,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdlL,IACIuI,GAAK,cACLxtE,EAAI,SACJ5K,EAAI,SACJ2K,EAAI,OACJiB,EAAI,MACJovE,EAAI,OACJzzB,EAAI,OACJmuB,EAAI,UACJjjC,EAAI,QACJwoC,EAAI,UACJjpE,EAAI,OACJkpE,IAAM,YACNrvE,EAAI,UACJ8pE,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGR3F,IACIqL,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlB7I,MAGAkG,IACIhuE,EAAG,GACH5K,EAAG,GACH2K,EAAG,GACHiB,EAAG,GACH6mC,EAAG,IAIP+oC,GAAmB,gBAAgBl0E,MAAM,KACzCm0E,GAAe,kBAAkBn0E,MAAM,KAEvCirE,IACI9/B,EAAO,WACH,MAAOjzC,MAAK4sE,QAAU,GAE1BsP,IAAO,SAAU98C,GACb,MAAOp/B,MAAK4rE,aAAauQ,YAAYn8E,KAAMo/B,IAE/Cg9C,KAAO,SAAUh9C,GACb,MAAOp/B,MAAK4rE,aAAae,OAAO3sE,KAAMo/B,IAE1Co8C,EAAO,WACH,MAAOx7E,MAAKi/B,QAEhBy8C,IAAO,WACH,MAAO17E,MAAKu2E,aAEhBnqE,EAAO,WACH,MAAOpM,MAAKgtE,OAEhBqP,GAAO,SAAUj9C,GACb,MAAOp/B,MAAK4rE,aAAa0Q,YAAYt8E,KAAMo/B,IAE/Cm9C,IAAO,SAAUn9C,GACb,MAAOp/B,MAAK4rE,aAAa4Q,cAAcx8E,KAAMo/B,IAEjDq9C,KAAO,SAAUr9C,GACb,MAAOp/B,MAAK4rE,aAAa8Q,SAAS18E,KAAMo/B,IAE5C2oB,EAAO,WACH,MAAO/nD,MAAK8sE,QAEhBoJ,EAAO,WACH,MAAOl2E,MAAK28E,WAEhBC,GAAO,WACH,MAAOnR,GAAazrE,KAAKk/B,OAAS,IAAK,IAE3C29C,KAAO,WACH,MAAOpR,GAAazrE,KAAKk/B,OAAQ,IAErC49C,MAAQ,WACJ,MAAOrR,GAAazrE,KAAKk/B,OAAQ,IAErC69C,OAAS,WACL,GAAIvqE,GAAIxS,KAAKk/B,OAAQ1Q,EAAOhc,GAAK,EAAI,IAAM,GAC3C,OAAOgc,GAAOi9C,EAAa3mE,KAAKklB,IAAIxX,GAAI,IAE5C6jE,GAAO,WACH,MAAO5K,GAAazrE,KAAK81E,WAAa,IAAK,IAE/CkH,KAAO,WACH,MAAOvR,GAAazrE,KAAK81E,WAAY,IAEzCmH,MAAQ,WACJ,MAAOxR,GAAazrE,KAAK81E,WAAY,IAEzCG,GAAO,WACH,MAAOxK,GAAazrE,KAAKk9E,cAAgB,IAAK,IAElDC,KAAO,WACH,MAAO1R,GAAazrE,KAAKk9E,cAAe,IAE5CE,MAAQ,WACJ,MAAO3R,GAAazrE,KAAKk9E,cAAe,IAE5C7wE,EAAI,WACA,MAAOrM,MAAK+1E,WAEhBI,EAAI,WACA,MAAOn2E,MAAKq9E,cAEhBl4E,EAAO,WACH,MAAOnF,MAAK4rE,aAAa0R,SAASt9E,KAAK64B,QAAS74B,KAAK84B,WAAW,IAEpEia,EAAO,WACH,MAAO/yC,MAAK4rE,aAAa0R,SAASt9E,KAAK64B,QAAS74B,KAAK84B,WAAW,IAEpEvP,EAAO,WACH,MAAOvpB,MAAK64B,SAEhB1tB,EAAO,WACH,MAAOnL,MAAK64B,QAAU,IAAM,IAEhCr4B,EAAO,WACH,MAAOR,MAAK84B,WAEhB1tB,EAAO,WACH,MAAOpL,MAAK+4B,WAEhBvP,EAAO,WACH,MAAOymD,GAAMjwE,KAAKg5B,eAAiB,MAEvCukD,GAAO,WACH,MAAO9R,GAAawE,EAAMjwE,KAAKg5B,eAAiB,IAAK,IAEzDwkD,IAAO,WACH,MAAO/R,GAAazrE,KAAKg5B,eAAgB,IAE7CykD,KAAO,WACH,MAAOhS,GAAazrE,KAAKg5B,eAAgB,IAE7C0kD,EAAO,WACH,GAAIv4E,IAAKnF,KAAK0yE,OACV1sE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIylE,EAAawE,EAAM9qE,EAAI,IAAK,GAAK,IAAMsmE,EAAawE,EAAM9qE,GAAK,GAAI,IAElFw4E,GAAO,WACH,GAAIx4E,IAAKnF,KAAK0yE,OACV1sE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIylE,EAAawE,EAAM9qE,EAAI,IAAK,GAAKsmE,EAAawE,EAAM9qE,GAAK,GAAI,IAE5EkX,EAAI,WACA,MAAOrc,MAAK49E,YAEhBC,GAAK,WACD,MAAO79E,MAAK89E,YAEhB/zD,EAAO,WACH,MAAO/pB,MAAK+9E,QAEhBtC,EAAI,WACA,MAAOz7E,MAAK0sE,YAIpBpB,MAEA0S,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAqE5DhC,GAAiBz2E,QACpBH,GAAI42E,GAAiBnnC,MACrBk+B,GAAqB3tE,GAAI,KAAOsmE,EAAgBqH,GAAqB3tE,IAAIA,GAE7E,MAAO62E,GAAa12E,QAChBH,GAAI62E,GAAapnC,MACjBk+B,GAAqB3tE,GAAIA,IAAKmmE,EAASwH,GAAqB3tE,IAAI,EAEpE2tE,IAAqBkL,KAAO1S,EAASwH,GAAqB2I,IAAK,GA2a/Dx2E,EAAO4mE,EAAOp4D,WAEVq9D,IAAM,SAAU/E,GACZ,GAAIvmE,GAAML,CACV,KAAKA,IAAK4mE,GACNvmE,EAAOumE,EAAO5mE,GACM,kBAATK,GACPzF,KAAKoF,GAAKK,EAEVzF,KAAK,IAAMoF,GAAKK,GAK5B8nE,QAAU,wFAAwFzlE,MAAM,KACxG6kE,OAAS,SAAUnsE,GACf,MAAOR,MAAKutE,QAAQ/sE,EAAEosE,UAG1BsR,aAAe,kDAAkDp2E,MAAM,KACvEq0E,YAAc,SAAU37E,GACpB,MAAOR,MAAKk+E,aAAa19E,EAAEosE,UAG/BwI,YAAc,SAAU+I,GACpB,GAAI/4E,GAAGiqE,EAAK+O,CAMZ,KAJKp+E,KAAKq+E,eACNr+E,KAAKq+E,iBAGJj5E,EAAI,EAAO,GAAJA,EAAQA,IAQhB,GANKpF,KAAKq+E,aAAaj5E,KACnBiqE,EAAM3rE,GAAOotE,KAAK,IAAM1rE,IACxBg5E,EAAQ,IAAMp+E,KAAK2sE,OAAO0C,EAAK,IAAM,KAAOrvE,KAAKm8E,YAAY9M,EAAK,IAClErvE,KAAKq+E,aAAaj5E,GAAK,GAAIsvE,QAAO0J,EAAMnyE,QAAQ,IAAK,IAAK,MAG1DjM,KAAKq+E,aAAaj5E,GAAG+I,KAAKgwE,GAC1B,MAAO/4E,IAKnBk5E,UAAY,2DAA2Dx2E,MAAM,KAC7E40E,SAAW,SAAUl8E,GACjB,MAAOR,MAAKs+E,UAAU99E,EAAEwsE,QAG5BuR,eAAiB,8BAA8Bz2E,MAAM,KACrD00E,cAAgB,SAAUh8E,GACtB,MAAOR,MAAKu+E,eAAe/9E,EAAEwsE,QAGjCwR,aAAe,uBAAuB12E,MAAM,KAC5Cw0E,YAAc,SAAU97E,GACpB,MAAOR,MAAKw+E,aAAah+E,EAAEwsE,QAG/B0I,cAAgB,SAAU+I,GACtB,GAAIr5E,GAAGiqE,EAAK+O,CAMZ,KAJKp+E,KAAK0+E,iBACN1+E,KAAK0+E,mBAGJt5E,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANKpF,KAAK0+E,eAAet5E,KACrBiqE,EAAM3rE,IAAQ,IAAM,IAAIspE,IAAI5nE,GAC5Bg5E,EAAQ,IAAMp+E,KAAK08E,SAASrN,EAAK,IAAM,KAAOrvE,KAAKw8E,cAAcnN,EAAK,IAAM,KAAOrvE,KAAKs8E,YAAYjN,EAAK,IACzGrvE,KAAK0+E,eAAet5E,GAAK,GAAIsvE,QAAO0J,EAAMnyE,QAAQ,IAAK,IAAK,MAG5DjM,KAAK0+E,eAAet5E,GAAG+I,KAAKswE,GAC5B,MAAOr5E,IAKnBu5E,iBACIC,GAAK,SACLC,EAAI,aACJC,GAAK,eACLC,IAAM,kBACNC,KAAO,yBAEX3L,eAAiB,SAAU5qE,GACvB,GAAIgmE,GAASzuE,KAAK2+E,gBAAgBl2E,EAOlC,QANKgmE,GAAUzuE,KAAK2+E,gBAAgBl2E,EAAIyD,iBACpCuiE,EAASzuE,KAAK2+E,gBAAgBl2E,EAAIyD,eAAeD,QAAQ,mBAAoB,SAAUyhE,GACnF,MAAOA,GAAIh1C,MAAM,KAErB14B,KAAK2+E,gBAAgBl2E,GAAOgmE,GAEzBA,GAGX+G,KAAO,SAAU5F,GAGb,MAAiD,OAAxCA,EAAQ,IAAInlB,cAAclmC,OAAO,IAG9C4vD,eAAiB,gBACjBmJ,SAAW,SAAUzkD,EAAOC,EAASmmD,GACjC,MAAIpmD,GAAQ,GACDomD,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAIhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAUh3E,EAAK4mE,GACtB,GAAIZ,GAASzuE,KAAKk/E,UAAUz2E,EAC5B,OAAyB,kBAAXgmE,GAAwBA,EAAOp2D,MAAMg3D,GAAOZ,GAG9DiR,eACIC,OAAS,QACTC,KAAO,SACPx0E,EAAI,gBACJ5K,EAAI,WACJq/E,GAAK,aACL10E,EAAI,UACJ20E,GAAK,WACL1zE,EAAI,QACJiwE,GAAK,UACLppC,EAAI,UACJ8sC,GAAK,YACLvtE,EAAI,SACJwtE,GAAK,YAGT9G,aAAe,SAAU5K,EAAQ0K,EAAelE,EAAQmE,GACpD,GAAIxK,GAASzuE,KAAK0/E,cAAc5K,EAChC,OAA0B,kBAAXrG,GACXA,EAAOH,EAAQ0K,EAAelE,EAAQmE,GACtCxK,EAAOxiE,QAAQ,MAAOqiE,IAG9B2R,WAAa,SAAUx0D,EAAMgjD,GACzB,GAAIrvC,GAASp/B,KAAK0/E,cAAcj0D,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAX2T,GAAwBA,EAAOqvC,GAAUrvC,EAAOnzB,QAAQ,MAAOwiE,IAGjF5C,QAAU,SAAUyC,GAChB,MAAOtuE,MAAKkgF,SAASj0E,QAAQ,KAAMqiE,IAEvC4R,SAAW,KAEXrG,SAAW,SAAU/E,GACjB,MAAOA,IAGXqL,WAAa,SAAUrL,GACnB,MAAOA,IAGXhI,KAAO,SAAUuC,GACb,MAAOoC,IAAWpC,EAAKrvE,KAAKo2E,MAAM7E,IAAKvxE,KAAKo2E,MAAM5E,KAAK1E,MAG3DsJ,OACI7E,IAAM,EACNC,IAAM,GAGV4O,aAAc,eACdjN,YAAa,WACT,MAAOnzE,MAAKogF,gBA6wBpB18E,GAAS,SAAUksE,EAAOxwC,EAAQS,EAAQm5B,GACtC,GAAIv4D,EAiBJ,OAfuB,iBAAb,KACNu4D,EAASn5B,EACTA,EAASz5B,GAIb3F,KACAA,EAAEktE,kBAAmB,EACrBltE,EAAEmtE,GAAKgC,EACPnvE,EAAEotE,GAAKzuC,EACP3+B,EAAEqtE,GAAKjuC,EACPp/B,EAAEstE,QAAU/U,EACZv4D,EAAEwtE,QAAS,EACXxtE,EAAE0tE,IAAM9D,IAEDsP,GAAWl5E,IAGtBiD,GAAOunE,6BAA8B,EAErCvnE,GAAO+0E,wBAA0BtN,EAC7B,4LAIA,SAAUa,GACNA,EAAOI,GAAK,GAAIloE,MAAK8nE,EAAO4B,MA0BpClqE,GAAO4H,IAAM,WACT,GAAI4wD,MAAUxjC,MAAMn4B,KAAK+E,UAAW,EAEpC,OAAOw0E,IAAO,WAAY5d,IAG9Bx4D,GAAOqJ,IAAM,WACT,GAAImvD,MAAUxjC,MAAMn4B,KAAK+E,UAAW,EAEpC,OAAOw0E,IAAO,UAAW5d,IAI7Bx4D,GAAOotE,IAAM,SAAUlB,EAAOxwC,EAAQS,EAAQm5B,GAC1C,GAAIv4D,EAkBJ,OAhBuB,iBAAb,KACNu4D,EAASn5B,EACTA,EAASz5B,GAIb3F,KACAA,EAAEktE,kBAAmB,EACrBltE,EAAEg1E,SAAU,EACZh1E,EAAEwtE,QAAS,EACXxtE,EAAEqtE,GAAKjuC,EACPp/B,EAAEmtE,GAAKgC,EACPnvE,EAAEotE,GAAKzuC,EACP3+B,EAAEstE,QAAU/U,EACZv4D,EAAE0tE,IAAM9D,IAEDsP,GAAWl5E,GAAGqwE,OAIzBptE,GAAOq6E,KAAO,SAAUnO,GACpB,MAAOlsE,IAAe,IAARksE,IAIlBlsE,GAAO4M,SAAW,SAAUs/D,EAAOnnE,GAC/B,GAGI+lB,GACA6xD,EACAC,EACAC,EANAjwE,EAAWs/D,EAEXzrE,EAAQ,IA+DZ,OAzDIT,IAAO88E,WAAW5Q,GAClBt/D,GACIsoE,GAAIhJ,EAAMvC,cACVjhE,EAAGwjE,EAAMtC,MACTr6B,EAAG28B,EAAMrC,SAEW,gBAAVqC,IACdt/D,KACI7H,EACA6H,EAAS7H,GAAOmnE,EAEhBt/D,EAAS0oB,aAAe42C,IAElBzrE,EAAQ02E,GAAwBx2E,KAAKurE,KAC/CphD,EAAqB,MAAbrqB,EAAM,GAAc,GAAK,EACjCmM,GACIkC,EAAG,EACHpG,EAAG6jE,EAAM9rE,EAAM0tE,KAASrjD,EACxBrjB,EAAG8kE,EAAM9rE,EAAM+4B,KAAS1O,EACxBhuB,EAAGyvE,EAAM9rE,EAAM84B,KAAWzO,EAC1BpjB,EAAG6kE,EAAM9rE,EAAM64B,KAAWxO,EAC1BoqD,GAAI3I,EAAM9rE,EAAM44B,KAAgBvO,KAE1BrqB,EAAQ22E,GAAiBz2E,KAAKurE,KACxCphD,EAAqB,MAAbrqB,EAAM,GAAc,GAAK,EACjCm8E,EAAW,SAAUG,GAIjB,GAAI7R,GAAM6R,GAAOj8D,WAAWi8D,EAAIx0E,QAAQ,IAAK,KAE7C,QAAQ3H,MAAMsqE,GAAO,EAAIA,GAAOpgD,GAEpCle,GACIkC,EAAG8tE,EAASn8E,EAAM,IAClB8uC,EAAGqtC,EAASn8E,EAAM,IAClBiI,EAAGk0E,EAASn8E,EAAM,IAClBgH,EAAGm1E,EAASn8E,EAAM,IAClB3D,EAAG8/E,EAASn8E,EAAM,IAClBiH,EAAGk1E,EAASn8E,EAAM,IAClB4jD,EAAGu4B,EAASn8E,EAAM,MAEK,gBAAbmM,KACT,QAAUA,IAAY,MAAQA,MACnCiwE,EAAUzR,EAAkBprE,GAAO4M,EAASiY,MAAO7kB,GAAO4M,EAASkY,KAEnElY,KACAA,EAASsoE,GAAK2H,EAAQvnD,aACtB1oB,EAAS2iC,EAAIstC,EAAQ5T,QAGzB0T,EAAM,GAAIhU,GAAS/7D,GAEf5M,GAAO88E,WAAW5Q,IAAUxF,EAAWwF,EAAO,aAC9CyQ,EAAI7S,QAAUoC,EAAMpC,SAGjB6S,GAIX38E,GAAOg9E,QAAU9F,GAGjBl3E,GAAOi9E,cAAgB5F,GAGvBr3E,GAAO0zE,SAAW,aAIlB1zE,GAAO0qE,iBAAmBA,GAI1B1qE,GAAO6rE,aAAe,aAGtB7rE,GAAOk9E,sBAAwB,SAAUC,EAAWC,GAChD,MAAI1H,IAAuByH,KAAez6E,GAC/B,EAEP06E,IAAU16E,EACHgzE,GAAuByH,IAElCzH,GAAuByH,GAAaC,GAC7B,IAGXp9E,GAAOmwC,KAAOs3B,EACV,wDACA,SAAU1iE,EAAKxB,GACX,MAAOvD,IAAOm8B,OAAOp3B,EAAKxB,KAOlCvD,GAAOm8B,OAAS,SAAUp3B,EAAK2O,GAC3B,GAAIlE,EAcJ,OAbIzK,KAEIyK,EADmB,mBAAb,GACCxP,GAAOq9E,aAAat4E,EAAK2O,GAGzB1T,GAAOkoE,WAAWnjE,GAGzByK,IACAxP,GAAO4M,SAASk9D,QAAU9pE,GAAO8pE,QAAUt6D,IAI5CxP,GAAO8pE,QAAQwT,OAG1Bt9E,GAAOq9E,aAAe,SAAUxqE,EAAMa,GAClC,MAAe,QAAXA,GACAA,EAAO6pE,KAAO1qE,EACTqpB,GAAQrpB,KACTqpB,GAAQrpB,GAAQ,GAAIu1D,IAExBlsC,GAAQrpB,GAAMw6D,IAAI35D,GAGlB1T,GAAOm8B,OAAOtpB,GAEPqpB,GAAQrpB,WAGRqpB,IAAQrpB,GACR,OAIf7S,GAAOw9E,SAAW/V,EACd,gEACA,SAAU1iE,GACN,MAAO/E,IAAOkoE,WAAWnjE,KAKjC/E,GAAOkoE,WAAa,SAAUnjE,GAC1B,GAAIo3B,EAMJ,IAJIp3B,GAAOA,EAAI+kE,SAAW/kE,EAAI+kE,QAAQwT,QAClCv4E,EAAMA,EAAI+kE,QAAQwT,QAGjBv4E,EACD,MAAO/E,IAAO8pE,OAGlB,KAAK1nE,EAAQ2C,GAAM,CAGf,GADAo3B,EAASwyC,EAAW5pE,GAEhB,MAAOo3B,EAEXp3B,IAAOA,GAGX,MAAO0pE,GAAa1pE,IAIxB/E,GAAOmD,SAAW,SAAUsb,GACxB,MAAOA,aAAe4pD,IACV,MAAP5pD,GAAeioD,EAAWjoD,EAAK,qBAIxCze,GAAO88E,WAAa,SAAUr+D,GAC1B,MAAOA,aAAekqD,GAG1B,KAAKjnE,GAAI44E,GAAMz4E,OAAS,EAAGH,IAAK,IAAKA,GACjCqrE,EAASuN,GAAM54E,IAGnB1B,IAAOwsE,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1BzsE,GAAOk2E,QAAU,SAAUuH,GACvB,GAAI3gF,GAAIkD,GAAOotE,IAAIoH,IAQnB,OAPa,OAATiJ,EACAj8E,EAAO1E,EAAE2tE,IAAKgT,GAGd3gF,EAAE2tE,IAAItD,iBAAkB,EAGrBrqE,GAGXkD,GAAO09E,UAAY,WACf,MAAO19E,IAAO2U,MAAM,KAAM/S,WAAW87E,aAGzC19E,GAAO4xE,kBAAoB,SAAU1F,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAQtD1qE,EAAOxB,GAAOmmC,GAAKkiC,EAAOr4D,WAEtBulB,MAAQ,WACJ,MAAOv1B,IAAO1D,OAGlB4G,QAAU,WACN,OAAQ5G,KAAKosE,GAA4B,KAArBpsE,KAAKkuE,SAAW,IAGxC6P,KAAO,WACH,MAAOj5E,MAAKC,OAAO/E,KAAO,MAG9BiF,SAAW,WACP,MAAOjF,MAAKi5B,QAAQ4G,OAAO,MAAMT,OAAO,qCAG5Ct4B,OAAS,WACL,MAAO9G,MAAKkuE,QAAU,GAAIhqE,OAAMlE,MAAQA,KAAKosE,IAGjDplE,YAAc,WACV,GAAIxG,GAAIkD,GAAO1D,MAAM8wE,KACrB,OAAI,GAAItwE,EAAE0+B,QAAU1+B,EAAE0+B,QAAU,KACrB8zC,EAAaxyE,EAAG,gCAEhBwyE,EAAaxyE,EAAG,mCAI/B8H,QAAU,WACN,GAAI9H,GAAIR,IACR,QACIQ,EAAE0+B,OACF1+B,EAAEosE,QACFpsE,EAAEy+B,OACFz+B,EAAEq4B,QACFr4B,EAAEs4B,UACFt4B,EAAEu4B,UACFv4B,EAAEw4B,iBAIV+4C,QAAU,WACN,MAAOA,GAAQ/xE,OAGnBqhF,aAAe,WACX,MAAIrhF,MAAK4xE,GACE5xE,KAAK+xE,WAAalC,EAAc7vE,KAAK4xE,IAAK5xE,KAAKiuE,OAASvqE,GAAOotE,IAAI9wE,KAAK4xE,IAAMluE,GAAO1D,KAAK4xE,KAAKtpE,WAAa,GAGhH,GAGXg5E,aAAe,WACX,MAAOp8E,MAAWlF,KAAKmuE,MAG3BoT,UAAW,WACP,MAAOvhF,MAAKmuE,IAAInrD,UAGpB8tD,IAAM,SAAU0Q,GACZ,MAAOxhF,MAAK0yE,KAAK,EAAG8O,IAGxB7O,MAAQ,SAAU6O,GASd,MARIxhF,MAAKiuE,SACLjuE,KAAK0yE,KAAK,EAAG8O,GACbxhF,KAAKiuE,QAAS,EAEVuT,GACAxhF,KAAKyT,IAAIzT,KAAKyhF,gBAAiB,MAGhCzhF,MAGXo/B,OAAS,SAAUsiD,GACf,GAAIjT,GAASuE,EAAahzE,KAAM0hF,GAAeh+E,GAAOi9E,cACtD,OAAO3gF,MAAK4rE,aAAauU,WAAW1R,IAGxCh7D,IAAMw7D,EAAY,EAAG,OAErBxkD,SAAWwkD,EAAY,GAAI,YAE3BxjD,KAAO,SAAUmkD,EAAOO,EAAOwR,GAC3B,GAEIl2D,GAAMgjD,EAAQmT,EAFdC,EAAO9S,EAAOa,EAAO5vE,MACrB8hF,EAAyC,KAA7B9hF,KAAK0yE,OAASmP,EAAKnP,OA8BnC,OA3BAvC,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAEpB1kD,EAAmD,OAA3CzrB,KAAKmxE,cAAgB0Q,EAAK1Q,eAElC1C,EAAwC,IAA7BzuE,KAAKk/B,OAAS2iD,EAAK3iD,SAAiBl/B,KAAK4sE,QAAUiV,EAAKjV,SAGnEgV,EAAc5hF,KAAO0D,GAAO1D,MAAM+hF,QAAQ,UACrCF,EAAOn+E,GAAOm+E,GAAME,QAAQ,UAEjCH,GACgE,KADhD5hF,KAAK0yE,OAAShvE,GAAO1D,MAAM+hF,QAAQ,SAASrP,QACnDmP,EAAKnP,OAAShvE,GAAOm+E,GAAME,QAAQ,SAASrP,SACrDjE,GAAUmT,EAAan2D,EACT,SAAV0kD,IACA1B,GAAkB,MAGtBhjD,EAAQzrB,KAAO6hF,EACfpT,EAAmB,WAAV0B,EAAqB1kD,EAAO,IACvB,WAAV0kD,EAAqB1kD,EAAO,IAClB,SAAV0kD,EAAmB1kD,EAAO,KAChB,QAAV0kD,GAAmB1kD,EAAOq2D,GAAY,MAC5B,SAAV3R,GAAoB1kD,EAAOq2D,GAAY,OACvCr2D,GAEDk2D,EAAUlT,EAASJ,EAASI,IAGvClmD,KAAO,SAAU+R,EAAM0+C,GACnB,MAAOt1E,IAAO4M,UAAUkY,GAAIxoB,KAAMuoB,KAAM+R,IAAOuF,OAAO7/B,KAAK6/B,UAAUmiD,UAAUhJ,IAGnFiJ,QAAU,SAAUjJ,GAChB,MAAOh5E,MAAKuoB,KAAK7kB,KAAUs1E,IAG/ByG,SAAW,SAAUnlD,GAGjB,GAAI1B,GAAM0B,GAAQ52B,KACdw+E,EAAMnT,EAAOn2C,EAAK54B,MAAM+hF,QAAQ,OAChCt2D,EAAOzrB,KAAKyrB,KAAKy2D,EAAK,QAAQ,GAC9B9iD,EAAgB,GAAP3T,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAOzrB,MAAKo/B,OAAOp/B,KAAK4rE,aAAa6T,SAASrgD,EAAQp/B,QAG1D2xE,WAAa,WACT,MAAOA,GAAW3xE,KAAKk/B,SAG3BijD,MAAQ,WACJ,MAAQniF,MAAK0yE,OAAS1yE,KAAKi5B,QAAQ2zC,MAAM,GAAG8F,QACxC1yE,KAAK0yE,OAAS1yE,KAAKi5B,QAAQ2zC,MAAM,GAAG8F,QAG5C1F,IAAM,SAAU4C,GACZ,GAAI5C,GAAMhtE,KAAKiuE,OAASjuE,KAAKosE,GAAGsN,YAAc15E,KAAKosE,GAAGgW,QACtD,OAAa,OAATxS,GACAA,EAAQkJ,GAAalJ,EAAO5vE,KAAK4rE,cAC1B5rE,KAAKyT,IAAIm8D,EAAQ5C,EAAK,MAEtBA,GAIfJ,MAAQsN,GAAa,SAAS,GAE9B6H,QAAU,SAAU5R,GAIhB,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACDnwE,KAAK4sE,MAAM,EAEf,KAAK,UACL,IAAK,QACD5sE,KAAKi/B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACDj/B,KAAK64B,MAAM,EAEf,KAAK,OACD74B,KAAK84B,QAAQ,EAEjB,KAAK,SACD94B,KAAK+4B,QAAQ,EAEjB,KAAK,SACD/4B,KAAKg5B,aAAa,GAgBtB,MAXc,SAAVm3C,EACAnwE,KAAK+1E,QAAQ,GACI,YAAV5F,GACPnwE,KAAKq9E,WAAW,GAIN,YAAVlN,GACAnwE,KAAK4sE,MAAqC,EAA/B9nE,KAAKC,MAAM/E,KAAK4sE,QAAU,IAGlC5sE,MAGXqiF,MAAO,SAAUlS,GAEb,MADAA,GAAQD,EAAeC,GAChBnwE,KAAK+hF,QAAQ5R,GAAO18D,IAAI,EAAc,YAAV08D,EAAsB,OAASA,GAAQ1lD,SAAS,EAAG,OAG1FokD,QAAS,SAAUe,EAAOO,GAEtB,MADAA,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQlsE,GAAOmD,SAAS+oE,GAASA,EAAQlsE,GAAOksE,IACxC5vE,MAAQ4vE,IAER5vE,KAAKi5B,QAAQ8oD,QAAQ5R,IAAUzsE,GAAOksE,GAAOmS,QAAQ5R,IAIrEnB,SAAU,SAAUY,EAAOO,GAEvB,MADAA,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQlsE,GAAOmD,SAAS+oE,GAASA,EAAQlsE,GAAOksE,IAChCA,GAAR5vE,OAEAA,KAAKi5B,QAAQ8oD,QAAQ5R,IAAUzsE,GAAOksE,GAAOmS,QAAQ5R,IAIrEmS,OAAQ,SAAU1S,EAAOO,GAErB,MADAA,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAP,EAAQlsE,GAAOmD,SAAS+oE,GAASA,EAAQlsE,GAAOksE,IACxC5vE,QAAU4vE,IAEV5vE,KAAKi5B,QAAQ8oD,QAAQ5R,MAAYpB,EAAOa,EAAO5vE,MAAM+hF,QAAQ5R,IAI7E7kE,IAAK6/D,EACI,mGACA,SAAU3lE,GAEN,MADAA,GAAQ9B,GAAO2U,MAAM,KAAM/S,WACZtF,KAARwF,EAAexF,KAAOwF,IAI1CuH,IAAKo+D,EACG,mGACA,SAAU3lE,GAEN,MADAA,GAAQ9B,GAAO2U,MAAM,KAAM/S,WACpBE,EAAQxF,KAAOA,KAAOwF,IAczCktE,KAAO,SAAU9C,EAAO4R,GACpB,GACIe,GADAz5D,EAAS9oB,KAAKkuE,SAAW,CAE7B,OAAa,OAAT0B,EA0BO5vE,KAAKiuE,OAASnlD,EAAS9oB,KAAKyhF,iBAzBd,gBAAV7R,KACPA,EAAQiF,EAA0BjF,IAElC9qE,KAAKklB,IAAI4lD,GAAS,KAClBA,EAAgB,GAARA,IAEP5vE,KAAKiuE,QAAUuT,IAChBe,EAAcviF,KAAKyhF,iBAEvBzhF,KAAKkuE,QAAU0B,EACf5vE,KAAKiuE,QAAS,EACK,MAAfsU,GACAviF,KAAKyqB,SAAS83D,EAAa,KAE3Bz5D,IAAW8mD,KACN4R,GAAiBxhF,KAAKwiF,kBACvBpT,EAAgCpvE,KACxB0D,GAAO4M,SAASwY,EAAS8mD,EAAO,KAAM,GAAG,GACzC5vE,KAAKwiF,oBACbxiF,KAAKwiF,mBAAoB,EACzB9+E,GAAO6rE,aAAavvE,MAAM,GAC1BA,KAAKwiF,kBAAoB,OAM9BxiF,OAGX49E,SAAW,WACP,MAAO59E,MAAKiuE,OAAS,MAAQ,IAGjC6P,SAAW,WACP,MAAO99E,MAAKiuE,OAAS,6BAA+B,IAGxDmT,UAAY,WAMR,MALIphF,MAAKguE,KACLhuE,KAAK0yE,KAAK1yE,KAAKguE,MACW,gBAAZhuE,MAAK4tE,IACnB5tE,KAAK0yE,KAAK1yE,KAAK4tE,IAEZ5tE,MAGXyiF,qBAAuB,SAAU7S,GAQ7B,MAHIA,GAJCA,EAIOlsE,GAAOksE,GAAO8C,OAHd,GAMJ1yE,KAAK0yE,OAAS9C,GAAS,KAAO,GAG1CuB,YAAc,WACV,MAAOA,GAAYnxE,KAAKk/B,OAAQl/B,KAAK4sE,UAGzC2J,UAAY,SAAU3G,GAClB,GAAI2G,GAAYvpD,IAAOtpB,GAAO1D,MAAM+hF,QAAQ,OAASr+E,GAAO1D,MAAM+hF,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAATnS,EAAgB2G,EAAYv2E,KAAKyT,IAAKm8D,EAAQ2G,EAAY,MAGrE7J,QAAU,SAAUkD,GAChB,MAAgB,OAATA,EAAgB9qE,KAAK6qC,MAAM3vC,KAAK4sE,QAAU,GAAK,GAAK5sE,KAAK4sE,MAAoB,GAAbgD,EAAQ,GAAS5vE,KAAK4sE,QAAU,IAG3GkJ,SAAW,SAAUlG,GACjB,GAAI1wC,GAAOuyC,GAAWzxE,KAAMA,KAAK4rE,aAAawK,MAAM7E,IAAKvxE,KAAK4rE,aAAawK,MAAM5E,KAAKtyC,IACtF,OAAgB,OAAT0wC,EAAgB1wC,EAAOl/B,KAAKyT,IAAKm8D,EAAQ1wC,EAAO,MAG3Dg+C,YAAc,SAAUtN,GACpB,GAAI1wC,GAAOuyC,GAAWzxE,KAAM,EAAG,GAAGk/B,IAClC,OAAgB,OAAT0wC,EAAgB1wC,EAAOl/B,KAAKyT,IAAKm8D,EAAQ1wC,EAAO,MAG3D4tC,KAAO,SAAU8C,GACb,GAAI9C,GAAO9sE,KAAK4rE,aAAakB,KAAK9sE,KAClC,OAAgB,OAAT4vE,EAAgB9C,EAAO9sE,KAAKyT,IAAqB,GAAhBm8D,EAAQ9C,GAAW,MAG/D6P,QAAU,SAAU/M,GAChB,GAAI9C,GAAO2E,GAAWzxE,KAAM,EAAG,GAAG8sE,IAClC,OAAgB,OAAT8C,EAAgB9C,EAAO9sE,KAAKyT,IAAqB,GAAhBm8D,EAAQ9C,GAAW,MAG/DiJ,QAAU,SAAUnG,GAChB,GAAImG,IAAW/1E,KAAKgtE,MAAQ,EAAIhtE,KAAK4rE,aAAawK,MAAM7E,KAAO,CAC/D,OAAgB,OAAT3B,EAAgBmG,EAAU/1E,KAAKyT,IAAIm8D,EAAQmG,EAAS,MAG/DsH,WAAa,SAAUzN,GAInB,MAAgB,OAATA,EAAgB5vE,KAAKgtE,OAAS,EAAIhtE,KAAKgtE,IAAIhtE,KAAKgtE,MAAQ,EAAI4C,EAAQA,EAAQ,IAGvF8S,eAAiB,WACb,MAAOpR,GAAYtxE,KAAKk/B,OAAQ,EAAG,IAGvCoyC,YAAc,WACV,GAAIqR,GAAW3iF,KAAK4rE,aAAawK,KACjC,OAAO9E,GAAYtxE,KAAKk/B,OAAQyjD,EAASpR,IAAKoR,EAASnR,MAG3Dj8D,IAAM,SAAU46D,GAEZ,MADAA,GAAQD,EAAeC,GAChBnwE,KAAKmwE,MAGhBY,IAAM,SAAUZ,EAAOlpE,GAKnB,MAJAkpE,GAAQD,EAAeC,GACI,kBAAhBnwE,MAAKmwE,IACZnwE,KAAKmwE,GAAOlpE,GAETjH,MAMX6/B,OAAS,SAAUp3B,GACf,GAAIm6E,EAEJ,OAAIn6E,KAAQrC,EACDpG,KAAKwtE,QAAQwT,OAEpB4B,EAAgBl/E,GAAOkoE,WAAWnjE,GACb,MAAjBm6E,IACA5iF,KAAKwtE,QAAUoV,GAEZ5iF,OAIf6zC,KAAOs3B,EACH,oEACA,SAAU1iE,GACN,MAAIA,KAAQrC,EACDpG,KAAK4rE,aAEL5rE,KAAK6/B,OAAOp3B,KAK/BmjE,WAAa,WACT,MAAO5rE,MAAKwtE,SAGhBiU,cAAgB,WAGZ,MAAsD,IAA/C38E,KAAKkoB,MAAMhtB,KAAKosE,GAAGyW,oBAAsB,OA8CxDn/E,GAAOmmC,GAAGujC,YAAc1pE,GAAOmmC,GAAG7Q,aAAekhD,GAAa,gBAAgB,GAC9Ex2E,GAAOmmC,GAAGsjC,OAASzpE,GAAOmmC,GAAG9Q,QAAUmhD,GAAa,WAAW,GAC/Dx2E,GAAOmmC,GAAGqjC,OAASxpE,GAAOmmC,GAAG/Q,QAAUohD,GAAa,WAAW,GAK/Dx2E,GAAOmmC,GAAGojC,KAAOvpE,GAAOmmC,GAAGhR,MAAQqhD,GAAa,SAAS,GAEzDx2E,GAAOmmC,GAAG5K,KAAOi7C,GAAa,QAAQ,GACtCx2E,GAAOmmC,GAAGi5C,MAAQ3X,EAAU,kDAAmD+O,GAAa,QAAQ,IACpGx2E,GAAOmmC,GAAG3K,KAAOg7C,GAAa,YAAY,GAC1Cx2E,GAAOmmC,GAAG2iC,MAAQrB,EAAU,kDAAmD+O,GAAa,YAAY,IAGxGx2E,GAAOmmC,GAAGkjC,KAAOrpE,GAAOmmC,GAAGmjC,IAC3BtpE,GAAOmmC,GAAG8iC,OAASjpE,GAAOmmC,GAAG+iC,MAC7BlpE,GAAOmmC,GAAGgjC,MAAQnpE,GAAOmmC,GAAGijC,KAC5BppE,GAAOmmC,GAAGk5C,SAAWr/E,GAAOmmC,GAAG8yC,QAC/Bj5E,GAAOmmC,GAAG4iC,SAAW/oE,GAAOmmC,GAAG6iC,QAG/BhpE,GAAOmmC,GAAGm5C,OAASt/E,GAAOmmC,GAAG7iC,YAkB7B9B,EAAOxB,GAAO4M,SAASu5B,GAAKwiC,EAAS34D,WAEjC+5D,QAAU,WACN,GAII10C,GAASD,EAASD,EAJlBG,EAAeh5B,KAAKqtE,cACpBN,EAAO/sE,KAAKstE,MACZX,EAAS3sE,KAAKutE,QACdr6D,EAAOlT,KAAKoT,MACao5D,EAAQ,CAIrCt5D,GAAK8lB,aAAeA,EAAe,IAEnCD,EAAUs1C,EAASr1C,EAAe,KAClC9lB,EAAK6lB,QAAUA,EAAU,GAEzBD,EAAUu1C,EAASt1C,EAAU,IAC7B7lB,EAAK4lB,QAAUA,EAAU,GAEzBD,EAAQw1C,EAASv1C,EAAU,IAC3B5lB,EAAK2lB,MAAQA,EAAQ,GAErBk0C,GAAQsB,EAASx1C,EAAQ,IAGzB2zC,EAAQ6B,EAAS+L,GAAYrN,IAC7BA,GAAQsB,EAASgM,GAAY7N,IAI7BG,GAAU0B,EAAStB,EAAO,IAC1BA,GAAQ,GAGRP,GAAS6B,EAAS1B,EAAS,IAC3BA,GAAU,GAEVz5D,EAAK65D,KAAOA,EACZ75D,EAAKy5D,OAASA,EACdz5D,EAAKs5D,MAAQA,GAGjBxiD,IAAM,WAYF,MAXAhqB,MAAKqtE,cAAgBvoE,KAAKklB,IAAIhqB,KAAKqtE,eACnCrtE,KAAKstE,MAAQxoE,KAAKklB,IAAIhqB,KAAKstE,OAC3BttE,KAAKutE,QAAUzoE,KAAKklB,IAAIhqB,KAAKutE,SAE7BvtE,KAAKoT,MAAM4lB,aAAel0B,KAAKklB,IAAIhqB,KAAKoT,MAAM4lB,cAC9Ch5B,KAAKoT,MAAM2lB,QAAUj0B,KAAKklB,IAAIhqB,KAAKoT,MAAM2lB,SACzC/4B,KAAKoT,MAAM0lB,QAAUh0B,KAAKklB,IAAIhqB,KAAKoT,MAAM0lB,SACzC94B,KAAKoT,MAAMylB,MAAQ/zB,KAAKklB,IAAIhqB,KAAKoT,MAAMylB,OACvC74B,KAAKoT,MAAMu5D,OAAS7nE,KAAKklB,IAAIhqB,KAAKoT,MAAMu5D,QACxC3sE,KAAKoT,MAAMo5D,MAAQ1nE,KAAKklB,IAAIhqB,KAAKoT,MAAMo5D,OAEhCxsE,MAGX6sE,MAAQ,WACJ,MAAOwB,GAASruE,KAAK+sE,OAAS,IAGlCnmE,QAAU,WACN,MAAO5G,MAAKqtE,cACG,MAAbrtE,KAAKstE,MACJttE,KAAKutE,QAAU,GAAM,OACK,QAA3B0C,EAAMjwE,KAAKutE,QAAU,KAG3ByU,SAAW,SAAUiB,GACjB,GAAIxU,GAASyK,GAAal5E,MAAOijF,EAAYjjF,KAAK4rE,aAMlD,OAJIqX,KACAxU,EAASzuE,KAAK4rE,aAAaqU,YAAYjgF,KAAMyuE,IAG1CzuE,KAAK4rE,aAAauU,WAAW1R,IAGxCh7D,IAAM,SAAUm8D,EAAOlC,GAEnB,GAAIwB,GAAMxrE,GAAO4M,SAASs/D,EAAOlC,EAQjC,OANA1tE,MAAKqtE,eAAiB6B,EAAI7B,cAC1BrtE,KAAKstE,OAAS4B,EAAI5B,MAClBttE,KAAKutE,SAAW2B,EAAI3B,QAEpBvtE,KAAKytE,UAEEztE,MAGXyqB,SAAW,SAAUmlD,EAAOlC,GACxB,GAAIwB,GAAMxrE,GAAO4M,SAASs/D,EAAOlC,EAQjC,OANA1tE,MAAKqtE,eAAiB6B,EAAI7B,cAC1BrtE,KAAKstE,OAAS4B,EAAI5B,MAClBttE,KAAKutE,SAAW2B,EAAI3B,QAEpBvtE,KAAKytE,UAEEztE,MAGXuV,IAAM,SAAU46D,GAEZ,MADAA,GAAQD,EAAeC,GAChBnwE,KAAKmwE,EAAM1lB,cAAgB,QAGtCh8B,GAAK,SAAU0hD,GACX,GAAIpD,GAAMJ,CAGV,IAFAwD,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFApD,GAAO/sE,KAAKstE,MAAQttE,KAAKqtE,cAAgB,MACzCV,EAAS3sE,KAAKutE,QAA8B,GAApB6M,GAAYrN,GACnB,UAAVoD,EAAoBxD,EAASA,EAAS,EAI7C,QADAI,EAAO/sE,KAAKstE,MAAQ+M,GAAYr6E,KAAKutE,QAAU,IACvC4C,GACJ,IAAK,OAAQ,MAAOpD,GAAO,EAAI/sE,KAAKqtE,cAAgB,MACpD,KAAK,MAAO,MAAON,GAAO/sE,KAAKqtE,cAAgB,KAC/C,KAAK,OAAQ,MAAc,IAAPN,EAAY/sE,KAAKqtE,cAAgB,IACrD,KAAK,SAAU,MAAc,IAAPN,EAAY,GAAK/sE,KAAKqtE,cAAgB,GAC5D,KAAK,SAAU,MAAc,IAAPN,EAAY,GAAK,GAAK/sE,KAAKqtE,cAAgB,GAEjE,KAAK,cAAe,MAAOvoE,MAAKC,MAAa,GAAPgoE,EAAY,GAAK,GAAK,KAAQ/sE,KAAKqtE,aACzE,SAAS,KAAM,IAAI5pE,OAAM,gBAAkB0sE,KAKvDt8B,KAAOnwC,GAAOmmC,GAAGgK,KACjBhU,OAASn8B,GAAOmmC,GAAGhK,OAEnBqjD,YAAc/X,EACV,sFAEA,WACI,MAAOnrE,MAAKgH,gBAIpBA,YAAc,WAEV,GAAIwlE,GAAQ1nE,KAAKklB,IAAIhqB,KAAKwsE,SACtBG,EAAS7nE,KAAKklB,IAAIhqB,KAAK2sE,UACvBI,EAAOjoE,KAAKklB,IAAIhqB,KAAK+sE,QACrBl0C,EAAQ/zB,KAAKklB,IAAIhqB,KAAK64B,SACtBC,EAAUh0B,KAAKklB,IAAIhqB,KAAK84B,WACxBC,EAAUj0B,KAAKklB,IAAIhqB,KAAK+4B,UAAY/4B,KAAKg5B,eAAiB,IAE9D,OAAKh5B,MAAKmjF,aAMFnjF,KAAKmjF,YAAc,EAAI,IAAM,IACjC,KACC3W,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBI,EAAOA,EAAO,IAAM,KACnBl0C,GAASC,GAAWC,EAAW,IAAM,KACtCF,EAAQA,EAAQ,IAAM,KACtBC,EAAUA,EAAU,IAAM,KAC1BC,EAAUA,EAAU,IAAM,IAXpB,OAcf6yC,WAAa,WACT,MAAO5rE,MAAKwtE,WAIpB9pE,GAAO4M,SAASu5B,GAAG5kC,SAAWvB,GAAO4M,SAASu5B,GAAG7iC,WAQjD,KAAK5B,KAAK41E,IACF5Q,EAAW4Q,GAAwB51E,KACnCk1E,GAAmBl1E,GAAEqlD,cAI7B/mD,IAAO4M,SAASu5B,GAAGu5C,eAAiB,WAChC,MAAOpjF,MAAKyuB,GAAG,OAEnB/qB,GAAO4M,SAASu5B,GAAGs5C,UAAY,WAC3B,MAAOnjF,MAAKyuB,GAAG,MAEnB/qB,GAAO4M,SAASu5B,GAAGw5C,UAAY,WAC3B,MAAOrjF,MAAKyuB,GAAG,MAEnB/qB,GAAO4M,SAASu5B,GAAGy5C,QAAU,WACzB,MAAOtjF,MAAKyuB,GAAG,MAEnB/qB,GAAO4M,SAASu5B,GAAG05C,OAAS,WACxB,MAAOvjF,MAAKyuB,GAAG,MAEnB/qB,GAAO4M,SAASu5B,GAAG25C,QAAU,WACzB,MAAOxjF,MAAKyuB,GAAG,UAEnB/qB,GAAO4M,SAASu5B,GAAG45C,SAAW,WAC1B,MAAOzjF,MAAKyuB,GAAG,MAEnB/qB,GAAO4M,SAASu5B,GAAG65C,QAAU,WACzB,MAAO1jF,MAAKyuB,GAAG,MASnB/qB,GAAOm8B,OAAO,MACVgsC,QAAU,SAAUyC,GAChB,GAAItoE,GAAIsoE,EAAS,GACbG,EAAuC,IAA7BwB,EAAM3B,EAAS,IAAM,IAAa,KACrC,IAANtoE,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOsoE,GAASG,KA4BpB8D,GACA1yE,EAAOD,QAAU8D,IAEfumE,EAAgC,SAAU0Z,EAAS/jF,EAASC,GAM1D,MALIA,GAAOmsE,QAAUnsE,EAAOmsE,UAAYnsE,EAAOmsE,SAAS4X,YAAa,IAEjEjJ,GAAYj3E,OAASg3E,IAGlBh3E,IACTnD,KAAKX,EAASM,EAAqBN,EAASC,KAASoqE,IAAkC7jE,IAAcvG,EAAOD,QAAUqqE,IACxHsQ,IAAW,MAIhBh6E,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,EAAQD,EAASM,GAE9B,GAAI+pE,IAMJ,SAAU3iE,EAAQlB,GAChB,YA2OF,SAASy9E,KACFvjD,EAAOwjD,QAKVC,EAAMC,sBAGNC,EAAMC,KAAK5jD,EAAO6jD,SAAU,SAAS/oD,GACjCgpD,EAAUC,SAASjpD,KAIvB2oD,EAAMO,QAAQhkD,EAAOikD,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQhkD,EAAOikD,SAAUG,EAAWN,EAAUK,QAGpDnkD,EAAOwjD,OAAQ,GAxOnB,GAAIxjD,GAAS,QAASA,GAAO33B,EAASiG,GAClC,MAAO,IAAI0xB,GAAOqkD,SAASh8E,EAASiG,OAUxC0xB,GAAOs6C,QAAU,QAgBjBt6C,EAAOskD,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3B7kD,EAAOikD,SAAWxyE,SAOlBuuB,EAAO8kD,kBAAoBr8E,UAAUs8E,gBAAkBt8E,UAAUu8E,iBAOjEhlD,EAAOilD,gBAAmB,gBAAkBj+E,GAO5Cg5B,EAAOklD,UAAY,6CAA6Cr3E,KAAKpF,UAAUC,WAO/Es3B,EAAOmlD,eAAkBnlD,EAAOilD,iBAAmBjlD,EAAOklD,WAAcllD,EAAO8kD,kBAQ/E9kD,EAAOolD,mBAAqB,EAU5B,IAAIC,MASAC,EAAiBtlD,EAAOslD,eAAiB,OACzCC,EAAiBvlD,EAAOulD,eAAiB,OACzCC,EAAexlD,EAAOwlD,aAAe,KACrCC,EAAkBzlD,EAAOylD,gBAAkB,QAS3CC,EAAgB1lD,EAAO0lD,cAAgB,QACvCC,EAAgB3lD,EAAO2lD,cAAgB,QACvCC,EAAc5lD,EAAO4lD,YAAc,MASnCC,EAAc7lD,EAAO6lD,YAAc,QACnC3B,EAAalkD,EAAOkkD,WAAa,OACjCE,EAAYpkD,EAAOokD,UAAY,MAC/B0B,EAAgB9lD,EAAO8lD,cAAgB,UACvCC,EAAc/lD,EAAO+lD,YAAc,OASvC/lD,GAAOwjD,OAAQ,EAOfxjD,EAAOgmD,QAAUhmD,EAAOgmD,YAQxBhmD,EAAO6jD,SAAW7jD,EAAO6jD,YAkCzB,IAAIF,GAAQ3jD,EAAOimD,OAUfrhF,OAAQ,SAAgBshF,EAAMhnC,EAAKoY,GAC/B,IAAI,GAAInvD,KAAO+2C,IACPA,EAAI95C,eAAe+C,IAAS+9E,EAAK/9E,KAASrC,GAAawxD,IAG3D4uB,EAAK/9E,GAAO+2C,EAAI/2C,GAEpB,OAAO+9E,IAUX7yE,GAAI,SAAYhL,EAASjC,EAAM+/E,GAC3B99E,EAAQD,iBAAiBhC,EAAM+/E,GAAS,IAU5C3yE,IAAK,SAAanL,EAASjC,EAAM+/E,GAC7B99E,EAAQO,oBAAoBxC,EAAM+/E,GAAS,IAa/CvC,KAAM,SAAc/hE,EAAKukE,EAAUC,GAC/B,GAAIvhF,GAAGC,CAGP,IAAG,WAAa8c,GACZA,EAAI/Z,QAAQs+E,EAAUC,OAEnB,IAAGxkE,EAAI5c,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAM8c,EAAI5c,OAAYF,EAAJD,EAASA,IAClC,GAAGshF,EAASnmF,KAAKomF,EAASxkE,EAAI/c,GAAIA,EAAG+c,MAAS,EAC1C,WAKR,KAAI/c,IAAK+c,GACL,GAAGA,EAAIzc,eAAeN,IAClBshF,EAASnmF,KAAKomF,EAASxkE,EAAI/c,GAAIA,EAAG+c,MAAS,EAC3C,QAahBykE,MAAO,SAAepnC,EAAKqnC,GACvB,MAAOrnC,GAAIj5C,QAAQsgF,GAAQ,IAU/BC,QAAS,SAAiBtnC,EAAKqnC,GAC3B,GAAGrnC,EAAIj5C,QAAS,CACZ,GAAI2B,GAAQs3C,EAAIj5C,QAAQsgF,EACxB,OAAkB,KAAV3+E,GAAgB,EAAQA,EAEhC,IAAI,GAAI9C,GAAI,EAAGC,EAAMm6C,EAAIj6C,OAAYF,EAAJD,EAASA,IACtC,GAAGo6C,EAAIp6C,KAAOyhF,EACV,MAAOzhF,EAGf,QAAO,GAUfkD,QAAS,SAAiB6Z,GACtB,MAAOtc,OAAM6N,UAAUglB,MAAMn4B,KAAK4hB,EAAK,IAU3C4kE,UAAW,SAAmBrnC,EAAM5f,GAChC,KAAM4f,GAAM,CACR,GAAGA,GAAQ5f,EACP,OAAO,CAEX4f,GAAOA,EAAK/1C,WAEhB,OAAO,GASXq9E,UAAW,SAAmBnrD,GAC1B,GAAI3B,MACAC,KACAjK,KACAE,KACA9kB,EAAMxG,KAAKwG,IACXyB,EAAMjI,KAAKiI,GAGf,OAAsB,KAAnB8uB,EAAQt2B,QAEH20B,MAAO2B,EAAQ,GAAG3B,MAClBC,MAAO0B,EAAQ,GAAG1B,MAClBjK,QAAS2L,EAAQ,GAAG3L,QACpBE,QAASyL,EAAQ,GAAGzL,UAI5B6zD,EAAMC,KAAKroD,EAAS,SAAStC,GACzBW,EAAMnyB,KAAKwxB,EAAMW,OACjBC,EAAMpyB,KAAKwxB,EAAMY,OACjBjK,EAAQnoB,KAAKwxB,EAAMrJ,SACnBE,EAAQroB,KAAKwxB,EAAMnJ,YAInB8J,OAAQ5uB,EAAI+M,MAAMvT,KAAMo1B,GAASntB,EAAIsL,MAAMvT,KAAMo1B,IAAU,EAC3DC,OAAQ7uB,EAAI+M,MAAMvT,KAAMq1B,GAASptB,EAAIsL,MAAMvT,KAAMq1B,IAAU,EAC3DjK,SAAU5kB,EAAI+M,MAAMvT,KAAMorB,GAAWnjB,EAAIsL,MAAMvT,KAAMorB,IAAY,EACjEE,SAAU9kB,EAAI+M,MAAMvT,KAAMsrB,GAAWrjB,EAAIsL,MAAMvT,KAAMsrB,IAAY,KAYzE62D,YAAa,SAAqBC,EAAW7rD,EAAQC,GACjD,OACI/oB,EAAGzN,KAAKklB,IAAIqR,EAAS6rD,IAAc,EACnC10E,EAAG1N,KAAKklB,IAAIsR,EAAS4rD,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAI90E,GAAI80E,EAAOn3D,QAAUk3D,EAAOl3D,QAC5B1d,EAAI60E,EAAOj3D,QAAUg3D,EAAOh3D,OAEhC,OAA0B,KAAnBtrB,KAAK8qD,MAAMp9C,EAAGD,GAAWzN,KAAKimB,IAUzCu8D,aAAc,SAAsBF,EAAQC,GACxC,GAAI90E,GAAIzN,KAAKklB,IAAIo9D,EAAOl3D,QAAUm3D,EAAOn3D,SACrC1d,EAAI1N,KAAKklB,IAAIo9D,EAAOh3D,QAAUi3D,EAAOj3D,QAEzC,OAAG7d,IAAKC,EACG40E,EAAOl3D,QAAUm3D,EAAOn3D,QAAU,EAAI21D,EAAiBE,EAE3DqB,EAAOh3D,QAAUi3D,EAAOj3D,QAAU,EAAI01D,EAAeF,GAUhEhwB,YAAa,SAAqBwxB,EAAQC,GACtC,GAAI90E,GAAI80E,EAAOn3D,QAAUk3D,EAAOl3D,QAC5B1d,EAAI60E,EAAOj3D,QAAUg3D,EAAOh3D,OAEhC,OAAOtrB,MAAKqqB,KAAM5c,EAAIA,EAAMC,EAAIA,IAWpC25C,SAAU,SAAkBv8C,EAAOS,GAE/B,MAAGT,GAAMrK,QAAU,GAAK8K,EAAI9K,QAAU,EAC3BvF,KAAK41D,YAAYvlD,EAAI,GAAIA,EAAI,IAAMrQ,KAAK41D,YAAYhmD,EAAM,GAAIA,EAAM,IAExE,GAUX23E,YAAa,SAAqB33E,EAAOS,GAErC,MAAGT,GAAMrK,QAAU,GAAK8K,EAAI9K,QAAU,EAC3BvF,KAAKmnF,SAAS92E,EAAI,GAAIA,EAAI,IAAMrQ,KAAKmnF,SAASv3E,EAAM,GAAIA,EAAM,IAElE,GASX43E,WAAY,SAAoBtuD,GAC5B,MAAOA,IAAa4sD,GAAgB5sD,GAAa0sD,GAWrD6B,eAAgB,SAAwB9+E,EAASlD,EAAMwB,EAAOygF,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1CliF,GAAOw+E,EAAM2D,YAAYniF,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAIuiF,EAASpiF,OAAQH,IAAK,CACrC,GAAI1E,GAAI+E,CAOR,IALGkiF,EAASviF,KACR1E,EAAIinF,EAASviF,GAAK1E,EAAEg4B,MAAM,EAAG,GAAGxsB,cAAgBxL,EAAEg4B,MAAM,IAIzDh4B,IAAKiI,GAAQ0E,MAAO,CACnB1E,EAAQ0E,MAAM3M,IAAgB,MAAVgnF,GAAkBA,IAAWzgF,GAAS,EAC1D,UAeZ4gF,eAAgB,SAAwBl/E,EAAS/C,EAAO8hF,GACpD,GAAI9hF,GAAU+C,GAAYA,EAAQ0E,MAAlC,CAKA42E,EAAMC,KAAKt+E,EAAO,SAASqB,EAAOxB,GAC9Bw+E,EAAMwD,eAAe9+E,EAASlD,EAAMwB,EAAOygF,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApB9hF,EAAMk/E,aACLn8E,EAAQo/E,cAAgBD,GAGP,QAAlBliF,EAAMs/E,WACLv8E,EAAQq/E,YAAcF,KAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAIh8E,QAAQ,eAAgB,SAASb,GACxC,MAAOA,GAAE,GAAGc,kBAapB63E,EAAQzjD,EAAOj3B,OAQf6+E,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWdz0E,GAAI,SAAYhL,EAASjC,EAAM+/E,EAAS4B,GACpC,GAAI7wE,GAAQ9Q,EAAKoB,MAAM,IACvBm8E,GAAMC,KAAK1sE,EAAO,SAAS9Q,GACvBu9E,EAAMtwE,GAAGhL,EAASjC,EAAM+/E,GACxB4B,GAAQA,EAAK3hF,MAarBoN,IAAK,SAAanL,EAASjC,EAAM+/E,EAAS4B,GACtC,GAAI7wE,GAAQ9Q,EAAKoB,MAAM,IACvBm8E,GAAMC,KAAK1sE,EAAO,SAAS9Q,GACvBu9E,EAAMnwE,IAAInL,EAASjC,EAAM+/E,GACzB4B,GAAQA,EAAK3hF,MAarB49E,QAAS,SAAiB37E,EAASk1D,EAAW4oB,GAC1C,GAAI9jB,GAAO3iE,KAEPsoF,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAG7hF,KAAK+jD,cAClBi+B,EAAYpoD,EAAO8kD,kBACnBuD,EAAU1E,EAAM2C,MAAM6B,EAAS,QAKhCE,IAAWhmB,EAAKulB,qBAITS,GAAW9qB,GAAasoB,GAA6B,IAAdoC,EAAG18D,QAChD82C,EAAKulB,oBAAqB,EAC1BvlB,EAAKylB,cAAe,GACdM,GAAa7qB,GAAasoB,EAChCxjB,EAAKylB,aAA+B,IAAfG,EAAGK,SAAiBC,EAAaC,UAAU7C,EAAesC,GAExEI,GAAW9qB,GAAasoB,IAC/BxjB,EAAKulB,oBAAqB,EAC1BvlB,EAAKylB,cAAe,GAIrBM,GAAa7qB,GAAa6mB,GACzBmE,EAAaE,cAAclrB,EAAW0qB,GAIvC5lB,EAAKylB,eACJI,EAAc7lB,EAAKqmB,SAASzoF,KAAKoiE,EAAM4lB,EAAI1qB,EAAWl1D,EAAS89E,IAKhE+B,GAAe9D,IACd/hB,EAAKulB,oBAAqB,EAC1BvlB,EAAKylB,cAAe,EACpBS,EAAanmC,SAIdgmC,GAAa7qB,GAAa6mB,GACzBmE,EAAaE,cAAclrB,EAAW0qB,IAK9C,OADAvoF,MAAK2T,GAAGhL,EAASg9E,EAAY9nB,GAAYyqB,GAClCA,GAaXU,SAAU,SAAkBT,EAAI1qB,EAAWl1D,EAAS89E,GAChD,GAAIwC,GAAYjpF,KAAK89D,aAAayqB,EAAI1qB,GAClCqrB,EAAkBD,EAAU1jF,OAC5BijF,EAAc3qB,EACdsrB,EAAgBF,EAAUjf,QAC1Bof,EAAgBF,CAGjBrrB,IAAasoB,EACZgD,EAAgB9C,EAEVxoB,GAAa6mB,IACnByE,EAAgB/C,EAGhBgD,EAAgBH,EAAU1jF,QAAWgjF,EAAiB,eAAIA,EAAGc,eAAe9jF,OAAS,IAMtF6jF,EAAgB,GAAKppF,KAAKmoF,UACzBK,EAAchE,GAIlBxkF,KAAKmoF,SAAU,CAGf,IAAImB,GAAStpF,KAAK+9D,iBAAiBp1D,EAAS6/E,EAAaS,EAAWV,EA4BpE,OAxBG1qB,IAAa6mB,GACZ+B,EAAQlmF,KAAK6jF,EAAWkF,GAIzBH,IACCG,EAAOF,cAAgBA,EACvBE,EAAOzrB,UAAYsrB,EAEnB1C,EAAQlmF,KAAK6jF,EAAWkF,GAExBA,EAAOzrB,UAAY2qB,QACZc,GAAOF,eAIfZ,GAAe9D,IACd+B,EAAQlmF,KAAK6jF,EAAWkF,GAIxBtpF,KAAKmoF,SAAU,GAGZK,GAUXxE,oBAAqB,WACjB,GAAIxsE,EAgCJ,OA7BQA,GAFL8oB,EAAO8kD,kBACH99E,EAAOuhF,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGFvoD,EAAOmlD,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAe3uE,EAAM,GACjCmuE,EAAYnB,GAAchtE,EAAM,GAChCmuE,EAAYjB,GAAaltE,EAAM,GACxBmuE,GAUX7nB,aAAc,SAAsByqB,EAAI1qB,GAEpC,GAAGv9B,EAAO8kD,kBACN,MAAOyD,GAAa/qB,cAIxB,IAAGyqB,EAAG1sD,QAAS,CACX,GAAGgiC,GAAa2mB,EACZ,MAAO+D,GAAG1sD,OAGd,IAAI0tD,MACAn1E,KAAYA,OAAO6vE,EAAM37E,QAAQigF,EAAG1sD,SAAUooD,EAAM37E,QAAQigF,EAAGc,iBAC/DJ,IASJ,OAPAhF,GAAMC,KAAK9vE,EAAQ,SAASmlB,GACrB0qD,EAAM6C,QAAQyC,EAAahwD,EAAMiwD,eAAgB,GAChDP,EAAUlhF,KAAKwxB,GAEnBgwD,EAAYxhF,KAAKwxB,EAAMiwD,cAGpBP,EAKX,MADAV,GAAGiB,WAAa,GACRjB,IAYZxqB,iBAAkB,SAA0Bp1D,EAASk1D,EAAWhiC,EAAS0sD,GAErE,GAAIkB,GAAcxD,CAOlB,OANGhC,GAAM2C,MAAM2B,EAAG7hF,KAAM,UAAYmiF,EAAaC,UAAU9C,EAAeuC,GACtEkB,EAAczD,EACR6C,EAAaC,UAAU5C,EAAaqC,KAC1CkB,EAAcvD,IAId56D,OAAQ24D,EAAM+C,UAAUnrD,GACxB6tD,UAAWxlF,KAAK00B,MAChBpvB,OAAQ++E,EAAG/+E,OACXqyB,QAASA,EACTgiC,UAAWA,EACX4rB,YAAaA,EACbj9C,SAAU+7C,EAMVn/E,eAAgB,WACZ,GAAIojC,GAAWxsC,KAAKwsC,QACpBA,GAASm9C,qBAAuBn9C,EAASm9C,sBACzCn9C,EAASpjC,gBAAkBojC,EAASpjC,kBAMxCu3B,gBAAiB,WACb3gC,KAAKwsC,SAAS7L,mBAQlBipD,WAAY,WACR,MAAOxF,GAAUwF,iBAa7Bf,EAAevoD,EAAOuoD,cAMtBgB,YAOA/rB,aAAc,WACV,GAAIgsB,KAKJ,OAHA7F,GAAMC,KAAKlkF,KAAK6pF,SAAU,SAASpuD,GAC/BquD,EAAU/hF,KAAK0zB,KAEZquD,GASXf,cAAe,SAAuBlrB,EAAWksB,GAC1ClsB,GAAa6mB,GAAc7mB,GAAa6mB,GAAsC,IAAzBqF,EAAanB,cAC1D5oF,MAAK6pF,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvChqF,KAAK6pF,SAASE,EAAaC,WAAaD,IAUhDjB,UAAW,SAAmBW,EAAalB,GACvC,IAAIA,EAAGkB,YACH,OAAO,CAGX,IAAIQ,GAAK1B,EAAGkB,YACRjyE,IAKJ,OAHAA,GAAMwuE,GAAkBiE,KAAQ1B,EAAG2B,sBAAwBlE,GAC3DxuE,EAAMyuE,GAAkBgE,KAAQ1B,EAAG4B,sBAAwBlE,GAC3DzuE,EAAM0uE,GAAgB+D,KAAQ1B,EAAG6B,oBAAsBlE,GAChD1uE,EAAMiyE,IAOjB/mC,MAAO,WACH1iD,KAAK6pF,cAWTzF,EAAY9jD,EAAO+pD,WAEnBlG,YAGAjtD,QAAS,KAITuB,SAAU,KAGV6xD,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjCzqF,KAAKk3B,UAIRl3B,KAAKsqF,SAAU,EAGftqF,KAAKk3B,SACDszD,KAAMA,EACNE,WAAYzG,EAAM/+E,UAAWulF,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACAv0E,KAAM,IAGVvW,KAAKykF,OAAOgG,KAShBhG,OAAQ,SAAgBgG,GACpB,GAAIzqF,KAAKk3B,UAAWl3B,KAAKsqF,QAAzB,CAKAG,EAAYzqF,KAAK+qF,gBAAgBN,EAGjC,IAAID,GAAOxqF,KAAKk3B,QAAQszD,KACpBQ,EAAcR,EAAK57E,OAmBvB,OAhBAq1E,GAAMC,KAAKlkF,KAAKmkF,SAAU,SAAwB/oD,IAE1Cp7B,KAAKsqF,SAAWE,EAAK37E,SAAWm8E,EAAY5vD,EAAQ7kB,OACpD6kB,EAAQqrD,QAAQlmF,KAAK66B,EAASqvD,EAAWD,IAE9CxqF,MAGAA,KAAKk3B,UACJl3B,KAAKk3B,QAAQyzD,UAAYF,GAG1BA,EAAU5sB,WAAa6mB,GACtB1kF,KAAK4pF,aAGFa,IASXb,WAAY,WAGR5pF,KAAKy4B,SAAWwrD,EAAM/+E,UAAWlF,KAAKk3B,SAGtCl3B,KAAKk3B,QAAU,KACfl3B,KAAKsqF,SAAU,GAYnBW,kBAAmB,SAA2B1C,EAAIj9D,EAAQ47D,EAAW7rD,EAAQC,GACzE,GAAI8Y,GAAMp0C,KAAKk3B,QACXg0D,GAAS,EACTC,EAAS/2C,EAAIw2C,cACbQ,EAAWh3C,EAAI02C,YAEhBK,IAAU5C,EAAGmB,UAAYyB,EAAOzB,UAAYppD,EAAOolD,qBAClDp6D,EAAS6/D,EAAO7/D,OAChB47D,EAAYqB,EAAGmB,UAAYyB,EAAOzB,UAClCruD,EAASktD,EAAGj9D,OAAO4E,QAAUi7D,EAAO7/D,OAAO4E,QAC3CoL,EAASitD,EAAGj9D,OAAO8E,QAAU+6D,EAAO7/D,OAAO8E,QAC3C86D,GAAS,IAGV3C,EAAG1qB,WAAawoB,GAAekC,EAAG1qB,WAAauoB,KAC9ChyC,EAAIy2C,gBAAkBtC,KAGtBn0C,EAAIw2C,eAAiBM,KACrBE,EAASz1B,SAAWsuB,EAAMgD,YAAYC,EAAW7rD,EAAQC,GACzD8vD,EAAStkC,MAAQm9B,EAAMkD,SAAS77D,EAAQi9D,EAAGj9D,QAC3C8/D,EAASlyD,UAAY+qD,EAAMqD,aAAah8D,EAAQi9D,EAAGj9D,QAEnD8oB,EAAIw2C,cAAgBx2C,EAAIy2C,iBAAmBtC,EAC3Cn0C,EAAIy2C,gBAAkBtC,GAG1BA,EAAG8C,UAAYD,EAASz1B,SAASpjD,EACjCg2E,EAAG+C,UAAYF,EAASz1B,SAASnjD,EACjC+1E,EAAGgD,aAAeH,EAAStkC,MAC3ByhC,EAAGiD,iBAAmBJ,EAASlyD,WASnC6xD,gBAAiB,SAAyBxC,GACtC,GAAIn0C,GAAMp0C,KAAKk3B,QACXu0D,EAAUr3C,EAAIs2C,WACdgB,EAASt3C,EAAIu2C,WAAac,GAG3BlD,EAAG1qB,WAAawoB,GAAekC,EAAG1qB,WAAauoB,KAC9CqF,EAAQ5vD,WACRooD,EAAMC,KAAKqE,EAAG1sD,QAAS,SAAStC,GAC5BkyD,EAAQ5vD,QAAQ9zB,MACZmoB,QAASqJ,EAAMrJ,QACfE,QAASmJ,EAAMnJ,YAK3B,IAAI82D,GAAYqB,EAAGmB,UAAY+B,EAAQ/B,UACnCruD,EAASktD,EAAGj9D,OAAO4E,QAAUu7D,EAAQngE,OAAO4E,QAC5CoL,EAASitD,EAAGj9D,OAAO8E,QAAUq7D,EAAQngE,OAAO8E,OAkBhD,OAhBApwB,MAAKirF,kBAAkB1C,EAAImD,EAAOpgE,OAAQ47D,EAAW7rD,EAAQC,GAE7D2oD,EAAM/+E,OAAOqjF,GACTmC,WAAYe,EAEZvE,UAAWA,EACX7rD,OAAQA,EACRC,OAAQA,EAERxW,SAAUm/D,EAAMruB,YAAY61B,EAAQngE,OAAQi9D,EAAGj9D,QAC/Cw7B,MAAOm9B,EAAMkD,SAASsE,EAAQngE,OAAQi9D,EAAGj9D,QACzC4N,UAAW+qD,EAAMqD,aAAamE,EAAQngE,OAAQi9D,EAAGj9D,QACjDlP,MAAO6nE,EAAM93B,SAASs/B,EAAQ5vD,QAAS0sD,EAAG1sD,SAC1C8vD,SAAU1H,EAAMsD,YAAYkE,EAAQ5vD,QAAS0sD,EAAG1sD,WAG7C0sD,GASXlE,SAAU,SAAkBjpD,GAExB,GAAIxsB,GAAUwsB,EAAQwpD,YAyBtB,OAxBGh2E,GAAQwsB,EAAQ7kB,QAAUnQ,IACzBwI,EAAQwsB,EAAQ7kB,OAAQ,GAI5B0tE,EAAM/+E,OAAOo7B,EAAOskD,SAAUh2E,GAAS,GAGvCwsB,EAAQlzB,MAAQkzB,EAAQlzB,OAAS,IAGjClI,KAAKmkF,SAASp8E,KAAKqzB,GAGnBp7B,KAAKmkF,SAAS3tE,KAAK,SAASrR,EAAGa,GAC3B,MAAGb,GAAE+C,MAAQlC,EAAEkC,MACJ,GAER/C,EAAE+C,MAAQlC,EAAEkC,MACJ,EAEJ,IAGJlI,KAAKmkF,UAmBpB7jD,GAAOqkD,SAAW,SAASh8E,EAASiG,GAChC,GAAI+zD,GAAO3iE,IAIX6jF,KAMA7jF,KAAK2I,QAAUA,EAOf3I,KAAK6O,SAAU,EAQfo1E,EAAMC,KAAKt1E,EAAS,SAAS3H,EAAOsP,SACzB3H,GAAQ2H,GACf3H,EAAQq1E,EAAM2D,YAAYrxE,IAAStP,IAGvCjH,KAAK4O,QAAUq1E,EAAM/+E,OAAO++E,EAAM/+E,UAAWo7B,EAAOskD,UAAWh2E,OAG5D5O,KAAK4O,QAAQi2E,UACZZ,EAAM4D,eAAe7nF,KAAK2I,QAAS3I,KAAK4O,QAAQi2E,UAAU,GAQ9D7kF,KAAK4rF,kBAAoB7H,EAAMO,QAAQ37E,EAASw9E,EAAa,SAASoC,GAC/D5lB,EAAK9zD,SAAW05E,EAAG1qB,WAAasoB,EAC/B/B,EAAUmG,YAAY5nB,EAAM4lB,GACtBA,EAAG1qB,WAAawoB,GACtBjC,EAAUK,OAAO8D,KASzBvoF,KAAK6rF,kBAGTvrD,EAAOqkD,SAASjxE,WASZC,GAAI,SAAiBwwE,EAAUsC,GAC3B,GAAI9jB,GAAO3iE,IAIX,OAHA+jF,GAAMpwE,GAAGgvD,EAAKh6D,QAASw7E,EAAUsC,EAAS,SAAS//E,GAC/Ci8D,EAAKkpB,cAAc9jF,MAAOqzB,QAAS10B,EAAM+/E,QAASA,MAE/C9jB,GAUX7uD,IAAK,SAAkBqwE,EAAUsC,GAC7B,GAAI9jB,GAAO3iE,IAQX,OANA+jF,GAAMjwE,IAAI6uD,EAAKh6D,QAASw7E,EAAUsC,EAAS,SAAS//E,GAChD,GAAIwB,GAAQ+7E,EAAM6C,SAAU1rD,QAAS10B,EAAM+/E,QAASA,GACjDv+E,MAAU,GACTy6D,EAAKkpB,cAAc1jF,OAAOD,EAAO,KAGlCy6D,GAUXqH,QAAS,SAAsB5uC,EAASqvD,GAEhCA,IACAA,KAIJ,IAAIphF,GAAQi3B,EAAOikD,SAASuH,YAAY,QACxCziF,GAAM0iF,UAAU3wD,GAAS,GAAM,GAC/B/xB,EAAM+xB,QAAUqvD,CAIhB,IAAI9hF,GAAU3I,KAAK2I,OAMnB,OALGs7E,GAAM8C,UAAU0D,EAAUjhF,OAAQb,KACjCA,EAAU8hF,EAAUjhF,QAGxBb,EAAQqjF,cAAc3iF,GACfrJ,MASXy+B,OAAQ,SAAgBwtD,GAEpB,MADAjsF,MAAK6O,QAAUo9E,EACRjsF,MAQXksF,QAAS,WACL,GAAI9mF,GAAG+mF,CAMP,KAHAlI,EAAM4D,eAAe7nF,KAAK2I,QAAS3I,KAAK4O,QAAQi2E,UAAU,GAGtDz/E,EAAI,GAAK+mF,EAAKnsF,KAAK6rF,gBAAgBzmF,IACnC6+E,EAAMnwE,IAAI9T,KAAK2I,QAASwjF,EAAG/wD,QAAS+wD,EAAG1F,QAQ3C,OALAzmF,MAAK6rF,iBAGL9H,EAAMjwE,IAAI9T,KAAK2I,QAASg9E,EAAYQ,GAAcnmF,KAAK4rF,mBAEhD,OAqDf,SAAUr1E,GAGN,QAAS61E,GAAY7D,EAAIiC,GACrB,GAAIp2C,GAAMgwC,EAAUltD,OAGpB,MAAGszD,EAAK57E,QAAQy9E,eAAiB,GAC7B9D,EAAG1sD,QAAQt2B,OAASilF,EAAK57E,QAAQy9E,gBAIrC,OAAO9D,EAAG1qB,WACN,IAAKsoB,GACDmG,GAAY,CACZ,MAEJ,KAAK9H,GAGD,GAAG+D,EAAGzjE,SAAW0lE,EAAK57E,QAAQ29E,iBAC1Bn4C,EAAI79B,MAAQA,EACZ,MAGJ,IAAIi2E,GAAcp4C,EAAIs2C,WAAWp/D,MAGjC,IAAG8oB,EAAI79B,MAAQA,IACX69B,EAAI79B,KAAOA,EACRi0E,EAAK57E,QAAQ69E,wBAA0BlE,EAAGzjE,SAAW,GAAG,CAIvD,GAAIw7B,GAASx7C,KAAKklB,IAAIwgE,EAAK57E,QAAQ29E,gBAAkBhE,EAAGzjE,SACxD0nE,GAAYtyD,OAASquD,EAAGltD,OAASilB,EACjCksC,EAAYryD,OAASouD,EAAGjtD,OAASglB,EACjCksC,EAAYt8D,SAAWq4D,EAAGltD,OAASilB,EACnCksC,EAAYp8D,SAAWm4D,EAAGjtD,OAASglB,EAGnCioC,EAAKnE,EAAU2G,gBAAgBxC,IAKpCn0C,EAAIu2C,UAAU+B,gBACXlC,EAAK57E,QAAQ89E,gBACXlC,EAAK57E,QAAQ+9E,qBAAuBpE,EAAGzjE,YAE3CyjE,EAAGmE,gBAAiB,EAIxB,IAAIE,GAAgBx4C,EAAIu2C,UAAUzxD,SAC/BqvD,GAAGmE,gBAAkBE,IAAkBrE,EAAGrvD,YAErCqvD,EAAGrvD,UADJ+qD,EAAMuD,WAAWoF,GACArE,EAAGjtD,OAAS,EAAKwqD,EAAeF,EAEhC2C,EAAGltD,OAAS,EAAKwqD,EAAiBE,GAKtDuG,IACA9B,EAAKxgB,QAAQzzD,EAAO,QAASgyE,GAC7B+D,GAAY,GAIhB9B,EAAKxgB,QAAQzzD,EAAMgyE,GACnBiC,EAAKxgB,QAAQzzD,EAAOgyE,EAAGrvD,UAAWqvD,EAElC,IAAIf,GAAavD,EAAMuD,WAAWe,EAAGrvD,YAGjCsxD,EAAK57E,QAAQi+E,mBAAqBrF,GACjCgD,EAAK57E,QAAQk+E,sBAAwBtF,IACtCe,EAAGn/E,gBAEP,MAEJ,KAAKg9E,GACEkG,GAAa/D,EAAGa,eAAiBoB,EAAK57E,QAAQy9E,iBAC7C7B,EAAKxgB,QAAQzzD,EAAO,MAAOgyE,GAC3B+D,GAAY,EAEhB,MAEJ,KAAK5H,GACD4H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhBhsD,GAAO6jD,SAAS4I,MACZx2E,KAAMA,EACNrO,MAAO,GACPu+E,QAAS2F,EACTxH,UAOI2H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBHrsD,EAAO6jD,SAAS6I,SACZz2E,KAAM,UACNrO,MAAO,KACPu+E,QAAS,SAAwB8B,EAAIiC,GACjCA,EAAKxgB,QAAQhqE,KAAKuW,KAAMgyE,KAqBhC,SAAUhyE,GAGN,QAAS02E,GAAY1E,EAAIiC,GACrB,GAAI57E,GAAU47E,EAAK57E,QACfsoB,EAAUktD,EAAUltD,OAExB,QAAOqxD,EAAG1qB,WACN,IAAKsoB,GACD54D,aAAauxB,GAGb5nB,EAAQ3gB,KAAOA,EAIfuoC,EAAQlxB,WAAW,WACZsJ,GAAWA,EAAQ3gB,MAAQA,GAC1Bi0E,EAAKxgB,QAAQzzD,EAAMgyE;EAExB35E,EAAQs+E,YACX,MAEJ,KAAK1I,GACE+D,EAAGzjE,SAAWlW,EAAQu+E,eACrB5/D,aAAauxB,EAEjB,MAEJ,KAAKsnC,GACD74D,aAAauxB,IA7BzB,GAAIA,EAkCJxe,GAAO6jD,SAASiJ,MACZ72E,KAAMA,EACNrO,MAAO,GACP08E,UAMIsI,YAAa,IAQbC,cAAe,GAEnB1G,QAASwG,IAEd,QAeH3sD,EAAO6jD,SAASkJ,SACZ92E,KAAM,UACNrO,MAAOolF,IACP7G,QAAS,SAAwB8B,EAAIiC,GAC9BjC,EAAG1qB,WAAauoB,GACfoE,EAAKxgB,QAAQhqE,KAAKuW,KAAMgyE,KAyCpCjoD,EAAO6jD,SAASoJ,OACZh3E,KAAM,QACNrO,MAAO,GACP08E,UAMI4I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBlH,QAAS,SAAsB8B,EAAIiC,GAC/B,GAAGjC,EAAG1qB,WAAauoB,EAAe,CAC9B,GAAIvqD,GAAU0sD,EAAG1sD,QAAQt2B,OACrBqJ,EAAU47E,EAAK57E,OAGnB,IAAGitB,EAAUjtB,EAAQ4+E,iBACjB3xD,EAAUjtB,EAAQ6+E,gBAClB,QAKDlF,EAAG8C,UAAYz8E,EAAQ8+E,gBACtBnF,EAAG+C,UAAY18E,EAAQ++E,kBAEvBnD,EAAKxgB,QAAQhqE,KAAKuW,KAAMgyE,GACxBiC,EAAKxgB,QAAQhqE,KAAKuW,KAAOgyE,EAAGrvD,UAAWqvD,OA2BvD,SAAUhyE,GAGN,QAASq3E,GAAWrF,EAAIiC,GACpB,GAGIqD,GACAC,EAJAl/E,EAAU47E,EAAK57E,QACfsoB,EAAUktD,EAAUltD,QACpB3F,EAAO6yD,EAAU3rD,QAIrB,QAAO8vD,EAAG1qB,WACN,IAAKsoB,GACD4H,GAAW,CACX,MAEJ,KAAKvJ,GACDuJ,EAAWA,GAAaxF,EAAGzjE,SAAWlW,EAAQo/E,cAC9C,MAEJ,KAAKtJ,IACGT,EAAM2C,MAAM2B,EAAG/7C,SAAS9lC,KAAM,WAAa6hF,EAAGrB,UAAYt4E,EAAQq/E,aAAeF,IAEjFF,EAAYt8D,GAAQA,EAAKo5D,WAAapC,EAAGmB,UAAYn4D,EAAKo5D,UAAUjB,UACpEoE,GAAe,EAGZv8D,GAAQA,EAAKhb,MAAQA,GACnBs3E,GAAaA,EAAYj/E,EAAQs/E,mBAClC3F,EAAGzjE,SAAWlW,EAAQu/E,oBACtB3D,EAAKxgB,QAAQ,YAAaue,GAC1BuF,GAAe,KAIfA,GAAgBl/E,EAAQw/E,aACxBl3D,EAAQ3gB,KAAOA,EACfi0E,EAAKxgB,QAAQ9yC,EAAQ3gB,KAAMgyE,MAnC/C,GAAIwF,IAAW,CA0CfztD,GAAO6jD,SAASkK,KACZ93E,KAAMA,EACNrO,MAAO,IACPu+E,QAASmH,EACThJ,UAOIqJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeH5tD,EAAO6jD,SAASmK,OACZ/3E,KAAM,QACNrO,OAAQolF,IACR1I,UASIx7E,gBAAgB,EAQhBmlF,cAAc,GAElB9H,QAAS,SAAsB8B,EAAIiC,GAC/B,MAAGA,GAAK57E,QAAQ2/E,cAAgBhG,EAAGkB,aAAezD,MAC9CuC,GAAGqB,cAIJY,EAAK57E,QAAQxF,gBACZm/E,EAAGn/E,sBAGJm/E,EAAG1qB,WAAawoB,GACfmE,EAAKxgB,QAAQ,QAASue,OA4ClC,SAAUhyE,GAGN,QAASi4E,GAAiBjG,EAAIiC,GAC1B,OAAOjC,EAAG1qB,WACN,IAAKsoB,GACDmG,GAAY,CACZ,MAEJ,KAAK9H,GAED,GAAG+D,EAAG1sD,QAAQt2B,OAAS,EACnB,MAGJ,IAAIkpF,GAAiB3pF,KAAKklB,IAAI,EAAIu+D,EAAGnsE,OACjCsyE,EAAoB5pF,KAAKklB,IAAIu+D,EAAGoD,SAIpC,IAAG8C,EAAiBjE,EAAK57E,QAAQ+/E,mBAC7BD,EAAoBlE,EAAK57E,QAAQggF,qBACjC,MAIJxK,GAAUltD,QAAQ3gB,KAAOA,EAGrB+1E,IACA9B,EAAKxgB,QAAQzzD,EAAO,QAASgyE,GAC7B+D,GAAY,GAGhB9B,EAAKxgB,QAAQzzD,EAAMgyE,GAGhBmG,EAAoBlE,EAAK57E,QAAQggF,sBAChCpE,EAAKxgB,QAAQ,SAAUue,GAIxBkG,EAAiBjE,EAAK57E,QAAQ+/E,oBAC7BnE,EAAKxgB,QAAQ,QAASue,GACtBiC,EAAKxgB,QAAQ,SAAWue,EAAGnsE,MAAQ,EAAI,KAAO,OAAQmsE,GAE1D,MAEJ,KAAKnC,GACEkG,GAAa/D,EAAGa,cAAgB,IAC/BoB,EAAKxgB,QAAQzzD,EAAO,MAAOgyE,GAC3B+D,GAAY,IAlD5B,GAAIA,IAAY,CAwDhBhsD,GAAO6jD,SAAS0K,WACZt4E,KAAMA,EACNrO,MAAO,GACP08E,UAOI+J,kBAAmB,IAQnBC,qBAAsB,GAG1BnI,QAAS+H,IAEd,aAQGvkB,EAAgC,WAC9B,MAAO3pC,IACT//B,KAAKX,EAASM,EAAqBN,EAASC,KAASoqE,IAAkC7jE,IAAcvG,EAAOD,QAAUqqE,KASzH3iE,SAIC,SAASzH,EAAQD,GAYrBA,EAAQq/C,oBAAsB,WAE7Bj/C,KAAK8uF,aAAa9uF,KAAK47C,UAAUvC,WAAWC,iBAAiB,GAG7Dt5C,KAAKknD,eAIDlnD,KAAKs7C,WACPt7C,KAAKuhD,aAEPvhD,KAAK4P,SASNhQ,EAAQkvF,aAAe,SAASC,EAAkBC,GAOhD,IANA,GAAI3uC,GAAgBrgD,KAAK69C,YAAYt4C,OAEjC0pF,EAAY,GACZn3C,EAAQ,EAGLuI,EAAgB0uC,GAA4BE,EAARn3C,GACrCA,EAAQ,GAAK,GACf93C,KAAKkvF,oBAAmB,GACxBlvF,KAAKmvF,0BAGLnvF,KAAKovF,uBAGP/uC,EAAgBrgD,KAAK69C,YAAYt4C,OACjCuyC,GAAS,CAIPA,GAAQ,GAAmB,GAAdk3C,GACfhvF,KAAKqvF,kBAEPrvF,KAAK+mD,2BASPnnD,EAAQ0vF,YAAc,SAAS5vC,GAC7B,GAAI6vC,GAA2BvvF,KAAK6+C,MACpC,IAAIa,EAAKiU,YAAc3zD,KAAK47C,UAAUvC,WAAWM,iBAAmB35C,KAAKwvF,kBAAkB9vC,KACrE,WAAlB1/C,KAAKyvF,WAAqD,GAA3BzvF,KAAK69C,YAAYt4C,QAAc,CAEhEvF,KAAK0vF,WAAWhwC,EAIhB,KAHA,GAAI5H,GAAQ,EAGJ93C,KAAK69C,YAAYt4C,OAASvF,KAAK47C,UAAUvC,WAAWC,iBAA6B,GAARxB,GAC/E93C,KAAK2vF,uBACL73C,GAAS,MAKX93C,MAAK4vF,mBAAmBlwC,GAAK,GAAM,GAGnC1/C,KAAK2gD,uBACL3gD,KAAK6vF,sBACL7vF,KAAK+mD,0BACL/mD,KAAKknD,cAIHlnD,MAAK6+C,QAAU0wC,GACjBvvF,KAAK4P,SAQThQ,EAAQ2lD,sBAAwB,WACW,GAArCvlD,KAAK47C,UAAUvC,WAAWxqC,SAC5B7O,KAAK8vF,eAAe,GAAE,GAAM,IAUhClwF,EAAQwvF,qBAAuB,WAC7BpvF,KAAK8vF,eAAe,IAAG,GAAM,IAS/BlwF,EAAQ+vF,qBAAuB,WAC7B3vF,KAAK8vF,eAAe,GAAE,GAAM,IAgB9BlwF,EAAQkwF,eAAiB,SAASC,EAAcC,EAAU3zD,EAAM4zD,GAC9D,GAAIV,GAA2BvvF,KAAK6+C,OAChCqxC,EAAgBlwF,KAAK69C,YAAYt4C,MAGjCvF,MAAKk+C,cAAgBl+C,KAAKoc,OAA0B,GAAjB2zE,GACrC/vF,KAAKmwF,kBAIHnwF,KAAKk+C,cAAgBl+C,KAAKoc,OAA0B,IAAjB2zE,EAGrC/vF,KAAKowF,cAAc/zD,IAEZr8B,KAAKk+C,cAAgBl+C,KAAKoc,OAA0B,GAAjB2zE,KAC7B,GAAT1zD,EAGFr8B,KAAKqwF,cAAcL,EAAU3zD,GAI7Br8B,KAAKswF,uBAGTtwF,KAAK2gD,uBAGD3gD,KAAK69C,YAAYt4C,QAAU2qF,IAAkBlwF,KAAKk+C,cAAgBl+C,KAAKoc,OAA0B,IAAjB2zE,KAClF/vF,KAAKuwF,eAAel0D,GACpBr8B,KAAK2gD,yBAIH3gD,KAAKk+C,cAAgBl+C,KAAKoc,OAA0B,IAAjB2zE,KACrC/vF,KAAKwwF,eACLxwF,KAAK2gD,wBAGP3gD,KAAKk+C,cAAgBl+C,KAAKoc,MAG1Bpc,KAAK6vF,sBACL7vF,KAAKknD,eAGDlnD,KAAK69C,YAAYt4C,OAAS2qF,IAC5BlwF,KAAKozD,gBAAkB,EAEvBpzD,KAAKmvF,2BAGW,GAAdc,GAAsC7pF,SAAf6pF,IAErBjwF,KAAK6+C,QAAU0wC,GACjBvvF,KAAK4P,QAIT5P,KAAK+mD,2BAMPnnD,EAAQ4wF,aAAe,WAErB,GAAIC,GAAkBzwF,KAAK0wF,mBACvBD,GAAkBzwF,KAAK47C,UAAUvC,WAAWI,gBAC9Cz5C,KAAK2wF,sBAAsB,EAAI3wF,KAAK47C,UAAUvC,WAAWI,eAAiBg3C,IAW9E7wF,EAAQ2wF,eAAiB,SAASl0D,GAChCr8B,KAAK4wF,cACL5wF,KAAK6wF,mBAAmBx0D,GAAM,IAQhCz8B,EAAQsvF,mBAAqB,SAASe,GACpC,GAAIV,GAA2BvvF,KAAK6+C,OAChCqxC,EAAgBlwF,KAAK69C,YAAYt4C,MAErCvF,MAAKuwF,gBAAe,GAGpBvwF,KAAK2gD,uBACL3gD,KAAK6vF,sBACL7vF,KAAKknD,eAGDlnD,KAAK69C,YAAYt4C,QAAU2qF,IAC7BlwF,KAAKozD,gBAAkB,IAGP,GAAd68B,GAAsC7pF,SAAf6pF,IAErBjwF,KAAK6+C,QAAU0wC,GACjBvvF,KAAK4P,SAUXhQ,EAAQ0wF,oBAAsB,WAC5B,IAAK,GAAIvwC,KAAU//C,MAAKo3C,MACtB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIL,GAAO1/C,KAAKo3C,MAAM2I,EACD,IAAjBL,EAAKmX,WACFnX,EAAK3sC,MAAM/S,KAAKoc,MAAQpc,KAAK47C,UAAUvC,WAAWO,oBAAsB55C,KAAKye,MAAMC,OAAOC,aAC1F+gC,EAAK1sC,OAAOhT,KAAKoc,MAAQpc,KAAK47C,UAAUvC,WAAWO,oBAAsB55C,KAAKye,MAAMC,OAAOsF,eAC9FhkB,KAAKsvF,YAAY5vC,KAc3B9/C,EAAQywF,cAAgB,SAASL,EAAU3zD,GACzC,IAAK,GAAIj3B,GAAI,EAAGA,EAAIpF,KAAK69C,YAAYt4C,OAAQH,IAAK,CAChD,GAAIs6C,GAAO1/C,KAAKo3C,MAAMp3C,KAAK69C,YAAYz4C,GACvCpF,MAAK4vF,mBAAmBlwC,EAAKswC,EAAU3zD,GACvCr8B,KAAK+mD,4BAeTnnD,EAAQgwF,mBAAqB,SAASjmF,EAAYqmF,EAAW3zD,EAAOy0D,GAElE,GAAInnF,EAAWgqD,YAAc,IAEvBhqD,EAAWgqD,YAAc3zD,KAAK47C,UAAUvC,WAAWM,kBACrDm3C,GAAU,GAEZd,EAAYc,GAAU,EAAOd,EAGzBrmF,EAAW+pD,eAAiB1zD,KAAKoc,OAAkB,GAATigB,GAE5C,IAAK,GAAI00D,KAAmBpnF,GAAWiqD,eACrC,GAAIjqD,EAAWiqD,eAAeluD,eAAeqrF,GAAkB,CAC7D,GAAIC,GAAYrnF,EAAWiqD,eAAem9B,EAI7B,IAAT10D,GACE20D,EAAU59B,gBAAkBzpD,EAAWmqD,gBAAgBnqD,EAAWmqD,gBAAgBvuD,OAAO,IACtFurF,IACL9wF,KAAKixF,sBAAsBtnF,EAAWonF,EAAgBf,EAAU3zD,EAAMy0D,GAIpE9wF,KAAKwvF,kBAAkB7lF,IACzB3J,KAAKixF,sBAAsBtnF,EAAWonF,EAAgBf,EAAU3zD,EAAMy0D,KAwBpFlxF,EAAQqxF,sBAAwB,SAAStnF,EAAYonF,EAAiBf,EAAW3zD,EAAOy0D,GACtF,GAAIE,GAAYrnF,EAAWiqD,eAAem9B,EAG1C,IAAIC,EAAUt9B,eAAiB1zD,KAAKoc,OAAkB,GAATigB,EAAe,CAE1Dr8B,KAAKkxF,eAGLlxF,KAAKo3C,MAAM25C,GAAmBC,EAG9BhxF,KAAKmxF,uBAAuBxnF,EAAWqnF,GAGvChxF,KAAKoxF,wBAAwBznF,EAAWqnF,GAGxChxF,KAAKqxF,eAAe1nF,GAGpBA,EAAWiF,QAAQyoC,MAAQ25C,EAAUpiF,QAAQyoC,KAC7C1tC,EAAWgqD,aAAeq9B,EAAUr9B,YACpChqD,EAAWiF,QAAQ+oC,SAAW7yC,KAAKwG,IAAItL,KAAK47C,UAAUvC,WAAWS,YAAa95C,KAAK47C,UAAUxE,MAAMO,SAAW33C,KAAK47C,UAAUvC,WAAWQ,oBAAoBlwC,EAAWgqD,YAAY,IACnLhqD,EAAWwpD,mBAAqBxpD,EAAWk+C,aAAatiD,OAGxDyrF,EAAUz+E,EAAI5I,EAAW4I,EAAI5I,EAAW6pD,iBAAmB,GAAM1uD,KAAKE,UACtEgsF,EAAUx+E,EAAI7I,EAAW6I,EAAI7I,EAAW6pD,iBAAmB,GAAM1uD,KAAKE,gBAG/D2E,GAAWiqD,eAAem9B,EAGjC,IAAIO,IAAgB,CACpB,KAAK,GAAIC,KAAe5nF,GAAWiqD,eACjC,GAAIjqD,EAAWiqD,eAAeluD,eAAe6rF,IACvC5nF,EAAWiqD,eAAe29B,GAAan+B,gBAAkB49B,EAAU59B,eAAgB,CACrFk+B,GAAgB,CAChB,OAKe,GAAjBA,GACF3nF,EAAWmqD,gBAAgBjf,MAG7B70C,KAAKwxF,uBAAuBR,GAI5BA,EAAU59B,eAAiB,EAG3BzpD,EAAW4rD,iBAGXv1D,KAAK6+C,QAAS,EAIC,GAAbmxC,GACFhwF,KAAK4vF,mBAAmBoB,EAAUhB,EAAU3zD,EAAMy0D,IAWtDlxF,EAAQ4xF,uBAAyB,SAAS9xC,GACxC,IAAK,GAAIt6C,GAAI,EAAGA,EAAIs6C,EAAKmI,aAAatiD,OAAQH,IAC5Cs6C,EAAKmI,aAAaziD,GAAG2lD,sBAczBnrD,EAAQwwF,cAAgB,SAAS/zD,GAClB,GAATA,EACFr8B,KAAKyxF,sBAGLzxF,KAAK0xF,wBAUT9xF,EAAQ6xF,oBAAsB,WAC5B,GAAI1zE,GAAGC,EAAGzY,EACNosF,EAAY3xF,KAAK47C,UAAUvC,WAAWK,qBAAqB15C,KAAKoc,KAIpE,KAAK,GAAI2pC,KAAU/lD,MAAKi4C,MACtB,GAAIj4C,KAAKi4C,MAAMvyC,eAAeqgD,GAAS,CACrC,GAAIO,GAAOtmD,KAAKi4C,MAAM8N,EACtB,IAAIO,EAAKC,WACHD,EAAKiG,MAAQjG,EAAKgG,SACpBvuC,EAAMuoC,EAAK99B,GAAGjW,EAAI+zC,EAAK/9B,KAAKhW,EAC5ByL,EAAMsoC,EAAK99B,GAAGhW,EAAI8zC,EAAK/9B,KAAK/V,EAC5BjN,EAAST,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAGrB2zE,EAATpsF,GAAoB,CAEtB,GAAIoE,GAAa28C,EAAK/9B,KAClByoE,EAAY1qC,EAAK99B,EACjB89B,GAAK99B,GAAG5Z,QAAQyoC,KAAOiP,EAAK/9B,KAAK3Z,QAAQyoC,OAC3C1tC,EAAa28C,EAAK99B,GAClBwoE,EAAY1qC,EAAK/9B,MAGiB,GAAhCyoE,EAAU79B,mBACZnzD,KAAK4xF,cAAcjoF,EAAWqnF,GAAU,GAEA,GAAjCrnF,EAAWwpD,oBAClBnzD,KAAK4xF,cAAcZ,EAAUrnF,GAAW,MAetD/J,EAAQ8xF,qBAAuB,WAC7B,IAAK,GAAI3xC,KAAU//C,MAAKo3C,MAEtB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIixC,GAAYhxF,KAAKo3C,MAAM2I,EAG3B,IAAoC,GAAhCixC,EAAU79B,oBAA4D,GAAjC69B,EAAUnpC,aAAatiD,OAAa,CAC3E,GAAI+gD,GAAO0qC,EAAUnpC,aAAa,GAC9Bl+C,EAAc28C,EAAKiG,MAAQykC,EAAU3wF,GAAML,KAAKo3C,MAAMkP,EAAKgG,QAAUtsD,KAAKo3C,MAAMkP,EAAKiG,KAGrFykC,GAAU3wF,IAAMsJ,EAAWtJ,KACzBsJ,EAAWiF,QAAQyoC,KAAO25C,EAAUpiF,QAAQyoC,KAC9Cr3C,KAAK4xF,cAAcjoF,EAAWqnF,GAAU,GAGxChxF,KAAK4xF,cAAcZ,EAAUrnF,GAAW,OAgBpD/J,EAAQiyF,4BAA8B,SAASnyC,GAG7C,IAAK,GAFDoyC,GAAoB,GACpBC,EAAwB,KACnB3sF,EAAI,EAAGA,EAAIs6C,EAAKmI,aAAatiD,OAAQH,IAC5C,GAA6BgB,SAAzBs5C,EAAKmI,aAAaziD,GAAkB,CACtC,GAAI4sF,GAAY,IACZtyC,GAAKmI,aAAaziD,GAAGknD,QAAU5M,EAAKr/C,GACtC2xF,EAAYtyC,EAAKmI,aAAaziD,GAAGmjB,KAE1Bm3B,EAAKmI,aAAaziD,GAAGmnD,MAAQ7M,EAAKr/C,KACzC2xF,EAAYtyC,EAAKmI,aAAaziD,GAAGojB,IAIlB,MAAbwpE,GAAqBF,EAAoBE,EAAUl+B,gBAAgBvuD,SACrEusF,EAAoBE,EAAUl+B,gBAAgBvuD,OAC9CwsF,EAAwBC,GAKb,MAAbA,GAAkD5rF,SAA7BpG,KAAKo3C,MAAM46C,EAAU3xF,KAC5CL,KAAK4xF,cAAcI,EAAWtyC,GAAM,IAYxC9/C,EAAQixF,mBAAqB,SAASx0D,EAAO41D,GAE3C,IAAK,GAAIlyC,KAAU//C,MAAKo3C,MAElBp3C,KAAKo3C,MAAM1xC,eAAeq6C,IAC5B//C,KAAKkyF,oBAAoBlyF,KAAKo3C,MAAM2I,GAAQ1jB,EAAM41D,IAcxDryF,EAAQsyF,oBAAsB,SAASC,EAAS91D,EAAO41D,EAAWG,GAKhE,GAJ6BhsF,SAAzBgsF,IACFA,EAAuB,GAGpBD,EAAQh/B,oBAAsBnzD,KAAKuhE,cAA6B,GAAb0wB,GACrDE,EAAQh/B,oBAAsBnzD,KAAKuhE,cAA6B,GAAb0wB,EAAoB,CASxE,IAAK,GAPDl0E,GAAGC,EAAGzY,EACNosF,EAAY3xF,KAAK47C,UAAUvC,WAAWK,qBAAqB15C,KAAKoc,MAChEi2E,GAAe,EAGfC,KACAC,EAAuBJ,EAAQtqC,aAAatiD,OACvCylB,EAAI,EAAOunE,EAAJvnE,EAA0BA,IACxCsnE,EAAavqF,KAAKoqF,EAAQtqC,aAAa78B,GAAG3qB,GAK5C,IAAa,GAATg8B,EAEF,IADAg2D,GAAe,EACVrnE,EAAI,EAAOunE,EAAJvnE,EAA0BA,IAAK,CACzC,GAAIs7B,GAAOtmD,KAAKi4C,MAAMq6C,EAAatnE,GACnC,IAAa5kB,SAATkgD,GACEA,EAAKC,WACHD,EAAKiG,MAAQjG,EAAKgG,SACpBvuC,EAAMuoC,EAAK99B,GAAGjW,EAAI+zC,EAAK/9B,KAAKhW,EAC5ByL,EAAMsoC,EAAK99B,GAAGhW,EAAI8zC,EAAK/9B,KAAK/V,EAC5BjN,EAAST,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAErB2zE,EAATpsF,GAAoB,CACtB8sF,GAAe,CACf,QASZ,IAAMh2D,GAASg2D,GAAiBh2D,EAE9B,IAAKrR,EAAI,EAAOunE,EAAJvnE,EAA0BA,IAGpC,GAFAs7B,EAAOtmD,KAAKi4C,MAAMq6C,EAAatnE,IAElB5kB,SAATkgD,EAAoB,CACtB,GAAI0qC,GAAYhxF,KAAKo3C,MAAOkP,EAAKgG,QAAU6lC,EAAQ9xF,GAAMimD,EAAKiG,KAAOjG,EAAKgG,OAErE0kC,GAAUnpC,aAAatiD,QAAWvF,KAAKuhE,aAAe6wB,GACtDpB,EAAU3wF,IAAM8xF,EAAQ9xF,IAC3BL,KAAK4xF,cAAcO,EAAQnB,EAAU30D,MAkBjDz8B,EAAQgyF,cAAgB,SAASjoF,EAAYqnF,EAAW30D,GAEtD1yB,EAAWiqD,eAAeo9B,EAAU3wF,IAAM2wF,CAG1C,KAAK,GAAI5rF,GAAI,EAAGA,EAAI4rF,EAAUnpC,aAAatiD,OAAQH,IAAK,CACtD,GAAIkhD,GAAO0qC,EAAUnpC,aAAaziD,EAC9BkhD,GAAKiG,MAAQ5iD,EAAWtJ,IAAMimD,EAAKgG,QAAU3iD,EAAWtJ,GAC1DL,KAAKwyF,qBAAqB7oF,EAAWqnF,EAAU1qC,GAG/CtmD,KAAKyyF,sBAAsB9oF,EAAWqnF,EAAU1qC,GAIpD0qC,EAAUnpC,gBAGV7nD,KAAK0yF,8BAA8B/oF,EAAWqnF,SAIvChxF,MAAKo3C,MAAM45C,EAAU3wF,GAG5B,IAAIsyF,GAAahpF,EAAWiF,QAAQyoC,IACpC25C,GAAU59B,eAAiBpzD,KAAKozD,eAChCzpD,EAAWiF,QAAQyoC,MAAQ25C,EAAUpiF,QAAQyoC,KAC7C1tC,EAAWgqD,aAAeq9B,EAAUr9B,YACpChqD,EAAWiF,QAAQ+oC,SAAW7yC,KAAKwG,IAAItL,KAAK47C,UAAUvC,WAAWS,YAAa95C,KAAK47C,UAAUxE,MAAMO,SAAW33C,KAAK47C,UAAUvC,WAAWQ,mBAAmBlwC,EAAWgqD,aAGlKhqD,EAAWmqD,gBAAgBnqD,EAAWmqD,gBAAgBvuD,OAAS,IAAMvF,KAAKozD,gBAC5EzpD,EAAWmqD,gBAAgB/rD,KAAK/H,KAAKozD,gBAMrCzpD,EAAW+pD,eAFA,GAATr3B,EAE0B,EAGAr8B,KAAKoc,MAInCzS,EAAW4rD,iBAGX5rD,EAAWiqD,eAAeo9B,EAAU3wF,IAAIqzD,eAAiB/pD,EAAW+pD,eAGpEs9B,EAAUl6B,gBAGVntD,EAAWotD,eAAe47B,GAG1B3yF,KAAK6+C,QAAS,GAUhBj/C,EAAQiwF,oBAAsB,WAC5B,IAAK,GAAIzqF,GAAI,EAAGA,EAAIpF,KAAK69C,YAAYt4C,OAAQH,IAAK,CAChD,GAAIs6C,GAAO1/C,KAAKo3C,MAAMp3C,KAAK69C,YAAYz4C,GACvCs6C,GAAKyT,mBAAqBzT,EAAKmI,aAAatiD,MAG5C,IAAIqtF,GAAa,CACjB,IAAIlzC,EAAKyT,mBAAqB,EAC5B,IAAK,GAAInoC,GAAI,EAAGA,EAAI00B,EAAKyT,mBAAqB,EAAGnoC,IAG/C,IAAK,GAFD6nE,GAAWnzC,EAAKmI,aAAa78B,GAAGuhC,KAChCumC,EAAapzC,EAAKmI,aAAa78B,GAAGshC,OAC7BymC,EAAI/nE,EAAE,EAAG+nE,EAAIrzC,EAAKyT,mBAAoB4/B,KACxCrzC,EAAKmI,aAAakrC,GAAGxmC,MAAQsmC,GAAYnzC,EAAKmI,aAAakrC,GAAGzmC,QAAUwmC,GACxEpzC,EAAKmI,aAAakrC,GAAGzmC,QAAUumC,GAAYnzC,EAAKmI,aAAakrC,GAAGxmC,MAAQumC,KAC3EF,GAAc,EAKtBlzC,GAAKyT,oBAAsBy/B,IAa/BhzF,EAAQ4yF,qBAAuB,SAAS7oF,EAAYqnF,EAAW1qC,GAEvD38C,EAAWkqD,eAAenuD,eAAesrF,EAAU3wF,MACvDsJ,EAAWkqD,eAAem9B,EAAU3wF,QAGtCsJ,EAAWkqD,eAAem9B,EAAU3wF,IAAI0H,KAAKu+C,SAGtCtmD,MAAKi4C,MAAMqO,EAAKjmD,GAGvB,KAAK,GAAI+E,GAAI,EAAGA,EAAIuE,EAAWk+C,aAAatiD,OAAQH,IAClD,GAAIuE,EAAWk+C,aAAaziD,GAAG/E,IAAMimD,EAAKjmD,GAAI,CAC5CsJ,EAAWk+C,aAAa1/C,OAAO/C,EAAE,EACjC,SAcNxF,EAAQ6yF,sBAAwB,SAAS9oF,EAAYqnF,EAAW1qC,GAE1DA,EAAKiG,MAAQjG,EAAKgG,OACpBtsD,KAAKwyF,qBAAqB7oF,EAAYqnF,EAAW1qC,IAG7CA,EAAKiG,MAAQykC,EAAU3wF,IACzBimD,EAAKuG,aAAa9kD,KAAKipF,EAAU3wF,IACjCimD,EAAK99B,GAAK7e,EACV28C,EAAKiG,KAAO5iD,EAAWtJ,KAIvBimD,EAAKsG,eAAe7kD,KAAKipF,EAAU3wF,IACnCimD,EAAK/9B,KAAO5e,EACZ28C,EAAKgG,OAAS3iD,EAAWtJ,IAG3BL,KAAKgzF,oBAAoBrpF,EAAWqnF,EAAU1qC,KAalD1mD,EAAQ8yF,8BAAgC,SAAS/oF,EAAYqnF,GAE3D,IAAK,GAAI5rF,GAAI,EAAGA,EAAIuE,EAAWk+C,aAAatiD,OAAQH,IAAK,CACvD,GAAIkhD,GAAO38C,EAAWk+C,aAAaziD,EAE/BkhD,GAAKiG,MAAQjG,EAAKgG,QACpBtsD,KAAKwyF,qBAAqB7oF,EAAYqnF,EAAW1qC,KAcvD1mD,EAAQozF,oBAAsB,SAASrpF,EAAYqnF,EAAW1qC,GAGtD38C,EAAW2oD,cAAc5sD,eAAesrF,EAAU3wF,MACtDsJ,EAAW2oD,cAAc0+B,EAAU3wF,QAErCsJ,EAAW2oD,cAAc0+B,EAAU3wF,IAAI0H,KAAKu+C,GAG5C38C,EAAWk+C,aAAa9/C,KAAKu+C,IAY/B1mD,EAAQwxF,wBAA0B,SAASznF,EAAYqnF,GACrD,GAAIrnF,EAAW2oD,cAAc5sD,eAAesrF,EAAU3wF,IAAK,CACzD,IAAK,GAAI+E,GAAI,EAAGA,EAAIuE,EAAW2oD,cAAc0+B,EAAU3wF,IAAIkF,OAAQH,IAAK,CACtE,GAAIkhD,GAAO38C,EAAW2oD,cAAc0+B,EAAU3wF,IAAI+E,EAC9CkhD,GAAKsG,eAAetG,EAAKsG,eAAernD,OAAO,IAAMyrF,EAAU3wF,IACjEimD,EAAKsG,eAAe/X,MACpByR,EAAKgG,OAAS0kC,EAAU3wF,GACxBimD,EAAK/9B,KAAOyoE,IAGZ1qC,EAAKuG,aAAahY,MAClByR,EAAKiG,KAAOykC,EAAU3wF,GACtBimD,EAAK99B,GAAKwoE,GAIZA,EAAUnpC,aAAa9/C,KAAKu+C,EAG5B,KAAK,GAAIt7B,GAAI,EAAGA,EAAIrhB,EAAWk+C,aAAatiD,OAAQylB,IAClD,GAAIrhB,EAAWk+C,aAAa78B,GAAG3qB,IAAMimD,EAAKjmD,GAAI,CAC5CsJ,EAAWk+C,aAAa1/C,OAAO6iB,EAAE,EACjC,cAKCrhB,GAAW2oD,cAAc0+B,EAAU3wF,MAa9CT,EAAQyxF,eAAiB,SAAS1nF,GAChC,IAAK,GAAIvE,GAAI,EAAGA,EAAIuE,EAAWk+C,aAAatiD,OAAQH,IAAK,CACvD,GAAIkhD,GAAO38C,EAAWk+C,aAAaziD,EAC/BuE,GAAWtJ,IAAMimD,EAAKiG,MAAQ5iD,EAAWtJ,IAAMimD,EAAKgG,QACtD3iD,EAAWk+C,aAAa1/C,OAAO/C,EAAE,KAcvCxF,EAAQuxF,uBAAyB,SAASxnF,EAAYqnF,GACpD,IAAK,GAAI5rF,GAAI,EAAGA,EAAIuE,EAAWkqD,eAAem9B,EAAU3wF,IAAIkF,OAAQH,IAAK,CACvE,GAAIkhD,GAAO38C,EAAWkqD,eAAem9B,EAAU3wF,IAAI+E,EAGnDpF,MAAKi4C,MAAMqO,EAAKjmD,IAAMimD,EAGtB0qC,EAAUnpC,aAAa9/C,KAAKu+C,GAC5B38C,EAAWk+C,aAAa9/C,KAAKu+C,SAGxB38C,GAAWkqD,eAAem9B,EAAU3wF,KAa7CT,EAAQsnD,aAAe,WACrB,GAAInH,EAEJ,KAAKA,IAAU//C,MAAKo3C,MAClB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIL,GAAO1/C,KAAKo3C,MAAM2I,EAClBL,GAAKiU,YAAc,IACrBjU,EAAK93B,MAAQ,IAAIxT,OAAOpQ,OAAO07C,EAAKiU,aAAa,MAMvD,IAAK5T,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACM,GAApBL,EAAKiU,cAELjU,EAAK93B,MADoBxhB,SAAvBs5C,EAAKqU,cACMrU,EAAKqU,cAGL/vD,OAAO07C,EAAKr/C,OAuBnCT,EAAQuvF,uBAAyB,WAC/B,GAGIpvC,GAHAkzC,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAKpzC,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BozC,EAAenzF,KAAKo3C,MAAM2I,GAAQ+T,gBAAgBvuD,OACnC4tF,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAWlzF,KAAK47C,UAAUvC,WAAWgB,uBAAwB,CAC1E,GAAI61C,GAAgBlwF,KAAK69C,YAAYt4C,OACjC6tF,EAAcH,EAAWjzF,KAAK47C,UAAUvC,WAAWgB,sBAEvD,KAAK0F,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,IACxB//C,KAAKo3C,MAAM2I,GAAQ+T,gBAAgBvuD,OAAS6tF,GAC9CpzF,KAAK6xF,4BAA4B7xF,KAAKo3C,MAAM2I,GAIlD//C,MAAK2gD,uBACL3gD,KAAK6vF,sBAED7vF,KAAK69C,YAAYt4C,QAAU2qF,IAC7BlwF,KAAKozD,gBAAkB,KAe7BxzD,EAAQ4vF,kBAAoB,SAAS9vC,GACnC,MACE56C,MAAKklB,IAAI01B,EAAKntC,EAAIvS,KAAKi+C,WAAW1rC,IAAMvS,KAAK47C,UAAUvC,WAAWe,kBAAkBp6C,KAAKoc,OAEzFtX,KAAKklB,IAAI01B,EAAKltC,EAAIxS,KAAKi+C,WAAWzrC,IAAMxS,KAAK47C,UAAUvC,WAAWe,kBAAkBp6C,KAAKoc,OAU7Fxc,EAAQyvF,gBAAkB,WACxB,IAAK,GAAIjqF,GAAI,EAAGA,EAAIpF,KAAK69C,YAAYt4C,OAAQH,IAAK,CAChD,GAAIs6C,GAAO1/C,KAAKo3C,MAAMp3C,KAAK69C,YAAYz4C,GACvC,IAAoB,GAAfs6C,EAAKyE,QAAkC,GAAfzE,EAAK0E,OAAkB,CAClD,GAAIv5B,GAAS,EAAS7qB,KAAK69C,YAAYt4C,OAAST,KAAKwG,IAAI,IAAIo0C,EAAK9wC,QAAQyoC,MACtEyP,EAAQ,EAAIhiD,KAAKimB,GAAKjmB,KAAKE,QACZ,IAAf06C,EAAKyE,SAAkBzE,EAAKntC,EAAIsY,EAAS/lB,KAAK4Y,IAAIopC,IACnC,GAAfpH,EAAK0E,SAAkB1E,EAAKltC,EAAIqY,EAAS/lB,KAAKyY,IAAIupC,IACtD9mD,KAAKwxF,uBAAuB9xC,MAYlC9/C,EAAQgxF,YAAc,WAMpB,IAAK,GALDyC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAERpuF,EAAI,EAAGA,EAAIpF,KAAK69C,YAAYt4C,OAAQH,IAAK,CAEhD,GAAIs6C,GAAO1/C,KAAKo3C,MAAMp3C,KAAK69C,YAAYz4C,GACnCs6C,GAAKyT,mBAAqBqgC,IAC5BA,EAAa9zC,EAAKyT,oBAEpBkgC,GAAW3zC,EAAKyT,mBAChBmgC,GAAkBxuF,KAAK0uB,IAAIksB,EAAKyT,mBAAmB,GACnDogC,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBxuF,KAAK0uB,IAAI6/D,EAAQ,GAE7CK,EAAoB5uF,KAAKqqB,KAAKskE,EAElCzzF,MAAKuhE,aAAez8D,KAAKC,MAAMsuF,EAAU,EAAEK,GAGvC1zF,KAAKuhE,aAAeiyB,IACtBxzF,KAAKuhE,aAAeiyB,IAexB5zF,EAAQ+wF,sBAAwB,SAASgD,GACvC3zF,KAAKuhE,aAAe,CACpB,IAAIqyB,GAAe9uF,KAAKC,MAAM/E,KAAK69C,YAAYt4C,OAASouF,EACxD,KAAK,GAAI5zC,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,IACiB,GAAzC//C,KAAKo3C,MAAM2I,GAAQoT,oBAA2BnzD,KAAKo3C,MAAM2I,GAAQ8H,aAAatiD,QAAU,GACtFquF,EAAe,IACjB5zF,KAAKkyF,oBAAoBlyF,KAAKo3C,MAAM2I,IAAQ,GAAK,EAAK,GACtD6zC,GAAgB,IAa1Bh0F,EAAQ8wF,kBAAoB,WAC1B,GAAImD,GAAS,EACTC,EAAQ,CACZ,KAAK,GAAI/zC,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KACiB,GAAzC//C,KAAKo3C,MAAM2I,GAAQoT,oBAA2BnzD,KAAKo3C,MAAM2I,GAAQ8H,aAAatiD,QAAU,IAC1FsuF,GAAU,GAEZC,GAAS,EAGb,OAAOD,GAAOC,IAMZ,SAASj0F,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BkD,EAAOlD,EAAoB,GAgB/BN,GAAQyhD,iBAAmB,WACzBrhD,KAAK4nD,QAAgB,OAAE5nD,KAAKyvF,WAAWr4C,MAAQp3C,KAAKo3C,MACpDp3C,KAAK4nD,QAAgB,OAAE5nD,KAAKyvF,WAAWx3C,MAAQj4C,KAAKi4C,MACpDj4C,KAAK4nD,QAAgB,OAAE5nD,KAAKyvF,WAAW5xC,YAAc79C,KAAK69C,aAa5Dj+C,EAAQm0F,gBAAkB,SAASC,EAAUC,GACxB7tF,SAAf6tF,GAA0C,UAAdA,EAC9Bj0F,KAAKk0F,sBAAsBF,GAG3Bh0F,KAAKm0F,sBAAsBH,IAY/Bp0F,EAAQs0F,sBAAwB,SAASF,GACvCh0F,KAAK69C,YAAc79C,KAAK4nD,QAAgB,OAAEosC,GAAuB,YACjEh0F,KAAKo3C,MAAcp3C,KAAK4nD,QAAgB,OAAEosC,GAAiB,MAC3Dh0F,KAAKi4C,MAAcj4C,KAAK4nD,QAAgB,OAAEosC,GAAiB,OAU7Dp0F,EAAQw0F,uBAAyB,WAC/Bp0F,KAAK69C,YAAc79C,KAAK4nD,QAAiB,QAAe,YACxD5nD,KAAKo3C,MAAcp3C,KAAK4nD,QAAiB,QAAS,MAClD5nD,KAAKi4C,MAAcj4C,KAAK4nD,QAAiB,QAAS,OAWpDhoD,EAAQu0F,sBAAwB,SAASH,GACvCh0F,KAAK69C,YAAc79C,KAAK4nD,QAAgB,OAAEosC,GAAuB,YACjEh0F,KAAKo3C,MAAcp3C,KAAK4nD,QAAgB,OAAEosC,GAAiB,MAC3Dh0F,KAAKi4C,MAAcj4C,KAAK4nD,QAAgB,OAAEosC,GAAiB,OAU7Dp0F,EAAQy0F,kBAAoB,WAC1Br0F,KAAK+zF,gBAAgB/zF,KAAKyvF,YAU5B7vF,EAAQ6vF,QAAU,WAChB,MAAOzvF,MAAKwhE,aAAaxhE,KAAKwhE,aAAaj8D,OAAO,IAUpD3F,EAAQ00F,gBAAkB,WACxB,GAAIt0F,KAAKwhE,aAAaj8D,OAAS,EAC7B,MAAOvF,MAAKwhE,aAAaxhE,KAAKwhE,aAAaj8D,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxBrG,EAAQ20F,iBAAmB,SAASC,GAClCx0F,KAAKwhE,aAAaz5D,KAAKysF,IAUzB50F,EAAQ60F,kBAAoB,WAC1Bz0F,KAAKwhE,aAAa3sB,OAWpBj1C,EAAQ80F,iBAAmB,SAASF,GAElCx0F,KAAK4nD,QAAgB,OAAE4sC,IAAUp9C,SACAa,SACA4F,eACA6V,eAAkB1zD,KAAKoc,MACvBqlD,YAAer7D,QAGhDpG,KAAK4nD,QAAgB,OAAE4sC,GAAoB,YAAI,GAAIpxF,IAC9C/C,GAAGm0F,EACF9pF,OACEiB,WAAY,UACZC,OAAQ,iBAEJ5L,KAAK47C,WACjB57C,KAAK4nD,QAAgB,OAAE4sC,GAAoB,YAAE7gC,YAAc,GAW7D/zD,EAAQ+0F,oBAAsB,SAASX,SAC9Bh0F,MAAK4nD,QAAgB,OAAEosC,IAWhCp0F,EAAQg1F,oBAAsB,SAASZ,SAC9Bh0F,MAAK4nD,QAAgB,OAAEosC,IAWhCp0F,EAAQi1F,cAAgB,SAASb,GAE/Bh0F,KAAK4nD,QAAgB,OAAEosC,GAAYh0F,KAAK4nD,QAAgB,OAAEosC,GAG1Dh0F,KAAK20F,oBAAoBX,IAW3Bp0F,EAAQk1F,gBAAkB,SAASd,GAEjCh0F,KAAK4nD,QAAgB,OAAEosC,GAAYh0F,KAAK4nD,QAAgB,OAAEosC,GAG1Dh0F,KAAK40F,oBAAoBZ,IAa3Bp0F,EAAQm1F,qBAAuB,SAASf,GAEtC,IAAK,GAAIj0C,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5B//C,KAAK4nD,QAAgB,OAAEosC,GAAiB,MAAEj0C,GAAU//C,KAAKo3C,MAAM2I,GAKnE,KAAK,GAAIgG,KAAU/lD,MAAKi4C,MAClBj4C,KAAKi4C,MAAMvyC,eAAeqgD,KAC5B/lD,KAAK4nD,QAAgB,OAAEosC,GAAiB,MAAEjuC,GAAU/lD,KAAKi4C,MAAM8N,GAKnE,KAAK,GAAI3gD,GAAI,EAAGA,EAAIpF,KAAK69C,YAAYt4C,OAAQH,IAC3CpF,KAAK4nD,QAAgB,OAAEosC,GAAuB,YAAEjsF,KAAK/H,KAAK69C,YAAYz4C,KAW1ExF,EAAQo1F,6BAA+B,WACrCh1F,KAAK8uF,aAAa,GAAE,IAUtBlvF,EAAQ8vF,WAAa,SAAShwC,GAE5B,GAAIu1C,GAASj1F,KAAKyvF,gBAWXzvF,MAAKo3C,MAAMsI,EAAKr/C,GAEvB,IAAI60F,GAAmBv0F,EAAKiE,YAG5B5E,MAAK60F,cAAcI,GAGnBj1F,KAAK00F,iBAAiBQ,GAGtBl1F,KAAKu0F,iBAAiBW,GAGtBl1F,KAAK+zF,gBAAgB/zF,KAAKyvF,WAG1BzvF,KAAKo3C,MAAMsI,EAAKr/C,IAAMq/C,GAUxB9/C,EAAQuwF,gBAAkB,WAExB,GAAI8E,GAASj1F,KAAKyvF,SAGlB,IAAc,WAAVwF,IAC8B,GAA3Bj1F,KAAK69C,YAAYt4C,QACpBvF,KAAK4nD,QAAgB,OAAEqtC,GAAqB,YAAEliF,MAAM/S,KAAKoc,MAAQpc,KAAK47C,UAAUvC,WAAWO,oBAAsB55C,KAAKye,MAAMC,OAAOC,aACnI3e,KAAK4nD,QAAgB,OAAEqtC,GAAqB,YAAEjiF,OAAOhT,KAAKoc,MAAQpc,KAAK47C,UAAUvC,WAAWO,oBAAsB55C,KAAKye,MAAMC,OAAOsF,cAAe,CACnJ,GAAImxE,GAAiBn1F,KAAKs0F,iBAG1Bt0F,MAAKg1F,+BAILh1F,KAAK+0F,qBAAqBI,GAI1Bn1F,KAAK20F,oBAAoBM,GAGzBj1F,KAAK80F,gBAAgBK,GAGrBn1F,KAAK+zF,gBAAgBoB,GAGrBn1F,KAAKy0F,oBAGLz0F,KAAK2gD,uBAGL3gD,KAAK+mD,4BAeXnnD,EAAQgqD,sBAAwB,SAASwrC,EAAYC,GACnD,GAAIC,KACJ,IAAiBlvF,SAAbivF,EACF,IAAK,GAAIJ,KAAUj1F,MAAK4nD,QAAgB,OAClC5nD,KAAK4nD,QAAgB,OAAEliD,eAAeuvF,KAExCj1F,KAAKk0F,sBAAsBe,GAC3BK,EAAavtF,KAAM/H,KAAKo1F,WAK5B,KAAK,GAAIH,KAAUj1F,MAAK4nD,QAAgB,OACtC,GAAI5nD,KAAK4nD,QAAgB,OAAEliD,eAAeuvF,GAAS,CAEjDj1F,KAAKk0F,sBAAsBe,EAC3B,IAAI/4B,GAAOr2D,MAAM6N,UAAUvL,OAAO5H,KAAK+E,UAAW,EAEhDgwF,GAAavtF,KADXm0D,EAAK32D,OAAS,EACGvF,KAAKo1F,GAAal5B,EAAK,GAAGA,EAAK,IAG/Bl8D,KAAKo1F,GAAaC,IAO7C,MADAr1F,MAAKq0F,oBACEiB,GAaT11F,EAAQkqD,mBAAqB,SAASsrC,EAAYC,GAChD,GAAIC,IAAe,CACnB,IAAiBlvF,SAAbivF,EACFr1F,KAAKo0F,yBACLkB,EAAet1F,KAAKo1F,SAEjB,CACHp1F,KAAKo0F,wBACL,IAAIl4B,GAAOr2D,MAAM6N,UAAUvL,OAAO5H,KAAK+E,UAAW,EAEhDgwF,GADEp5B,EAAK32D,OAAS,EACDvF,KAAKo1F,GAAal5B,EAAK,GAAGA,EAAK,IAG/Bl8D,KAAKo1F,GAAaC,GAKrC,MADAr1F,MAAKq0F,oBACEiB,GAaT11F,EAAQ21F,sBAAwB,SAASH,EAAYC,GACnD,GAAiBjvF,SAAbivF,EACF,IAAK,GAAIJ,KAAUj1F,MAAK4nD,QAAgB,OAClC5nD,KAAK4nD,QAAgB,OAAEliD,eAAeuvF,KAExCj1F,KAAKm0F,sBAAsBc,GAC3Bj1F,KAAKo1F,UAKT,KAAK,GAAIH,KAAUj1F,MAAK4nD,QAAgB,OACtC,GAAI5nD,KAAK4nD,QAAgB,OAAEliD,eAAeuvF,GAAS,CAEjDj1F,KAAKm0F,sBAAsBc,EAC3B,IAAI/4B,GAAOr2D,MAAM6N,UAAUvL,OAAO5H,KAAK+E,UAAW,EAC9C42D,GAAK32D,OAAS,EAChBvF,KAAKo1F,GAAal5B,EAAK,GAAGA,EAAK,IAG/Bl8D,KAAKo1F,GAAaC,GAK1Br1F,KAAKq0F,qBAaPz0F,EAAQsoD,gBAAkB,SAASktC,EAAYC,GAC7C,GAAIn5B,GAAOr2D,MAAM6N,UAAUvL,OAAO5H,KAAK+E,UAAW,EACjCc,UAAbivF,GACFr1F,KAAK4pD,sBAAsBwrC,GAC3Bp1F,KAAKu1F,sBAAsBH,IAGvBl5B,EAAK32D,OAAS,GAChBvF,KAAK4pD,sBAAsBwrC,EAAYl5B,EAAK,GAAGA,EAAK,IACpDl8D,KAAKu1F,sBAAsBH,EAAYl5B,EAAK,GAAGA,EAAK,MAGpDl8D,KAAK4pD,sBAAsBwrC,EAAYC,GACvCr1F,KAAKu1F,sBAAsBH,EAAYC,KAY7Cz1F,EAAQghD,oBAAsB,WAC5B,GAAIq0C,GAASj1F,KAAKyvF,SAClBzvF,MAAK4nD,QAAgB,OAAEqtC,GAAqB,eAC5Cj1F,KAAK69C,YAAc79C,KAAK4nD,QAAgB,OAAEqtC,GAAqB,aAWjEr1F,EAAQ41F,iBAAmB,SAAStvE,EAAI+tE,GACtC,GAAsDv0C,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIm1C,KAAUj1F,MAAK4nD,QAAQqsC,GAC9B,GAAIj0F,KAAK4nD,QAAQqsC,GAAYvuF,eAAeuvF,IACc7uF,SAApDpG,KAAK4nD,QAAQqsC,GAAYgB,GAAqB,YAAiB,CAEjEj1F,KAAK+zF,gBAAgBkB,EAAOhB,GAE5Bt0C,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIC,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GAClBL,EAAK+O,OAAOvoC,GACR25B,EAAOH,EAAKntC,EAAI,GAAMmtC,EAAK3sC,QAAQ8sC,EAAOH,EAAKntC,EAAI,GAAMmtC,EAAK3sC,OAC9D+sC,EAAOJ,EAAKntC,EAAI,GAAMmtC,EAAK3sC,QAAQ+sC,EAAOJ,EAAKntC,EAAI,GAAMmtC,EAAK3sC,OAC9D4sC,EAAOD,EAAKltC,EAAI,GAAMktC,EAAK1sC,SAAS2sC,EAAOD,EAAKltC,EAAI,GAAMktC,EAAK1sC,QAC/D4sC,EAAOF,EAAKltC,EAAI,GAAMktC,EAAK1sC,SAAS4sC,EAAOF,EAAKltC,EAAI,GAAMktC,EAAK1sC,QAGvE0sC,GAAO1/C,KAAK4nD,QAAQqsC,GAAYgB,GAAqB,YACrDv1C,EAAKntC,EAAI,IAAOutC,EAAOD,GACvBH,EAAKltC,EAAI,IAAOotC,EAAOD,GACvBD,EAAK3sC,MAAQ,GAAK2sC,EAAKntC,EAAIstC,GAC3BH,EAAK1sC,OAAS,GAAK0sC,EAAKltC,EAAImtC,GAC5BD,EAAK9wC,QAAQic,OAAS/lB,KAAKqqB,KAAKrqB,KAAK0uB,IAAI,GAAIksB,EAAK3sC,MAAM,GAAKjO,KAAK0uB,IAAI,GAAIksB,EAAK1sC,OAAO,IACtF0sC,EAAKrhB,SAASr+B,KAAKoc,OACnBsjC,EAAK8U,YAAYtuC,KAMzBtmB,EAAQ61F,oBAAsB,SAASvvE,GACrClmB,KAAKw1F,iBAAiBtvE,EAAI,UAC1BlmB,KAAKw1F,iBAAiBtvE,EAAI,UAC1BlmB,KAAKq0F,sBAMH,SAASx0F,EAAQD,EAASM,GAE9B,GAAIkD,GAAOlD,EAAoB,GAS/BN,GAAQ81F,yBAA2B,SAAS7xF,EAAQ8xF,GAClD,GAAIv+C,GAAQp3C,KAAKo3C,KACjB,KAAK,GAAI2I,KAAU3I,GACbA,EAAM1xC,eAAeq6C,IACnB3I,EAAM2I,GAAQsG,kBAAkBxiD,IAClC8xF,EAAiB5tF,KAAKg4C,IAY9BngD,EAAQg2F,4BAA8B,SAAU/xF,GAC9C,GAAI8xF,KAEJ,OADA31F,MAAK4pD,sBAAsB,2BAA2B/lD,EAAO8xF,GACtDA,GAWT/1F,EAAQi2F,yBAA2B,SAASp6D,GAC1C,GAAIlpB,GAAIvS,KAAKukD,qBAAqB9oB,EAAQlpB,GACtCC,EAAIxS,KAAKykD,qBAAqBhpB,EAAQjpB,EAE1C,QACEnL,KAAQkL,EACR9K,IAAQ+K,EACRgU,MAAQjU,EACRkQ,OAAQjQ,IAYZ5S,EAAQgkD,WAAa,SAAUnoB,GAE7B,GAAIq6D,GAAiB91F,KAAK61F,yBAAyBp6D,GAC/Ck6D,EAAmB31F,KAAK41F,4BAA4BE,EAIxD,OAAIH,GAAiBpwF,OAAS,EACpBvF,KAAKo3C,MAAMu+C,EAAiBA,EAAiBpwF,OAAS,IAGvD,MAWX3F,EAAQm2F,yBAA2B,SAAUlyF,EAAQmyF,GACnD,GAAI/9C,GAAQj4C,KAAKi4C,KACjB,KAAK,GAAI8N,KAAU9N,GACbA,EAAMvyC,eAAeqgD,IACnB9N,EAAM8N,GAAQM,kBAAkBxiD,IAClCmyF,EAAiBjuF,KAAKg+C,IAa9BnmD,EAAQq2F,4BAA8B,SAAUpyF,GAC9C,GAAImyF,KAEJ,OADAh2F,MAAK4pD,sBAAsB,2BAA2B/lD,EAAOmyF,GACtDA,GAWTp2F,EAAQomD,WAAa,SAASvqB,GAC5B,GAAIq6D,GAAiB91F,KAAK61F,yBAAyBp6D,GAC/Cu6D,EAAmBh2F,KAAKi2F,4BAA4BH,EAExD,OAAIE,GAAiBzwF,OAAS,EACrBvF,KAAKi4C,MAAM+9C,EAAiBA,EAAiBzwF,OAAS,IAGtD,MAWX3F,EAAQs2F,gBAAkB,SAAS/zE,GAC7BA,YAAe/e,GACjBpD,KAAKkkD,aAAa9M,MAAMj1B,EAAI9hB,IAAM8hB,EAGlCniB,KAAKkkD,aAAajM,MAAM91B,EAAI9hB,IAAM8hB,GAUtCviB,EAAQu2F,YAAc,SAASh0E,GACzBA,YAAe/e,GACjBpD,KAAK67C,SAASzE,MAAMj1B,EAAI9hB,IAAM8hB,EAG9BniB,KAAK67C,SAAS5D,MAAM91B,EAAI9hB,IAAM8hB,GAWlCviB,EAAQw2F,qBAAuB,SAASj0E,GAClCA,YAAe/e,SACVpD,MAAKkkD,aAAa9M,MAAMj1B,EAAI9hB,UAG5BL,MAAKkkD,aAAajM,MAAM91B,EAAI9hB,KAUvCT,EAAQsxF,aAAe,SAASmF,GACTjwF,SAAjBiwF,IACFA,GAAe,EAEjB,KAAI,GAAIt2C,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,IACxC//C,KAAKkkD,aAAa9M,MAAM2I,GAAQ/V,UAGpC,KAAI,GAAI+b,KAAU/lD,MAAKkkD,aAAajM,MAC/Bj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,IACxC/lD,KAAKkkD,aAAajM,MAAM8N,GAAQ/b,UAIpChqC,MAAKkkD,cAAgB9M,SAASa,UAEV,GAAhBo+C,GACFr2F,KAAKktB,KAAK,SAAUltB,KAAKk2B,iBAU7Bt2B,EAAQ02F,kBAAoB,SAASD,GACdjwF,SAAjBiwF,IACFA,GAAe,EAGjB,KAAK,GAAIt2C,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,IACrC//C,KAAKkkD,aAAa9M,MAAM2I,GAAQ4T,YAAc,IAChD3zD,KAAKkkD,aAAa9M,MAAM2I,GAAQ/V,WAChChqC,KAAKo2F,qBAAqBp2F,KAAKkkD,aAAa9M,MAAM2I,IAKpC,IAAhBs2C,GACFr2F,KAAKktB,KAAK,SAAUltB,KAAKk2B,iBAW7Bt2B,EAAQ22F,sBAAwB,WAC9B,GAAIj/E,GAAQ,CACZ,KAAK,GAAIyoC,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,KACzCzoC,GAAS,EAGb,OAAOA,IAST1X,EAAQ42F,iBAAmB,WACzB,IAAK,GAAIz2C,KAAU//C,MAAKkkD,aAAa9M,MACnC,GAAIp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,GACzC,MAAO//C,MAAKkkD,aAAa9M,MAAM2I,EAGnC,OAAO,OASTngD,EAAQ62F,iBAAmB,WACzB,IAAK,GAAI1wC,KAAU/lD,MAAKkkD,aAAajM,MACnC,GAAIj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,GACzC,MAAO/lD,MAAKkkD,aAAajM,MAAM8N,EAGnC,OAAO,OAUTnmD,EAAQ82F,sBAAwB,WAC9B,GAAIp/E,GAAQ,CACZ,KAAK,GAAIyuC,KAAU/lD,MAAKkkD,aAAajM,MAC/Bj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,KACzCzuC,GAAS,EAGb,OAAOA,IAUT1X,EAAQ+2F,wBAA0B,WAChC,GAAIr/E,GAAQ,CACZ,KAAI,GAAIyoC,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,KACxCzoC,GAAS,EAGb,KAAI,GAAIyuC,KAAU/lD,MAAKkkD,aAAajM,MAC/Bj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,KACxCzuC,GAAS,EAGb,OAAOA,IAST1X,EAAQg3F,kBAAoB,WAC1B,IAAI,GAAI72C,KAAU//C,MAAKkkD,aAAa9M,MAClC,GAAGp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,GACxC,OAAO,CAGX,KAAI,GAAIgG,KAAU/lD,MAAKkkD,aAAajM,MAClC,GAAGj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,GACxC,OAAO,CAGX,QAAO,GAUTnmD,EAAQi3F,oBAAsB,WAC5B,IAAI,GAAI92C,KAAU//C,MAAKkkD,aAAa9M,MAClC,GAAGp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,IACpC//C,KAAKkkD,aAAa9M,MAAM2I,GAAQ4T,YAAc,EAChD,OAAO,CAIb,QAAO,GAST/zD,EAAQk3F,sBAAwB,SAASp3C,GACvC,IAAK,GAAIt6C,GAAI,EAAGA,EAAIs6C,EAAKmI,aAAatiD,OAAQH,IAAK,CACjD,GAAIkhD,GAAO5G,EAAKmI,aAAaziD,EAC7BkhD,GAAKrc,SACLjqC,KAAKk2F,gBAAgB5vC,KAUzB1mD,EAAQm3F,qBAAuB,SAASr3C,GACtC,IAAK,GAAIt6C,GAAI,EAAGA,EAAIs6C,EAAKmI,aAAatiD,OAAQH,IAAK,CACjD,GAAIkhD,GAAO5G,EAAKmI,aAAaziD,EAC7BkhD,GAAKx6C,OAAQ,EACb9L,KAAKm2F,YAAY7vC,KAWrB1mD,EAAQo3F,wBAA0B,SAASt3C,GACzC,IAAK,GAAIt6C,GAAI,EAAGA,EAAIs6C,EAAKmI,aAAatiD,OAAQH,IAAK,CACjD,GAAIkhD,GAAO5G,EAAKmI,aAAaziD,EAC7BkhD,GAAKtc,WACLhqC,KAAKo2F,qBAAqB9vC,KAgB9B1mD,EAAQmkD,cAAgB,SAASlgD,EAAQozF,EAAQZ,EAAca,GACxC9wF,SAAjBiwF,IACFA,GAAe,GAEMjwF,SAAnB8wF,IACFA,GAAiB,GAGa,GAA5Bl3F,KAAK42F,qBAA0C,GAAVK,GAAgD,GAA7Bj3F,KAAK2hE,sBAC/D3hE,KAAKkxF,cAAa,GAGG,GAAnBrtF,EAAOioC,UACTjoC,EAAOomC,SACPjqC,KAAKk2F,gBAAgBryF,GACjBA,YAAkBT,IAA6C,GAArCpD,KAAK0hE,8BAA2D,GAAlBw1B,GAC1El3F,KAAK82F,sBAAsBjzF,KAI7BA,EAAOmmC,WACPhqC,KAAKo2F,qBAAqBvyF,IAGR,GAAhBwyF,GACFr2F,KAAKktB,KAAK,SAAUltB,KAAKk2B,iBAY7Bt2B,EAAQsmD,YAAc,SAASriD,GACT,GAAhBA,EAAOiI,QACTjI,EAAOiI,OAAQ,EACf9L,KAAKktB,KAAK,YAAYwyB,KAAK77C,EAAOxD,OAWtCT,EAAQqmD,aAAe,SAASpiD,GACV,GAAhBA,EAAOiI,QACTjI,EAAOiI,OAAQ,EACf9L,KAAKm2F,YAAYtyF,GACbA,YAAkBT,IACpBpD,KAAKktB,KAAK,aAAawyB,KAAK77C,EAAOxD,MAGnCwD,YAAkBT,IACpBpD,KAAK+2F,qBAAqBlzF,IAa9BjE,EAAQ8jD,aAAe,aAUvB9jD,EAAQglD,WAAa,SAASnpB,GAC5B,GAAIikB,GAAO1/C,KAAK4jD,WAAWnoB,EAC3B,IAAY,MAARikB,EACF1/C,KAAK+jD,cAAcrE,GAAK,OAErB,CACH,GAAI4G,GAAOtmD,KAAKgmD,WAAWvqB,EACf,OAAR6qB,EACFtmD,KAAK+jD,cAAcuC,GAAK,GAGxBtmD,KAAKkxF,eAGTlxF,KAAKktB,KAAK,QAASltB,KAAKk2B,gBACxBl2B,KAAK68C,WAUPj9C,EAAQilD,iBAAmB,SAASppB,GAClC,GAAIikB,GAAO1/C,KAAK4jD,WAAWnoB,EACf,OAARikB,GAAyBt5C,SAATs5C,IAElB1/C,KAAKi+C,YAAe1rC,EAAMvS,KAAKukD,qBAAqB9oB,EAAQlpB,GACxCC,EAAMxS,KAAKykD,qBAAqBhpB,EAAQjpB,IAC5DxS,KAAKsvF,YAAY5vC,IAEnB1/C,KAAKktB,KAAK,cAAeltB,KAAKk2B,iBAUhCt2B,EAAQklD,cAAgB,SAASrpB,GAC/B,GAAIikB,GAAO1/C,KAAK4jD,WAAWnoB,EAC3B,IAAY,MAARikB,EACF1/C,KAAK+jD,cAAcrE,GAAK,OAErB,CACH,GAAI4G,GAAOtmD,KAAKgmD,WAAWvqB,EACf,OAAR6qB,GACFtmD,KAAK+jD,cAAcuC,GAAK,GAG5BtmD,KAAK68C,WAUPj9C,EAAQmlD,iBAAmB,SAAStpB,GAClCz7B,KAAKm3F,6BAA6B17D,GAClCz7B,KAAKo3F,2BAA2B37D,IAGlC77B,EAAQu3F,6BAA+B,aACvCv3F,EAAQw3F,2BAA6B,aAOrCx3F,EAAQs2B,aAAe,WACrB,GAAI8tB,GAAUhkD,KAAKq3F,mBACfC,EAAUt3F,KAAKu3F,kBACnB,QAAQngD,MAAM4M,EAAS/L,MAAMq/C,IAS/B13F,EAAQy3F,iBAAmB,WACzB,GAAIG,KACJ,KAAI,GAAIz3C,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,IACxCy3C,EAAQzvF,KAAKg4C,EAGjB,OAAOy3C,IAST53F,EAAQ23F,iBAAmB,WACzB,GAAIC,KACJ,KAAI,GAAIzxC,KAAU/lD,MAAKkkD,aAAajM,MAC/Bj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,IACxCyxC,EAAQzvF,KAAKg+C,EAGjB,OAAOyxC,IAST53F,EAAQo2B,aAAe,SAASkT,GAC9B,GAAI9jC,GAAGk3B,EAAMj8B,CAEb,KAAK6oC,GAAkC9iC,QAApB8iC,EAAU3jC,OAC3B,KAAM,qCAKR,KAFAvF,KAAKkxF,cAAa,GAEb9rF,EAAI,EAAGk3B,EAAO4M,EAAU3jC,OAAY+2B,EAAJl3B,EAAUA,IAAK,CAClD/E,EAAK6oC,EAAU9jC,EAEf,IAAIs6C,GAAO1/C,KAAKo3C,MAAM/2C,EACtB,KAAKq/C,EACH,KAAM,IAAI+3C,YAAW,iBAAmBp3F,EAAK,cAE/CL,MAAK+jD,cAAcrE,GAAK,GAAK,GAG/B7vC,QAAQC,IAAI,+DAEZ9P,KAAK4gB,UAUPhhB,EAAQ83F,YAAc,SAASxuD,EAAWguD,GACxC,GAAI9xF,GAAGk3B,EAAMj8B,CAEb,KAAK6oC,GAAkC9iC,QAApB8iC,EAAU3jC,OAC3B,KAAM,qCAKR,KAFAvF,KAAKkxF,cAAa,GAEb9rF,EAAI,EAAGk3B,EAAO4M,EAAU3jC,OAAY+2B,EAAJl3B,EAAUA,IAAK,CAClD/E,EAAK6oC,EAAU9jC,EAEf,IAAIs6C,GAAO1/C,KAAKo3C,MAAM/2C,EACtB,KAAKq/C,EACH,KAAM,IAAI+3C,YAAW,iBAAmBp3F,EAAK,cAE/CL,MAAK+jD,cAAcrE,GAAK,GAAK,EAAKw3C,GAEpCl3F,KAAK4gB,UASPhhB,EAAQ+3F,YAAc,SAASzuD,GAC7B,GAAI9jC,GAAGk3B,EAAMj8B,CAEb,KAAK6oC,GAAkC9iC,QAApB8iC,EAAU3jC,OAC3B,KAAM,qCAKR,KAFAvF,KAAKkxF,cAAa,GAEb9rF,EAAI,EAAGk3B,EAAO4M,EAAU3jC,OAAY+2B,EAAJl3B,EAAUA,IAAK,CAClD/E,EAAK6oC,EAAU9jC,EAEf,IAAIkhD,GAAOtmD,KAAKi4C,MAAM53C,EACtB,KAAKimD,EACH,KAAM,IAAImxC,YAAW,iBAAmBp3F,EAAK,cAE/CL,MAAK+jD,cAAcuC,GAAK,GAAK,EAAK4wC,gBAEpCl3F,KAAK4gB,UAOPhhB,EAAQinD,iBAAmB,WACzB,IAAI,GAAI9G,KAAU//C,MAAKkkD,aAAa9M,MAC/Bp3C,KAAKkkD,aAAa9M,MAAM1xC,eAAeq6C,KACnC//C,KAAKo3C,MAAM1xC,eAAeq6C,UACtB//C,MAAKkkD,aAAa9M,MAAM2I,GAIrC,KAAI,GAAIgG,KAAU/lD,MAAKkkD,aAAajM,MAC/Bj4C,KAAKkkD,aAAajM,MAAMvyC,eAAeqgD,KACnC/lD,KAAKi4C,MAAMvyC,eAAeqgD,UACtB/lD,MAAKkkD,aAAajM,MAAM8N,MASnC,SAASlmD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BkD,EAAOlD,EAAoB,IAC3B+C,EAAO/C,EAAoB,GAO/BN,GAAQg4F,qBAAuB,WAC7B,KAAO53F,KAAK4hE,gBAAgB/+C,iBAC1B7iB,KAAK4hE,gBAAgBjwD,YAAY3R,KAAK4hE,gBAAgB9+C,WAGxD9iB,MAAKm3F,6BAA+B,mBAC7Bn3F,MAAK4nD,QAAiB,QAAS,MAAc,iBAC7C5nD,MAAK4nD,QAAiB,QAAS,MAAiB,cACvD5nD,KAAK87C,oBAAqB,GAU5Bl8C,EAAQi4F,4BAA8B,WACpC,IAAK,GAAIC,KAAgB93F,MAAKw9C,gBACxBx9C,KAAKw9C,gBAAgB93C,eAAeoyF,KACtC93F,KAAK83F,GAAgB93F,KAAKw9C,gBAAgBs6C,KAUhDl4F,EAAQm4F,gBAAkB,WACxB/3F,KAAK4hD,UAAY5hD,KAAK4hD,QACtB,IAAIo2C,GAAUjmF,SAASkmF,eAAe,2BAClCn2B,EAAW/vD,SAASkmF,eAAe,iCACnCp2B,EAAc9vD,SAASkmF,eAAe,gCACrB,IAAjBj4F,KAAK4hD,UACPo2C,EAAQ3qF,MAAMo1B,QAAQ,QACtBq/B,EAASz0D,MAAMo1B,QAAQ,QACvBo/B,EAAYx0D,MAAMo1B,QAAQ,OAC1Bq/B,EAASnwC,QAAU3xB,KAAK+3F,gBAAgBvjE,KAAKx0B,QAG7Cg4F,EAAQ3qF,MAAMo1B,QAAQ,OACtBq/B,EAASz0D,MAAMo1B,QAAQ,OACvBo/B,EAAYx0D,MAAMo1B,QAAQ,QAC1Bq/B,EAASnwC,QAAU,MAErB3xB,KAAKqjD,yBAQPzjD,EAAQyjD,sBAAwB,WAE1BrjD,KAAKk4F,eACPl4F,KAAK8T,IAAI,SAAU9T,KAAKk4F,cAG1B,IAAIr4D,GAAS7/B,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,OAmBnD,IAjB6Bz5B,SAAzBpG,KAAKm4F,kBACPn4F,KAAKm4F,gBAAgB7mC,uBACrBtxD,KAAKm4F,gBAAkB/xF,OACvBpG,KAAKo4F,oBAAsB,KAC3Bp4F,KAAK87C,oBAAqB,GAI5B97C,KAAK63F,8BAGL73F,KAAKu9C,kBAAmB,EAGxBv9C,KAAK0hE,8BAA+B,EACpC1hE,KAAK2hE,sBAAuB,EAEP,GAAjB3hE,KAAK4hD,SAAkB,CACzB,KAAO5hD,KAAK4hE,gBAAgB/+C,iBAC1B7iB,KAAK4hE,gBAAgBjwD,YAAY3R,KAAK4hE,gBAAgB9+C,WAIxD9iB,MAAK4hE,gBAAgBx+C,UAAY,oHAEcyc,EAAgB,QAAG,mLAGnBA,EAAgB,QAAG,iBAC9B,GAAhC7/B,KAAKu2F,yBAAgCv2F,KAAK+2C,iBAAiBC,KAC7Dh3C,KAAK4hE,gBAAgBx+C,WAAa,+JAGayc,EAAiB,SAAG,iBAE5B,GAAhC7/B,KAAK02F,yBAAgE,GAAhC12F,KAAKu2F,0BACjDv2F,KAAK4hE,gBAAgBx+C,WAAa,+JAGWyc,EAAiB,SAAG,kBAEnC,GAA5B7/B,KAAK42F,sBACP52F,KAAK4hE,gBAAgBx+C,WAAa,+JAGayc,EAAY,IAAG,iBAKhE,IAAIw4D,GAAgBtmF,SAASkmF,eAAe,6BAC5CI,GAAc1mE,QAAU3xB,KAAKs4F,sBAAsB9jE,KAAKx0B,KACxD,IAAIu4F,GAAgBxmF,SAASkmF,eAAe,iCAE5C,IADAM,EAAc5mE,QAAU3xB,KAAKw4F,sBAAsBhkE,KAAKx0B,MACpB,GAAhCA,KAAKu2F,yBAAgCv2F,KAAK+2C,iBAAiBC,KAAM,CACnE,GAAIyhD,GAAa1mF,SAASkmF,eAAe,8BACzCQ,GAAW9mE,QAAU3xB,KAAK04F,UAAUlkE,KAAKx0B,UAEtC,IAAoC,GAAhCA,KAAK02F,yBAAgE,GAAhC12F,KAAKu2F,wBAA8B,CAC/E,GAAIkC,GAAa1mF,SAASkmF,eAAe,8BACzCQ,GAAW9mE,QAAU3xB,KAAK24F,uBAAuBnkE,KAAKx0B,MAExD,GAAgC,GAA5BA,KAAK42F,oBAA8B,CACrC,GAAI1hD,GAAenjC,SAASkmF,eAAe,4BAC3C/iD,GAAavjB,QAAU3xB,KAAKsjD,gBAAgB9uB,KAAKx0B,MAEnD,GAAI8hE,GAAW/vD,SAASkmF,eAAe,gCACvCn2B,GAASnwC,QAAU3xB,KAAK+3F,gBAAgBvjE,KAAKx0B,MAE7CA,KAAKk4F,cAAgBl4F,KAAKqjD,sBAAsB7uB,KAAKx0B,MACrDA,KAAK2T,GAAG,SAAU3T,KAAKk4F,mBAEpB,CACHl4F,KAAK6hE,YAAYz+C,UAAY,qIAEkByc,EAAa,KAAI,gBAChE,IAAI+4D,GAAiB7mF,SAASkmF,eAAe,oCAC7CW,GAAejnE,QAAU3xB,KAAK+3F,gBAAgBvjE,KAAKx0B,QAWvDJ,EAAQ04F,sBAAwB,WAE9Bt4F,KAAK43F,uBACD53F,KAAKk4F,eACPl4F,KAAK8T,IAAI,SAAU9T,KAAKk4F,cAG1B,IAAIr4D,GAAS7/B,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,OAGnD7/B,MAAK4hE,gBAAgBx+C,UAAY,kHAEcyc,EAAa,KAAI,wMAGaA,EAAuB,eAAI,gBAGxG,IAAIg5D,GAAa9mF,SAASkmF,eAAe,0BACzCY,GAAWlnE,QAAU3xB,KAAKqjD,sBAAsB7uB,KAAKx0B,MAGrDA,KAAKk4F,cAAgBl4F,KAAK84F,SAAStkE,KAAKx0B,MACxCA,KAAK2T,GAAG,SAAU3T,KAAKk4F,gBASzBt4F,EAAQ44F,sBAAwB,WAE9Bx4F,KAAK43F,uBACL53F,KAAKkxF,cAAa,GAClBlxF,KAAKu9C,kBAAmB,CAExB,IAAI1d,GAAS7/B,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,OAE/C7/B,MAAKk4F,eACPl4F,KAAK8T,IAAI,SAAU9T,KAAKk4F,eAG1Bl4F,KAAKkxF,eACLlxF,KAAK2hE,sBAAuB,EAC5B3hE,KAAK0hE,8BAA+B,EAEpC1hE,KAAK4hE,gBAAgBx+C,UAAY,kHAEgByc,EAAa,KAAI,wMAGaA,EAAwB,gBAAI,gBAG3G,IAAIg5D,GAAa9mF,SAASkmF,eAAe,0BACzCY,GAAWlnE,QAAU3xB,KAAKqjD,sBAAsB7uB,KAAKx0B,MAGrDA,KAAKk4F,cAAgBl4F,KAAK+4F,eAAevkE,KAAKx0B,MAC9CA,KAAK2T,GAAG,SAAU3T,KAAKk4F,eAGvBl4F,KAAKw9C,gBAA8B,aAAIx9C,KAAK0jD,aAC5C1jD,KAAKw9C,gBAA8C,6BAAIx9C,KAAKm3F,6BAC5Dn3F,KAAKw9C,gBAAkC,iBAAIx9C,KAAK2jD,iBAChD3jD,KAAKw9C,gBAAgC,eAAIx9C,KAAK2kD,eAC9C3kD,KAAK0jD,aAAe1jD,KAAK+4F,eACzB/4F,KAAKm3F,6BAA+B,aACpCn3F,KAAK2jD,iBAAmB,aACxB3jD,KAAK2kD,eAAiB3kD,KAAKg5F,eAG3Bh5F,KAAK68C;EAQPj9C,EAAQ+4F,uBAAyB,WAE/B34F,KAAK43F,uBACL53F,KAAK87C,oBAAqB,EAEtB97C,KAAKk4F,eACPl4F,KAAK8T,IAAI,SAAU9T,KAAKk4F,eAG1Bl4F,KAAKm4F,gBAAkBn4F,KAAKy2F,mBAC5Bz2F,KAAKm4F,gBAAgB9mC,qBAErB,IAAIxxB,GAAS7/B,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,OAEnD7/B,MAAK4hE,gBAAgBx+C,UAAY,kHAEcyc,EAAa,KAAI,wMAGaA,EAA4B,oBAAI,gBAG7G,IAAIg5D,GAAa9mF,SAASkmF,eAAe,0BACzCY,GAAWlnE,QAAU3xB,KAAKqjD,sBAAsB7uB,KAAKx0B,MAGrDA,KAAKw9C,gBAA8B,aAASx9C,KAAK0jD,aACjD1jD,KAAKw9C,gBAA8C,6BAAKx9C,KAAKm3F,6BAC7Dn3F,KAAKw9C,gBAA4B,WAAWx9C,KAAK4kD,WACjD5kD,KAAKw9C,gBAAkC,iBAAKx9C,KAAK2jD,iBACjD3jD,KAAKw9C,gBAA+B,cAAQx9C,KAAKqkD,cACjDrkD,KAAK0jD,aAAmB1jD,KAAKi5F,mBAC7Bj5F,KAAK4kD,WAAmB,aACxB5kD,KAAKqkD,cAAmBrkD,KAAKk5F,iBAC7Bl5F,KAAK2jD,iBAAmB,aACxB3jD,KAAKm3F,6BAA+Bn3F,KAAKm5F,oBAGzCn5F,KAAK68C,WAUPj9C,EAAQq5F,mBAAqB,SAASx9D,GACpCz7B,KAAKm4F,gBAAgBlrC,aAAa1kC,KAAKyhB,WACvChqC,KAAKm4F,gBAAgBlrC,aAAazkC,GAAGwhB,WACrChqC,KAAKo4F,oBAAsBp4F,KAAKm4F,gBAAgB5mC,wBAAwBvxD,KAAKukD,qBAAqB9oB,EAAQlpB,GAAGvS,KAAKykD,qBAAqBhpB,EAAQjpB,IAC9G,OAA7BxS,KAAKo4F,sBACPp4F,KAAKo4F,oBAAoBnuD,SACzBjqC,KAAKu9C,kBAAmB,GAE1Bv9C,KAAK68C,WAUPj9C,EAAQs5F,iBAAmB,SAAS7vF,GAClC,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OACZ,QAA7BtrB,KAAKo4F,qBAA6DhyF,SAA7BpG,KAAKo4F,sBAC5Cp4F,KAAKo4F,oBAAoB7lF,EAAIvS,KAAKukD,qBAAqB9oB,EAAQlpB,GAC/DvS,KAAKo4F,oBAAoB5lF,EAAIxS,KAAKykD,qBAAqBhpB,EAAQjpB,IAEjExS,KAAK68C,WAGPj9C,EAAQu5F,oBAAsB,SAAS19D,GACrC,GAAI29D,GAAUp5F,KAAK4jD,WAAWnoB,EACf,OAAX29D,GACqD,GAAnDp5F,KAAKm4F,gBAAgBlrC,aAAa1kC,KAAKujB,WACzC9rC,KAAKq5F,UAAUD,EAAQ/4F,GAAIL,KAAKm4F,gBAAgB3vE,GAAGnoB,IACnDL,KAAKm4F,gBAAgBlrC,aAAa1kC,KAAKyhB,YAEY,GAAjDhqC,KAAKm4F,gBAAgBlrC,aAAazkC,GAAGsjB,WACvC9rC,KAAKq5F,UAAUr5F,KAAKm4F,gBAAgB5vE,KAAKloB,GAAI+4F,EAAQ/4F,IACrDL,KAAKm4F,gBAAgBlrC,aAAazkC,GAAGwhB,aAIvChqC,KAAKm4F,gBAAgBzmC,uBAEvB1xD,KAAKu9C,kBAAmB,EACxBv9C,KAAK68C,WASPj9C,EAAQm5F,eAAiB,SAASt9D,GAChC,GAAoC,GAAhCz7B,KAAKu2F,wBAA8B,CACrC,GAAI72C,GAAO1/C,KAAK4jD,WAAWnoB,EAE3B,IAAY,MAARikB,EACF,GAAIA,EAAKiU,YAAc,EACrB2lC,MAAMt5F,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,QAAyB,qBAElE,CACH7/B,KAAK+jD,cAAcrE,GAAK,EACxB,IAAI65C,GAAev5F,KAAK4nD,QAAiB,QAAS,KAGlD2xC,GAAyB,WAAI,GAAIn2F,IAAM/C,GAAG,oBAAoBL,KAAK47C,UACnE,IAAI49C,GAAaD,EAAyB,UAC1CC,GAAWjnF,EAAImtC,EAAKntC,EACpBinF,EAAWhnF,EAAIktC,EAAKltC,EAGpBxS,KAAKi4C,MAAsB,eAAI,GAAIh1C,IAAM5C,GAAG,iBAAiBkoB,KAAKm3B,EAAKr/C,GAAGmoB,GAAGgxE,EAAWn5F,IAAKL,KAAMA,KAAK47C,UACxG,IAAI69C,GAAiBz5F,KAAKi4C,MAAsB,cAChDwhD,GAAelxE,KAAOm3B,EACtB+5C,EAAelzC,WAAY,EAC3BkzC,EAAe7qF,QAAQosC,cAAgBnsC,SAAS,EAC5CosC,SAAS,EACTv0C,KAAM,aACNw0C,UAAW,IAEfu+C,EAAe3tD,UAAW,EAC1B2tD,EAAejxE,GAAKgxE,EAEpBx5F,KAAKw9C,gBAA+B,cAAIx9C,KAAKqkD,cAC7CrkD,KAAKqkD,cAAgB,SAASh7C,GAC5B,GAAIoyB,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,QACzCmuE,EAAiBz5F,KAAKi4C,MAAsB,cAChDwhD,GAAejxE,GAAGjW,EAAIvS,KAAKukD,qBAAqB9oB,EAAQlpB,GACxDknF,EAAejxE,GAAGhW,EAAIxS,KAAKykD,qBAAqBhpB,EAAQjpB,IAG1DxS,KAAK6+C,QAAS,EACd7+C,KAAK4P,WAMbhQ,EAAQo5F,eAAiB,SAAS3vF,GAChC,GAAoC,GAAhCrJ,KAAKu2F,wBAA8B,CACrC,GAAI96D,GAAUz7B,KAAKujD,YAAYl6C,EAAM+xB,QAAQ9P,OAE7CtrB,MAAKqkD,cAAgBrkD,KAAKw9C,gBAA+B,oBAClDx9C,MAAKw9C,gBAA+B,aAG3C,IAAIk8C,GAAgB15F,KAAKi4C,MAAsB,eAAEqU,aAG1CtsD,MAAKi4C,MAAsB,qBAC3Bj4C,MAAK4nD,QAAiB,QAAS,MAAc,iBAC7C5nD,MAAK4nD,QAAiB,QAAS,MAAiB,aAEvD,IAAIlI,GAAO1/C,KAAK4jD,WAAWnoB,EACf,OAARikB,IACEA,EAAKiU,YAAc,EACrB2lC,MAAMt5F,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,QAAyB,kBAGrE7/B,KAAK25F,YAAYD,EAAch6C,EAAKr/C,IACpCL,KAAKqjD,0BAGTrjD,KAAKkxF,iBAQTtxF,EAAQk5F,SAAW,WACjB,GAAI94F,KAAK42F,qBAAwC,GAAjB52F,KAAK4hD,SAAkB,CACrD,GAAIk0C,GAAiB91F,KAAK61F,yBAAyB71F,KAAKg+C,iBACpD47C,GAAev5F,GAAGM,EAAKiE,aAAa2N,EAAEujF,EAAezuF,KAAKmL,EAAEsjF,EAAeruF,IAAImgB,MAAM,MAAMwjC,gBAAe,EAAKC,gBAAe,EAClI,IAAIrrD,KAAK+2C,iBAAiBtjC,IAAK,CAC7B,GAAwC,GAApCzT,KAAK+2C,iBAAiBtjC,IAAIlO,OAU5B,KAAM,IAAI9B,OAAM,sEAThB,IAAI8Q,GAAKvU,IACTA,MAAK+2C,iBAAiBtjC,IAAImmF,EAAa,SAASC,GAC9CtlF,EAAG4pC,UAAU1qC,IAAIomF,GACjBtlF,EAAG8uC,wBACH9uC,EAAGsqC,QAAS,EACZtqC,EAAG3E,cAWP5P,MAAKm+C,UAAU1qC,IAAImmF,GACnB55F,KAAKqjD,wBACLrjD,KAAK6+C,QAAS,EACd7+C,KAAK4P,UAWXhQ,EAAQ+5F,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjB/5F,KAAK4hD,SAAkB,CACzB,GAAIg4C,IAAerxE,KAAKuxE,EAActxE,GAAGuxE,EACzC,IAAI/5F,KAAK+2C,iBAAiBG,QAAS,CACjC,GAA4C,GAAxCl3C,KAAK+2C,iBAAiBG,QAAQ3xC,OAShC,KAAM,IAAI9B,OAAM,0EARhB,IAAI8Q,GAAKvU,IACTA,MAAK+2C,iBAAiBG,QAAQ0iD,EAAa,SAASC,GAClDtlF,EAAG6pC,UAAU3qC,IAAIomF,GACjBtlF,EAAGsqC,QAAS,EACZtqC,EAAG3E,cAUP5P,MAAKo+C,UAAU3qC,IAAImmF,GACnB55F,KAAK6+C,QAAS,EACd7+C,KAAK4P,UAUXhQ,EAAQy5F,UAAY,SAASS,EAAaC,GACxC,GAAqB,GAAjB/5F,KAAK4hD,SAAkB,CACzB,GAAIg4C,IAAev5F,GAAIL,KAAKm4F,gBAAgB93F,GAAIkoB,KAAKuxE,EAActxE,GAAGuxE,EACtE,IAAI/5F,KAAK+2C,iBAAiBE,SAAU,CAClC,GAA6C,GAAzCj3C,KAAK+2C,iBAAiBE,SAAS1xC,OASjC,KAAM,IAAI9B,OAAM,wEARhB,IAAI8Q,GAAKvU,IACTA,MAAK+2C,iBAAiBE,SAAS2iD,EAAa,SAASC,GACnDtlF,EAAG6pC,UAAUlpC,OAAO2kF,GACpBtlF,EAAGsqC,QAAS,EACZtqC,EAAG3E,cAUP5P,MAAKo+C,UAAUlpC,OAAO0kF,GACtB55F,KAAK6+C,QAAS,EACd7+C,KAAK4P,UAUXhQ,EAAQ84F,UAAY,WAClB,IAAI14F,KAAK+2C,iBAAiBC,MAAyB,GAAjBh3C,KAAK4hD,SA4BrC,KAAM,IAAIn+C,OAAM,iDA3BhB,IAAIi8C,GAAO1/C,KAAKw2F,mBACZtjF,GAAQ7S,GAAGq/C,EAAKr/C,GAClBunB,MAAO83B,EAAK93B,MACZnV,MAAOitC,EAAK9wC,QAAQ6D,MACpB+kC,MAAOkI,EAAK9wC,QAAQ4oC,MACpB9sC,OACEiB,WAAW+zC,EAAK9wC,QAAQlE,MAAMiB,WAC9BC,OAAO8zC,EAAK9wC,QAAQlE,MAAMkB,OAC1BC,WACEF,WAAW+zC,EAAK9wC,QAAQlE,MAAMmB,UAAUF,WACxCC,OAAO8zC,EAAK9wC,QAAQlE,MAAMmB,UAAUD,SAG1C,IAAyC,GAArC5L,KAAK+2C,iBAAiBC,KAAKzxC,OAU7B,KAAM,IAAI9B,OAAM,wEAThB,IAAI8Q,GAAKvU,IACTA,MAAK+2C,iBAAiBC,KAAK9jC,EAAM,SAAU2mF,GACzCtlF,EAAG4pC,UAAUjpC,OAAO2kF,GACpBtlF,EAAG8uC,wBACH9uC,EAAGsqC,QAAS,EACZtqC,EAAG3E,WAoBXhQ,EAAQ0jD,gBAAkB,WACxB,IAAKtjD,KAAK42F,qBAAwC,GAAjB52F,KAAK4hD,SACpC,GAAK5hD,KAAK62F,sBA4BRyC,MAAMt5F,KAAK47C,UAAUhc,QAAQ5/B,KAAK47C,UAAU/b,QAA4B,wBA5BzC,CAC/B,GAAIm6D,GAAgBh6F,KAAKq3F,mBACrB4C,EAAgBj6F,KAAKu3F,kBACzB,IAAIv3F,KAAK+2C,iBAAiBI,IAAK,CAC7B,GAAI5iC,GAAKvU,KACLkT,GAAQkkC,MAAO4iD,EAAe/hD,MAAOgiD,EACzC,MAAIj6F,KAAK+2C,iBAAiBI,IAAI5xC,OAAS,GAUrC,KAAM,IAAI9B,OAAM,0EAThBzD,MAAK+2C,iBAAiBI,IAAIjkC,EAAM,SAAU2mF,GACxCtlF,EAAG6pC,UAAUznC,OAAOkjF,EAAc5hD,OAClC1jC,EAAG4pC,UAAUxnC,OAAOkjF,EAAcziD,OAClC7iC,EAAG28E,eACH38E,EAAGsqC,QAAS,EACZtqC,EAAG3E,cAQP5P,MAAKo+C,UAAUznC,OAAOsjF,GACtBj6F,KAAKm+C,UAAUxnC,OAAOqjF,GACtBh6F,KAAKkxF,eACLlxF,KAAK6+C,QAAS,EACd7+C,KAAK4P,WAYT,SAAS/P,EAAQD,EAASM,GAE9B,GACIogC,IADOpgC,EAAoB,GAClBA,EAAoB,IAEjCN,GAAQmiE,iBAAmB,WAEzB,GAA8C,GAA1C/hE,KAAK+7C,kBAAkBC,SAASz2C,OAAa,CAC/C,IAAK,GAAIH,GAAI,EAAGA,EAAIpF,KAAK+7C,kBAAkBC,SAASz2C,OAAQH,IAC1DpF,KAAK+7C,kBAAkBC,SAAS52C,GAAG8mF,SAErClsF,MAAK+7C,kBAAkBC,YAGzBh8C,KAAKo3F,2BAA6B,YAGlC,IAAI8C,GAAUnoF,SAASkmF,eAAe,6BAClCiC,IAAWA,EAAQvwF,YACrBuwF,EAAQvwF,WAAWgI,YAAYuoF,IAYnCt6F,EAAQoiE,wBAA0B,WAChChiE,KAAK+hE,mBAEL/hE,KAAKm6F,iBACL,IAAIA,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,cAEhGp6F,MAAKm6F,eAAwB,QAAIpoF,SAASM,cAAc,OACxDrS,KAAKm6F,eAAwB,QAAE95F,GAAK,6BACpCL,KAAKye,MAAMxM,YAAYjS,KAAKm6F,eAAwB,QAEpD,KAAK,GAAI/0F,GAAI,EAAGA,EAAI+0F,EAAe50F,OAAQH,IAAK,CAC9CpF,KAAKm6F,eAAeA,EAAe/0F,IAAM2M,SAASM,cAAc,OAChErS,KAAKm6F,eAAeA,EAAe/0F,IAAI/E,GAAK,sBAAwB85F,EAAe/0F,GACnFpF,KAAKm6F,eAAeA,EAAe/0F,IAAIwC,UAAY,sBAAwBuyF,EAAe/0F,GAC1FpF,KAAKm6F,eAAwB,QAAEloF,YAAYjS,KAAKm6F,eAAeA,EAAe/0F,IAE9E,IAAIzB,GAAS28B,EAAOtgC,KAAKm6F,eAAeA,EAAe/0F,KAAMo7B,iBAAiB,GAC9E78B,GAAOgQ,GAAG,QAAS3T,KAAKo6F,EAAqBh1F,IAAIovB,KAAKx0B,OACtDA,KAAK+7C,kBAAkBE,IAAIl0C,KAAKpE,GAGlC3D,KAAKo3F,2BAA6Bp3F,KAAKq6F,cAEvCr6F,KAAK+7C,kBAAkBC,SAAWh8C,KAAK+7C,kBAAkBE,KAS3Dr8C,EAAQ06F,YAAc,SAASjxF,GAC7BrJ,KAAKg/C,YAAY1uC,SAAS,MAC1BjH,EAAMs3B,mBAQR/gC,EAAQy6F,cAAgB,WACtBr6F,KAAKgjD,eACLhjD,KAAK6iD,eACL7iD,KAAKmjD,aAYPvjD,EAAQgjD,QAAU,SAASv5C,GACzBrJ,KAAK+8C,WAAa/8C,KAAK47C,UAAUrB,SAASC,MAAMhoC,EAChDxS,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQkjD,UAAY,SAASz5C,GAC3BrJ,KAAK+8C,YAAc/8C,KAAK47C,UAAUrB,SAASC,MAAMhoC,EACjDxS,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQmjD,UAAY,SAAS15C,GAC3BrJ,KAAK88C,WAAa98C,KAAK47C,UAAUrB,SAASC,MAAMjoC,EAChDvS,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQqjD,WAAa,SAAS55C,GAC5BrJ,KAAK88C,YAAc98C,KAAK47C,UAAUrB,SAASC,MAAMhoC,EACjDxS,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQsjD,QAAU,SAAS75C,GACzBrJ,KAAKg9C,cAAgBh9C,KAAK47C,UAAUrB,SAASC,MAAM5e,KACnD57B,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQwjD,SAAW,SAAS/5C,GAC1BrJ,KAAKg9C,eAAiBh9C,KAAK47C,UAAUrB,SAASC,MAAM5e,KACpD57B,KAAK4P,QACLvG,EAAMD,kBAQRxJ,EAAQujD,UAAY,SAAS95C,GAC3BrJ,KAAKg9C,cAAgB,EACrB3zC,GAASA,EAAMD,kBAQjBxJ,EAAQijD,aAAe,SAASx5C,GAC9BrJ,KAAK+8C,WAAa,EAClB1zC,GAASA,EAAMD,kBAQjBxJ,EAAQojD,aAAe,SAAS35C,GAC9BrJ,KAAK88C,WAAa,EAClBzzC,GAASA,EAAMD,mBAMb,SAASvJ,EAAQD,GAErBA,EAAQ0hD,aAAe,WACrB,IAAK,GAAIvB,KAAU//C,MAAKo3C,MACtB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC,GAAIL,GAAO1/C,KAAKo3C,MAAM2I,EACO,IAAzBL,EAAKkT,mBACPlT,EAAK5H,MAAQ,GACb4H,EAAKmT,qBAAsB,KAYnCjzD,EAAQm/C,yBAA2B,WACjC,GAAiD,GAA7C/+C,KAAK47C,UAAUjB,mBAAmB9rC,SAAmB7O,KAAK69C,YAAYt4C,OAAS,EAAG,CACjC,MAA/CvF,KAAK47C,UAAUjB,mBAAmBzhB,WAAoE,MAA/Cl5B,KAAK47C,UAAUjB,mBAAmBzhB,UAC3Fl5B,KAAK47C,UAAUjB,mBAAmBC,iBAAmB,GAGrD56C,KAAK47C,UAAUjB,mBAAmBC,gBAAkB91C,KAAKklB,IAAIhqB,KAAK47C,UAAUjB,mBAAmBC,iBAG9C,MAA/C56C,KAAK47C,UAAUjB,mBAAmBzhB,WAAoE,MAA/Cl5B,KAAK47C,UAAUjB,mBAAmBzhB,UAChD,GAAvCl5B,KAAK47C,UAAUZ,aAAansC,UAC9B7O,KAAK47C,UAAUZ,aAAat0C,KAAO,YAIM,GAAvC1G,KAAK47C,UAAUZ,aAAansC,UAC9B7O,KAAK47C,UAAUZ,aAAat0C,KAAO,aAIvC,IACIg5C,GAAMK,EADNw6C,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAK16C,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACA,IAAdL,EAAK5H,MACP0iD,GAAe,EAGfC,GAAiB,EAEfF,EAAU76C,EAAKzH,MAAM1yC,SACvBg1F,EAAU76C,EAAKzH,MAAM1yC,QAM3B,IAAsB,GAAlBk1F,GAA0C,GAAhBD,EAC5B,KAAM,IAAI/2F,OAAM,wHAQhBzD,MAAK06F,mBAGiB,GAAlBD,IAC8C,WAA5Cz6F,KAAK47C,UAAUjB,mBAAmBG,OACpC96C,KAAK26F,iBAAiBJ,GAGtBv6F,KAAK46F,2BAKT,IAAIC,GAAe76F,KAAK86F,kBAGxB96F,MAAK+6F,uBAAuBF,GAG5B76F,KAAK4P,UAYXhQ,EAAQm7F,uBAAyB,SAASF,GACxC,GAAI96C,GAAQL,CAGZ,KAAK,GAAI5H,KAAS+iD,GAChB,GAAIA,EAAan1F,eAAeoyC,GAE9B,IAAKiI,IAAU86C,GAAa/iD,GAAOV,MAC7ByjD,EAAa/iD,GAAOV,MAAM1xC,eAAeq6C,KAC3CL,EAAOm7C,EAAa/iD,GAAOV,MAAM2I,GACkB,MAA/C//C,KAAK47C,UAAUjB,mBAAmBzhB,WAAoE,MAA/Cl5B,KAAK47C,UAAUjB,mBAAmBzhB,UACvFwmB,EAAKyE,SACPzE,EAAKntC,EAAIsoF,EAAa/iD,GAAOkjD,OAC7Bt7C,EAAKyE,QAAS,EAEd02C,EAAa/iD,GAAOkjD,QAAUH,EAAa/iD,GAAO+C,aAIhD6E,EAAK0E,SACP1E,EAAKltC,EAAIqoF,EAAa/iD,GAAOkjD,OAC7Bt7C,EAAK0E,QAAS,EAEdy2C,EAAa/iD,GAAOkjD,QAAUH,EAAa/iD,GAAO+C,aAGtD76C,KAAKi7F,kBAAkBv7C,EAAKzH,MAAMyH,EAAKr/C,GAAGw6F,EAAan7C,EAAK5H,OAOpE93C,MAAKuhD,cAUP3hD,EAAQk7F,iBAAmB,WACzB,GACI/6C,GAAQL,EAAM5H,EADd+iD,IAKJ,KAAK96C,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GAClBL,EAAKyE,QAAS,EACdzE,EAAK0E,QAAS,EACqC,MAA/CpkD,KAAK47C,UAAUjB,mBAAmBzhB,WAAoE,MAA/Cl5B,KAAK47C,UAAUjB,mBAAmBzhB,UAC3FwmB,EAAKltC,EAAIxS,KAAK47C,UAAUjB,mBAAmBC,gBAAgB8E,EAAK5H,MAGhE4H,EAAKntC,EAAIvS,KAAK47C,UAAUjB,mBAAmBC,gBAAgB8E,EAAK5H,MAEjC1xC,SAA7By0F,EAAan7C,EAAK5H,SACpB+iD,EAAan7C,EAAK5H,QAAUtG,OAAQ,EAAG4F,SAAW4jD,OAAO,EAAGngD,YAAY,IAE1EggD,EAAan7C,EAAK5H,OAAOtG,QAAU,EACnCqpD,EAAan7C,EAAK5H,OAAOV,MAAM2I,GAAUL,EAK7C,IAAIw7C,GAAW,CACf,KAAKpjD,IAAS+iD,GACRA,EAAan1F,eAAeoyC,IAC1BojD,EAAWL,EAAa/iD,GAAOtG,SACjC0pD,EAAWL,EAAa/iD,GAAOtG,OAMrC,KAAKsG,IAAS+iD,GACRA,EAAan1F,eAAeoyC,KAC9B+iD,EAAa/iD,GAAO+C,aAAeqgD,EAAW,GAAKl7F,KAAK47C,UAAUjB,mBAAmBE,YACrFggD,EAAa/iD,GAAO+C,aAAgBggD,EAAa/iD,GAAOtG,OAAS,EACjEqpD,EAAa/iD,GAAOkjD,OAASH,EAAa/iD,GAAO+C,YAAe,IAAOggD,EAAa/iD,GAAOtG,OAAS,GAAKqpD,EAAa/iD,GAAO+C,YAIjI,OAAOggD,IAUTj7F,EAAQ+6F,iBAAmB,SAASJ,GAClC,GAAIx6C,GAAQL,CAGZ,KAAKK,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACdL,EAAKzH,MAAM1yC,QAAUg1F,IACvB76C,EAAK5H,MAAQ,GAMnB,KAAKiI,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACA,GAAdL,EAAK5H,OACP93C,KAAKm7F,UAAU,EAAEz7C,EAAKzH,MAAMyH,EAAKr/C,MAYzCT,EAAQg7F,yBAA2B,WACjC,GAAI76C,GAAQL,CAGZ,KAAKK,IAAU//C,MAAKo3C,MAClB,GAAIp3C,KAAKo3C,MAAM1xC,eAAeq6C,GAAS,CACrC//C,KAAKo3C,MAAM2I,GAAQjI,MAAQ,GAC3B,OAKJ,IAAKiI,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GACA,KAAdL,EAAK5H,OACP93C,KAAKo7F,kBAAkB,IAAM17C,EAAKzH,MAAMyH,EAAKr/C,IAOnD,IAAI6yF,GAAW,GACf,KAAKnzC,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GAClBmzC,EAAWxzC,EAAK5H,MAAQo7C,EAAWxzC,EAAK5H,MAAQo7C,EAKpD,KAAKnzC,IAAU//C,MAAKo3C,MACdp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5BL,EAAO1/C,KAAKo3C,MAAM2I,GAClBL,EAAK5H,OAASo7C,IAepBtzF,EAAQ86F,iBAAmB,WACzB16F,KAAK47C,UAAUvC,WAAWxqC,SAAU,EACpC7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAU,EAC3C7O,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SAAU,EACvD7O,KAAKqhE,2BACsC,GAAvCrhE,KAAK47C,UAAUZ,aAAansC,UAC9B7O,KAAK47C,UAAUZ,aAAaC,SAAU,GAExCj7C,KAAKoiD,0BAcPxiD,EAAQq7F,kBAAoB,SAAShjD,EAAOojD,EAAUR,EAAcS,GAClE,IAAK,GAAIl2F,GAAI,EAAGA,EAAI6yC,EAAM1yC,OAAQH,IAAK,CACrC,GAAI4rF,GAAY,IAEdA,GADE/4C,EAAM7yC,GAAGmnD,MAAQ8uC,EACPpjD,EAAM7yC,GAAGmjB,KAGT0vB,EAAM7yC,GAAGojB,EAIvB,IAAI+yE,IAAY,CACmC,OAA/Cv7F,KAAK47C,UAAUjB,mBAAmBzhB,WAAoE,MAA/Cl5B,KAAK47C,UAAUjB,mBAAmBzhB,UACvF83D,EAAU7sC,QAAU6sC,EAAUl5C,MAAQwjD,IACxCtK,EAAU7sC,QAAS,EACnB6sC,EAAUz+E,EAAIsoF,EAAa7J,EAAUl5C,OAAOkjD,OAC5CO,GAAY,GAIVvK,EAAU5sC,QAAU4sC,EAAUl5C,MAAQwjD,IACxCtK,EAAU5sC,QAAS,EACnB4sC,EAAUx+E,EAAIqoF,EAAa7J,EAAUl5C,OAAOkjD,OAC5CO,GAAY,GAIC,GAAbA,IACFV,EAAa7J,EAAUl5C,OAAOkjD,QAAUH,EAAa7J,EAAUl5C,OAAO+C,YAClEm2C,EAAU/4C,MAAM1yC,OAAS,GAC3BvF,KAAKi7F,kBAAkBjK,EAAU/4C,MAAM+4C,EAAU3wF,GAAGw6F,EAAa7J,EAAUl5C,UAenFl4C,EAAQu7F,UAAY,SAASrjD,EAAOG,EAAOojD,GACzC,IAAK,GAAIj2F,GAAI,EAAGA,EAAI6yC,EAAM1yC,OAAQH,IAAK,CACrC,GAAI4rF,GAAY,IAEdA,GADE/4C,EAAM7yC,GAAGmnD,MAAQ8uC,EACPpjD,EAAM7yC,GAAGmjB,KAGT0vB,EAAM7yC,GAAGojB,IAEA,IAAnBwoE,EAAUl5C,OAAek5C,EAAUl5C,MAAQA,KAC7Ck5C,EAAUl5C,MAAQA,EACdk5C,EAAU/4C,MAAM1yC,OAAS,GAC3BvF,KAAKm7F,UAAUrjD,EAAM,EAAGk5C,EAAU/4C,MAAO+4C,EAAU3wF,OAe3DT,EAAQw7F,kBAAoB,SAAStjD,EAAOG,EAAOojD,GACjDr7F,KAAKo3C,MAAMikD,GAAUxoC,qBAAsB,CAC3C,KAAK,GAAIztD,GAAI,EAAGA,EAAI6yC,EAAM1yC,OAAQH,IAAK,CACrC,GAAI4rF,GAAY,KACZ93D,EAAY,CACZ+e,GAAM7yC,GAAGmnD,MAAQ8uC,GACnBrK,EAAY/4C,EAAM7yC,GAAGmjB,KACrB2Q,EAAY,IAGZ83D,EAAY/4C,EAAM7yC,GAAGojB,GAEA,IAAnBwoE,EAAUl5C,QACZk5C,EAAUl5C,MAAQA,EAAQ5e,GAI9B,IAAK,GAAI9zB,GAAI,EAAGA,EAAI6yC,EAAM1yC,OAAQH,IAAK,CACrC,GAAI4rF,GAAY,IACgBA,GAA5B/4C,EAAM7yC,GAAGmnD,MAAQ8uC,EAAuBpjD,EAAM7yC,GAAGmjB,KACnC0vB,EAAM7yC,GAAGojB,GACvBwoE,EAAU/4C,MAAM1yC,OAAS,GAAKyrF,EAAUn+B,uBAAwB,GAClE7yD,KAAKo7F,kBAAkBpK,EAAUl5C,MAAOk5C,EAAU/4C,MAAO+4C,EAAU3wF,MAWzET,EAAQ47F,cAAgB,WACtB,IAAK,GAAIz7C,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5B//C,KAAKo3C,MAAM2I,GAAQoE,QAAS,EAC5BnkD,KAAKo3C,MAAM2I,GAAQqE,QAAS,KAQ9B,SAASvkD,EAAQD,EAASM,GAuf9B,QAASu7F,KACPz7F,KAAK47C,UAAUZ,aAAansC,SAAW7O,KAAK47C,UAAUZ,aAAansC,OACnE,IAAI6sF,GAAqB3pF,SAASkmF,eAAe,qBACCyD,GAAmBruF,MAAM1B,WAAhC,GAAvC3L,KAAK47C,UAAUZ,aAAansC,QAAwD,UACR,UAEhF7O,KAAKoiD,wBAAuB,GAO9B,QAASu5C,KACP,IAAK,GAAI57C,KAAU//C,MAAK29C,iBAClB39C,KAAK29C,iBAAiBj4C,eAAeq6C,KACvC//C,KAAK29C,iBAAiBoC,GAAQiT,GAAK,EAAIhzD,KAAK29C,iBAAiBoC,GAAQkT,GAAK,EAC1EjzD,KAAK29C,iBAAiBoC,GAAQ+S,GAAK,EAAI9yD,KAAK29C,iBAAiBoC,GAAQgT,GAAK,EAG7B,IAA7C/yD,KAAK47C,UAAUjB,mBAAmB9rC,SACpC7O,KAAK++C,2BACL68C,EAAiBr7F,KAAKP,KAAM,aAAc,EAAG,8CAC7C47F,EAAiBr7F,KAAKP,KAAM,aAAc,EAAG,0BAC7C47F,EAAiBr7F,KAAKP,KAAM,aAAc,EAAG,0BAC7C47F,EAAiBr7F,KAAKP,KAAM,aAAc,EAAG,wBAC7C47F,EAAiBr7F,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAKqvF,kBAEPrvF,KAAK6+C,QAAS,EACd7+C,KAAK4P,QAMP,QAASisF,KACP,GAAIjtF,GAAU,gDACVktF,KACAC,EAAehqF,SAASkmF,eAAe,wBACvC+D,EAAejqF,SAASkmF,eAAe,uBAC3C,IAA4B,GAAxB8D,EAAaE,QAAiB,CAMhC,GALIj8F,KAAK47C,UAAUlD,QAAQC,UAAUE,uBAAyB74C,KAAKk8F,gBAAgBxjD,QAAQC,UAAUE,uBAAwBijD,EAAgB/zF,KAAK,0BAA4B/H,KAAK47C,UAAUlD,QAAQC,UAAUE,uBAC3M74C,KAAK47C,UAAUlD,QAAQI,gBAAkB94C,KAAKk8F,gBAAgBxjD,QAAQC,UAAUG,gBAAyCgjD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQI,gBAC1L94C,KAAK47C,UAAUlD,QAAQK,cAAgB/4C,KAAKk8F,gBAAgBxjD,QAAQC,UAAUI,cAA2C+iD,EAAgB/zF,KAAK,iBAAmB/H,KAAK47C,UAAUlD,QAAQK,cACxL/4C,KAAK47C,UAAUlD,QAAQM,gBAAkBh5C,KAAKk8F,gBAAgBxjD,QAAQC,UAAUK,gBAAyC8iD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQM,gBAC1Lh5C,KAAK47C,UAAUlD,QAAQO,SAAWj5C,KAAKk8F,gBAAgBxjD,QAAQC,UAAUM,SAAgD6iD,EAAgB/zF,KAAK,YAAc/H,KAAK47C,UAAUlD,QAAQO,SACzJ,GAA1B6iD,EAAgBv2F,OAAa,CAC/BqJ,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAI02F,EAAgBv2F,OAAQH,IAC1CwJ,GAAWktF,EAAgB12F,GACvBA,EAAI02F,EAAgBv2F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,KAET5O,KAAK47C,UAAUZ,aAAansC,SAAW7O,KAAKk8F,gBAAgBlhD,aAAansC,UAC7C,GAA1BitF,EAAgBv2F,OAAcqJ,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmB5O,KAAK47C,UAAUZ,aAAansC,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxBotF,EAAaC,QAAiB,CAQrC,GAPArtF,EAAU,kBACVA,GAAW,wCACP5O,KAAK47C,UAAUlD,QAAQQ,UAAUC,cAAgBn5C,KAAKk8F,gBAAgBxjD,QAAQQ,UAAUC,cAAgB2iD,EAAgB/zF,KAAK,iBAAmB/H,KAAK47C,UAAUlD,QAAQQ,UAAUC,cACjLn5C,KAAK47C,UAAUlD,QAAQI,gBAAkB94C,KAAKk8F,gBAAgBxjD,QAAQQ,UAAUJ,gBAAwBgjD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQI,gBACzK94C,KAAK47C,UAAUlD,QAAQK,cAAgB/4C,KAAKk8F,gBAAgBxjD,QAAQQ,UAAUH,cAA0B+iD,EAAgB/zF,KAAK,iBAAmB/H,KAAK47C,UAAUlD,QAAQK,cACvK/4C,KAAK47C,UAAUlD,QAAQM,gBAAkBh5C,KAAKk8F,gBAAgBxjD,QAAQQ,UAAUF,gBAAwB8iD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQM,gBACzKh5C,KAAK47C,UAAUlD,QAAQO,SAAWj5C,KAAKk8F,gBAAgBxjD,QAAQQ,UAAUD,SAA+B6iD,EAAgB/zF,KAAK,YAAc/H,KAAK47C,UAAUlD,QAAQO,SACxI,GAA1B6iD,EAAgBv2F,OAAa,CAC/BqJ,GAAW,gBACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAI02F,EAAgBv2F,OAAQH,IAC1CwJ,GAAWktF,EAAgB12F,GACvBA,EAAI02F,EAAgBv2F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,KAEiB,GAA1BktF,EAAgBv2F,SAAcqJ,GAAW,KACzC5O,KAAK47C,UAAUZ,cAAgBh7C,KAAKk8F,gBAAgBlhD,eACtDpsC,GAAW,mBAAqB5O,KAAK47C,UAAUZ,cAEjDpsC,GAAW,SAER,CAOH,GANAA,EAAU,kBACN5O,KAAK47C,UAAUlD,QAAQU,sBAAsBD,cAAgBn5C,KAAKk8F,gBAAgBxjD,QAAQU,sBAAsBD,cAAgB2iD,EAAgB/zF,KAAK,iBAAmB/H,KAAK47C,UAAUlD,QAAQU,sBAAsBD,cACrNn5C,KAAK47C,UAAUlD,QAAQI,gBAAkB94C,KAAKk8F,gBAAgBxjD,QAAQU,sBAAsBN,gBAAwBgjD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQI,gBACrL94C,KAAK47C,UAAUlD,QAAQK,cAAgB/4C,KAAKk8F,gBAAgBxjD,QAAQU,sBAAsBL,cAA0B+iD,EAAgB/zF,KAAK,iBAAmB/H,KAAK47C,UAAUlD,QAAQK,cACnL/4C,KAAK47C,UAAUlD,QAAQM,gBAAkBh5C,KAAKk8F,gBAAgBxjD,QAAQU,sBAAsBJ,gBAAwB8iD,EAAgB/zF,KAAK,mBAAqB/H,KAAK47C,UAAUlD,QAAQM,gBACrLh5C,KAAK47C,UAAUlD,QAAQO,SAAWj5C,KAAKk8F,gBAAgBxjD,QAAQU,sBAAsBH,SAA+B6iD,EAAgB/zF,KAAK,YAAc/H,KAAK47C,UAAUlD,QAAQO,SACpJ,GAA1B6iD,EAAgBv2F,OAAa,CAC/BqJ,GAAW,oCACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAI02F,EAAgBv2F,OAAQH,IAC1CwJ,GAAWktF,EAAgB12F,GACvBA,EAAI02F,EAAgBv2F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACXktF,KACI97F,KAAK47C,UAAUjB,mBAAmBzhB,WAAal5B,KAAKk8F,gBAAgBvhD,mBAAmBzhB,WAAkC4iE,EAAgB/zF,KAAK,cAAgB/H,KAAK47C,UAAUjB,mBAAmBzhB,WAChMp0B,KAAKklB,IAAIhqB,KAAK47C,UAAUjB,mBAAmBC,kBAAoB56C,KAAKk8F,gBAAgBvhD,mBAAmBC,iBAAkBkhD,EAAgB/zF,KAAK,oBAAsB/H,KAAK47C,UAAUjB,mBAAmBC,iBACtM56C,KAAK47C,UAAUjB,mBAAmBE,aAAe76C,KAAKk8F,gBAAgBvhD,mBAAmBE,aAAgCihD,EAAgB/zF,KAAK,gBAAkB/H,KAAK47C,UAAUjB,mBAAmBE,aACxK,GAA1BihD,EAAgBv2F,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAI02F,EAAgBv2F,OAAQH,IAC1CwJ,GAAWktF,EAAgB12F,GACvBA,EAAI02F,EAAgBv2F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIb5O,KAAKm8F,WAAW/4E,UAAYxU,EAO9B,QAASwtF,KACP,GAAI5mF,IAAO,iBAAkB,gBAAiB,iBAC1C6mF,EAActqF,SAASuqF,cAAc,6CAA6Cr1F,MAClFs1F,EAAU,SAAWF,EAAc,SACnCG,EAAQzqF,SAASkmF,eAAesE,EACpCC,GAAMnvF,MAAMo1B,QAAU,OACtB,KAAK,GAAIr9B,GAAI,EAAGA,EAAIoQ,EAAIjQ,OAAQH,IAC1BoQ,EAAIpQ,IAAMm3F,IACZC,EAAQzqF,SAASkmF,eAAeziF,EAAIpQ,IACpCo3F,EAAMnvF,MAAMo1B,QAAU,OAG1BziC,MAAKw7F,gBACc,KAAfa,GACFr8F,KAAK47C,UAAUjB,mBAAmB9rC,SAAU,EAC5C7O,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SAAU,EACvD7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAU,GAErB,KAAfwtF,EAC0C,GAA7Cr8F,KAAK47C,UAAUjB,mBAAmB9rC,UACpC7O,KAAK47C,UAAUjB,mBAAmB9rC,SAAU,EAC5C7O,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SAAU,EACvD7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAU,EAC3C7O,KAAK47C,UAAUZ,aAAansC,SAAU,EACtC7O,KAAK++C,6BAIP/+C,KAAK47C,UAAUjB,mBAAmB9rC,SAAU,EAC5C7O,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SAAU,EACvD7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAU,GAE7C7O,KAAKqhE,0BACL,IAAIq6B,GAAqB3pF,SAASkmF,eAAe,qBACCyD,GAAmBruF,MAAM1B,WAAhC,GAAvC3L,KAAK47C,UAAUZ,aAAansC,QAAwD,UACR,UAChF7O,KAAK6+C,QAAS,EACd7+C,KAAK4P,QAWP,QAASgsF,GAAkBv7F,EAAGoN,EAAIgvF,GAChC,GAAIC,GAAUr8F,EAAK,SACfs8F,EAAa5qF,SAASkmF,eAAe53F,GAAI4G,KAEzCpB,OAAMC,QAAQ2H,IAChBsE,SAASkmF,eAAeyE,GAASz1F,MAAQwG,EAAIwc,SAAS0yE,IACtD38F,KAAK48F,yBAAyBH,EAAsBhvF,EAAIwc,SAAS0yE,OAGjE5qF,SAASkmF,eAAeyE,GAASz1F,MAAQgjB,SAASxc,GAAO+W,WAAWm4E,GACpE38F,KAAK48F,yBAAyBH,EAAuBxyE,SAASxc,GAAO+W,WAAWm4E,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACAz8F,KAAK++C,2BAEP/+C,KAAK6+C,QAAS,EACd7+C,KAAK4P,QAlsBP,GAAIjP,GAAOT,EAAoB,GAC3B28F,EAAiB38F,EAAoB,IACrC48F,EAA4B58F,EAAoB,IAChD68F,EAAiB78F,EAAoB,GAOzCN,GAAQo9F,iBAAmB,WACzBh9F,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SAAW7O,KAAK47C,UAAUlD,QAAQC,UAAU9pC,QAC7E7O,KAAKqhE,2BACLrhE,KAAK6+C,QAAS,EACd7+C,KAAK4P,SASPhQ,EAAQyhE,yBAA2B,WAEe,GAA5CrhE,KAAK47C,UAAUlD,QAAQC,UAAU9pC,SACnC7O,KAAKohE,YAAYy7B,GACjB78F,KAAKohE,YAAY07B,GAEjB98F,KAAK47C,UAAUlD,QAAQI,eAAiB94C,KAAK47C,UAAUlD,QAAQC,UAAUG,eACzE94C,KAAK47C,UAAUlD,QAAQK,aAAe/4C,KAAK47C,UAAUlD,QAAQC,UAAUI,aACvE/4C,KAAK47C,UAAUlD,QAAQM,eAAiBh5C,KAAK47C,UAAUlD,QAAQC,UAAUK,eACzEh5C,KAAK47C,UAAUlD,QAAQO,QAAUj5C,KAAK47C,UAAUlD,QAAQC,UAAUM,QAElEj5C,KAAKihE,WAAW87B,IAE+C,GAAxD/8F,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,SACpD7O,KAAKohE,YAAY27B,GACjB/8F,KAAKohE,YAAYy7B,GAEjB78F,KAAK47C,UAAUlD,QAAQI,eAAiB94C,KAAK47C,UAAUlD,QAAQU,sBAAsBN,eACrF94C,KAAK47C,UAAUlD,QAAQK,aAAe/4C,KAAK47C,UAAUlD,QAAQU,sBAAsBL,aACnF/4C,KAAK47C,UAAUlD,QAAQM,eAAiBh5C,KAAK47C,UAAUlD,QAAQU,sBAAsBJ,eACrFh5C,KAAK47C,UAAUlD,QAAQO,QAAUj5C,KAAK47C,UAAUlD,QAAQU,sBAAsBH,QAE9Ej5C,KAAKihE,WAAW67B,KAGhB98F,KAAKohE,YAAY27B,GACjB/8F,KAAKohE,YAAY07B,GACjB98F,KAAKi9F,cAAgB72F,OAErBpG,KAAK47C,UAAUlD,QAAQI,eAAiB94C,KAAK47C,UAAUlD,QAAQQ,UAAUJ,eACzE94C,KAAK47C,UAAUlD,QAAQK,aAAe/4C,KAAK47C,UAAUlD,QAAQQ,UAAUH,aACvE/4C,KAAK47C,UAAUlD,QAAQM,eAAiBh5C,KAAK47C,UAAUlD,QAAQQ,UAAUF,eACzEh5C,KAAK47C,UAAUlD,QAAQO,QAAUj5C,KAAK47C,UAAUlD,QAAQQ,UAAUD,QAElEj5C,KAAKihE,WAAW47B,KAUpBj9F,EAAQs9F,4BAA8B,WAEL,GAA3Bl9F,KAAK69C,YAAYt4C,OACnBvF,KAAKo3C,MAAMp3C,KAAK69C,YAAY,IAAI2X,UAAU,EAAG,IAIzCx1D,KAAK69C,YAAYt4C,OAASvF,KAAK47C,UAAUvC,WAAWE,kBAAyD,GAArCv5C,KAAK47C,UAAUvC,WAAWxqC,SACpG7O,KAAK8uF,aAAa9uF,KAAK47C,UAAUvC,WAAWG,eAAe,GAI7Dx5C,KAAKm9F,qBAUTv9F,EAAQu9F,iBAAmB,WAKzBn9F,KAAKo9F,gCACLp9F,KAAKq9F,uBAEDr9F,KAAK47C,UAAUlD,QAAQM,eAAiB,IACC,GAAvCh5C,KAAK47C,UAAUZ,aAAansC,SAA0D,GAAvC7O,KAAK47C,UAAUZ,aAAaC,QAC7Ej7C,KAAKs9F,oCAGuD,GAAxDt9F,KAAK47C,UAAUlD,QAAQU,sBAAsBvqC,QAC/C7O,KAAKu9F,qCAGLv9F,KAAKw9F,2BAeb59F,EAAQmnD,wBAA0B,WAChC,GAA2C,GAAvC/mD,KAAK47C,UAAUZ,aAAansC,SAA0D,GAAvC7O,KAAK47C,UAAUZ,aAAaC,QAAiB,CAC9Fj7C,KAAK29C,oBACL39C,KAAK49C,yBAEL,KAAK,GAAImC,KAAU//C,MAAKo3C,MAClBp3C,KAAKo3C,MAAM1xC,eAAeq6C,KAC5B//C,KAAK29C,iBAAiBoC,GAAU//C,KAAKo3C,MAAM2I,GAG/C,IAAIw5C,GAAev5F,KAAK4nD,QAAiB,QAAS,KAClD,KAAK,GAAI61C,KAAiBlE,GACpBA,EAAa7zF,eAAe+3F,KAC1Bz9F,KAAKi4C,MAAMvyC,eAAe6zF,EAAakE,GAAe5yC,cACxD7qD,KAAK29C,iBAAiB8/C,GAAiBlE,EAAakE,GAGpDlE,EAAakE,GAAejoC,UAAU,EAAG,GAK/C,KAAK,GAAI3U,KAAO7gD,MAAK29C,iBACf39C,KAAK29C,iBAAiBj4C,eAAem7C,IACvC7gD,KAAK49C,uBAAuB71C,KAAK84C,OAKrC7gD,MAAK29C,iBAAmB39C,KAAKo3C,MAC7Bp3C,KAAK49C,uBAAyB59C,KAAK69C,aAUvCj+C,EAAQw9F,8BAAgC,WACtC,GAAIr/E,GAAIC,EAAI8G,EAAU46B,EAAMt6C,EACxBgyC,EAAQp3C,KAAK29C,iBACb+/C,EAAU19F,KAAK47C,UAAUlD,QAAQI,eACjC6kD,EAAe,CAEnB,KAAKv4F,EAAI,EAAGA,EAAIpF,KAAK49C,uBAAuBr4C,OAAQH,IAClDs6C,EAAOtI,EAAMp3C,KAAK49C,uBAAuBx4C,IACzCs6C,EAAKzG,QAAUj5C,KAAK47C,UAAUlD,QAAQO,QAEhB,WAAlBj5C,KAAKyvF,WAAqC,GAAXiO,GACjC3/E,GAAM2hC,EAAKntC,EACXyL,GAAM0hC,EAAKltC,EACXsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpC2/E,EAA4B,GAAZ74E,EAAiB,EAAK44E,EAAU54E,EAChD46B,EAAKoT,GAAK/0C,EAAK4/E,EACfj+C,EAAKqT,GAAK/0C,EAAK2/E,IAGfj+C,EAAKoT,GAAK,EACVpT,EAAKqT,GAAK,IAahBnzD,EAAQ49F,uBAAyB,WAC/B,GAAII,GAAYt3C,EAAMP,EAClBhoC,EAAIC,EAAI80C,EAAIC,EAAI8qC,EAAa/4E,EAC7BmzB,EAAQj4C,KAAKi4C,KAGjB,KAAK8N,IAAU9N,GACTA,EAAMvyC,eAAeqgD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvmD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKiG,OAASvsD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKgG,UACzEsxC,EAAat3C,EAAK5N,QAAQK,aAE1B6kD,IAAet3C,EAAK99B,GAAGmrC,YAAcrN,EAAK/9B,KAAKorC,YAAc,GAAK3zD,KAAK47C,UAAUvC,WAAWY,WAE5Fl8B,EAAMuoC,EAAK/9B,KAAKhW,EAAI+zC,EAAK99B,GAAGjW,EAC5ByL,EAAMsoC,EAAK/9B,KAAK/V,EAAI8zC,EAAK99B,GAAGhW,EAC5BsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb+4E,EAAc79F,KAAK47C,UAAUlD,QAAQM,gBAAkB4kD,EAAa94E,GAAYA,EAEhFguC,EAAK/0C,EAAK8/E,EACV9qC,EAAK/0C,EAAK6/E,EAEVv3C,EAAK/9B,KAAKuqC,IAAMA,EAChBxM,EAAK/9B,KAAKwqC,IAAMA,EAChBzM,EAAK99B,GAAGsqC,IAAMA,EACdxM,EAAK99B,GAAGuqC,IAAMA,KAexBnzD,EAAQ09F,kCAAoC,WAC1C,GAAIM,GAAYt3C,EAAMP,EAAQ+3C,EAC1B7lD,EAAQj4C,KAAKi4C,KAGjB,KAAK8N,IAAU9N,GACb,GAAIA,EAAMvyC,eAAeqgD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvmD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKiG,OAASvsD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKgG,SACzD,MAAZhG,EAAKqB,KAAa,CACpB,GAAIo2C,GAAQz3C,EAAK99B,GACbw1E,EAAQ13C,EAAKqB,IACbs2C,EAAQ33C,EAAK/9B,IAEjBq1E,GAAat3C,EAAK5N,QAAQK,aAE1B+kD,EAAsBC,EAAMpqC,YAAcsqC,EAAMtqC,YAAc,EAG9DiqC,GAAcE,EAAsB99F,KAAK47C,UAAUvC,WAAWY,WAC9Dj6C,KAAKk+F,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/C59F,KAAKk+F,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3Dh+F,EAAQs+F,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAI7/E,GAAIC,EAAI80C,EAAIC,EAAI8qC,EAAa/4E,CAEjC/G,GAAMggF,EAAMxrF,EAAIyrF,EAAMzrF,EACtByL,EAAM+/E,EAAMvrF,EAAIwrF,EAAMxrF,EACtBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb+4E,EAAc79F,KAAK47C,UAAUlD,QAAQM,gBAAkB4kD,EAAa94E,GAAYA,EAEhFguC,EAAK/0C,EAAK8/E,EACV9qC,EAAK/0C,EAAK6/E,EAEVE,EAAMjrC,IAAMA,EACZirC,EAAMhrC,IAAMA,EACZirC,EAAMlrC,IAAMA,EACZkrC,EAAMjrC,IAAMA,GAQdnzD,EAAQ0hE,0BAA4B,WAClC,GAAkCl7D,SAA9BpG,KAAKm+F,qBAAoC,CAC3Cn+F,KAAKk8F,mBACLv7F,EAAK0F,WAAWrG,KAAKk8F,gBAAgBl8F,KAAK47C,UAE1C,IAAIwiD,IAAgC,KAAM,KAAM,KAAM,KACtDp+F,MAAKm+F,qBAAuBpsF,SAASM,cAAc,OACnDrS,KAAKm+F,qBAAqBv2F,UAAY,uBACtC5H,KAAKm+F,qBAAqB/6E,UAAY,onBAW2E,GAAKpjB,KAAK47C,UAAUlD,QAAQC,UAAUE,sBAAyB,wGAA2G,GAAK74C,KAAK47C,UAAUlD,QAAQC,UAAUE,sBAAyB,4JAGpP74C,KAAK47C,UAAUlD,QAAQC,UAAUG,eAAiB,wFAA0F94C,KAAK47C,UAAUlD,QAAQC,UAAUG,eAAiB,2JAG/L94C,KAAK47C,UAAUlD,QAAQC,UAAUI,aAAe,sFAAwF/4C,KAAK47C,UAAUlD,QAAQC,UAAUI,aAAe,6JAGtL/4C,KAAK47C,UAAUlD,QAAQC,UAAUK,eAAiB,0FAA4Fh5C,KAAK47C,UAAUlD,QAAQC,UAAUK,eAAiB,sJAGvMh5C,KAAK47C,UAAUlD,QAAQC,UAAUM,QAAU,4FAA8Fj5C,KAAK47C,UAAUlD,QAAQC,UAAUM,QAAU,sPAM/Kj5C,KAAK47C,UAAUlD,QAAQQ,UAAUC,aAAe,kGAAoGn5C,KAAK47C,UAAUlD,QAAQQ,UAAUC,aAAe,2JAGnMn5C,KAAK47C,UAAUlD,QAAQQ,UAAUJ,eAAiB,uFAAyF94C,KAAK47C,UAAUlD,QAAQQ,UAAUJ,eAAiB,0JAG9L94C,KAAK47C,UAAUlD,QAAQQ,UAAUH,aAAe,qFAAuF/4C,KAAK47C,UAAUlD,QAAQQ,UAAUH,aAAe,4JAGrL/4C,KAAK47C,UAAUlD,QAAQQ,UAAUF,eAAiB,yFAA2Fh5C,KAAK47C,UAAUlD,QAAQQ,UAAUF,eAAiB,qJAGtMh5C,KAAK47C,UAAUlD,QAAQQ,UAAUD,QAAU,2FAA6Fj5C,KAAK47C,UAAUlD,QAAQQ,UAAUD,QAAU,oQAM9Kj5C,KAAK47C,UAAUlD,QAAQU,sBAAsBD,aAAe,kGAAoGn5C,KAAK47C,UAAUlD,QAAQU,sBAAsBD,aAAe,2JAG3Nn5C,KAAK47C,UAAUlD,QAAQU,sBAAsBN,eAAiB,uFAAyF94C,KAAK47C,UAAUlD,QAAQU,sBAAsBN,eAAiB,0JAGtN94C,KAAK47C,UAAUlD,QAAQU,sBAAsBL,aAAe,qFAAuF/4C,KAAK47C,UAAUlD,QAAQU,sBAAsBL,aAAe,4JAG7M/4C,KAAK47C,UAAUlD,QAAQU,sBAAsBJ,eAAiB,yFAA2Fh5C,KAAK47C,UAAUlD,QAAQU,sBAAsBJ,eAAiB,qJAG9Nh5C,KAAK47C,UAAUlD,QAAQU,sBAAsBH,QAAU,2FAA6Fj5C,KAAK47C,UAAUlD,QAAQU,sBAAsBH,QAAU,uJAG3MmlD,EAA6B73F,QAAQvG,KAAK47C,UAAUjB,mBAAmBzhB,WAAa,0FAA4Fl5B,KAAK47C,UAAUjB,mBAAmBzhB,UAAY,oKAGtNl5B,KAAK47C,UAAUjB,mBAAmBC,gBAAkB,yFAA2F56C,KAAK47C,UAAUjB,mBAAmBC,gBAAkB,6JAGvM56C,KAAK47C,UAAUjB,mBAAmBE,YAAc,wFAA0F76C,KAAK47C,UAAUjB,mBAAmBE,YAAc,odAU9R76C,KAAKgZ,iBAAiBqlF,cAAcjsF,aAAapS,KAAKm+F,qBAAsBn+F,KAAKgZ,kBACjFhZ,KAAKm8F,WAAapqF,SAASM,cAAc,OACzCrS,KAAKm8F,WAAW9uF,MAAMsqC,SAAW,OACjC33C,KAAKm8F,WAAW9uF,MAAM8pD,WAAa,UACnCn3D,KAAKgZ,iBAAiBqlF,cAAcjsF,aAAapS,KAAKm8F,WAAYn8F,KAAKgZ,iBAEvE;GAAIslF,EACJA,GAAevsF,SAASkmF,eAAe,eACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,cAAe,GAAI,2CACvEs+F,EAAevsF,SAASkmF,eAAe,eACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,cAAe,EAAG,0BACtEs+F,EAAevsF,SAASkmF,eAAe,eACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,cAAe,EAAG,0BACtEs+F,EAAevsF,SAASkmF,eAAe,eACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,cAAe,EAAG,wBACtEs+F,EAAevsF,SAASkmF,eAAe,iBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,gBAAiB,EAAG,mBAExEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,kCACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,0BACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,0BACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,wBACrEs+F,EAAevsF,SAASkmF,eAAe,gBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,eAAgB,EAAG,mBAEvEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,8CACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,0BACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,0BACrEs+F,EAAevsF,SAASkmF,eAAe,cACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,aAAc,EAAG,wBACrEs+F,EAAevsF,SAASkmF,eAAe,gBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,eAAgB,EAAG,mBACvEs+F,EAAevsF,SAASkmF,eAAe,qBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,oBAAqBo+F,EAA8B,gCACvGE,EAAevsF,SAASkmF,eAAe,kBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,iBAAkB,EAAG,sCACzEs+F,EAAevsF,SAASkmF,eAAe,iBACvCqG,EAAat2E,SAAW4zE,EAAiBpnE,KAAKx0B,KAAM,gBAAiB,EAAG,iCAExE,IAAI+7F,GAAehqF,SAASkmF,eAAe,wBACvC+D,EAAejqF,SAASkmF,eAAe,wBACvCsG,EAAexsF,SAASkmF,eAAe,uBAC3C+D,GAAaC,SAAU,EACnBj8F,KAAK47C,UAAUlD,QAAQC,UAAU9pC,UACnCktF,EAAaE,SAAU,GAErBj8F,KAAK47C,UAAUjB,mBAAmB9rC,UACpC0vF,EAAatC,SAAU,EAGzB,IAAIP,GAAqB3pF,SAASkmF,eAAe,sBAC7CuG,EAAwBzsF,SAASkmF,eAAe,yBAChDwG,EAAwB1sF,SAASkmF,eAAe,wBAEpDyD,GAAmB/pE,QAAU8pE,EAAwBjnE,KAAKx0B,MAC1Dw+F,EAAsB7sE,QAAUgqE,EAAqBnnE,KAAKx0B,MAC1Dy+F,EAAsB9sE,QAAUkqE,EAAqBrnE,KAAKx0B,MAExD07F,EAAmBruF,MAAM1B,WADQ,GAA/B3L,KAAK47C,UAAUZ,cAA8D,GAAtCh7C,KAAK47C,UAAUT,oBAClB,UAGA,UAIxCihD,EAAqB/jF,MAAMrY,MAE3B+7F,EAAa/zE,SAAWo0E,EAAqB5nE,KAAKx0B,MAClDg8F,EAAah0E,SAAWo0E,EAAqB5nE,KAAKx0B,MAClDu+F,EAAav2E,SAAWo0E,EAAqB5nE,KAAKx0B,QAWtDJ,EAAQg9F,yBAA2B,SAAUH,EAAuBx1F,GAClE,GAAIy3F,GAAYjC,EAAsB30F,MAAM,IACpB,IAApB42F,EAAUn5F,OACZvF,KAAK47C,UAAU8iD,EAAU,IAAMz3F,EAEJ,GAApBy3F,EAAUn5F,OACjBvF,KAAK47C,UAAU8iD,EAAU,IAAIA,EAAU,IAAMz3F,EAElB,GAApBy3F,EAAUn5F,SACjBvF,KAAK47C,UAAU8iD,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAMz3F,KA2N3D,SAASpH,GAEb,QAAS8+F,GAAeC,GACvB,KAAM,IAAIn7F,OAAM,uBAAyBm7F,EAAM,MAEhDD,EAAeE,QAAUF,EACzBA,EAAenxF,KAAO,WAAa,UACnC3N,EAAOD,QAAU++F,GAKb,SAAS9+F,EAAQD,GAQrBA,EAAQy9F,qBAAuB,WAC7B,GAAIt/E,GAAIC,EAAW8G,EAAUguC,EAAIC,EAAI+qC,EACnCgB,EAAgBf,EAAOC,EAAO54F,EAAG4lB,EAE/BosB,EAAQp3C,KAAK29C,iBACbE,EAAc79C,KAAK49C,uBAGnBmhD,EAAS,GAAK,EACd/4F,EAAI,EAAI,EAGRmzC,EAAen5C,KAAK47C,UAAUlD,QAAQQ,UAAUC,aAChD6lD,EAAkB7lD,CAItB,KAAK/zC,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAS,EAAGH,IAEtC,IADA24F,EAAQ3mD,EAAMyG,EAAYz4C,IACrB4lB,EAAI5lB,EAAI,EAAG4lB,EAAI6yB,EAAYt4C,OAAQylB,IAAK,CAC3CgzE,EAAQ5mD,EAAMyG,EAAY7yB,IAC1B8yE,EAAsBC,EAAMpqC,YAAcqqC,EAAMrqC,YAAc,EAE9D51C,EAAKigF,EAAMzrF,EAAIwrF,EAAMxrF,EACrByL,EAAKggF,EAAMxrF,EAAIurF,EAAMvrF,EACrBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpCghF,EAA0C,GAAvBlB,EAA4B3kD,EAAgBA,GAAgB,EAAI2kD,EAAsB99F,KAAK47C,UAAUvC,WAAWW,sBACnI,IAAI70C,GAAI45F,EAASC,CACF,GAAIA,EAAfl6E,IAEAg6E,EADa,GAAME,EAAjBl6E,EACe,EAGA3f,EAAI2f,EAAW9e,EAIlC84F,GAA0C,GAAvBhB,EAA4B,EAAI,EAAIA,EAAsB99F,KAAK47C,UAAUvC,WAAWU,mBACvG+kD,GAAkCh6E,EAElCguC,EAAK/0C,EAAK+gF,EACV/rC,EAAK/0C,EAAK8gF,EAEVf,EAAMjrC,IAAMA,EACZirC,EAAMhrC,IAAMA,EACZirC,EAAMlrC,IAAMA,EACZkrC,EAAMjrC,IAAMA,MAShB,SAASlzD,EAAQD,GAQrBA,EAAQy9F,qBAAuB,WAC7B,GAAIt/E,GAAIC,EAAI8G,EAAUguC,EAAIC,EACxB+rC,EAAgBf,EAAOC,EAAO54F,EAAG4lB,EAE/BosB,EAAQp3C,KAAK29C,iBACbE,EAAc79C,KAAK49C,uBAGnBzE,EAAen5C,KAAK47C,UAAUlD,QAAQU,sBAAsBD,YAIhE,KAAK/zC,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAS,EAAGH,IAEtC,IADA24F,EAAQ3mD,EAAMyG,EAAYz4C,IACrB4lB,EAAI5lB,EAAI,EAAG4lB,EAAI6yB,EAAYt4C,OAAQylB,IAItC,GAHAgzE,EAAQ5mD,EAAMyG,EAAY7yB,IAGtB+yE,EAAMjmD,OAASkmD,EAAMlmD,MAAO,CAE9B/5B,EAAKigF,EAAMzrF,EAAIwrF,EAAMxrF,EACrByL,EAAKggF,EAAMxrF,EAAIurF,EAAMvrF,EACrBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,EAGpC,IAAIihF,GAAY,GAEdH,GADa3lD,EAAXr0B,GACgBhgB,KAAK0uB,IAAIyrE,EAAUn6E,EAAS,GAAKhgB,KAAK0uB,IAAIyrE,EAAU9lD,EAAa,GAGlE,EAGD,GAAZr0B,EACFA,EAAW,IAGXg6E,GAAkCh6E,EAEpCguC,EAAK/0C,EAAK+gF,EACV/rC,EAAK/0C,EAAK8gF,EAEVf,EAAMjrC,IAAMA,EACZirC,EAAMhrC,IAAMA,EACZirC,EAAMlrC,IAAMA,EACZkrC,EAAMjrC,IAAMA,IAYtBnzD,EAAQ29F,mCAAqC,WAS3C,IAAK,GARDK,GAAYt3C,EAAMP,EAClBhoC,EAAIC,EAAI80C,EAAIC,EAAI8qC,EAAa/4E,EAC7BmzB,EAAQj4C,KAAKi4C,MAEbb,EAAQp3C,KAAK29C,iBACbE,EAAc79C,KAAK49C,uBAGdx4C,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAQH,IAAK,CAC3C,GAAI24F,GAAQ3mD,EAAMyG,EAAYz4C,GAC9B24F,GAAMmB,SAAW,EACjBnB,EAAMoB,SAAW,EAKnB,IAAKp5C,IAAU9N,GACb,GAAIA,EAAMvyC,eAAeqgD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvmD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKiG,OAASvsD,KAAKo3C,MAAM1xC,eAAe4gD,EAAKgG,SAqBzE,GApBAsxC,EAAat3C,EAAK5N,QAAQK,aAE1B6kD,IAAet3C,EAAK99B,GAAGmrC,YAAcrN,EAAK/9B,KAAKorC,YAAc,GAAK3zD,KAAK47C,UAAUvC,WAAWY,WAE5Fl8B,EAAMuoC,EAAK/9B,KAAKhW,EAAI+zC,EAAK99B,GAAGjW,EAC5ByL,EAAMsoC,EAAK/9B,KAAK/V,EAAI8zC,EAAK99B,GAAGhW,EAC5BsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb+4E,EAAc79F,KAAK47C,UAAUlD,QAAQM,gBAAkB4kD,EAAa94E,GAAYA,EAEhFguC,EAAK/0C,EAAK8/E,EACV9qC,EAAK/0C,EAAK6/E,EAINv3C,EAAK99B,GAAGsvB,OAASwO,EAAK/9B,KAAKuvB,MAC7BwO,EAAK99B,GAAG02E,UAAYpsC,EACpBxM,EAAK99B,GAAG22E,UAAYpsC,EACpBzM,EAAK/9B,KAAK22E,UAAYpsC,EACtBxM,EAAK/9B,KAAK42E,UAAYpsC,MAEnB,CACH,GAAIzS,GAAS,EACbgG,GAAK99B,GAAGsqC,IAAMxS,EAAOwS,EACrBxM,EAAK99B,GAAGuqC,IAAMzS,EAAOyS,EACrBzM,EAAK/9B,KAAKuqC,IAAMxS,EAAOwS,EACvBxM,EAAK/9B,KAAKwqC,IAAMzS,EAAOyS,EAQjC,GACImsC,GAAUC,EADVtB,EAAc,CAElB,KAAKz4F,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAQH,IAAK,CACvC,GAAIs6C,GAAOtI,EAAMyG,EAAYz4C,GAC7B85F,GAAWp6F,KAAKwG,IAAIuyF,EAAY/4F,KAAKiI,KAAK8wF,EAAYn+C,EAAKw/C,WAC3DC,EAAWr6F,KAAKwG,IAAIuyF,EAAY/4F,KAAKiI,KAAK8wF,EAAYn+C,EAAKy/C,WAE3Dz/C,EAAKoT,IAAMosC,EACXx/C,EAAKqT,IAAMosC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAKj6F,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAQH,IAAK,CACvC,GAAIs6C,GAAOtI,EAAMyG,EAAYz4C,GAC7Bg6F,IAAW1/C,EAAKoT,GAChBusC,GAAW3/C,EAAKqT,GAElB,GAAIusC,GAAeF,EAAUvhD,EAAYt4C,OACrCg6F,EAAeF,EAAUxhD,EAAYt4C,MAEzC,KAAKH,EAAI,EAAGA,EAAIy4C,EAAYt4C,OAAQH,IAAK,CACvC,GAAIs6C,GAAOtI,EAAMyG,EAAYz4C,GAC7Bs6C,GAAKoT,IAAMwsC,EACX5/C,EAAKqT,IAAMwsC,KAOX,SAAS1/F,EAAQD,GAQrBA,EAAQy9F,qBAAuB,WAC7B,GAA8D,GAA1Dr9F,KAAK47C,UAAUlD,QAAQC,UAAUE,sBAA4B,CAC/D,GAAI6G,GACAtI,EAAQp3C,KAAK29C,iBACbE,EAAc79C,KAAK49C,uBACnB4hD,EAAY3hD,EAAYt4C,MAE5BvF,MAAKy/F,mBAAmBroD,EAAMyG,EAK9B,KAAK,GAHDo/C,GAAgBj9F,KAAKi9F,cAGhB73F,EAAI,EAAOo6F,EAAJp6F,EAAeA,IAC7Bs6C,EAAOtI,EAAMyG,EAAYz4C,IACrBs6C,EAAK9wC,QAAQyoC,KAAO,IAEtBr3C,KAAK0/F,sBAAsBzC,EAAcv9F,KAAKigG,SAASC,GAAGlgD,GAC1D1/C,KAAK0/F,sBAAsBzC,EAAcv9F,KAAKigG,SAASE,GAAGngD,GAC1D1/C,KAAK0/F,sBAAsBzC,EAAcv9F,KAAKigG,SAASG,GAAGpgD,GAC1D1/C,KAAK0/F,sBAAsBzC,EAAcv9F,KAAKigG,SAASI,GAAGrgD,MAelE9/C,EAAQ8/F,sBAAwB,SAASM,EAAatgD,GAEpD,GAAIsgD,EAAaC,cAAgB,EAAG,CAClC,GAAIliF,GAAGC,EAAG8G,CAUV,IAPA/G,EAAKiiF,EAAaE,aAAa3tF,EAAImtC,EAAKntC,EACxCyL,EAAKgiF,EAAaE,aAAa1tF,EAAIktC,EAAKltC,EACxCsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAWk7E,EAAaG,SAAWngG,KAAK47C,UAAUlD,QAAQC,UAAUC,MAAO,CAE7D,GAAZ9zB,IACFA,EAAW,GAAIhgB,KAAKE,SACpB+Y,EAAK+G,EAEP,IAAI64E,GAAe39F,KAAK47C,UAAUlD,QAAQC,UAAUE,sBAAwBmnD,EAAa3oD,KAAOqI,EAAK9wC,QAAQyoC,MAAQvyB,EAAWA,EAAWA,GACvIguC,EAAK/0C,EAAK4/E,EACV5qC,EAAK/0C,EAAK2/E,CACdj+C,GAAKoT,IAAMA,EACXpT,EAAKqT,IAAMA,MAIX,IAAkC,GAA9BitC,EAAaC,cACfjgG,KAAK0/F,sBAAsBM,EAAaL,SAASC,GAAGlgD,GACpD1/C,KAAK0/F,sBAAsBM,EAAaL,SAASE,GAAGngD,GACpD1/C,KAAK0/F,sBAAsBM,EAAaL,SAASG,GAAGpgD,GACpD1/C,KAAK0/F,sBAAsBM,EAAaL,SAASI,GAAGrgD,OAGpD,IAAIsgD,EAAaL,SAASzsF,KAAK7S,IAAMq/C,EAAKr/C,GAAI,CAE5B,GAAZykB,IACFA,EAAW,GAAIhgB,KAAKE,SACpB+Y,EAAK+G,EAEP,IAAI64E,GAAe39F,KAAK47C,UAAUlD,QAAQC,UAAUE,sBAAwBmnD,EAAa3oD,KAAOqI,EAAK9wC,QAAQyoC,MAAQvyB,EAAWA,EAAWA,GACvIguC,EAAK/0C,EAAK4/E,EACV5qC,EAAK/0C,EAAK2/E,CACdj+C,GAAKoT,IAAMA,EACXpT,EAAKqT,IAAMA,KAcrBnzD,EAAQ6/F,mBAAqB,SAASroD,EAAMyG,GAU1C,IAAK,GATD6B,GACA8/C,EAAY3hD,EAAYt4C,OAExBs6C,EAAO/7C,OAAOs8F,UAChBzgD,EAAO77C,OAAOs8F,UACdtgD,GAAOh8C,OAAOs8F,UACdxgD,GAAO97C,OAAOs8F,UAGPh7F,EAAI,EAAOo6F,EAAJp6F,EAAeA,IAAK,CAClC,GAAImN,GAAI6kC,EAAMyG,EAAYz4C,IAAImN,EAC1BC,EAAI4kC,EAAMyG,EAAYz4C,IAAIoN,CAC1B4kC,GAAMyG,EAAYz4C,IAAIwJ,QAAQyoC,KAAO,IAC/BwI,EAAJttC,IAAYstC,EAAOttC,GACnBA,EAAIutC,IAAQA,EAAOvtC,GACfotC,EAAJntC,IAAYmtC,EAAOntC,GACnBA,EAAIotC,IAAQA,EAAOptC,IAI3B,GAAI6tF,GAAWv7F,KAAKklB,IAAI81B,EAAOD,GAAQ/6C,KAAKklB,IAAI41B,EAAOD,EACnD0gD,GAAW,GAAI1gD,GAAQ,GAAM0gD,EAAUzgD,GAAQ,GAAMygD,IACtCxgD,GAAQ,GAAMwgD,EAAUvgD,GAAQ,GAAMugD,EAGzD,IAAIC,GAAkB,KAClBC,EAAWz7F,KAAKiI,IAAIuzF,EAAgBx7F,KAAKklB,IAAI81B,EAAOD,IACpD2gD,EAAe,GAAMD,EACrBE,EAAU,IAAO5gD,EAAOC,GAAO4gD,EAAU,IAAO/gD,EAAOC,GAGvDq9C,GACFv9F,MACEwgG,cAAe3tF,EAAE,EAAGC,EAAE,GACtB6kC,KAAK,EACLroC,OACE6wC,KAAM4gD,EAAQD,EAAa1gD,KAAK2gD,EAAQD,EACxC7gD,KAAM+gD,EAAQF,EAAa5gD,KAAK8gD,EAAQF,GAE1C3tF,KAAM0tF,EACNJ,SAAU,EAAII,EACdZ,UAAYzsF,KAAK,MACjBokD,SAAU,EACVxf,MAAO,EACPmoD,cAAe,GAMnB,KAHAjgG,KAAK2gG,aAAa1D,EAAcv9F,MAG3B0F,EAAI,EAAOo6F,EAAJp6F,EAAeA,IACzBs6C,EAAOtI,EAAMyG,EAAYz4C,IACrBs6C,EAAK9wC,QAAQyoC,KAAO,GACtBr3C,KAAK4gG,aAAa3D,EAAcv9F,KAAKggD,EAKzC1/C,MAAKi9F,cAAgBA,GAWvBr9F,EAAQihG,kBAAoB,SAASb,EAActgD,GACjD,GAAIohD,GAAYd,EAAa3oD,KAAOqI,EAAK9wC,QAAQyoC,KAC7C0pD,EAAe,EAAED,CAErBd,GAAaE,aAAa3tF,EAAIytF,EAAaE,aAAa3tF,EAAIytF,EAAa3oD,KAAOqI,EAAKntC,EAAImtC,EAAK9wC,QAAQyoC,KACtG2oD,EAAaE,aAAa3tF,GAAKwuF,EAE/Bf,EAAaE,aAAa1tF,EAAIwtF,EAAaE,aAAa1tF,EAAIwtF,EAAa3oD,KAAOqI,EAAKltC,EAAIktC,EAAK9wC,QAAQyoC,KACtG2oD,EAAaE,aAAa1tF,GAAKuuF,EAE/Bf,EAAa3oD,KAAOypD,CACpB,IAAIE,GAAcl8F,KAAKiI,IAAIjI,KAAKiI,IAAI2yC,EAAK1sC,OAAO0sC,EAAK70B,QAAQ60B,EAAK3sC,MAClEitF,GAAa1oC,SAAY0oC,EAAa1oC,SAAW0pC,EAAeA,EAAchB,EAAa1oC,UAa7F13D,EAAQghG,aAAe,SAASZ,EAAatgD,EAAKuhD,IAC1B,GAAlBA,GAA6C76F,SAAnB66F,IAE5BjhG,KAAK6gG,kBAAkBb,EAAatgD,GAGlCsgD,EAAaL,SAASC,GAAG5wF,MAAM8wC,KAAOJ,EAAKntC,EACzCytF,EAAaL,SAASC,GAAG5wF,MAAM4wC,KAAOF,EAAKltC,EAC7CxS,KAAKkhG,eAAelB,EAAatgD,EAAK,MAGtC1/C,KAAKkhG,eAAelB,EAAatgD,EAAK,MAIpCsgD,EAAaL,SAASC,GAAG5wF,MAAM4wC,KAAOF,EAAKltC,EAC7CxS,KAAKkhG,eAAelB,EAAatgD,EAAK,MAGtC1/C,KAAKkhG,eAAelB,EAAatgD,EAAK,OAc5C9/C,EAAQshG,eAAiB,SAASlB,EAAatgD,EAAKyhD,GAClD,OAAQnB,EAAaL,SAASwB,GAAQlB,eACpC,IAAK,GACHD,EAAaL,SAASwB,GAAQxB,SAASzsF,KAAOwsC,EAC9CsgD,EAAaL,SAASwB,GAAQlB,cAAgB,EAC9CjgG,KAAK6gG,kBAAkBb,EAAaL,SAASwB,GAAQzhD,EACrD,MACF,KAAK,GAGCsgD,EAAaL,SAASwB,GAAQxB,SAASzsF,KAAKX,GAAKmtC,EAAKntC,GACtDytF,EAAaL,SAASwB,GAAQxB,SAASzsF,KAAKV,GAAKktC,EAAKltC,GACxDktC,EAAKntC,GAAKzN,KAAKE,SACf06C,EAAKltC,GAAK1N,KAAKE,WAGfhF,KAAK2gG,aAAaX,EAAaL,SAASwB,IACxCnhG,KAAK4gG,aAAaZ,EAAaL,SAASwB,GAAQzhD,GAElD,MACF,KAAK,GACH1/C,KAAK4gG,aAAaZ,EAAaL,SAASwB,GAAQzhD,KAatD9/C,EAAQ+gG,aAAe,SAASX,GAE9B,GAAIoB,GAAgB,IACc,IAA9BpB,EAAaC,gBACfmB,EAAgBpB,EAAaL,SAASzsF,KACtC8sF,EAAa3oD,KAAO,EAAG2oD,EAAaE,aAAa3tF,EAAI,EAAGytF,EAAaE,aAAa1tF,EAAI,GAExFwtF,EAAaC,cAAgB,EAC7BD,EAAaL,SAASzsF,KAAO,KAC7BlT,KAAKqhG,cAAcrB,EAAa,MAChChgG,KAAKqhG,cAAcrB,EAAa,MAChChgG,KAAKqhG,cAAcrB,EAAa,MAChChgG,KAAKqhG,cAAcrB,EAAa,MAEX,MAAjBoB,GACFphG,KAAK4gG,aAAaZ,EAAaoB,IAenCxhG,EAAQyhG,cAAgB,SAASrB,EAAcmB,GAC7C,GAAIthD,GAAKC,EAAKH,EAAKC,EACf0hD,EAAY,GAAMtB,EAAantF,IACnC,QAAQsuF,GACN,IAAK,KACHthD,EAAOmgD,EAAahxF,MAAM6wC,KAC1BC,EAAOkgD,EAAahxF,MAAM6wC,KAAOyhD,EACjC3hD,EAAOqgD,EAAahxF,MAAM2wC,KAC1BC,EAAOogD,EAAahxF,MAAM2wC,KAAO2hD,CACjC,MACF,KAAK,KACHzhD,EAAOmgD,EAAahxF,MAAM6wC,KAAOyhD,EACjCxhD,EAAOkgD,EAAahxF,MAAM8wC,KAC1BH,EAAOqgD,EAAahxF,MAAM2wC,KAC1BC,EAAOogD,EAAahxF,MAAM2wC,KAAO2hD,CACjC,MACF,KAAK,KACHzhD,EAAOmgD,EAAahxF,MAAM6wC,KAC1BC,EAAOkgD,EAAahxF,MAAM6wC,KAAOyhD,EACjC3hD,EAAOqgD,EAAahxF,MAAM2wC,KAAO2hD,EACjC1hD,EAAOogD,EAAahxF,MAAM4wC,IAC1B,MACF,KAAK,KACHC,EAAOmgD,EAAahxF,MAAM6wC,KAAOyhD,EACjCxhD,EAAOkgD,EAAahxF,MAAM8wC,KAC1BH,EAAOqgD,EAAahxF,MAAM2wC,KAAO2hD,EACjC1hD,EAAOogD,EAAahxF,MAAM4wC,KAK9BogD,EAAaL,SAASwB,IACpBjB,cAAc3tF,EAAE,EAAEC,EAAE,GACpB6kC,KAAK,EACLroC,OAAO6wC,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1C/sC,KAAM,GAAMmtF,EAAantF,KACzBstF,SAAU,EAAIH,EAAaG,SAC3BR,UAAWzsF,KAAK,MAChBokD,SAAU,EACVxf,MAAOkoD,EAAaloD,MAAM,EAC1BmoD,cAAe,IAYnBrgG,EAAQ2hG,UAAY,SAASr7E,EAAIxb,GACJtE,SAAvBpG,KAAKi9F,gBAEP/2E,EAAIO,UAAY,EAEhBzmB,KAAKwhG,YAAYxhG,KAAKi9F,cAAcv9F,KAAKwmB,EAAIxb,KAajD9K,EAAQ4hG,YAAc,SAASC,EAAOv7E,EAAIxb,GAC1BtE,SAAVsE,IACFA,EAAQ,WAGkB,GAAxB+2F,EAAOxB,gBACTjgG,KAAKwhG,YAAYC,EAAO9B,SAASC,GAAG15E,GACpClmB,KAAKwhG,YAAYC,EAAO9B,SAASE,GAAG35E,GACpClmB,KAAKwhG,YAAYC,EAAO9B,SAASI,GAAG75E,GACpClmB,KAAKwhG,YAAYC,EAAO9B,SAASG,GAAG55E,IAEtCA,EAAIY,YAAcpc,EAClBwb,EAAIa,YACJb,EAAIc,OAAOy6E,EAAOzyF,MAAM6wC,KAAK4hD,EAAOzyF,MAAM2wC,MAC1Cz5B,EAAIe,OAAOw6E,EAAOzyF,MAAM8wC,KAAK2hD,EAAOzyF,MAAM2wC,MAC1Cz5B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOy6E,EAAOzyF,MAAM8wC,KAAK2hD,EAAOzyF,MAAM2wC,MAC1Cz5B,EAAIe,OAAOw6E,EAAOzyF,MAAM8wC,KAAK2hD,EAAOzyF,MAAM4wC,MAC1C15B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOy6E,EAAOzyF,MAAM8wC,KAAK2hD,EAAOzyF,MAAM4wC,MAC1C15B,EAAIe,OAAOw6E,EAAOzyF,MAAM6wC,KAAK4hD,EAAOzyF,MAAM4wC,MAC1C15B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOy6E,EAAOzyF,MAAM6wC,KAAK4hD,EAAOzyF,MAAM4wC,MAC1C15B,EAAIe,OAAOw6E,EAAOzyF,MAAM6wC,KAAK4hD,EAAOzyF,MAAM2wC,MAC1Cz5B,EAAIlH,WAaF,SAASnf,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAO6hG,kBACV7hG,EAAOsrE,UAAY,aACnBtrE,EAAO8hG,SAEP9hG,EAAO8/F,YACP9/F,EAAO6hG,gBAAkB,GAEnB7hG"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 051dce07..eb3812ae 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.5.0 - * @date 2014-09-23 + * @date 2014-10-02 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,17 +22,17 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),BackgroundItem:i(29),BoxItem:i(30),PointItem:i(31),RangeItem:i(32)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(33),e.network={Edge:i(34),Groups:i(35),Images:i(36),Node:i(37),Popup:i(38),dotparser:i(39),gephiParser:i(40)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(41),e.hammer=i(42)},function(module,exports,__webpack_require__){var moment=__webpack_require__(41);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,m=u,g=Math.floor(.5*(u+p));if(0==u)g=-1;else if(1==u)r=l[g][i],g=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,g-1)][i],r=l[g][i],a=l[Math.min(l.length-1,g+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(g=Math.max(0,g-1)):e>r&&a>e&&(g=Math.min(l.length-1,g+1)))):(e>r?f=Math.floor(.5*(u+p)):m=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==m?(g=-1,c=!0):(u=m,p=f,g=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return g},exports.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},exports.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var f=h[p];c[f]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var f={},m=0,g=c.length;g>m;m++){var v=c[m];f[v]=t.getValue(p,m)}h(f)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,f=i&&i.filter,m=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&m.push(d));if(i&&i.order&&void 0==t&&this._sort(m,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=m.length;p>c;c++)m[c]=this._filterFields(m[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(m[c]);return s}return m},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(50),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(f-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new u(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new h(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-d,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,d,l,c,p,u,f,m=this.frame.canvas,g=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,g.lineWidth=l,g.fillStyle=a,g.strokeStyle=d,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,f,m;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],m=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,n){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(i instanceof Array||i instanceof vis.DataSet)&&i instanceof Object){var r=n;n=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,n&&this.setOptions(n),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(i instanceof Array||i instanceof vis.DataSet)&&i instanceof Object){var n=s;s=i,i=n}var r=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t){function e(t,e,i,s,o){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(44),h=i(41),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-c,i=e>l,f=i||null===o?o:r.easeInOutQuad(e,h,o,l),m=i||null===n?n:r.easeInOutQuad(e,d,n,l);u=a._applyRange(f,m),p=p||u,u&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?p&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,l="number"==typeof i?i:500,c=(new Date).valueOf(),p=!1;return s()}var u=this._applyRange(o,n);if(u){var f={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",f),this.body.emitter.emit("rangechanged",f)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(41);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(18),r=i(41),a=i(45);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(42),n=i(1),r=i(18),a=i(41),h=i(45);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s -}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var m=this.visibleItems[u];m.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:f,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:f,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"]; -e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=o0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s.prototype._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(42);s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id)},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0)for(var e=0;et.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.prototype.repositionX,s.prototype.repositionY=function(){var t="top"===this.options.orientation;this.dom.content.style.top=t?"":"0",this.dom.content.style.bottom=t?"0":"";var e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height);this.dom.box.style.top=t?"0":"",this.dom.box.style.bottom=t?"":"0",this.dom.box.style.height=e+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4; -return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(50),n=i(42),r=i(51),a=i(1),h=i(44),d=i(3),l=i(4),c=i(39),p=i(40),u=i(35),f=i(36),m=i(37),g=i(34),v=i(38),y=i(48),b=i(49),_=i(46);i(47),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s)) -}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(){var t={};for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e];t[e]={x:Math.round(i.x),y:Math.round(i.y)}}return t},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});this.releaseNode(),1==t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?null!=this.lockedOnNodeId?(this._classicRedraw=this._redraw,this._redraw=this._lockedRedraw):(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this._redraw(),this.moving=!0,this.start())},s.prototype._lockedRedraw=function(){var t={x:this.nodes[this.lockedOnNodeId].x,y:this.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},s=this._getTranslation(),o={x:s.x+i.x*this.scale+this.lockedOnNodeOffset.x,y:s.y+i.y*this.scale+this.lockedOnNodeOffset.y};this._setTranslation(o.x,o.y),this._classicRedraw()},s.prototype.releaseNode=function(){null!=this.lockedOnNodeId&&(this._redraw=this._classicRedraw,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null)},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=a.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(37);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,f,m,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null -}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.options.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==t.textBaseline&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=D.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=D.DELIMITER);var i=O+n();if(C[i])return k=D.DELIMITER,L=i,o(),void o();if(C[O])return k=D.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=D.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=D.IDENTIFIER)}for(k=D.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==D.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=D.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=D.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==D.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=D.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=D.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=D.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom; -var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(60),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(51),r=i(50),a=i(42),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in C)t[e]?i=!0:C[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},D={},C={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return M={},D={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Me.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[ke],pe(Me(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[ke],pe(Me(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?D(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&D(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Me.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Me([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!D(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Me.fn.lang,locale:Me.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=De),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(65)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function D(t,e){return new D.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1) -},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(37);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(37),n=i(34);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge; -i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(42));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this) -}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.resolve=e,e.keys=function(){return[]},t.exports=e},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),BackgroundItem:i(29),BoxItem:i(30),PointItem:i(31),RangeItem:i(32)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(33),e.network={Edge:i(34),Groups:i(35),Images:i(36),Node:i(37),Popup:i(38),dotparser:i(39),gephiParser:i(40)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(41),e.hammer=i(42)},function(module,exports,__webpack_require__){var moment=__webpack_require__(41);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var cssUtil={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};exports.addCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e),o=exports.extend(i,s);t.style.cssText=cssUtil.join(o)},exports.removeCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=cssUtil.join(i)},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,m=u,g=Math.floor(.5*(u+p));if(0==u)g=-1;else if(1==u)r=l[g][i],g=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,g-1)][i],r=l[g][i],a=l[Math.min(l.length-1,g+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(g=Math.max(0,g-1)):e>r&&a>e&&(g=Math.min(l.length-1,g+1)))):(e>r?f=Math.floor(.5*(u+p)):m=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==m?(g=-1,c=!0):(u=m,p=f,g=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return g},exports.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},exports.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var f=h[p];c[f]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var f={},m=0,g=c.length;g>m;m++){var v=c[m];f[v]=t.getValue(p,m)}h(f)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,f=i&&i.filter,m=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&m.push(d));if(i&&i.order&&void 0==t&&this._sort(m,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=m.length;p>c;c++)m[c]=this._filterFields(m[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(m[c]);return s}return m},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(50),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(f-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new u(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new h(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-d,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,d,l,c,p,u,f,m=this.frame.canvas,g=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,g.lineWidth=l,g.fillStyle=a,g.strokeStyle=d,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,f,m;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],m=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t){function e(t,e,i,s,o){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(44),h=i(41),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-c,i=e>l,f=i||null===o?o:r.easeInOutQuad(e,h,o,l),m=i||null===n?n:r.easeInOutQuad(e,d,n,l);u=a._applyRange(f,m),p=p||u,u&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?p&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,l="number"==typeof i?i:500,c=(new Date).valueOf(),p=!1;return s()}var u=this._applyRange(o,n);if(u){var f={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",f),this.body.emitter.emit("rangechanged",f)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&0==l.ignoreStacking&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(41);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(18),r=i(41),a=i(45);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop(); +return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(42),n=i(1),r=i(18),a=i(41),h=i(45);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var m=this.visibleItems[u];m.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:f,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:f,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=o0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s.prototype._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null,this.ignoreStacking=!1}var o=i(42),n=i(1);s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id)},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[]; +if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.prototype.repositionX,s.prototype.repositionY=function(){var t="top"===this.options.orientation;this.dom.content.style.top=t?"":"0",this.dom.content.style.bottom=t?"0":"";var e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height);this.dom.box.style.top=t?"0":"",this.dom.box.style.bottom=t?"":"0",this.dom.box.style.height=e+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(28);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(50),n=i(42),r=i(51),a=i(1),h=i(44),d=i(3),l=i(4),c=i(39),p=i(40),u=i(35),f=i(36),m=i(37),g=i(34),v=i(38),y=i(48),b=i(49),_=i(46);i(47),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s]; +r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(){var t={};for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e];t[e]={x:Math.round(i.x),y:Math.round(i.y)}}return t},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});this.releaseNode(),1==t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?null!=this.lockedOnNodeId?(this._classicRedraw=this._redraw,this._redraw=this._lockedRedraw):(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this._redraw(),this.moving=!0,this.start())},s.prototype._lockedRedraw=function(){var t={x:this.nodes[this.lockedOnNodeId].x,y:this.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},s=this._getTranslation(),o={x:s.x+i.x*this.scale+this.lockedOnNodeOffset.x,y:s.y+i.y*this.scale+this.lockedOnNodeOffset.y};this._setTranslation(o.x,o.y),this._classicRedraw()},s.prototype.releaseNode=function(){null!=this.lockedOnNodeId&&(this._redraw=this._classicRedraw,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null)},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=a.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(37);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,f,m,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0; +for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.options.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==t.textBaseline&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=C.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=C.DELIMITER);var i=O+n();if(D[i])return k=C.DELIMITER,L=i,o(),void o();if(D[O])return k=C.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=C.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==C.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},D={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(60),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(51),r=i(50),a=i(42),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in D)t[e]?i=!0:D[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){D[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++D[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},D={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Me.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[ke],pe(Me(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[ke],pe(Me(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay(); +return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?C(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&C(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)De=yi.pop(),_i[De+"o"]=u(_i[De],De);for(;bi.length;)De=bi.pop(),_i[De+De]=p(_i[De],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Me.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Me([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!C(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(De=wi.length-1;De>=0;--De)L(wi[De]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Me.fn.lang,locale:Me.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(De in ui)a(ui,De)&&we(De.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=Ce),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(65)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e) +},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(37);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(37),n=i(34);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw() +},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(42));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.resolve=e,e.keys=function(){return[]},t.exports=e},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map \ No newline at end of file diff --git a/lib/network/Network.js b/lib/network/Network.js index 6678505a..ef4647eb 100644 --- a/lib/network/Network.js +++ b/lib/network/Network.js @@ -1341,7 +1341,7 @@ Network.prototype._setNodes = function(nodes) { if (nodes instanceof DataSet || nodes instanceof DataView) { this.nodesData = nodes; } - else if (nodes instanceof Array) { + else if (Array.isArray(nodes)) { this.nodesData = new DataSet(); this.nodesData.add(nodes); } @@ -1472,7 +1472,7 @@ Network.prototype._setEdges = function(edges) { if (edges instanceof DataSet || edges instanceof DataView) { this.edgesData = edges; } - else if (edges instanceof Array) { + else if (Array.isArray(edges)) { this.edgesData = new DataSet(); this.edgesData.add(edges); } diff --git a/lib/network/dotparser.js b/lib/network/dotparser.js index d395a36c..af8439c6 100644 --- a/lib/network/dotparser.js +++ b/lib/network/dotparser.js @@ -700,9 +700,9 @@ function chop (text, maxLength) { * @param {function} fn */ function forEach2(array1, array2, fn) { - if (array1 instanceof Array) { + if (Array.isArray(array1)) { array1.forEach(function (elem1) { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(elem1, elem2); }); @@ -713,7 +713,7 @@ function forEach2(array1, array2, fn) { }); } else { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(array1, elem2); }); diff --git a/lib/network/mixins/physics/PhysicsMixin.js b/lib/network/mixins/physics/PhysicsMixin.js index 5cc5ac74..6c925782 100644 --- a/lib/network/mixins/physics/PhysicsMixin.js +++ b/lib/network/mixins/physics/PhysicsMixin.js @@ -689,7 +689,7 @@ function showValueOfRange (id,map,constantsVariableName) { var valueId = id + "_value"; var rangeValue = document.getElementById(id).value; - if (map instanceof Array) { + if (Array.isArray(map)) { document.getElementById(valueId).value = map[parseInt(rangeValue)]; this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } diff --git a/lib/timeline/Graph2d.js b/lib/timeline/Graph2d.js index 95cb49d3..67dddb97 100644 --- a/lib/timeline/Graph2d.js +++ b/lib/timeline/Graph2d.js @@ -20,7 +20,7 @@ var LineGraph = require('./component/LineGraph'); */ function Graph2d (container, items, groups, options) { // if the third element is options, the forth is groups (optionally); - if (!(groups instanceof Array || groups instanceof DataSet) && groups instanceof Object) { + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { var forthArgument = options; options = groups; groups = forthArgument; diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js index f5ee3b4a..4d57e789 100644 --- a/lib/timeline/Timeline.js +++ b/lib/timeline/Timeline.js @@ -24,7 +24,7 @@ function Timeline (container, items, groups, options) { } // if the third element is options, the forth is groups (optionally); - if (!(groups instanceof Array || groups instanceof DataSet) && groups instanceof Object) { + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { var forthArgument = options; options = groups; groups = forthArgument; diff --git a/lib/util.js b/lib/util.js index 3e890b8d..a3928903 100644 --- a/lib/util.js +++ b/lib/util.js @@ -426,7 +426,7 @@ exports.getType = function(object) { if (object instanceof String) { return 'String'; } - if (object instanceof Array) { + if (Array.isArray(object)) { return 'Array'; } if (object instanceof Date) { @@ -506,7 +506,7 @@ exports.removeClassName = function(elem, className) { exports.forEach = function(object, callback) { var i, len; - if (object instanceof Array) { + if (Array.isArray(object)) { // array for (i = 0, len = object.length; i < len; i++) { callback(object[i], i, object);