var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
(function(factory) {
  typeof define == "function" && define.amd ? define(["jquery"], factory) : factory(jQuery);
})(function($) {
  $.ui = $.ui || {}, $.ui.version = "1.12.1";
  /*!
  * jQuery UI Widget 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  var widgetUuid = 0, widgetSlice = Array.prototype.slice;
  $.cleanData = /* @__PURE__ */ function(orig) {
    return function(elems) {
      var events, elem, i;
      for (i = 0; (elem = elems[i]) != null; i++)
        try {
          events = $._data(elem, "events"), events && events.remove && $(elem).triggerHandler("remove");
        } catch {
        }
      orig(elems);
    };
  }($.cleanData), $.widget = function(name, base, prototype) {
    var existingConstructor, constructor, basePrototype, proxiedPrototype = {}, namespace = name.split(".")[0];
    name = name.split(".")[1];
    var fullName = namespace + "-" + name;
    return prototype || (prototype = base, base = $.Widget), $.isArray(prototype) && (prototype = $.extend.apply(null, [{}].concat(prototype))), $.expr[":"][fullName.toLowerCase()] = function(elem) {
      return !!$.data(elem, fullName);
    }, $[namespace] = $[namespace] || {}, existingConstructor = $[namespace][name], constructor = $[namespace][name] = function(options, element) {
      if (!this._createWidget)
        return new constructor(options, element);
      arguments.length && this._createWidget(options, element);
    }, $.extend(constructor, existingConstructor, {
      version: prototype.version,
      // Copy the object used to create the prototype in case we need to
      // redefine the widget later
      _proto: $.extend({}, prototype),
      // Track widgets that inherit from this widget in case this widget is
      // redefined after a widget inherits from it
      _childConstructors: []
    }), basePrototype = new base(), basePrototype.options = $.widget.extend({}, basePrototype.options), $.each(prototype, function(prop, value) {
      if (!$.isFunction(value)) {
        proxiedPrototype[prop] = value;
        return;
      }
      proxiedPrototype[prop] = function() {
        function _super() {
          return base.prototype[prop].apply(this, arguments);
        }
        __name(_super, "_super");
        function _superApply(args) {
          return base.prototype[prop].apply(this, args);
        }
        return __name(_superApply, "_superApply"), function() {
          var __super = this._super, __superApply = this._superApply, returnValue;
          return this._super = _super, this._superApply = _superApply, returnValue = value.apply(this, arguments), this._super = __super, this._superApply = __superApply, returnValue;
        };
      }();
    }), constructor.prototype = $.widget.extend(basePrototype, {
      // TODO: remove support for widgetEventPrefix
      // always use the name + a colon as the prefix, e.g., draggable:start
      // don't prefix for widgets that aren't DOM-based
      widgetEventPrefix: existingConstructor && basePrototype.widgetEventPrefix || name
    }, proxiedPrototype, {
      constructor,
      namespace,
      widgetName: name,
      widgetFullName: fullName
    }), existingConstructor ? ($.each(existingConstructor._childConstructors, function(i, child) {
      var childPrototype = child.prototype;
      $.widget(
        childPrototype.namespace + "." + childPrototype.widgetName,
        constructor,
        child._proto
      );
    }), delete existingConstructor._childConstructors) : base._childConstructors.push(constructor), $.widget.bridge(name, constructor), constructor;
  }, $.widget.extend = function(target) {
    for (var input = widgetSlice.call(arguments, 1), inputIndex = 0, inputLength = input.length, key, value; inputIndex < inputLength; inputIndex++)
      for (key in input[inputIndex])
        value = input[inputIndex][key], input[inputIndex].hasOwnProperty(key) && value !== void 0 && ($.isPlainObject(value) ? target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) : (
          // Don't extend strings, arrays, etc. with objects
          $.widget.extend({}, value)
        ) : target[key] = value);
    return target;
  }, $.widget.bridge = function(name, object) {
    var fullName = object.prototype.widgetFullName || name;
    $.fn[name] = function(options) {
      var isMethodCall = typeof options == "string", args = widgetSlice.call(arguments, 1), returnValue = this;
      return isMethodCall ? !this.length && options === "instance" ? returnValue = void 0 : this.each(function() {
        var methodValue, instance = $.data(this, fullName);
        if (options === "instance")
          return returnValue = instance, !1;
        if (!instance)
          return $.error("cannot call methods on " + name + " prior to initialization; attempted to call method '" + options + "'");
        if (!$.isFunction(instance[options]) || options.charAt(0) === "_")
          return $.error("no such method '" + options + "' for " + name + " widget instance");
        if (methodValue = instance[options].apply(instance, args), methodValue !== instance && methodValue !== void 0)
          return returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue, !1;
      }) : (args.length && (options = $.widget.extend.apply(null, [options].concat(args))), this.each(function() {
        var instance = $.data(this, fullName);
        instance ? (instance.option(options || {}), instance._init && instance._init()) : $.data(this, fullName, new object(options, this));
      })), returnValue;
    };
  }, $.Widget = function() {
  }, $.Widget._childConstructors = [], $.Widget.prototype = {
    widgetName: "widget",
    widgetEventPrefix: "",
    defaultElement: "<div>",
    options: {
      classes: {},
      disabled: !1,
      // Callbacks
      create: null
    },
    _createWidget: /* @__PURE__ */ __name(function(options, element) {
      element = $(element || this.defaultElement || this)[0], this.element = $(element), this.uuid = widgetUuid++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = $(), this.hoverable = $(), this.focusable = $(), this.classesElementLookup = {}, element !== this && ($.data(element, this.widgetFullName, this), this._on(!0, this.element, {
        remove: /* @__PURE__ */ __name(function(event) {
          event.target === element && this.destroy();
        }, "remove")
      }), this.document = $(element.style ? (
        // Element within the document
        element.ownerDocument
      ) : (
        // Element is window or document
        element.document || element
      )), this.window = $(this.document[0].defaultView || this.document[0].parentWindow)), this.options = $.widget.extend(
        {},
        this.options,
        this._getCreateOptions(),
        options
      ), this._create(), this.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger("create", null, this._getCreateEventData()), this._init();
    }, "_createWidget"),
    _getCreateOptions: /* @__PURE__ */ __name(function() {
      return {};
    }, "_getCreateOptions"),
    _getCreateEventData: $.noop,
    _create: $.noop,
    _init: $.noop,
    destroy: /* @__PURE__ */ __name(function() {
      var that = this;
      this._destroy(), $.each(this.classesElementLookup, function(key, value) {
        that._removeClass(value, key);
      }), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget().off(this.eventNamespace).removeAttr("aria-disabled"), this.bindings.off(this.eventNamespace);
    }, "destroy"),
    _destroy: $.noop,
    widget: /* @__PURE__ */ __name(function() {
      return this.element;
    }, "widget"),
    option: /* @__PURE__ */ __name(function(key, value) {
      var options = key, parts, curOption, i;
      if (arguments.length === 0)
        return $.widget.extend({}, this.options);
      if (typeof key == "string")
        if (options = {}, parts = key.split("."), key = parts.shift(), parts.length) {
          for (curOption = options[key] = $.widget.extend({}, this.options[key]), i = 0; i < parts.length - 1; i++)
            curOption[parts[i]] = curOption[parts[i]] || {}, curOption = curOption[parts[i]];
          if (key = parts.pop(), arguments.length === 1)
            return curOption[key] === void 0 ? null : curOption[key];
          curOption[key] = value;
        } else {
          if (arguments.length === 1)
            return this.options[key] === void 0 ? null : this.options[key];
          options[key] = value;
        }
      return this._setOptions(options), this;
    }, "option"),
    _setOptions: /* @__PURE__ */ __name(function(options) {
      var key;
      for (key in options)
        this._setOption(key, options[key]);
      return this;
    }, "_setOptions"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      return key === "classes" && this._setOptionClasses(value), this.options[key] = value, key === "disabled" && this._setOptionDisabled(value), this;
    }, "_setOption"),
    _setOptionClasses: /* @__PURE__ */ __name(function(value) {
      var classKey, elements, currentElements;
      for (classKey in value)
        currentElements = this.classesElementLookup[classKey], !(value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) && (elements = $(currentElements.get()), this._removeClass(currentElements, classKey), elements.addClass(this._classes({
          element: elements,
          keys: classKey,
          classes: value,
          add: !0
        })));
    }, "_setOptionClasses"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!value), value && (this._removeClass(this.hoverable, null, "ui-state-hover"), this._removeClass(this.focusable, null, "ui-state-focus"));
    }, "_setOptionDisabled"),
    enable: /* @__PURE__ */ __name(function() {
      return this._setOptions({ disabled: !1 });
    }, "enable"),
    disable: /* @__PURE__ */ __name(function() {
      return this._setOptions({ disabled: !0 });
    }, "disable"),
    _classes: /* @__PURE__ */ __name(function(options) {
      var full = [], that = this;
      options = $.extend({
        element: this.element,
        classes: this.options.classes || {}
      }, options);
      function processClassString(classes, checkOption) {
        var current, i;
        for (i = 0; i < classes.length; i++)
          current = that.classesElementLookup[classes[i]] || $(), options.add ? current = $($.unique(current.get().concat(options.element.get()))) : current = $(current.not(options.element).get()), that.classesElementLookup[classes[i]] = current, full.push(classes[i]), checkOption && options.classes[classes[i]] && full.push(options.classes[classes[i]]);
      }
      return __name(processClassString, "processClassString"), this._on(options.element, {
        remove: "_untrackClassesElement"
      }), options.keys && processClassString(options.keys.match(/\S+/g) || [], !0), options.extra && processClassString(options.extra.match(/\S+/g) || []), full.join(" ");
    }, "_classes"),
    _untrackClassesElement: /* @__PURE__ */ __name(function(event) {
      var that = this;
      $.each(that.classesElementLookup, function(key, value) {
        $.inArray(event.target, value) !== -1 && (that.classesElementLookup[key] = $(value.not(event.target).get()));
      });
    }, "_untrackClassesElement"),
    _removeClass: /* @__PURE__ */ __name(function(element, keys, extra) {
      return this._toggleClass(element, keys, extra, !1);
    }, "_removeClass"),
    _addClass: /* @__PURE__ */ __name(function(element, keys, extra) {
      return this._toggleClass(element, keys, extra, !0);
    }, "_addClass"),
    _toggleClass: /* @__PURE__ */ __name(function(element, keys, extra, add) {
      add = typeof add == "boolean" ? add : extra;
      var shift = typeof element == "string" || element === null, options = {
        extra: shift ? keys : extra,
        keys: shift ? element : keys,
        element: shift ? this.element : element,
        add
      };
      return options.element.toggleClass(this._classes(options), add), this;
    }, "_toggleClass"),
    _on: /* @__PURE__ */ __name(function(suppressDisabledCheck, element, handlers) {
      var delegateElement, instance = this;
      typeof suppressDisabledCheck != "boolean" && (handlers = element, element = suppressDisabledCheck, suppressDisabledCheck = !1), handlers ? (element = delegateElement = $(element), this.bindings = this.bindings.add(element)) : (handlers = element, element = this.element, delegateElement = this.widget()), $.each(handlers, function(event, handler) {
        function handlerProxy() {
          if (!(!suppressDisabledCheck && (instance.options.disabled === !0 || $(this).hasClass("ui-state-disabled"))))
            return (typeof handler == "string" ? instance[handler] : handler).apply(instance, arguments);
        }
        __name(handlerProxy, "handlerProxy"), typeof handler != "string" && (handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++);
        var match = event.match(/^([\w:-]*)\s*(.*)$/), eventName = match[1] + instance.eventNamespace, selector = match[2];
        selector ? delegateElement.on(eventName, selector, handlerProxy) : element.on(eventName, handlerProxy);
      });
    }, "_on"),
    _off: /* @__PURE__ */ __name(function(element, eventName) {
      eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, element.off(eventName).off(eventName), this.bindings = $(this.bindings.not(element).get()), this.focusable = $(this.focusable.not(element).get()), this.hoverable = $(this.hoverable.not(element).get());
    }, "_off"),
    _delay: /* @__PURE__ */ __name(function(handler, delay) {
      function handlerProxy() {
        return (typeof handler == "string" ? instance[handler] : handler).apply(instance, arguments);
      }
      __name(handlerProxy, "handlerProxy");
      var instance = this;
      return setTimeout(handlerProxy, delay || 0);
    }, "_delay"),
    _hoverable: /* @__PURE__ */ __name(function(element) {
      this.hoverable = this.hoverable.add(element), this._on(element, {
        mouseenter: /* @__PURE__ */ __name(function(event) {
          this._addClass($(event.currentTarget), null, "ui-state-hover");
        }, "mouseenter"),
        mouseleave: /* @__PURE__ */ __name(function(event) {
          this._removeClass($(event.currentTarget), null, "ui-state-hover");
        }, "mouseleave")
      });
    }, "_hoverable"),
    _focusable: /* @__PURE__ */ __name(function(element) {
      this.focusable = this.focusable.add(element), this._on(element, {
        focusin: /* @__PURE__ */ __name(function(event) {
          this._addClass($(event.currentTarget), null, "ui-state-focus");
        }, "focusin"),
        focusout: /* @__PURE__ */ __name(function(event) {
          this._removeClass($(event.currentTarget), null, "ui-state-focus");
        }, "focusout")
      });
    }, "_focusable"),
    _trigger: /* @__PURE__ */ __name(function(type, event, data) {
      var prop, orig, callback = this.options[type];
      if (data = data || {}, event = $.Event(event), event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(), event.target = this.element[0], orig = event.originalEvent, orig)
        for (prop in orig)
          prop in event || (event[prop] = orig[prop]);
      return this.element.trigger(event, data), !($.isFunction(callback) && callback.apply(this.element[0], [event].concat(data)) === !1 || event.isDefaultPrevented());
    }, "_trigger")
  }, $.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect) {
    $.Widget.prototype["_" + method] = function(element, options, callback) {
      typeof options == "string" && (options = { effect: options });
      var hasOptions, effectName = options ? options === !0 || typeof options == "number" ? defaultEffect : options.effect || defaultEffect : method;
      options = options || {}, typeof options == "number" && (options = { duration: options }), hasOptions = !$.isEmptyObject(options), options.complete = callback, options.delay && element.delay(options.delay), hasOptions && $.effects && $.effects.effect[effectName] ? element[method](options) : effectName !== method && element[effectName] ? element[effectName](options.duration, options.easing, callback) : element.queue(function(next) {
        $(this)[method](), callback && callback.call(element[0]), next();
      });
    };
  }), $.widget;
  /*!
  * jQuery UI Position 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://api.jqueryui.com/position/
  */
  (function() {
    var cachedScrollbarWidth, max = Math.max, abs = Math.abs, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position;
    function getOffsets(offsets, width, height) {
      return [
        parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1),
        parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1)
      ];
    }
    __name(getOffsets, "getOffsets");
    function parseCss(element, property) {
      return parseInt($.css(element, property), 10) || 0;
    }
    __name(parseCss, "parseCss");
    function getDimensions(elem) {
      var raw = elem[0];
      return raw.nodeType === 9 ? {
        width: elem.width(),
        height: elem.height(),
        offset: { top: 0, left: 0 }
      } : $.isWindow(raw) ? {
        width: elem.width(),
        height: elem.height(),
        offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
      } : raw.preventDefault ? {
        width: 0,
        height: 0,
        offset: { top: raw.pageY, left: raw.pageX }
      } : {
        width: elem.outerWidth(),
        height: elem.outerHeight(),
        offset: elem.offset()
      };
    }
    __name(getDimensions, "getDimensions"), $.position = {
      scrollbarWidth: /* @__PURE__ */ __name(function() {
        if (cachedScrollbarWidth !== void 0)
          return cachedScrollbarWidth;
        var w1, w2, div = $("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"), innerDiv = div.children()[0];
        return $("body").append(div), w1 = innerDiv.offsetWidth, div.css("overflow", "scroll"), w2 = innerDiv.offsetWidth, w1 === w2 && (w2 = div[0].clientWidth), div.remove(), cachedScrollbarWidth = w1 - w2;
      }, "scrollbarWidth"),
      getScrollInfo: /* @__PURE__ */ __name(function(within) {
        var overflowX = within.isWindow || within.isDocument ? "" : within.element.css("overflow-x"), overflowY = within.isWindow || within.isDocument ? "" : within.element.css("overflow-y"), hasOverflowX = overflowX === "scroll" || overflowX === "auto" && within.width < within.element[0].scrollWidth, hasOverflowY = overflowY === "scroll" || overflowY === "auto" && within.height < within.element[0].scrollHeight;
        return {
          width: hasOverflowY ? $.position.scrollbarWidth() : 0,
          height: hasOverflowX ? $.position.scrollbarWidth() : 0
        };
      }, "getScrollInfo"),
      getWithinInfo: /* @__PURE__ */ __name(function(element) {
        var withinElement = $(element || window), isWindow = $.isWindow(withinElement[0]), isDocument = !!withinElement[0] && withinElement[0].nodeType === 9, hasOffset = !isWindow && !isDocument;
        return {
          element: withinElement,
          isWindow,
          isDocument,
          offset: hasOffset ? $(element).offset() : { left: 0, top: 0 },
          scrollLeft: withinElement.scrollLeft(),
          scrollTop: withinElement.scrollTop(),
          width: withinElement.outerWidth(),
          height: withinElement.outerHeight()
        };
      }, "getWithinInfo")
    }, $.fn.position = function(options) {
      if (!options || !options.of)
        return _position.apply(this, arguments);
      options = $.extend({}, options);
      var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $(options.of), within = $.position.getWithinInfo(options.within), scrollInfo = $.position.getScrollInfo(within), collision = (options.collision || "flip").split(" "), offsets = {};
      return dimensions = getDimensions(target), target[0].preventDefault && (options.at = "left top"), targetWidth = dimensions.width, targetHeight = dimensions.height, targetOffset = dimensions.offset, basePosition = $.extend({}, targetOffset), $.each(["my", "at"], function() {
        var pos = (options[this] || "").split(" "), horizontalOffset, verticalOffset;
        pos.length === 1 && (pos = rhorizontal.test(pos[0]) ? pos.concat(["center"]) : rvertical.test(pos[0]) ? ["center"].concat(pos) : ["center", "center"]), pos[0] = rhorizontal.test(pos[0]) ? pos[0] : "center", pos[1] = rvertical.test(pos[1]) ? pos[1] : "center", horizontalOffset = roffset.exec(pos[0]), verticalOffset = roffset.exec(pos[1]), offsets[this] = [
          horizontalOffset ? horizontalOffset[0] : 0,
          verticalOffset ? verticalOffset[0] : 0
        ], options[this] = [
          rposition.exec(pos[0])[0],
          rposition.exec(pos[1])[0]
        ];
      }), collision.length === 1 && (collision[1] = collision[0]), options.at[0] === "right" ? basePosition.left += targetWidth : options.at[0] === "center" && (basePosition.left += targetWidth / 2), options.at[1] === "bottom" ? basePosition.top += targetHeight : options.at[1] === "center" && (basePosition.top += targetHeight / 2), atOffset = getOffsets(offsets.at, targetWidth, targetHeight), basePosition.left += atOffset[0], basePosition.top += atOffset[1], this.each(function() {
        var collisionPosition, using, elem = $(this), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss(this, "marginLeft"), marginTop = parseCss(this, "marginTop"), collisionWidth = elemWidth + marginLeft + parseCss(this, "marginRight") + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss(this, "marginBottom") + scrollInfo.height, position = $.extend({}, basePosition), myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());
        options.my[0] === "right" ? position.left -= elemWidth : options.my[0] === "center" && (position.left -= elemWidth / 2), options.my[1] === "bottom" ? position.top -= elemHeight : options.my[1] === "center" && (position.top -= elemHeight / 2), position.left += myOffset[0], position.top += myOffset[1], collisionPosition = {
          marginLeft,
          marginTop
        }, $.each(["left", "top"], function(i, dir) {
          $.ui.position[collision[i]] && $.ui.position[collision[i]][dir](position, {
            targetWidth,
            targetHeight,
            elemWidth,
            elemHeight,
            collisionPosition,
            collisionWidth,
            collisionHeight,
            offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],
            my: options.my,
            at: options.at,
            within,
            elem
          });
        }), options.using && (using = /* @__PURE__ */ __name(function(props) {
          var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = {
            target: {
              element: target,
              left: targetOffset.left,
              top: targetOffset.top,
              width: targetWidth,
              height: targetHeight
            },
            element: {
              element: elem,
              left: position.left,
              top: position.top,
              width: elemWidth,
              height: elemHeight
            },
            horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
            vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
          };
          targetWidth < elemWidth && abs(left + right) < targetWidth && (feedback.horizontal = "center"), targetHeight < elemHeight && abs(top + bottom) < targetHeight && (feedback.vertical = "middle"), max(abs(left), abs(right)) > max(abs(top), abs(bottom)) ? feedback.important = "horizontal" : feedback.important = "vertical", options.using.call(this, props, feedback);
        }, "using")), elem.offset($.extend(position, { using }));
      });
    }, $.ui.position = {
      fit: {
        left: /* @__PURE__ */ __name(function(position, data) {
          var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight;
          data.collisionWidth > outerWidth ? overLeft > 0 && overRight <= 0 ? (newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset, position.left += overLeft - newOverRight) : overRight > 0 && overLeft <= 0 ? position.left = withinOffset : overLeft > overRight ? position.left = withinOffset + outerWidth - data.collisionWidth : position.left = withinOffset : overLeft > 0 ? position.left += overLeft : overRight > 0 ? position.left -= overRight : position.left = max(position.left - collisionPosLeft, position.left);
        }, "left"),
        top: /* @__PURE__ */ __name(function(position, data) {
          var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom;
          data.collisionHeight > outerHeight ? overTop > 0 && overBottom <= 0 ? (newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset, position.top += overTop - newOverBottom) : overBottom > 0 && overTop <= 0 ? position.top = withinOffset : overTop > overBottom ? position.top = withinOffset + outerHeight - data.collisionHeight : position.top = withinOffset : overTop > 0 ? position.top += overTop : overBottom > 0 ? position.top -= overBottom : position.top = max(position.top - collisionPosTop, position.top);
        }, "top")
      },
      flip: {
        left: /* @__PURE__ */ __name(function(position, data) {
          var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[0] === "left" ? -data.elemWidth : data.my[0] === "right" ? data.elemWidth : 0, atOffset = data.at[0] === "left" ? data.targetWidth : data.at[0] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[0], newOverRight, newOverLeft;
          overLeft < 0 ? (newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset, (newOverRight < 0 || newOverRight < abs(overLeft)) && (position.left += myOffset + atOffset + offset)) : overRight > 0 && (newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft, (newOverLeft > 0 || abs(newOverLeft) < overRight) && (position.left += myOffset + atOffset + offset));
        }, "left"),
        top: /* @__PURE__ */ __name(function(position, data) {
          var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[1] === "top", myOffset = top ? -data.elemHeight : data.my[1] === "bottom" ? data.elemHeight : 0, atOffset = data.at[1] === "top" ? data.targetHeight : data.at[1] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[1], newOverTop, newOverBottom;
          overTop < 0 ? (newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset, (newOverBottom < 0 || newOverBottom < abs(overTop)) && (position.top += myOffset + atOffset + offset)) : overBottom > 0 && (newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop, (newOverTop > 0 || abs(newOverTop) < overBottom) && (position.top += myOffset + atOffset + offset));
        }, "top")
      },
      flipfit: {
        left: /* @__PURE__ */ __name(function() {
          $.ui.position.flip.left.apply(this, arguments), $.ui.position.fit.left.apply(this, arguments);
        }, "left"),
        top: /* @__PURE__ */ __name(function() {
          $.ui.position.flip.top.apply(this, arguments), $.ui.position.fit.top.apply(this, arguments);
        }, "top")
      }
    };
  })(), $.ui.position;
  /*!
  * jQuery UI :data 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.extend($.expr[":"], {
    data: $.expr.createPseudo ? $.expr.createPseudo(function(dataName) {
      return function(elem) {
        return !!$.data(elem, dataName);
      };
    }) : (
      // Support: jQuery <1.8
      function(elem, i, match) {
        return !!$.data(elem, match[3]);
      }
    )
  });
  /*!
  * jQuery UI Disable Selection 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.fn.extend({
    disableSelection: function() {
      var eventType = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown";
      return function() {
        return this.on(eventType + ".ui-disableSelection", function(event) {
          event.preventDefault();
        });
      };
    }(),
    enableSelection: /* @__PURE__ */ __name(function() {
      return this.off(".ui-disableSelection");
    }, "enableSelection")
  });
  /*!
  * jQuery UI Effects 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  var dataSpace = "ui-effects-", dataSpaceStyle = "ui-effects-style", dataSpaceAnimated = "ui-effects-animated", jQuery2 = $;
  $.effects = {
    effect: {}
  };
  /*!
  * jQuery Color Animations v2.1.2
  * https://github.com/jquery/jquery-color
  *
  * Copyright 2014 jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  *
  * Date: Wed Jan 16 08:47:09 2013 -0600
  */
  (function(jQuery3, undefined$1) {
    var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, stringParsers = [{
      re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      parse: /* @__PURE__ */ __name(function(execResult) {
        return [
          execResult[1],
          execResult[2],
          execResult[3],
          execResult[4]
        ];
      }, "parse")
    }, {
      re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      parse: /* @__PURE__ */ __name(function(execResult) {
        return [
          execResult[1] * 2.55,
          execResult[2] * 2.55,
          execResult[3] * 2.55,
          execResult[4]
        ];
      }, "parse")
    }, {
      // This regex ignores A-F because it's compared against an already lowercased string
      re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
      parse: /* @__PURE__ */ __name(function(execResult) {
        return [
          parseInt(execResult[1], 16),
          parseInt(execResult[2], 16),
          parseInt(execResult[3], 16)
        ];
      }, "parse")
    }, {
      // This regex ignores A-F because it's compared against an already lowercased string
      re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
      parse: /* @__PURE__ */ __name(function(execResult) {
        return [
          parseInt(execResult[1] + execResult[1], 16),
          parseInt(execResult[2] + execResult[2], 16),
          parseInt(execResult[3] + execResult[3], 16)
        ];
      }, "parse")
    }, {
      re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      space: "hsla",
      parse: /* @__PURE__ */ __name(function(execResult) {
        return [
          execResult[1],
          execResult[2] / 100,
          execResult[3] / 100,
          execResult[4]
        ];
      }, "parse")
    }], color = jQuery3.Color = function(color2, green, blue, alpha) {
      return new jQuery3.Color.fn.parse(color2, green, blue, alpha);
    }, spaces = {
      rgba: {
        props: {
          red: {
            idx: 0,
            type: "byte"
          },
          green: {
            idx: 1,
            type: "byte"
          },
          blue: {
            idx: 2,
            type: "byte"
          }
        }
      },
      hsla: {
        props: {
          hue: {
            idx: 0,
            type: "degrees"
          },
          saturation: {
            idx: 1,
            type: "percent"
          },
          lightness: {
            idx: 2,
            type: "percent"
          }
        }
      }
    }, propTypes = {
      byte: {
        floor: !0,
        max: 255
      },
      percent: {
        max: 1
      },
      degrees: {
        mod: 360,
        floor: !0
      }
    }, support = color.support = {}, supportElem = jQuery3("<p>")[0], colors, each = jQuery3.each;
    supportElem.style.cssText = "background-color:rgba(1,1,1,.5)", support.rgba = supportElem.style.backgroundColor.indexOf("rgba") > -1, each(spaces, function(spaceName, space) {
      space.cache = "_" + spaceName, space.props.alpha = {
        idx: 3,
        type: "percent",
        def: 1
      };
    });
    function clamp(value, prop, allowEmpty) {
      var type = propTypes[prop.type] || {};
      return value == null ? allowEmpty || !prop.def ? null : prop.def : (value = type.floor ? ~~value : parseFloat(value), isNaN(value) ? prop.def : type.mod ? (value + type.mod) % type.mod : 0 > value ? 0 : type.max < value ? type.max : value);
    }
    __name(clamp, "clamp");
    function stringParse(string) {
      var inst = color(), rgba = inst._rgba = [];
      return string = string.toLowerCase(), each(stringParsers, function(i, parser) {
        var parsed, match = parser.re.exec(string), values = match && parser.parse(match), spaceName = parser.space || "rgba";
        if (values)
          return parsed = inst[spaceName](values), inst[spaces[spaceName].cache] = parsed[spaces[spaceName].cache], rgba = inst._rgba = parsed._rgba, !1;
      }), rgba.length ? (rgba.join() === "0,0,0,0" && jQuery3.extend(rgba, colors.transparent), inst) : colors[string];
    }
    __name(stringParse, "stringParse"), color.fn = jQuery3.extend(color.prototype, {
      parse: /* @__PURE__ */ __name(function(red, green, blue, alpha) {
        if (red === undefined$1)
          return this._rgba = [null, null, null, null], this;
        (red.jquery || red.nodeType) && (red = jQuery3(red).css(green), green = undefined$1);
        var inst = this, type = jQuery3.type(red), rgba = this._rgba = [];
        if (green !== undefined$1 && (red = [red, green, blue, alpha], type = "array"), type === "string")
          return this.parse(stringParse(red) || colors._default);
        if (type === "array")
          return each(spaces.rgba.props, function(key, prop) {
            rgba[prop.idx] = clamp(red[prop.idx], prop);
          }), this;
        if (type === "object")
          return red instanceof color ? each(spaces, function(spaceName, space) {
            red[space.cache] && (inst[space.cache] = red[space.cache].slice());
          }) : each(spaces, function(spaceName, space) {
            var cache = space.cache;
            each(space.props, function(key, prop) {
              if (!inst[cache] && space.to) {
                if (key === "alpha" || red[key] == null)
                  return;
                inst[cache] = space.to(inst._rgba);
              }
              inst[cache][prop.idx] = clamp(red[key], prop, !0);
            }), inst[cache] && jQuery3.inArray(null, inst[cache].slice(0, 3)) < 0 && (inst[cache][3] = 1, space.from && (inst._rgba = space.from(inst[cache])));
          }), this;
      }, "parse"),
      is: /* @__PURE__ */ __name(function(compare) {
        var is = color(compare), same = !0, inst = this;
        return each(spaces, function(_, space) {
          var localCache, isCache = is[space.cache];
          return isCache && (localCache = inst[space.cache] || space.to && space.to(inst._rgba) || [], each(space.props, function(_2, prop) {
            if (isCache[prop.idx] != null)
              return same = isCache[prop.idx] === localCache[prop.idx], same;
          })), same;
        }), same;
      }, "is"),
      _space: /* @__PURE__ */ __name(function() {
        var used = [], inst = this;
        return each(spaces, function(spaceName, space) {
          inst[space.cache] && used.push(spaceName);
        }), used.pop();
      }, "_space"),
      transition: /* @__PURE__ */ __name(function(other, distance) {
        var end = color(other), spaceName = end._space(), space = spaces[spaceName], startColor = this.alpha() === 0 ? color("transparent") : this, start = startColor[space.cache] || space.to(startColor._rgba), result = start.slice();
        return end = end[space.cache], each(space.props, function(key, prop) {
          var index = prop.idx, startValue = start[index], endValue = end[index], type = propTypes[prop.type] || {};
          endValue !== null && (startValue === null ? result[index] = endValue : (type.mod && (endValue - startValue > type.mod / 2 ? startValue += type.mod : startValue - endValue > type.mod / 2 && (startValue -= type.mod)), result[index] = clamp((endValue - startValue) * distance + startValue, prop)));
        }), this[spaceName](result);
      }, "transition"),
      blend: /* @__PURE__ */ __name(function(opaque) {
        if (this._rgba[3] === 1)
          return this;
        var rgb = this._rgba.slice(), a = rgb.pop(), blend = color(opaque)._rgba;
        return color(jQuery3.map(rgb, function(v, i) {
          return (1 - a) * blend[i] + a * v;
        }));
      }, "blend"),
      toRgbaString: /* @__PURE__ */ __name(function() {
        var prefix = "rgba(", rgba = jQuery3.map(this._rgba, function(v, i) {
          return v ?? (i > 2 ? 1 : 0);
        });
        return rgba[3] === 1 && (rgba.pop(), prefix = "rgb("), prefix + rgba.join() + ")";
      }, "toRgbaString"),
      toHslaString: /* @__PURE__ */ __name(function() {
        var prefix = "hsla(", hsla = jQuery3.map(this.hsla(), function(v, i) {
          return v == null && (v = i > 2 ? 1 : 0), i && i < 3 && (v = Math.round(v * 100) + "%"), v;
        });
        return hsla[3] === 1 && (hsla.pop(), prefix = "hsl("), prefix + hsla.join() + ")";
      }, "toHslaString"),
      toHexString: /* @__PURE__ */ __name(function(includeAlpha) {
        var rgba = this._rgba.slice(), alpha = rgba.pop();
        return includeAlpha && rgba.push(~~(alpha * 255)), "#" + jQuery3.map(rgba, function(v) {
          return v = (v || 0).toString(16), v.length === 1 ? "0" + v : v;
        }).join("");
      }, "toHexString"),
      toString: /* @__PURE__ */ __name(function() {
        return this._rgba[3] === 0 ? "transparent" : this.toRgbaString();
      }, "toString")
    }), color.fn.parse.prototype = color.fn;
    function hue2rgb(p, q, h) {
      return h = (h + 1) % 1, h * 6 < 1 ? p + (q - p) * h * 6 : h * 2 < 1 ? q : h * 3 < 2 ? p + (q - p) * (2 / 3 - h) * 6 : p;
    }
    __name(hue2rgb, "hue2rgb"), spaces.hsla.to = function(rgba) {
      if (rgba[0] == null || rgba[1] == null || rgba[2] == null)
        return [null, null, null, rgba[3]];
      var r = rgba[0] / 255, g = rgba[1] / 255, b = rgba[2] / 255, a = rgba[3], max = Math.max(r, g, b), min = Math.min(r, g, b), diff = max - min, add = max + min, l = add * 0.5, h, s;
      return min === max ? h = 0 : r === max ? h = 60 * (g - b) / diff + 360 : g === max ? h = 60 * (b - r) / diff + 120 : h = 60 * (r - g) / diff + 240, diff === 0 ? s = 0 : l <= 0.5 ? s = diff / add : s = diff / (2 - add), [Math.round(h) % 360, s, l, a ?? 1];
    }, spaces.hsla.from = function(hsla) {
      if (hsla[0] == null || hsla[1] == null || hsla[2] == null)
        return [null, null, null, hsla[3]];
      var h = hsla[0] / 360, s = hsla[1], l = hsla[2], a = hsla[3], q = l <= 0.5 ? l * (1 + s) : l + s - l * s, p = 2 * l - q;
      return [
        Math.round(hue2rgb(p, q, h + 1 / 3) * 255),
        Math.round(hue2rgb(p, q, h) * 255),
        Math.round(hue2rgb(p, q, h - 1 / 3) * 255),
        a
      ];
    }, each(spaces, function(spaceName, space) {
      var props = space.props, cache = space.cache, to = space.to, from = space.from;
      color.fn[spaceName] = function(value) {
        if (to && !this[cache] && (this[cache] = to(this._rgba)), value === undefined$1)
          return this[cache].slice();
        var ret, type = jQuery3.type(value), arr = type === "array" || type === "object" ? value : arguments, local = this[cache].slice();
        return each(props, function(key, prop) {
          var val = arr[type === "object" ? key : prop.idx];
          val == null && (val = local[prop.idx]), local[prop.idx] = clamp(val, prop);
        }), from ? (ret = color(from(local)), ret[cache] = local, ret) : color(local);
      }, each(props, function(key, prop) {
        color.fn[key] || (color.fn[key] = function(value) {
          var vtype = jQuery3.type(value), fn = key === "alpha" ? this._hsla ? "hsla" : "rgba" : spaceName, local = this[fn](), cur = local[prop.idx], match;
          return vtype === "undefined" ? cur : (vtype === "function" && (value = value.call(this, cur), vtype = jQuery3.type(value)), value == null && prop.empty ? this : (vtype === "string" && (match = rplusequals.exec(value), match && (value = cur + parseFloat(match[2]) * (match[1] === "+" ? 1 : -1))), local[prop.idx] = value, this[fn](local)));
        });
      });
    }), color.hook = function(hook) {
      var hooks = hook.split(" ");
      each(hooks, function(i, hook2) {
        jQuery3.cssHooks[hook2] = {
          set: /* @__PURE__ */ __name(function(elem, value) {
            var parsed, curElem, backgroundColor = "";
            if (value !== "transparent" && (jQuery3.type(value) !== "string" || (parsed = stringParse(value)))) {
              if (value = color(parsed || value), !support.rgba && value._rgba[3] !== 1) {
                for (curElem = hook2 === "backgroundColor" ? elem.parentNode : elem; (backgroundColor === "" || backgroundColor === "transparent") && curElem && curElem.style; )
                  try {
                    backgroundColor = jQuery3.css(curElem, "backgroundColor"), curElem = curElem.parentNode;
                  } catch {
                  }
                value = value.blend(backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "_default");
              }
              value = value.toRgbaString();
            }
            try {
              elem.style[hook2] = value;
            } catch {
            }
          }, "set")
        }, jQuery3.fx.step[hook2] = function(fx) {
          fx.colorInit || (fx.start = color(fx.elem, hook2), fx.end = color(fx.end), fx.colorInit = !0), jQuery3.cssHooks[hook2].set(fx.elem, fx.start.transition(fx.end, fx.pos));
        };
      });
    }, color.hook(stepHooks), jQuery3.cssHooks.borderColor = {
      expand: /* @__PURE__ */ __name(function(value) {
        var expanded = {};
        return each(["Top", "Right", "Bottom", "Left"], function(i, part) {
          expanded["border" + part + "Color"] = value;
        }), expanded;
      }, "expand")
    }, colors = jQuery3.Color.names = {
      // 4.1. Basic color keywords
      aqua: "#00ffff",
      black: "#000000",
      blue: "#0000ff",
      fuchsia: "#ff00ff",
      gray: "#808080",
      green: "#008000",
      lime: "#00ff00",
      maroon: "#800000",
      navy: "#000080",
      olive: "#808000",
      purple: "#800080",
      red: "#ff0000",
      silver: "#c0c0c0",
      teal: "#008080",
      white: "#ffffff",
      yellow: "#ffff00",
      // 4.2.3. "transparent" color keyword
      transparent: [null, null, null, 0],
      _default: "#ffffff"
    };
  })(jQuery2), function() {
    var classAnimationActions = ["add", "remove", "toggle"], shorthandStyles = {
      border: 1,
      borderBottom: 1,
      borderColor: 1,
      borderLeft: 1,
      borderRight: 1,
      borderTop: 1,
      borderWidth: 1,
      margin: 1,
      padding: 1
    };
    $.each(
      ["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"],
      function(_, prop) {
        $.fx.step[prop] = function(fx) {
          (fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr) && (jQuery2.style(fx.elem, prop, fx.end), fx.setAttr = !0);
        };
      }
    );
    function getElementStyles(elem) {
      var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : elem.currentStyle, styles = {};
      if (style && style.length && style[0] && style[style[0]])
        for (len = style.length; len--; )
          key = style[len], typeof style[key] == "string" && (styles[$.camelCase(key)] = style[key]);
      else
        for (key in style)
          typeof style[key] == "string" && (styles[key] = style[key]);
      return styles;
    }
    __name(getElementStyles, "getElementStyles");
    function styleDifference(oldStyle, newStyle) {
      var diff = {}, name, value;
      for (name in newStyle)
        value = newStyle[name], oldStyle[name] !== value && (shorthandStyles[name] || ($.fx.step[name] || !isNaN(parseFloat(value))) && (diff[name] = value));
      return diff;
    }
    __name(styleDifference, "styleDifference"), $.fn.addBack || ($.fn.addBack = function(selector) {
      return this.add(
        selector == null ? this.prevObject : this.prevObject.filter(selector)
      );
    }), $.effects.animateClass = function(value, duration, easing, callback) {
      var o = $.speed(duration, easing, callback);
      return this.queue(function() {
        var animated = $(this), baseClass = animated.attr("class") || "", applyClassChange, allAnimations = o.children ? animated.find("*").addBack() : animated;
        allAnimations = allAnimations.map(function() {
          var el = $(this);
          return {
            el,
            start: getElementStyles(this)
          };
        }), applyClassChange = /* @__PURE__ */ __name(function() {
          $.each(classAnimationActions, function(i, action) {
            value[action] && animated[action + "Class"](value[action]);
          });
        }, "applyClassChange"), applyClassChange(), allAnimations = allAnimations.map(function() {
          return this.end = getElementStyles(this.el[0]), this.diff = styleDifference(this.start, this.end), this;
        }), animated.attr("class", baseClass), allAnimations = allAnimations.map(function() {
          var styleInfo = this, dfd = $.Deferred(), opts = $.extend({}, o, {
            queue: !1,
            complete: /* @__PURE__ */ __name(function() {
              dfd.resolve(styleInfo);
            }, "complete")
          });
          return this.el.animate(this.diff, opts), dfd.promise();
        }), $.when.apply($, allAnimations.get()).done(function() {
          applyClassChange(), $.each(arguments, function() {
            var el = this.el;
            $.each(this.diff, function(key) {
              el.css(key, "");
            });
          }), o.complete.call(animated[0]);
        });
      });
    }, $.fn.extend({
      addClass: /* @__PURE__ */ function(orig) {
        return function(classNames, speed, easing, callback) {
          return speed ? $.effects.animateClass.call(
            this,
            { add: classNames },
            speed,
            easing,
            callback
          ) : orig.apply(this, arguments);
        };
      }($.fn.addClass),
      removeClass: /* @__PURE__ */ function(orig) {
        return function(classNames, speed, easing, callback) {
          return arguments.length > 1 ? $.effects.animateClass.call(
            this,
            { remove: classNames },
            speed,
            easing,
            callback
          ) : orig.apply(this, arguments);
        };
      }($.fn.removeClass),
      toggleClass: /* @__PURE__ */ function(orig) {
        return function(classNames, force, speed, easing, callback) {
          return typeof force == "boolean" || force === void 0 ? speed ? $.effects.animateClass.call(
            this,
            force ? { add: classNames } : { remove: classNames },
            speed,
            easing,
            callback
          ) : orig.apply(this, arguments) : $.effects.animateClass.call(
            this,
            { toggle: classNames },
            force,
            speed,
            easing
          );
        };
      }($.fn.toggleClass),
      switchClass: /* @__PURE__ */ __name(function(remove, add, speed, easing, callback) {
        return $.effects.animateClass.call(this, {
          add,
          remove
        }, speed, easing, callback);
      }, "switchClass")
    });
  }(), function() {
    $.expr && $.expr.filters && $.expr.filters.animated && ($.expr.filters.animated = /* @__PURE__ */ function(orig) {
      return function(elem) {
        return !!$(elem).data(dataSpaceAnimated) || orig(elem);
      };
    }($.expr.filters.animated)), $.uiBackCompat !== !1 && $.extend($.effects, {
      // Saves a set of properties in a data storage
      save: /* @__PURE__ */ __name(function(element, set) {
        for (var i = 0, length = set.length; i < length; i++)
          set[i] !== null && element.data(dataSpace + set[i], element[0].style[set[i]]);
      }, "save"),
      // Restores a set of previously saved properties from a data storage
      restore: /* @__PURE__ */ __name(function(element, set) {
        for (var val, i = 0, length = set.length; i < length; i++)
          set[i] !== null && (val = element.data(dataSpace + set[i]), element.css(set[i], val));
      }, "restore"),
      setMode: /* @__PURE__ */ __name(function(el, mode) {
        return mode === "toggle" && (mode = el.is(":hidden") ? "show" : "hide"), mode;
      }, "setMode"),
      // Wraps the element around a wrapper that copies position properties
      createWrapper: /* @__PURE__ */ __name(function(element) {
        if (element.parent().is(".ui-effects-wrapper"))
          return element.parent();
        var props = {
          width: element.outerWidth(!0),
          height: element.outerHeight(!0),
          float: element.css("float")
        }, wrapper = $("<div></div>").addClass("ui-effects-wrapper").css({
          fontSize: "100%",
          background: "transparent",
          border: "none",
          margin: 0,
          padding: 0
        }), size = {
          width: element.width(),
          height: element.height()
        }, active = document.activeElement;
        try {
          active.id;
        } catch {
          active = document.body;
        }
        return element.wrap(wrapper), (element[0] === active || $.contains(element[0], active)) && $(active).trigger("focus"), wrapper = element.parent(), element.css("position") === "static" ? (wrapper.css({ position: "relative" }), element.css({ position: "relative" })) : ($.extend(props, {
          position: element.css("position"),
          zIndex: element.css("z-index")
        }), $.each(["top", "left", "bottom", "right"], function(i, pos) {
          props[pos] = element.css(pos), isNaN(parseInt(props[pos], 10)) && (props[pos] = "auto");
        }), element.css({
          position: "relative",
          top: 0,
          left: 0,
          right: "auto",
          bottom: "auto"
        })), element.css(size), wrapper.css(props).show();
      }, "createWrapper"),
      removeWrapper: /* @__PURE__ */ __name(function(element) {
        var active = document.activeElement;
        return element.parent().is(".ui-effects-wrapper") && (element.parent().replaceWith(element), (element[0] === active || $.contains(element[0], active)) && $(active).trigger("focus")), element;
      }, "removeWrapper")
    }), $.extend($.effects, {
      version: "1.12.1",
      define: /* @__PURE__ */ __name(function(name, mode, effect) {
        return effect || (effect = mode, mode = "effect"), $.effects.effect[name] = effect, $.effects.effect[name].mode = mode, effect;
      }, "define"),
      scaledDimensions: /* @__PURE__ */ __name(function(element, percent, direction) {
        if (percent === 0)
          return {
            height: 0,
            width: 0,
            outerHeight: 0,
            outerWidth: 0
          };
        var x = direction !== "horizontal" ? (percent || 100) / 100 : 1, y = direction !== "vertical" ? (percent || 100) / 100 : 1;
        return {
          height: element.height() * y,
          width: element.width() * x,
          outerHeight: element.outerHeight() * y,
          outerWidth: element.outerWidth() * x
        };
      }, "scaledDimensions"),
      clipToBox: /* @__PURE__ */ __name(function(animation) {
        return {
          width: animation.clip.right - animation.clip.left,
          height: animation.clip.bottom - animation.clip.top,
          left: animation.clip.left,
          top: animation.clip.top
        };
      }, "clipToBox"),
      // Injects recently queued functions to be first in line (after "inprogress")
      unshift: /* @__PURE__ */ __name(function(element, queueLength, count) {
        var queue = element.queue();
        queueLength > 1 && queue.splice.apply(
          queue,
          [1, 0].concat(queue.splice(queueLength, count))
        ), element.dequeue();
      }, "unshift"),
      saveStyle: /* @__PURE__ */ __name(function(element) {
        element.data(dataSpaceStyle, element[0].style.cssText);
      }, "saveStyle"),
      restoreStyle: /* @__PURE__ */ __name(function(element) {
        element[0].style.cssText = element.data(dataSpaceStyle) || "", element.removeData(dataSpaceStyle);
      }, "restoreStyle"),
      mode: /* @__PURE__ */ __name(function(element, mode) {
        var hidden = element.is(":hidden");
        return mode === "toggle" && (mode = hidden ? "show" : "hide"), (hidden ? mode === "hide" : mode === "show") && (mode = "none"), mode;
      }, "mode"),
      // Translates a [top,left] array into a baseline value
      getBaseline: /* @__PURE__ */ __name(function(origin, original) {
        var y, x;
        switch (origin[0]) {
          case "top":
            y = 0;
            break;
          case "middle":
            y = 0.5;
            break;
          case "bottom":
            y = 1;
            break;
          default:
            y = origin[0] / original.height;
        }
        switch (origin[1]) {
          case "left":
            x = 0;
            break;
          case "center":
            x = 0.5;
            break;
          case "right":
            x = 1;
            break;
          default:
            x = origin[1] / original.width;
        }
        return {
          x,
          y
        };
      }, "getBaseline"),
      // Creates a placeholder element so that the original element can be made absolute
      createPlaceholder: /* @__PURE__ */ __name(function(element) {
        var placeholder, cssPosition = element.css("position"), position = element.position();
        return element.css({
          marginTop: element.css("marginTop"),
          marginBottom: element.css("marginBottom"),
          marginLeft: element.css("marginLeft"),
          marginRight: element.css("marginRight")
        }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()), /^(static|relative)/.test(cssPosition) && (cssPosition = "absolute", placeholder = $("<" + element[0].nodeName + ">").insertAfter(element).css({
          // Convert inline to inline block to account for inline elements
          // that turn to inline block based on content (like img)
          display: /^(inline|ruby)/.test(element.css("display")) ? "inline-block" : "block",
          visibility: "hidden",
          // Margins need to be set to account for margin collapse
          marginTop: element.css("marginTop"),
          marginBottom: element.css("marginBottom"),
          marginLeft: element.css("marginLeft"),
          marginRight: element.css("marginRight"),
          float: element.css("float")
        }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()).addClass("ui-effects-placeholder"), element.data(dataSpace + "placeholder", placeholder)), element.css({
          position: cssPosition,
          left: position.left,
          top: position.top
        }), placeholder;
      }, "createPlaceholder"),
      removePlaceholder: /* @__PURE__ */ __name(function(element) {
        var dataKey = dataSpace + "placeholder", placeholder = element.data(dataKey);
        placeholder && (placeholder.remove(), element.removeData(dataKey));
      }, "removePlaceholder"),
      // Removes a placeholder if it exists and restores
      // properties that were modified during placeholder creation
      cleanUp: /* @__PURE__ */ __name(function(element) {
        $.effects.restoreStyle(element), $.effects.removePlaceholder(element);
      }, "cleanUp"),
      setTransition: /* @__PURE__ */ __name(function(element, list, factor, value) {
        return value = value || {}, $.each(list, function(i, x) {
          var unit = element.cssUnit(x);
          unit[0] > 0 && (value[x] = unit[0] * factor + unit[1]);
        }), value;
      }, "setTransition")
    });
    function _normalizeArguments(effect, options, speed, callback) {
      return $.isPlainObject(effect) && (options = effect, effect = effect.effect), effect = { effect }, options == null && (options = {}), $.isFunction(options) && (callback = options, speed = null, options = {}), (typeof options == "number" || $.fx.speeds[options]) && (callback = speed, speed = options, options = {}), $.isFunction(speed) && (callback = speed, speed = null), options && $.extend(effect, options), speed = speed || options.duration, effect.duration = $.fx.off ? 0 : typeof speed == "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default, effect.complete = callback || options.complete, effect;
    }
    __name(_normalizeArguments, "_normalizeArguments");
    function standardAnimationOption(option) {
      return !!(!option || typeof option == "number" || $.fx.speeds[option] || typeof option == "string" && !$.effects.effect[option] || $.isFunction(option) || typeof option == "object" && !option.effect);
    }
    __name(standardAnimationOption, "standardAnimationOption"), $.fn.extend({
      effect: /* @__PURE__ */ __name(function() {
        var args = _normalizeArguments.apply(this, arguments), effectMethod = $.effects.effect[args.effect], defaultMode = effectMethod.mode, queue = args.queue, queueName = queue || "fx", complete = args.complete, mode = args.mode, modes = [], prefilter = /* @__PURE__ */ __name(function(next) {
          var el = $(this), normalizedMode = $.effects.mode(el, mode) || defaultMode;
          el.data(dataSpaceAnimated, !0), modes.push(normalizedMode), defaultMode && (normalizedMode === "show" || normalizedMode === defaultMode && normalizedMode === "hide") && el.show(), (!defaultMode || normalizedMode !== "none") && $.effects.saveStyle(el), $.isFunction(next) && next();
        }, "prefilter");
        if ($.fx.off || !effectMethod)
          return mode ? this[mode](args.duration, complete) : this.each(function() {
            complete && complete.call(this);
          });
        function run(next) {
          var elem = $(this);
          function cleanup() {
            elem.removeData(dataSpaceAnimated), $.effects.cleanUp(elem), args.mode === "hide" && elem.hide(), done();
          }
          __name(cleanup, "cleanup");
          function done() {
            $.isFunction(complete) && complete.call(elem[0]), $.isFunction(next) && next();
          }
          __name(done, "done"), args.mode = modes.shift(), $.uiBackCompat !== !1 && !defaultMode ? (elem.is(":hidden") ? mode === "hide" : mode === "show") ? (elem[mode](), done()) : effectMethod.call(elem[0], args, done) : args.mode === "none" ? (elem[mode](), done()) : effectMethod.call(elem[0], args, cleanup);
        }
        return __name(run, "run"), queue === !1 ? this.each(prefilter).each(run) : this.queue(queueName, prefilter).queue(queueName, run);
      }, "effect"),
      show: /* @__PURE__ */ function(orig) {
        return function(option) {
          if (standardAnimationOption(option))
            return orig.apply(this, arguments);
          var args = _normalizeArguments.apply(this, arguments);
          return args.mode = "show", this.effect.call(this, args);
        };
      }($.fn.show),
      hide: /* @__PURE__ */ function(orig) {
        return function(option) {
          if (standardAnimationOption(option))
            return orig.apply(this, arguments);
          var args = _normalizeArguments.apply(this, arguments);
          return args.mode = "hide", this.effect.call(this, args);
        };
      }($.fn.hide),
      toggle: /* @__PURE__ */ function(orig) {
        return function(option) {
          if (standardAnimationOption(option) || typeof option == "boolean")
            return orig.apply(this, arguments);
          var args = _normalizeArguments.apply(this, arguments);
          return args.mode = "toggle", this.effect.call(this, args);
        };
      }($.fn.toggle),
      cssUnit: /* @__PURE__ */ __name(function(key) {
        var style = this.css(key), val = [];
        return $.each(["em", "px", "%", "pt"], function(i, unit) {
          style.indexOf(unit) > 0 && (val = [parseFloat(style), unit]);
        }), val;
      }, "cssUnit"),
      cssClip: /* @__PURE__ */ __name(function(clipObj) {
        return clipObj ? this.css("clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + clipObj.bottom + "px " + clipObj.left + "px)") : parseClip(this.css("clip"), this);
      }, "cssClip"),
      transfer: /* @__PURE__ */ __name(function(options, done) {
        var element = $(this), target = $(options.to), targetFixed = target.css("position") === "fixed", body = $("body"), fixTop = targetFixed ? body.scrollTop() : 0, fixLeft = targetFixed ? body.scrollLeft() : 0, endPosition = target.offset(), animation = {
          top: endPosition.top - fixTop,
          left: endPosition.left - fixLeft,
          height: target.innerHeight(),
          width: target.innerWidth()
        }, startPosition = element.offset(), transfer = $("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(options.className).css({
          top: startPosition.top - fixTop,
          left: startPosition.left - fixLeft,
          height: element.innerHeight(),
          width: element.innerWidth(),
          position: targetFixed ? "fixed" : "absolute"
        }).animate(animation, options.duration, options.easing, function() {
          transfer.remove(), $.isFunction(done) && done();
        });
      }, "transfer")
    });
    function parseClip(str, element) {
      var outerWidth = element.outerWidth(), outerHeight = element.outerHeight(), clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, values = clipRegex.exec(str) || ["", 0, outerWidth, outerHeight, 0];
      return {
        top: parseFloat(values[1]) || 0,
        right: values[2] === "auto" ? outerWidth : parseFloat(values[2]),
        bottom: values[3] === "auto" ? outerHeight : parseFloat(values[3]),
        left: parseFloat(values[4]) || 0
      };
    }
    __name(parseClip, "parseClip"), $.fx.step.clip = function(fx) {
      fx.clipInit || (fx.start = $(fx.elem).cssClip(), typeof fx.end == "string" && (fx.end = parseClip(fx.end, fx.elem)), fx.clipInit = !0), $(fx.elem).cssClip({
        top: fx.pos * (fx.end.top - fx.start.top) + fx.start.top,
        right: fx.pos * (fx.end.right - fx.start.right) + fx.start.right,
        bottom: fx.pos * (fx.end.bottom - fx.start.bottom) + fx.start.bottom,
        left: fx.pos * (fx.end.left - fx.start.left) + fx.start.left
      });
    };
  }(), function() {
    var baseEasings = {};
    $.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function(i, name) {
      baseEasings[name] = function(p) {
        return Math.pow(p, i + 2);
      };
    }), $.extend(baseEasings, {
      Sine: /* @__PURE__ */ __name(function(p) {
        return 1 - Math.cos(p * Math.PI / 2);
      }, "Sine"),
      Circ: /* @__PURE__ */ __name(function(p) {
        return 1 - Math.sqrt(1 - p * p);
      }, "Circ"),
      Elastic: /* @__PURE__ */ __name(function(p) {
        return p === 0 || p === 1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(((p - 1) * 80 - 7.5) * Math.PI / 15);
      }, "Elastic"),
      Back: /* @__PURE__ */ __name(function(p) {
        return p * p * (3 * p - 2);
      }, "Back"),
      Bounce: /* @__PURE__ */ __name(function(p) {
        for (var pow2, bounce = 4; p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11; )
          ;
        return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);
      }, "Bounce")
    }), $.each(baseEasings, function(name, easeIn) {
      $.easing["easeIn" + name] = easeIn, $.easing["easeOut" + name] = function(p) {
        return 1 - easeIn(1 - p);
      }, $.easing["easeInOut" + name] = function(p) {
        return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2;
      };
    });
  }(), $.effects;
  /*!
  * jQuery UI Effects Blind 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("blind", "hide", function(options, done) {
    var map = {
      up: ["bottom", "top"],
      vertical: ["bottom", "top"],
      down: ["top", "bottom"],
      left: ["right", "left"],
      horizontal: ["right", "left"],
      right: ["left", "right"]
    }, element = $(this), direction = options.direction || "up", start = element.cssClip(), animate = { clip: $.extend({}, start) }, placeholder = $.effects.createPlaceholder(element);
    animate.clip[map[direction][0]] = animate.clip[map[direction][1]], options.mode === "show" && (element.cssClip(animate.clip), placeholder && placeholder.css($.effects.clipToBox(animate)), animate.clip = start), placeholder && placeholder.animate($.effects.clipToBox(animate), options.duration, options.easing), element.animate(animate, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  });
  /*!
  * jQuery UI Effects Bounce 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("bounce", function(options, done) {
    var upAnim, downAnim, refValue, element = $(this), mode = options.mode, hide = mode === "hide", show = mode === "show", direction = options.direction || "up", distance = options.distance, times = options.times || 5, anims = times * 2 + (show || hide ? 1 : 0), speed = options.duration / anims, easing = options.easing, ref = direction === "up" || direction === "down" ? "top" : "left", motion = direction === "up" || direction === "left", i = 0, queuelen = element.queue().length;
    for ($.effects.createPlaceholder(element), refValue = element.css(ref), distance || (distance = element[ref === "top" ? "outerHeight" : "outerWidth"]() / 3), show && (downAnim = { opacity: 1 }, downAnim[ref] = refValue, element.css("opacity", 0).css(ref, motion ? -distance * 2 : distance * 2).animate(downAnim, speed, easing)), hide && (distance = distance / Math.pow(2, times - 1)), downAnim = {}, downAnim[ref] = refValue; i < times; i++)
      upAnim = {}, upAnim[ref] = (motion ? "-=" : "+=") + distance, element.animate(upAnim, speed, easing).animate(downAnim, speed, easing), distance = hide ? distance * 2 : distance / 2;
    hide && (upAnim = { opacity: 0 }, upAnim[ref] = (motion ? "-=" : "+=") + distance, element.animate(upAnim, speed, easing)), element.queue(done), $.effects.unshift(element, queuelen, anims + 1);
  });
  /*!
  * jQuery UI Effects Clip 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("clip", "hide", function(options, done) {
    var start, animate = {}, element = $(this), direction = options.direction || "vertical", both = direction === "both", horizontal = both || direction === "horizontal", vertical = both || direction === "vertical";
    start = element.cssClip(), animate.clip = {
      top: vertical ? (start.bottom - start.top) / 2 : start.top,
      right: horizontal ? (start.right - start.left) / 2 : start.right,
      bottom: vertical ? (start.bottom - start.top) / 2 : start.bottom,
      left: horizontal ? (start.right - start.left) / 2 : start.left
    }, $.effects.createPlaceholder(element), options.mode === "show" && (element.cssClip(animate.clip), animate.clip = start), element.animate(animate, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  });
  /*!
  * jQuery UI Effects Drop 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("drop", "hide", function(options, done) {
    var distance, element = $(this), mode = options.mode, show = mode === "show", direction = options.direction || "left", ref = direction === "up" || direction === "down" ? "top" : "left", motion = direction === "up" || direction === "left" ? "-=" : "+=", oppositeMotion = motion === "+=" ? "-=" : "+=", animation = {
      opacity: 0
    };
    $.effects.createPlaceholder(element), distance = options.distance || element[ref === "top" ? "outerHeight" : "outerWidth"](!0) / 2, animation[ref] = motion + distance, show && (element.css(animation), animation[ref] = oppositeMotion + distance, animation.opacity = 1), element.animate(animation, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  });
  /*!
  * jQuery UI Effects Explode 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("explode", "hide", function(options, done) {
    var i, j, left, top, mx, my, rows = options.pieces ? Math.round(Math.sqrt(options.pieces)) : 3, cells = rows, element = $(this), mode = options.mode, show = mode === "show", offset = element.show().css("visibility", "hidden").offset(), width = Math.ceil(element.outerWidth() / cells), height = Math.ceil(element.outerHeight() / rows), pieces = [];
    function childComplete() {
      pieces.push(this), pieces.length === rows * cells && animComplete();
    }
    for (__name(childComplete, "childComplete"), i = 0; i < rows; i++)
      for (top = offset.top + i * height, my = i - (rows - 1) / 2, j = 0; j < cells; j++)
        left = offset.left + j * width, mx = j - (cells - 1) / 2, element.clone().appendTo("body").wrap("<div></div>").css({
          position: "absolute",
          visibility: "visible",
          left: -j * width,
          top: -i * height
        }).parent().addClass("ui-effects-explode").css({
          position: "absolute",
          overflow: "hidden",
          width,
          height,
          left: left + (show ? mx * width : 0),
          top: top + (show ? my * height : 0),
          opacity: show ? 0 : 1
        }).animate({
          left: left + (show ? 0 : mx * width),
          top: top + (show ? 0 : my * height),
          opacity: show ? 1 : 0
        }, options.duration || 500, options.easing, childComplete);
    function animComplete() {
      element.css({
        visibility: "visible"
      }), $(pieces).remove(), done();
    }
    __name(animComplete, "animComplete");
  });
  /*!
  * jQuery UI Effects Fade 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("fade", "toggle", function(options, done) {
    var show = options.mode === "show";
    $(this).css("opacity", show ? 0 : 1).animate({
      opacity: show ? 1 : 0
    }, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  });
  /*!
  * jQuery UI Effects Fold 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("fold", "hide", function(options, done) {
    var element = $(this), mode = options.mode, show = mode === "show", hide = mode === "hide", size = options.size || 15, percent = /([0-9]+)%/.exec(size), horizFirst = !!options.horizFirst, ref = horizFirst ? ["right", "bottom"] : ["bottom", "right"], duration = options.duration / 2, placeholder = $.effects.createPlaceholder(element), start = element.cssClip(), animation1 = { clip: $.extend({}, start) }, animation2 = { clip: $.extend({}, start) }, distance = [start[ref[0]], start[ref[1]]], queuelen = element.queue().length;
    percent && (size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1]), animation1.clip[ref[0]] = size, animation2.clip[ref[0]] = size, animation2.clip[ref[1]] = 0, show && (element.cssClip(animation2.clip), placeholder && placeholder.css($.effects.clipToBox(animation2)), animation2.clip = start), element.queue(function(next) {
      placeholder && placeholder.animate($.effects.clipToBox(animation1), duration, options.easing).animate($.effects.clipToBox(animation2), duration, options.easing), next();
    }).animate(animation1, duration, options.easing).animate(animation2, duration, options.easing).queue(done), $.effects.unshift(element, queuelen, 4);
  });
  /*!
  * jQuery UI Effects Highlight 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("highlight", "show", function(options, done) {
    var element = $(this), animation = {
      backgroundColor: element.css("backgroundColor")
    };
    options.mode === "hide" && (animation.opacity = 0), $.effects.saveStyle(element), element.css({
      backgroundImage: "none",
      backgroundColor: options.color || "#ffff99"
    }).animate(animation, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  });
  /*!
  * jQuery UI Effects Size 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("size", function(options, done) {
    var baseline, factor, temp, element = $(this), cProps = ["fontSize"], vProps = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"], hProps = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"], mode = options.mode, restore = mode !== "effect", scale = options.scale || "both", origin = options.origin || ["middle", "center"], position = element.css("position"), pos = element.position(), original = $.effects.scaledDimensions(element), from = options.from || original, to = options.to || $.effects.scaledDimensions(element, 0);
    $.effects.createPlaceholder(element), mode === "show" && (temp = from, from = to, to = temp), factor = {
      from: {
        y: from.height / original.height,
        x: from.width / original.width
      },
      to: {
        y: to.height / original.height,
        x: to.width / original.width
      }
    }, (scale === "box" || scale === "both") && (factor.from.y !== factor.to.y && (from = $.effects.setTransition(element, vProps, factor.from.y, from), to = $.effects.setTransition(element, vProps, factor.to.y, to)), factor.from.x !== factor.to.x && (from = $.effects.setTransition(element, hProps, factor.from.x, from), to = $.effects.setTransition(element, hProps, factor.to.x, to))), (scale === "content" || scale === "both") && factor.from.y !== factor.to.y && (from = $.effects.setTransition(element, cProps, factor.from.y, from), to = $.effects.setTransition(element, cProps, factor.to.y, to)), origin && (baseline = $.effects.getBaseline(origin, original), from.top = (original.outerHeight - from.outerHeight) * baseline.y + pos.top, from.left = (original.outerWidth - from.outerWidth) * baseline.x + pos.left, to.top = (original.outerHeight - to.outerHeight) * baseline.y + pos.top, to.left = (original.outerWidth - to.outerWidth) * baseline.x + pos.left), element.css(from), (scale === "content" || scale === "both") && (vProps = vProps.concat(["marginTop", "marginBottom"]).concat(cProps), hProps = hProps.concat(["marginLeft", "marginRight"]), element.find("*[width]").each(function() {
      var child = $(this), childOriginal = $.effects.scaledDimensions(child), childFrom = {
        height: childOriginal.height * factor.from.y,
        width: childOriginal.width * factor.from.x,
        outerHeight: childOriginal.outerHeight * factor.from.y,
        outerWidth: childOriginal.outerWidth * factor.from.x
      }, childTo = {
        height: childOriginal.height * factor.to.y,
        width: childOriginal.width * factor.to.x,
        outerHeight: childOriginal.height * factor.to.y,
        outerWidth: childOriginal.width * factor.to.x
      };
      factor.from.y !== factor.to.y && (childFrom = $.effects.setTransition(child, vProps, factor.from.y, childFrom), childTo = $.effects.setTransition(child, vProps, factor.to.y, childTo)), factor.from.x !== factor.to.x && (childFrom = $.effects.setTransition(child, hProps, factor.from.x, childFrom), childTo = $.effects.setTransition(child, hProps, factor.to.x, childTo)), restore && $.effects.saveStyle(child), child.css(childFrom), child.animate(childTo, options.duration, options.easing, function() {
        restore && $.effects.restoreStyle(child);
      });
    })), element.animate(to, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: /* @__PURE__ */ __name(function() {
        var offset = element.offset();
        to.opacity === 0 && element.css("opacity", from.opacity), restore || (element.css("position", position === "static" ? "relative" : position).offset(offset), $.effects.saveStyle(element)), done();
      }, "complete")
    });
  });
  /*!
  * jQuery UI Effects Scale 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("scale", function(options, done) {
    var el = $(this), mode = options.mode, percent = parseInt(options.percent, 10) || (parseInt(options.percent, 10) === 0 || mode !== "effect" ? 0 : 100), newOptions = $.extend(!0, {
      from: $.effects.scaledDimensions(el),
      to: $.effects.scaledDimensions(el, percent, options.direction || "both"),
      origin: options.origin || ["middle", "center"]
    }, options);
    options.fade && (newOptions.from.opacity = 1, newOptions.to.opacity = 0), $.effects.effect.size.call(this, newOptions, done);
  });
  /*!
  * jQuery UI Effects Puff 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("puff", "hide", function(options, done) {
    var newOptions = $.extend(!0, {}, options, {
      fade: !0,
      percent: parseInt(options.percent, 10) || 150
    });
    $.effects.effect.scale.call(this, newOptions, done);
  });
  /*!
  * jQuery UI Effects Pulsate 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("pulsate", "show", function(options, done) {
    var element = $(this), mode = options.mode, show = mode === "show", hide = mode === "hide", showhide = show || hide, anims = (options.times || 5) * 2 + (showhide ? 1 : 0), duration = options.duration / anims, animateTo = 0, i = 1, queuelen = element.queue().length;
    for ((show || !element.is(":visible")) && (element.css("opacity", 0).show(), animateTo = 1); i < anims; i++)
      element.animate({ opacity: animateTo }, duration, options.easing), animateTo = 1 - animateTo;
    element.animate({ opacity: animateTo }, duration, options.easing), element.queue(done), $.effects.unshift(element, queuelen, anims + 1);
  });
  /*!
  * jQuery UI Effects Shake 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("shake", function(options, done) {
    var i = 1, element = $(this), direction = options.direction || "left", distance = options.distance || 20, times = options.times || 3, anims = times * 2 + 1, speed = Math.round(options.duration / anims), ref = direction === "up" || direction === "down" ? "top" : "left", positiveMotion = direction === "up" || direction === "left", animation = {}, animation1 = {}, animation2 = {}, queuelen = element.queue().length;
    for ($.effects.createPlaceholder(element), animation[ref] = (positiveMotion ? "-=" : "+=") + distance, animation1[ref] = (positiveMotion ? "+=" : "-=") + distance * 2, animation2[ref] = (positiveMotion ? "-=" : "+=") + distance * 2, element.animate(animation, speed, options.easing); i < times; i++)
      element.animate(animation1, speed, options.easing).animate(animation2, speed, options.easing);
    element.animate(animation1, speed, options.easing).animate(animation, speed / 2, options.easing).queue(done), $.effects.unshift(element, queuelen, anims + 1);
  });
  /*!
  * jQuery UI Effects Slide 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.effects.define("slide", "show", function(options, done) {
    var startClip, startRef, element = $(this), map = {
      up: ["bottom", "top"],
      down: ["top", "bottom"],
      left: ["right", "left"],
      right: ["left", "right"]
    }, mode = options.mode, direction = options.direction || "left", ref = direction === "up" || direction === "down" ? "top" : "left", positiveMotion = direction === "up" || direction === "left", distance = options.distance || element[ref === "top" ? "outerHeight" : "outerWidth"](!0), animation = {};
    $.effects.createPlaceholder(element), startClip = element.cssClip(), startRef = element.position()[ref], animation[ref] = (positiveMotion ? -1 : 1) * distance + startRef, animation.clip = element.cssClip(), animation.clip[map[direction][1]] = animation.clip[map[direction][0]], mode === "show" && (element.cssClip(animation.clip), element.css(ref, animation[ref]), animation.clip = startClip, animation[ref] = startRef), element.animate(animation, {
      queue: !1,
      duration: options.duration,
      easing: options.easing,
      complete: done
    });
  }), $.uiBackCompat !== !1 && $.effects.define("transfer", function(options, done) {
    $(this).transfer(options, done);
  });
  /*!
  * jQuery UI Focusable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.ui.focusable = function(element, hasTabindex) {
    var map, mapName, img, focusableIfVisible, fieldset, nodeName = element.nodeName.toLowerCase();
    return nodeName === "area" ? (map = element.parentNode, mapName = map.name, !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ? !1 : (img = $("img[usemap='#" + mapName + "']"), img.length > 0 && img.is(":visible"))) : (/^(input|select|textarea|button|object)$/.test(nodeName) ? (focusableIfVisible = !element.disabled, focusableIfVisible && (fieldset = $(element).closest("fieldset")[0], fieldset && (focusableIfVisible = !fieldset.disabled))) : nodeName === "a" ? focusableIfVisible = element.href || hasTabindex : focusableIfVisible = hasTabindex, focusableIfVisible && $(element).is(":visible") && visible($(element)));
  };
  function visible(element) {
    for (var visibility = element.css("visibility"); visibility === "inherit"; )
      element = element.parent(), visibility = element.css("visibility");
    return visibility !== "hidden";
  }
  __name(visible, "visible"), $.extend($.expr[":"], {
    focusable: /* @__PURE__ */ __name(function(element) {
      return $.ui.focusable(element, $.attr(element, "tabindex") != null);
    }, "focusable")
  }), $.ui.focusable, $.fn.form = function() {
    return typeof this[0].form == "string" ? this.closest("form") : $(this[0].form);
  };
  /*!
  * jQuery UI Form Reset Mixin 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.ui.formResetMixin = {
    _formResetHandler: /* @__PURE__ */ __name(function() {
      var form = $(this);
      setTimeout(function() {
        var instances = form.data("ui-form-reset-instances");
        $.each(instances, function() {
          this.refresh();
        });
      });
    }, "_formResetHandler"),
    _bindFormResetHandler: /* @__PURE__ */ __name(function() {
      if (this.form = this.element.form(), !!this.form.length) {
        var instances = this.form.data("ui-form-reset-instances") || [];
        instances.length || this.form.on("reset.ui-form-reset", this._formResetHandler), instances.push(this), this.form.data("ui-form-reset-instances", instances);
      }
    }, "_bindFormResetHandler"),
    _unbindFormResetHandler: /* @__PURE__ */ __name(function() {
      if (this.form.length) {
        var instances = this.form.data("ui-form-reset-instances");
        instances.splice($.inArray(this, instances), 1), instances.length ? this.form.data("ui-form-reset-instances", instances) : this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset");
      }
    }, "_unbindFormResetHandler")
  };
  /*!
  * jQuery UI Support for jQuery core 1.7.x 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  *
  */
  $.fn.jquery.substring(0, 3) === "1.7" && ($.each(["Width", "Height"], function(i, name) {
    var side = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"], type = name.toLowerCase(), orig = {
      innerWidth: $.fn.innerWidth,
      innerHeight: $.fn.innerHeight,
      outerWidth: $.fn.outerWidth,
      outerHeight: $.fn.outerHeight
    };
    function reduce(elem, size, border, margin) {
      return $.each(side, function() {
        size -= parseFloat($.css(elem, "padding" + this)) || 0, border && (size -= parseFloat($.css(elem, "border" + this + "Width")) || 0), margin && (size -= parseFloat($.css(elem, "margin" + this)) || 0);
      }), size;
    }
    __name(reduce, "reduce"), $.fn["inner" + name] = function(size) {
      return size === void 0 ? orig["inner" + name].call(this) : this.each(function() {
        $(this).css(type, reduce(this, size) + "px");
      });
    }, $.fn["outer" + name] = function(size, margin) {
      return typeof size != "number" ? orig["outer" + name].call(this, size) : this.each(function() {
        $(this).css(type, reduce(this, size, !0, margin) + "px");
      });
    };
  }), $.fn.addBack = function(selector) {
    return this.add(
      selector == null ? this.prevObject : this.prevObject.filter(selector)
    );
  });
  /*!
  * jQuery UI Keycode 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.ui.keyCode = {
    BACKSPACE: 8,
    COMMA: 188,
    DELETE: 46,
    DOWN: 40,
    END: 35,
    ENTER: 13,
    ESCAPE: 27,
    HOME: 36,
    LEFT: 37,
    PAGE_DOWN: 34,
    PAGE_UP: 33,
    PERIOD: 190,
    RIGHT: 39,
    SPACE: 32,
    TAB: 9,
    UP: 38
  }, $.ui.escapeSelector = /* @__PURE__ */ function() {
    var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
    return function(selector) {
      return selector.replace(selectorEscape, "\\$1");
    };
  }();
  /*!
  * jQuery UI Labels 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.fn.labels = function() {
    var ancestor, selector, id, labels, ancestors;
    return this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (labels = this.eq(0).parents("label"), id = this.attr("id"), id && (ancestor = this.eq(0).parents().last(), ancestors = ancestor.add(ancestor.length ? ancestor.siblings() : this.siblings()), selector = "label[for='" + $.ui.escapeSelector(id) + "']", labels = labels.add(ancestors.find(selector).addBack(selector))), this.pushStack(labels));
  };
  /*!
  * jQuery UI Scroll Parent 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.fn.scrollParent = function(includeHidden) {
    var position = this.css("position"), excludeStaticParent = position === "absolute", overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, scrollParent = this.parents().filter(function() {
      var parent = $(this);
      return excludeStaticParent && parent.css("position") === "static" ? !1 : overflowRegex.test(parent.css("overflow") + parent.css("overflow-y") + parent.css("overflow-x"));
    }).eq(0);
    return position === "fixed" || !scrollParent.length ? $(this[0].ownerDocument || document) : scrollParent;
  };
  /*!
  * jQuery UI Tabbable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.extend($.expr[":"], {
    tabbable: /* @__PURE__ */ __name(function(element) {
      var tabIndex = $.attr(element, "tabindex"), hasTabindex = tabIndex != null;
      return (!hasTabindex || tabIndex >= 0) && $.ui.focusable(element, hasTabindex);
    }, "tabbable")
  });
  /*!
  * jQuery UI Unique ID 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.fn.extend({
    uniqueId: /* @__PURE__ */ function() {
      var uuid = 0;
      return function() {
        return this.each(function() {
          this.id || (this.id = "ui-id-" + ++uuid);
        });
      };
    }(),
    removeUniqueId: /* @__PURE__ */ __name(function() {
      return this.each(function() {
        /^ui-id-\d+$/.test(this.id) && $(this).removeAttr("id");
      });
    }, "removeUniqueId")
  });
  /*!
  * jQuery UI Accordion 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.accordion", {
    version: "1.12.1",
    options: {
      active: 0,
      animate: {},
      classes: {
        "ui-accordion-header": "ui-corner-top",
        "ui-accordion-header-collapsed": "ui-corner-all",
        "ui-accordion-content": "ui-corner-bottom"
      },
      collapsible: !1,
      event: "click",
      header: "> li > :first-child, > :not(li):even",
      heightStyle: "auto",
      icons: {
        activeHeader: "ui-icon-triangle-1-s",
        header: "ui-icon-triangle-1-e"
      },
      // Callbacks
      activate: null,
      beforeActivate: null
    },
    hideProps: {
      borderTopWidth: "hide",
      borderBottomWidth: "hide",
      paddingTop: "hide",
      paddingBottom: "hide",
      height: "hide"
    },
    showProps: {
      borderTopWidth: "show",
      borderBottomWidth: "show",
      paddingTop: "show",
      paddingBottom: "show",
      height: "show"
    },
    _create: /* @__PURE__ */ __name(function() {
      var options = this.options;
      this.prevShow = this.prevHide = $(), this._addClass("ui-accordion", "ui-widget ui-helper-reset"), this.element.attr("role", "tablist"), !options.collapsible && (options.active === !1 || options.active == null) && (options.active = 0), this._processPanels(), options.active < 0 && (options.active += this.headers.length), this._refresh();
    }, "_create"),
    _getCreateEventData: /* @__PURE__ */ __name(function() {
      return {
        header: this.active,
        panel: this.active.length ? this.active.next() : $()
      };
    }, "_getCreateEventData"),
    _createIcons: /* @__PURE__ */ __name(function() {
      var icon, children, icons = this.options.icons;
      icons && (icon = $("<span>"), this._addClass(icon, "ui-accordion-header-icon", "ui-icon " + icons.header), icon.prependTo(this.headers), children = this.active.children(".ui-accordion-header-icon"), this._removeClass(children, icons.header)._addClass(children, null, icons.activeHeader)._addClass(this.headers, "ui-accordion-icons"));
    }, "_createIcons"),
    _destroyIcons: /* @__PURE__ */ __name(function() {
      this._removeClass(this.headers, "ui-accordion-icons"), this.headers.children(".ui-accordion-header-icon").remove();
    }, "_destroyIcons"),
    _destroy: /* @__PURE__ */ __name(function() {
      var contents;
      this.element.removeAttr("role"), this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(), this._destroyIcons(), contents = this.headers.next().css("display", "").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(), this.options.heightStyle !== "content" && contents.css("height", "");
    }, "_destroy"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "active") {
        this._activate(value);
        return;
      }
      key === "event" && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(value)), this._super(key, value), key === "collapsible" && !value && this.options.active === !1 && this._activate(0), key === "icons" && (this._destroyIcons(), value && this._createIcons());
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this.element.attr("aria-disabled", value), this._toggleClass(null, "ui-state-disabled", !!value), this._toggleClass(
        this.headers.add(this.headers.next()),
        null,
        "ui-state-disabled",
        !!value
      );
    }, "_setOptionDisabled"),
    _keydown: /* @__PURE__ */ __name(function(event) {
      if (!(event.altKey || event.ctrlKey)) {
        var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index(event.target), toFocus = !1;
        switch (event.keyCode) {
          case keyCode.RIGHT:
          case keyCode.DOWN:
            toFocus = this.headers[(currentIndex + 1) % length];
            break;
          case keyCode.LEFT:
          case keyCode.UP:
            toFocus = this.headers[(currentIndex - 1 + length) % length];
            break;
          case keyCode.SPACE:
          case keyCode.ENTER:
            this._eventHandler(event);
            break;
          case keyCode.HOME:
            toFocus = this.headers[0];
            break;
          case keyCode.END:
            toFocus = this.headers[length - 1];
            break;
        }
        toFocus && ($(event.target).attr("tabIndex", -1), $(toFocus).attr("tabIndex", 0), $(toFocus).trigger("focus"), event.preventDefault());
      }
    }, "_keydown"),
    _panelKeyDown: /* @__PURE__ */ __name(function(event) {
      event.keyCode === $.ui.keyCode.UP && event.ctrlKey && $(event.currentTarget).prev().trigger("focus");
    }, "_panelKeyDown"),
    refresh: /* @__PURE__ */ __name(function() {
      var options = this.options;
      this._processPanels(), options.active === !1 && options.collapsible === !0 || !this.headers.length ? (options.active = !1, this.active = $()) : options.active === !1 ? this._activate(0) : this.active.length && !$.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(".ui-state-disabled").length ? (options.active = !1, this.active = $()) : this._activate(Math.max(0, options.active - 1)) : options.active = this.headers.index(this.active), this._destroyIcons(), this._refresh();
    }, "refresh"),
    _processPanels: /* @__PURE__ */ __name(function() {
      var prevHeaders = this.headers, prevPanels = this.panels;
      this.headers = this.element.find(this.options.header), this._addClass(
        this.headers,
        "ui-accordion-header ui-accordion-header-collapsed",
        "ui-state-default"
      ), this.panels = this.headers.next().filter(":not(.ui-accordion-content-active)").hide(), this._addClass(this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content"), prevPanels && (this._off(prevHeaders.not(this.headers)), this._off(prevPanels.not(this.panels)));
    }, "_processPanels"),
    _refresh: /* @__PURE__ */ __name(function() {
      var maxHeight, options = this.options, heightStyle = options.heightStyle, parent = this.element.parent();
      this.active = this._findActive(options.active), this._addClass(this.active, "ui-accordion-header-active", "ui-state-active")._removeClass(this.active, "ui-accordion-header-collapsed"), this._addClass(this.active.next(), "ui-accordion-content-active"), this.active.next().show(), this.headers.attr("role", "tab").each(function() {
        var header = $(this), headerId = header.uniqueId().attr("id"), panel = header.next(), panelId = panel.uniqueId().attr("id");
        header.attr("aria-controls", panelId), panel.attr("aria-labelledby", headerId);
      }).next().attr("role", "tabpanel"), this.headers.not(this.active).attr({
        "aria-selected": "false",
        "aria-expanded": "false",
        tabIndex: -1
      }).next().attr({
        "aria-hidden": "true"
      }).hide(), this.active.length ? this.active.attr({
        "aria-selected": "true",
        "aria-expanded": "true",
        tabIndex: 0
      }).next().attr({
        "aria-hidden": "false"
      }) : this.headers.eq(0).attr("tabIndex", 0), this._createIcons(), this._setupEvents(options.event), heightStyle === "fill" ? (maxHeight = parent.height(), this.element.siblings(":visible").each(function() {
        var elem = $(this), position = elem.css("position");
        position === "absolute" || position === "fixed" || (maxHeight -= elem.outerHeight(!0));
      }), this.headers.each(function() {
        maxHeight -= $(this).outerHeight(!0);
      }), this.headers.next().each(function() {
        $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));
      }).css("overflow", "auto")) : heightStyle === "auto" && (maxHeight = 0, this.headers.next().each(function() {
        var isVisible = $(this).is(":visible");
        isVisible || $(this).show(), maxHeight = Math.max(maxHeight, $(this).css("height", "").height()), isVisible || $(this).hide();
      }).height(maxHeight));
    }, "_refresh"),
    _activate: /* @__PURE__ */ __name(function(index) {
      var active = this._findActive(index)[0];
      active !== this.active[0] && (active = active || this.active[0], this._eventHandler({
        target: active,
        currentTarget: active,
        preventDefault: $.noop
      }));
    }, "_activate"),
    _findActive: /* @__PURE__ */ __name(function(selector) {
      return typeof selector == "number" ? this.headers.eq(selector) : $();
    }, "_findActive"),
    _setupEvents: /* @__PURE__ */ __name(function(event) {
      var events = {
        keydown: "_keydown"
      };
      event && $.each(event.split(" "), function(index, eventName) {
        events[eventName] = "_eventHandler";
      }), this._off(this.headers.add(this.headers.next())), this._on(this.headers, events), this._on(this.headers.next(), { keydown: "_panelKeyDown" }), this._hoverable(this.headers), this._focusable(this.headers);
    }, "_setupEvents"),
    _eventHandler: /* @__PURE__ */ __name(function(event) {
      var activeChildren, clickedChildren, options = this.options, active = this.active, clicked = $(event.currentTarget), clickedIsActive = clicked[0] === active[0], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : clicked.next(), toHide = active.next(), eventData = {
        oldHeader: active,
        oldPanel: toHide,
        newHeader: collapsing ? $() : clicked,
        newPanel: toShow
      };
      event.preventDefault(), // click on active header, but not collapsible
      !(clickedIsActive && !options.collapsible || // allow canceling activation
      this._trigger("beforeActivate", event, eventData) === !1) && (options.active = collapsing ? !1 : this.headers.index(clicked), this.active = clickedIsActive ? $() : clicked, this._toggle(eventData), this._removeClass(active, "ui-accordion-header-active", "ui-state-active"), options.icons && (activeChildren = active.children(".ui-accordion-header-icon"), this._removeClass(activeChildren, null, options.icons.activeHeader)._addClass(activeChildren, null, options.icons.header)), clickedIsActive || (this._removeClass(clicked, "ui-accordion-header-collapsed")._addClass(clicked, "ui-accordion-header-active", "ui-state-active"), options.icons && (clickedChildren = clicked.children(".ui-accordion-header-icon"), this._removeClass(clickedChildren, null, options.icons.header)._addClass(clickedChildren, null, options.icons.activeHeader)), this._addClass(clicked.next(), "ui-accordion-content-active")));
    }, "_eventHandler"),
    _toggle: /* @__PURE__ */ __name(function(data) {
      var toShow = data.newPanel, toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
      this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = toShow, this.prevHide = toHide, this.options.animate ? this._animate(toShow, toHide, data) : (toHide.hide(), toShow.show(), this._toggleComplete(data)), toHide.attr({
        "aria-hidden": "true"
      }), toHide.prev().attr({
        "aria-selected": "false",
        "aria-expanded": "false"
      }), toShow.length && toHide.length ? toHide.prev().attr({
        tabIndex: -1,
        "aria-expanded": "false"
      }) : toShow.length && this.headers.filter(function() {
        return parseInt($(this).attr("tabIndex"), 10) === 0;
      }).attr("tabIndex", -1), toShow.attr("aria-hidden", "false").prev().attr({
        "aria-selected": "true",
        "aria-expanded": "true",
        tabIndex: 0
      });
    }, "_toggle"),
    _animate: /* @__PURE__ */ __name(function(toShow, toHide, data) {
      var total, easing, duration, that = this, adjust = 0, boxSizing = toShow.css("box-sizing"), down = toShow.length && (!toHide.length || toShow.index() < toHide.index()), animate = this.options.animate || {}, options = down && animate.down || animate, complete = /* @__PURE__ */ __name(function() {
        that._toggleComplete(data);
      }, "complete");
      if (typeof options == "number" && (duration = options), typeof options == "string" && (easing = options), easing = easing || options.easing || animate.easing, duration = duration || options.duration || animate.duration, !toHide.length)
        return toShow.animate(this.showProps, duration, easing, complete);
      if (!toShow.length)
        return toHide.animate(this.hideProps, duration, easing, complete);
      total = toShow.show().outerHeight(), toHide.animate(this.hideProps, {
        duration,
        easing,
        step: /* @__PURE__ */ __name(function(now, fx) {
          fx.now = Math.round(now);
        }, "step")
      }), toShow.hide().animate(this.showProps, {
        duration,
        easing,
        complete,
        step: /* @__PURE__ */ __name(function(now, fx) {
          fx.now = Math.round(now), fx.prop !== "height" ? boxSizing === "content-box" && (adjust += fx.now) : that.options.heightStyle !== "content" && (fx.now = Math.round(total - toHide.outerHeight() - adjust), adjust = 0);
        }, "step")
      });
    }, "_animate"),
    _toggleComplete: /* @__PURE__ */ __name(function(data) {
      var toHide = data.oldPanel, prev = toHide.prev();
      this._removeClass(toHide, "ui-accordion-content-active"), this._removeClass(prev, "ui-accordion-header-active")._addClass(prev, "ui-accordion-header-collapsed"), toHide.length && (toHide.parent()[0].className = toHide.parent()[0].className), this._trigger("activate", null, data);
    }, "_toggleComplete")
  }), $.ui.safeActiveElement = function(document2) {
    var activeElement;
    try {
      activeElement = document2.activeElement;
    } catch {
      activeElement = document2.body;
    }
    return activeElement || (activeElement = document2.body), activeElement.nodeName || (activeElement = document2.body), activeElement;
  };
  /*!
  * jQuery UI Menu 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.menu", {
    version: "1.12.1",
    defaultElement: "<ul>",
    delay: 300,
    options: {
      icons: {
        submenu: "ui-icon-caret-1-e"
      },
      items: "> *",
      menus: "ul",
      position: {
        my: "left top",
        at: "right top"
      },
      role: "menu",
      // Callbacks
      blur: null,
      focus: null,
      select: null
    },
    _create: /* @__PURE__ */ __name(function() {
      this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().attr({
        role: this.options.role,
        tabIndex: 0
      }), this._addClass("ui-menu", "ui-widget ui-widget-content"), this._on({
        // Prevent focus from sticking to links inside menu after clicking
        // them (focus should always stay on UL during navigation).
        "mousedown .ui-menu-item": /* @__PURE__ */ __name(function(event) {
          event.preventDefault();
        }, "mousedown .ui-menu-item"),
        "click .ui-menu-item": /* @__PURE__ */ __name(function(event) {
          var target = $(event.target), active = $($.ui.safeActiveElement(this.document[0]));
          !this.mouseHandled && target.not(".ui-state-disabled").length && (this.select(event), event.isPropagationStopped() || (this.mouseHandled = !0), target.has(".ui-menu").length ? this.expand(event) : !this.element.is(":focus") && active.closest(".ui-menu").length && (this.element.trigger("focus", [!0]), this.active && this.active.parents(".ui-menu").length === 1 && clearTimeout(this.timer)));
        }, "click .ui-menu-item"),
        "mouseenter .ui-menu-item": /* @__PURE__ */ __name(function(event) {
          if (!this.previousFilter) {
            var actualTarget = $(event.target).closest(".ui-menu-item"), target = $(event.currentTarget);
            actualTarget[0] === target[0] && (this._removeClass(
              target.siblings().children(".ui-state-active"),
              null,
              "ui-state-active"
            ), this.focus(event, target));
          }
        }, "mouseenter .ui-menu-item"),
        mouseleave: "collapseAll",
        "mouseleave .ui-menu": "collapseAll",
        focus: /* @__PURE__ */ __name(function(event, keepActiveItem) {
          var item = this.active || this.element.find(this.options.items).eq(0);
          keepActiveItem || this.focus(event, item);
        }, "focus"),
        blur: /* @__PURE__ */ __name(function(event) {
          this._delay(function() {
            var notContained = !$.contains(
              this.element[0],
              $.ui.safeActiveElement(this.document[0])
            );
            notContained && this.collapseAll(event);
          });
        }, "blur"),
        keydown: "_keydown"
      }), this.refresh(), this._on(this.document, {
        click: /* @__PURE__ */ __name(function(event) {
          this._closeOnDocumentClick(event) && this.collapseAll(event), this.mouseHandled = !1;
        }, "click")
      });
    }, "_create"),
    _destroy: /* @__PURE__ */ __name(function() {
      var items = this.element.find(".ui-menu-item").removeAttr("role aria-disabled"), submenus = items.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");
      this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(), submenus.children().each(function() {
        var elem = $(this);
        elem.data("ui-menu-submenu-caret") && elem.remove();
      });
    }, "_destroy"),
    _keydown: /* @__PURE__ */ __name(function(event) {
      var match, prev, character, skip, preventDefault = !0;
      switch (event.keyCode) {
        case $.ui.keyCode.PAGE_UP:
          this.previousPage(event);
          break;
        case $.ui.keyCode.PAGE_DOWN:
          this.nextPage(event);
          break;
        case $.ui.keyCode.HOME:
          this._move("first", "first", event);
          break;
        case $.ui.keyCode.END:
          this._move("last", "last", event);
          break;
        case $.ui.keyCode.UP:
          this.previous(event);
          break;
        case $.ui.keyCode.DOWN:
          this.next(event);
          break;
        case $.ui.keyCode.LEFT:
          this.collapse(event);
          break;
        case $.ui.keyCode.RIGHT:
          this.active && !this.active.is(".ui-state-disabled") && this.expand(event);
          break;
        case $.ui.keyCode.ENTER:
        case $.ui.keyCode.SPACE:
          this._activate(event);
          break;
        case $.ui.keyCode.ESCAPE:
          this.collapse(event);
          break;
        default:
          preventDefault = !1, prev = this.previousFilter || "", skip = !1, character = event.keyCode >= 96 && event.keyCode <= 105 ? (event.keyCode - 96).toString() : String.fromCharCode(event.keyCode), clearTimeout(this.filterTimer), character === prev ? skip = !0 : character = prev + character, match = this._filterMenuItems(character), match = skip && match.index(this.active.next()) !== -1 ? this.active.nextAll(".ui-menu-item") : match, match.length || (character = String.fromCharCode(event.keyCode), match = this._filterMenuItems(character)), match.length ? (this.focus(event, match), this.previousFilter = character, this.filterTimer = this._delay(function() {
            delete this.previousFilter;
          }, 1e3)) : delete this.previousFilter;
      }
      preventDefault && event.preventDefault();
    }, "_keydown"),
    _activate: /* @__PURE__ */ __name(function(event) {
      this.active && !this.active.is(".ui-state-disabled") && (this.active.children("[aria-haspopup='true']").length ? this.expand(event) : this.select(event));
    }, "_activate"),
    refresh: /* @__PURE__ */ __name(function() {
      var menus, items, newSubmenus, newItems, newWrappers, that = this, icon = this.options.icons.submenu, submenus = this.element.find(this.options.menus);
      this._toggleClass("ui-menu-icons", null, !!this.element.find(".ui-icon").length), newSubmenus = submenus.filter(":not(.ui-menu)").hide().attr({
        role: this.options.role,
        "aria-hidden": "true",
        "aria-expanded": "false"
      }).each(function() {
        var menu = $(this), item = menu.prev(), submenuCaret = $("<span>").data("ui-menu-submenu-caret", !0);
        that._addClass(submenuCaret, "ui-menu-icon", "ui-icon " + icon), item.attr("aria-haspopup", "true").prepend(submenuCaret), menu.attr("aria-labelledby", item.attr("id"));
      }), this._addClass(newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front"), menus = submenus.add(this.element), items = menus.find(this.options.items), items.not(".ui-menu-item").each(function() {
        var item = $(this);
        that._isDivider(item) && that._addClass(item, "ui-menu-divider", "ui-widget-content");
      }), newItems = items.not(".ui-menu-item, .ui-menu-divider"), newWrappers = newItems.children().not(".ui-menu").uniqueId().attr({
        tabIndex: -1,
        role: this._itemRole()
      }), this._addClass(newItems, "ui-menu-item")._addClass(newWrappers, "ui-menu-item-wrapper"), items.filter(".ui-state-disabled").attr("aria-disabled", "true"), this.active && !$.contains(this.element[0], this.active[0]) && this.blur();
    }, "refresh"),
    _itemRole: /* @__PURE__ */ __name(function() {
      return {
        menu: "menuitem",
        listbox: "option"
      }[this.options.role];
    }, "_itemRole"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "icons") {
        var icons = this.element.find(".ui-menu-icon");
        this._removeClass(icons, null, this.options.icons.submenu)._addClass(icons, null, value.submenu);
      }
      this._super(key, value);
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this.element.attr("aria-disabled", String(value)), this._toggleClass(null, "ui-state-disabled", !!value);
    }, "_setOptionDisabled"),
    focus: /* @__PURE__ */ __name(function(event, item) {
      var nested, focused, activeParent;
      this.blur(event, event && event.type === "focus"), this._scrollIntoView(item), this.active = item.first(), focused = this.active.children(".ui-menu-item-wrapper"), this._addClass(focused, null, "ui-state-active"), this.options.role && this.element.attr("aria-activedescendant", focused.attr("id")), activeParent = this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"), this._addClass(activeParent, null, "ui-state-active"), event && event.type === "keydown" ? this._close() : this.timer = this._delay(function() {
        this._close();
      }, this.delay), nested = item.children(".ui-menu"), nested.length && event && /^mouse/.test(event.type) && this._startOpening(nested), this.activeMenu = item.parent(), this._trigger("focus", event, { item });
    }, "focus"),
    _scrollIntoView: /* @__PURE__ */ __name(function(item) {
      var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
      this._hasScroll() && (borderTop = parseFloat($.css(this.activeMenu[0], "borderTopWidth")) || 0, paddingTop = parseFloat($.css(this.activeMenu[0], "paddingTop")) || 0, offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop, scroll = this.activeMenu.scrollTop(), elementHeight = this.activeMenu.height(), itemHeight = item.outerHeight(), offset < 0 ? this.activeMenu.scrollTop(scroll + offset) : offset + itemHeight > elementHeight && this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight));
    }, "_scrollIntoView"),
    blur: /* @__PURE__ */ __name(function(event, fromFocus) {
      fromFocus || clearTimeout(this.timer), this.active && (this._removeClass(
        this.active.children(".ui-menu-item-wrapper"),
        null,
        "ui-state-active"
      ), this._trigger("blur", event, { item: this.active }), this.active = null);
    }, "blur"),
    _startOpening: /* @__PURE__ */ __name(function(submenu) {
      clearTimeout(this.timer), submenu.attr("aria-hidden") === "true" && (this.timer = this._delay(function() {
        this._close(), this._open(submenu);
      }, this.delay));
    }, "_startOpening"),
    _open: /* @__PURE__ */ __name(function(submenu) {
      var position = $.extend({
        of: this.active
      }, this.options.position);
      clearTimeout(this.timer), this.element.find(".ui-menu").not(submenu.parents(".ui-menu")).hide().attr("aria-hidden", "true"), submenu.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(position);
    }, "_open"),
    collapseAll: /* @__PURE__ */ __name(function(event, all) {
      clearTimeout(this.timer), this.timer = this._delay(function() {
        var currentMenu = all ? this.element : $(event && event.target).closest(this.element.find(".ui-menu"));
        currentMenu.length || (currentMenu = this.element), this._close(currentMenu), this.blur(event), this._removeClass(currentMenu.find(".ui-state-active"), null, "ui-state-active"), this.activeMenu = currentMenu;
      }, this.delay);
    }, "collapseAll"),
    // With no arguments, closes the currently active menu - if nothing is active
    // it closes all menus.  If passed an argument, it will search for menus BELOW
    _close: /* @__PURE__ */ __name(function(startMenu) {
      startMenu || (startMenu = this.active ? this.active.parent() : this.element), startMenu.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false");
    }, "_close"),
    _closeOnDocumentClick: /* @__PURE__ */ __name(function(event) {
      return !$(event.target).closest(".ui-menu").length;
    }, "_closeOnDocumentClick"),
    _isDivider: /* @__PURE__ */ __name(function(item) {
      return !/[^\-\u2014\u2013\s]/.test(item.text());
    }, "_isDivider"),
    collapse: /* @__PURE__ */ __name(function(event) {
      var newItem = this.active && this.active.parent().closest(".ui-menu-item", this.element);
      newItem && newItem.length && (this._close(), this.focus(event, newItem));
    }, "collapse"),
    expand: /* @__PURE__ */ __name(function(event) {
      var newItem = this.active && this.active.children(".ui-menu ").find(this.options.items).first();
      newItem && newItem.length && (this._open(newItem.parent()), this._delay(function() {
        this.focus(event, newItem);
      }));
    }, "expand"),
    next: /* @__PURE__ */ __name(function(event) {
      this._move("next", "first", event);
    }, "next"),
    previous: /* @__PURE__ */ __name(function(event) {
      this._move("prev", "last", event);
    }, "previous"),
    isFirstItem: /* @__PURE__ */ __name(function() {
      return this.active && !this.active.prevAll(".ui-menu-item").length;
    }, "isFirstItem"),
    isLastItem: /* @__PURE__ */ __name(function() {
      return this.active && !this.active.nextAll(".ui-menu-item").length;
    }, "isLastItem"),
    _move: /* @__PURE__ */ __name(function(direction, filter, event) {
      var next;
      this.active && (direction === "first" || direction === "last" ? next = this.active[direction === "first" ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1) : next = this.active[direction + "All"](".ui-menu-item").eq(0)), (!next || !next.length || !this.active) && (next = this.activeMenu.find(this.options.items)[filter]()), this.focus(event, next);
    }, "_move"),
    nextPage: /* @__PURE__ */ __name(function(event) {
      var item, base, height;
      if (!this.active) {
        this.next(event);
        return;
      }
      this.isLastItem() || (this._hasScroll() ? (base = this.active.offset().top, height = this.element.height(), this.active.nextAll(".ui-menu-item").each(function() {
        return item = $(this), item.offset().top - base - height < 0;
      }), this.focus(event, item)) : this.focus(event, this.activeMenu.find(this.options.items)[this.active ? "last" : "first"]()));
    }, "nextPage"),
    previousPage: /* @__PURE__ */ __name(function(event) {
      var item, base, height;
      if (!this.active) {
        this.next(event);
        return;
      }
      this.isFirstItem() || (this._hasScroll() ? (base = this.active.offset().top, height = this.element.height(), this.active.prevAll(".ui-menu-item").each(function() {
        return item = $(this), item.offset().top - base + height > 0;
      }), this.focus(event, item)) : this.focus(event, this.activeMenu.find(this.options.items).first()));
    }, "previousPage"),
    _hasScroll: /* @__PURE__ */ __name(function() {
      return this.element.outerHeight() < this.element.prop("scrollHeight");
    }, "_hasScroll"),
    select: /* @__PURE__ */ __name(function(event) {
      this.active = this.active || $(event.target).closest(".ui-menu-item");
      var ui = { item: this.active };
      this.active.has(".ui-menu").length || this.collapseAll(event, !0), this._trigger("select", event, ui);
    }, "select"),
    _filterMenuItems: /* @__PURE__ */ __name(function(character) {
      var escapedCharacter = character.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"), regex = new RegExp("^" + escapedCharacter, "i");
      return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function() {
        return regex.test(
          $.trim($(this).children(".ui-menu-item-wrapper").text())
        );
      });
    }, "_filterMenuItems")
  });
  /*!
  * jQuery UI Autocomplete 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.autocomplete", {
    version: "1.12.1",
    defaultElement: "<input>",
    options: {
      appendTo: null,
      autoFocus: !1,
      delay: 300,
      minLength: 1,
      position: {
        my: "left top",
        at: "left bottom",
        collision: "none"
      },
      source: null,
      // Callbacks
      change: null,
      close: null,
      focus: null,
      open: null,
      response: null,
      search: null,
      select: null
    },
    requestIndex: 0,
    pending: 0,
    _create: /* @__PURE__ */ __name(function() {
      var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[0].nodeName.toLowerCase(), isTextarea = nodeName === "textarea", isInput = nodeName === "input";
      this.isMultiLine = isTextarea || !isInput && this._isContentEditable(this.element), this.valueMethod = this.element[isTextarea || isInput ? "val" : "text"], this.isNewMenu = !0, this._addClass("ui-autocomplete-input"), this.element.attr("autocomplete", "off"), this._on(this.element, {
        keydown: /* @__PURE__ */ __name(function(event) {
          if (this.element.prop("readOnly")) {
            suppressKeyPress = !0, suppressInput = !0, suppressKeyPressRepeat = !0;
            return;
          }
          suppressKeyPress = !1, suppressInput = !1, suppressKeyPressRepeat = !1;
          var keyCode = $.ui.keyCode;
          switch (event.keyCode) {
            case keyCode.PAGE_UP:
              suppressKeyPress = !0, this._move("previousPage", event);
              break;
            case keyCode.PAGE_DOWN:
              suppressKeyPress = !0, this._move("nextPage", event);
              break;
            case keyCode.UP:
              suppressKeyPress = !0, this._keyEvent("previous", event);
              break;
            case keyCode.DOWN:
              suppressKeyPress = !0, this._keyEvent("next", event);
              break;
            case keyCode.ENTER:
              this.menu.active && (suppressKeyPress = !0, event.preventDefault(), this.menu.select(event));
              break;
            case keyCode.TAB:
              this.menu.active && this.menu.select(event);
              break;
            case keyCode.ESCAPE:
              this.menu.element.is(":visible") && (this.isMultiLine || this._value(this.term), this.close(event), event.preventDefault());
              break;
            default:
              suppressKeyPressRepeat = !0, this._searchTimeout(event);
              break;
          }
        }, "keydown"),
        keypress: /* @__PURE__ */ __name(function(event) {
          if (suppressKeyPress) {
            suppressKeyPress = !1, (!this.isMultiLine || this.menu.element.is(":visible")) && event.preventDefault();
            return;
          }
          if (!suppressKeyPressRepeat) {
            var keyCode = $.ui.keyCode;
            switch (event.keyCode) {
              case keyCode.PAGE_UP:
                this._move("previousPage", event);
                break;
              case keyCode.PAGE_DOWN:
                this._move("nextPage", event);
                break;
              case keyCode.UP:
                this._keyEvent("previous", event);
                break;
              case keyCode.DOWN:
                this._keyEvent("next", event);
                break;
            }
          }
        }, "keypress"),
        input: /* @__PURE__ */ __name(function(event) {
          if (suppressInput) {
            suppressInput = !1, event.preventDefault();
            return;
          }
          this._searchTimeout(event);
        }, "input"),
        focus: /* @__PURE__ */ __name(function() {
          this.selectedItem = null, this.previous = this._value();
        }, "focus"),
        blur: /* @__PURE__ */ __name(function(event) {
          if (this.cancelBlur) {
            delete this.cancelBlur;
            return;
          }
          clearTimeout(this.searching), this.close(event), this._change(event);
        }, "blur")
      }), this._initSource(), this.menu = $("<ul>").appendTo(this._appendTo()).menu({
        // disable ARIA support, the live region takes care of that
        role: null
      }).hide().menu("instance"), this._addClass(this.menu.element, "ui-autocomplete", "ui-front"), this._on(this.menu.element, {
        mousedown: /* @__PURE__ */ __name(function(event) {
          event.preventDefault(), this.cancelBlur = !0, this._delay(function() {
            delete this.cancelBlur, this.element[0] !== $.ui.safeActiveElement(this.document[0]) && this.element.trigger("focus");
          });
        }, "mousedown"),
        menufocus: /* @__PURE__ */ __name(function(event, ui) {
          var label, item;
          if (this.isNewMenu && (this.isNewMenu = !1, event.originalEvent && /^mouse/.test(event.originalEvent.type))) {
            this.menu.blur(), this.document.one("mousemove", function() {
              $(event.target).trigger(event.originalEvent);
            });
            return;
          }
          item = ui.item.data("ui-autocomplete-item"), this._trigger("focus", event, { item }) !== !1 && event.originalEvent && /^key/.test(event.originalEvent.type) && this._value(item.value), label = ui.item.attr("aria-label") || item.value, label && $.trim(label).length && (this.liveRegion.children().hide(), $("<div>").text(label).appendTo(this.liveRegion));
        }, "menufocus"),
        menuselect: /* @__PURE__ */ __name(function(event, ui) {
          var item = ui.item.data("ui-autocomplete-item"), previous = this.previous;
          this.element[0] !== $.ui.safeActiveElement(this.document[0]) && (this.element.trigger("focus"), this.previous = previous, this._delay(function() {
            this.previous = previous, this.selectedItem = item;
          })), this._trigger("select", event, { item }) !== !1 && this._value(item.value), this.term = this._value(), this.close(event), this.selectedItem = item;
        }, "menuselect")
      }), this.liveRegion = $("<div>", {
        role: "status",
        "aria-live": "assertive",
        "aria-relevant": "additions"
      }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this._on(this.window, {
        beforeunload: /* @__PURE__ */ __name(function() {
          this.element.removeAttr("autocomplete");
        }, "beforeunload")
      });
    }, "_create"),
    _destroy: /* @__PURE__ */ __name(function() {
      clearTimeout(this.searching), this.element.removeAttr("autocomplete"), this.menu.element.remove(), this.liveRegion.remove();
    }, "_destroy"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      this._super(key, value), key === "source" && this._initSource(), key === "appendTo" && this.menu.element.appendTo(this._appendTo()), key === "disabled" && value && this.xhr && this.xhr.abort();
    }, "_setOption"),
    _isEventTargetInWidget: /* @__PURE__ */ __name(function(event) {
      var menuElement = this.menu.element[0];
      return event.target === this.element[0] || event.target === menuElement || $.contains(menuElement, event.target);
    }, "_isEventTargetInWidget"),
    _closeOnClickOutside: /* @__PURE__ */ __name(function(event) {
      this._isEventTargetInWidget(event) || this.close();
    }, "_closeOnClickOutside"),
    _appendTo: /* @__PURE__ */ __name(function() {
      var element = this.options.appendTo;
      return element && (element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0)), (!element || !element[0]) && (element = this.element.closest(".ui-front, dialog")), element.length || (element = this.document[0].body), element;
    }, "_appendTo"),
    _initSource: /* @__PURE__ */ __name(function() {
      var array, url, that = this;
      $.isArray(this.options.source) ? (array = this.options.source, this.source = function(request, response) {
        response($.ui.autocomplete.filter(array, request.term));
      }) : typeof this.options.source == "string" ? (url = this.options.source, this.source = function(request, response) {
        that.xhr && that.xhr.abort(), that.xhr = $.ajax({
          url,
          data: request,
          dataType: "json",
          success: /* @__PURE__ */ __name(function(data) {
            response(data);
          }, "success"),
          error: /* @__PURE__ */ __name(function() {
            response([]);
          }, "error")
        });
      }) : this.source = this.options.source;
    }, "_initSource"),
    _searchTimeout: /* @__PURE__ */ __name(function(event) {
      clearTimeout(this.searching), this.searching = this._delay(function() {
        var equalValues = this.term === this._value(), menuVisible = this.menu.element.is(":visible"), modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
        (!equalValues || equalValues && !menuVisible && !modifierKey) && (this.selectedItem = null, this.search(null, event));
      }, this.options.delay);
    }, "_searchTimeout"),
    search: /* @__PURE__ */ __name(function(value, event) {
      if (value = value ?? this._value(), this.term = this._value(), value.length < this.options.minLength)
        return this.close(event);
      if (this._trigger("search", event) !== !1)
        return this._search(value);
    }, "search"),
    _search: /* @__PURE__ */ __name(function(value) {
      this.pending++, this._addClass("ui-autocomplete-loading"), this.cancelSearch = !1, this.source({ term: value }, this._response());
    }, "_search"),
    _response: /* @__PURE__ */ __name(function() {
      var index = ++this.requestIndex;
      return $.proxy(function(content) {
        index === this.requestIndex && this.__response(content), this.pending--, this.pending || this._removeClass("ui-autocomplete-loading");
      }, this);
    }, "_response"),
    __response: /* @__PURE__ */ __name(function(content) {
      content && (content = this._normalize(content)), this._trigger("response", null, { content }), !this.options.disabled && content && content.length && !this.cancelSearch ? (this._suggest(content), this._trigger("open")) : this._close();
    }, "__response"),
    close: /* @__PURE__ */ __name(function(event) {
      this.cancelSearch = !0, this._close(event);
    }, "close"),
    _close: /* @__PURE__ */ __name(function(event) {
      this._off(this.document, "mousedown"), this.menu.element.is(":visible") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger("close", event));
    }, "_close"),
    _change: /* @__PURE__ */ __name(function(event) {
      this.previous !== this._value() && this._trigger("change", event, { item: this.selectedItem });
    }, "_change"),
    _normalize: /* @__PURE__ */ __name(function(items) {
      return items.length && items[0].label && items[0].value ? items : $.map(items, function(item) {
        return typeof item == "string" ? {
          label: item,
          value: item
        } : $.extend({}, item, {
          label: item.label || item.value,
          value: item.value || item.label
        });
      });
    }, "_normalize"),
    _suggest: /* @__PURE__ */ __name(function(items) {
      var ul = this.menu.element.empty();
      this._renderMenu(ul, items), this.isNewMenu = !0, this.menu.refresh(), ul.show(), this._resizeMenu(), ul.position($.extend({
        of: this.element
      }, this.options.position)), this.options.autoFocus && this.menu.next(), this._on(this.document, {
        mousedown: "_closeOnClickOutside"
      });
    }, "_suggest"),
    _resizeMenu: /* @__PURE__ */ __name(function() {
      var ul = this.menu.element;
      ul.outerWidth(Math.max(
        // Firefox wraps long text (possibly a rounding bug)
        // so we add 1px to avoid the wrapping (#7513)
        ul.width("").outerWidth() + 1,
        this.element.outerWidth()
      ));
    }, "_resizeMenu"),
    _renderMenu: /* @__PURE__ */ __name(function(ul, items) {
      var that = this;
      $.each(items, function(index, item) {
        that._renderItemData(ul, item);
      });
    }, "_renderMenu"),
    _renderItemData: /* @__PURE__ */ __name(function(ul, item) {
      return this._renderItem(ul, item).data("ui-autocomplete-item", item);
    }, "_renderItemData"),
    _renderItem: /* @__PURE__ */ __name(function(ul, item) {
      return $("<li>").append($("<div>").text(item.label)).appendTo(ul);
    }, "_renderItem"),
    _move: /* @__PURE__ */ __name(function(direction, event) {
      if (!this.menu.element.is(":visible")) {
        this.search(null, event);
        return;
      }
      if (this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction)) {
        this.isMultiLine || this._value(this.term), this.menu.blur();
        return;
      }
      this.menu[direction](event);
    }, "_move"),
    widget: /* @__PURE__ */ __name(function() {
      return this.menu.element;
    }, "widget"),
    _value: /* @__PURE__ */ __name(function() {
      return this.valueMethod.apply(this.element, arguments);
    }, "_value"),
    _keyEvent: /* @__PURE__ */ __name(function(keyEvent, event) {
      (!this.isMultiLine || this.menu.element.is(":visible")) && (this._move(keyEvent, event), event.preventDefault());
    }, "_keyEvent"),
    // Support: Chrome <=50
    // We should be able to just use this.element.prop( "isContentEditable" )
    // but hidden elements always report false in Chrome.
    // https://code.google.com/p/chromium/issues/detail?id=313082
    _isContentEditable: /* @__PURE__ */ __name(function(element) {
      if (!element.length)
        return !1;
      var editable = element.prop("contentEditable");
      return editable === "inherit" ? this._isContentEditable(element.parent()) : editable === "true";
    }, "_isContentEditable")
  }), $.extend($.ui.autocomplete, {
    escapeRegex: /* @__PURE__ */ __name(function(value) {
      return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
    }, "escapeRegex"),
    filter: /* @__PURE__ */ __name(function(array, term) {
      var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), "i");
      return $.grep(array, function(value) {
        return matcher.test(value.label || value.value || value);
      });
    }, "filter")
  }), $.widget("ui.autocomplete", $.ui.autocomplete, {
    options: {
      messages: {
        noResults: "No search results.",
        results: /* @__PURE__ */ __name(function(amount) {
          return amount + (amount > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate.";
        }, "results")
      }
    },
    __response: /* @__PURE__ */ __name(function(content) {
      var message;
      this._superApply(arguments), !(this.options.disabled || this.cancelSearch) && (content && content.length ? message = this.options.messages.results(content.length) : message = this.options.messages.noResults, this.liveRegion.children().hide(), $("<div>").text(message).appendTo(this.liveRegion));
    }, "__response")
  }), $.ui.autocomplete;
  /*!
  * jQuery UI Controlgroup 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
  $.widget("ui.controlgroup", {
    version: "1.12.1",
    defaultElement: "<div>",
    options: {
      direction: "horizontal",
      disabled: null,
      onlyVisible: !0,
      items: {
        button: "input[type=button], input[type=submit], input[type=reset], button, a",
        controlgroupLabel: ".ui-controlgroup-label",
        checkboxradio: "input[type='checkbox'], input[type='radio']",
        selectmenu: "select",
        spinner: ".ui-spinner-input"
      }
    },
    _create: /* @__PURE__ */ __name(function() {
      this._enhance();
    }, "_create"),
    // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
    _enhance: /* @__PURE__ */ __name(function() {
      this.element.attr("role", "toolbar"), this.refresh();
    }, "_enhance"),
    _destroy: /* @__PURE__ */ __name(function() {
      this._callChildMethod("destroy"), this.childWidgets.removeData("ui-controlgroup-data"), this.element.removeAttr("role"), this.options.items.controlgroupLabel && this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap();
    }, "_destroy"),
    _initWidgets: /* @__PURE__ */ __name(function() {
      var that = this, childWidgets = [];
      $.each(this.options.items, function(widget, selector) {
        var labels, options = {};
        if (selector) {
          if (widget === "controlgroupLabel") {
            labels = that.element.find(selector), labels.each(function() {
              var element = $(this);
              element.children(".ui-controlgroup-label-contents").length || element.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>");
            }), that._addClass(labels, null, "ui-widget ui-widget-content ui-state-default"), childWidgets = childWidgets.concat(labels.get());
            return;
          }
          $.fn[widget] && (that["_" + widget + "Options"] ? options = that["_" + widget + "Options"]("middle") : options = { classes: {} }, that.element.find(selector).each(function() {
            var element = $(this), instance = element[widget]("instance"), instanceOptions = $.widget.extend({}, options);
            if (!(widget === "button" && element.parent(".ui-spinner").length)) {
              instance || (instance = element[widget]()[widget]("instance")), instance && (instanceOptions.classes = that._resolveClassesValues(instanceOptions.classes, instance)), element[widget](instanceOptions);
              var widgetElement = element[widget]("widget");
              $.data(
                widgetElement[0],
                "ui-controlgroup-data",
                instance || element[widget]("instance")
              ), childWidgets.push(widgetElement[0]);
            }
          }));
        }
      }), this.childWidgets = $($.unique(childWidgets)), this._addClass(this.childWidgets, "ui-controlgroup-item");
    }, "_initWidgets"),
    _callChildMethod: /* @__PURE__ */ __name(function(method) {
      this.childWidgets.each(function() {
        var element = $(this), data = element.data("ui-controlgroup-data");
        data && data[method] && data[method]();
      });
    }, "_callChildMethod"),
    _updateCornerClass: /* @__PURE__ */ __name(function(element, position) {
      var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all", add = this._buildSimpleOptions(position, "label").classes.label;
      this._removeClass(element, null, remove), this._addClass(element, null, add);
    }, "_updateCornerClass"),
    _buildSimpleOptions: /* @__PURE__ */ __name(function(position, key) {
      var direction = this.options.direction === "vertical", result = {
        classes: {}
      };
      return result.classes[key] = {
        middle: "",
        first: "ui-corner-" + (direction ? "top" : "left"),
        last: "ui-corner-" + (direction ? "bottom" : "right"),
        only: "ui-corner-all"
      }[position], result;
    }, "_buildSimpleOptions"),
    _spinnerOptions: /* @__PURE__ */ __name(function(position) {
      var options = this._buildSimpleOptions(position, "ui-spinner");
      return options.classes["ui-spinner-up"] = "", options.classes["ui-spinner-down"] = "", options;
    }, "_spinnerOptions"),
    _buttonOptions: /* @__PURE__ */ __name(function(position) {
      return this._buildSimpleOptions(position, "ui-button");
    }, "_buttonOptions"),
    _checkboxradioOptions: /* @__PURE__ */ __name(function(position) {
      return this._buildSimpleOptions(position, "ui-checkboxradio-label");
    }, "_checkboxradioOptions"),
    _selectmenuOptions: /* @__PURE__ */ __name(function(position) {
      var direction = this.options.direction === "vertical";
      return {
        width: direction ? "auto" : !1,
        classes: {
          middle: {
            "ui-selectmenu-button-open": "",
            "ui-selectmenu-button-closed": ""
          },
          first: {
            "ui-selectmenu-button-open": "ui-corner-" + (direction ? "top" : "tl"),
            "ui-selectmenu-button-closed": "ui-corner-" + (direction ? "top" : "left")
          },
          last: {
            "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
            "ui-selectmenu-button-closed": "ui-corner-" + (direction ? "bottom" : "right")
          },
          only: {
            "ui-selectmenu-button-open": "ui-corner-top",
            "ui-selectmenu-button-closed": "ui-corner-all"
          }
        }[position]
      };
    }, "_selectmenuOptions"),
    _resolveClassesValues: /* @__PURE__ */ __name(function(classes, instance) {
      var result = {};
      return $.each(classes, function(key) {
        var current = instance.options.classes[key] || "";
        current = $.trim(current.replace(controlgroupCornerRegex, "")), result[key] = (current + " " + classes[key]).replace(/\s+/g, " ");
      }), result;
    }, "_resolveClassesValues"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "direction" && this._removeClass("ui-controlgroup-" + this.options.direction), this._super(key, value), key === "disabled") {
        this._callChildMethod(value ? "disable" : "enable");
        return;
      }
      this.refresh();
    }, "_setOption"),
    refresh: /* @__PURE__ */ __name(function() {
      var children, that = this;
      this._addClass("ui-controlgroup ui-controlgroup-" + this.options.direction), this.options.direction === "horizontal" && this._addClass(null, "ui-helper-clearfix"), this._initWidgets(), children = this.childWidgets, this.options.onlyVisible && (children = children.filter(":visible")), children.length && ($.each(["first", "last"], function(index, value) {
        var instance = children[value]().data("ui-controlgroup-data");
        if (instance && that["_" + instance.widgetName + "Options"]) {
          var options = that["_" + instance.widgetName + "Options"](
            children.length === 1 ? "only" : value
          );
          options.classes = that._resolveClassesValues(options.classes, instance), instance.element[instance.widgetName](options);
        } else
          that._updateCornerClass(children[value](), value);
      }), this._callChildMethod("refresh"));
    }, "refresh")
  });
  /*!
  * jQuery UI Checkboxradio 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.checkboxradio", [$.ui.formResetMixin, {
    version: "1.12.1",
    options: {
      disabled: null,
      label: null,
      icon: !0,
      classes: {
        "ui-checkboxradio-label": "ui-corner-all",
        "ui-checkboxradio-icon": "ui-corner-all"
      }
    },
    _getCreateOptions: /* @__PURE__ */ __name(function() {
      var disabled, labels, that = this, options = this._super() || {};
      return this._readType(), labels = this.element.labels(), this.label = $(labels[labels.length - 1]), this.label.length || $.error("No label found for checkboxradio widget"), this.originalLabel = "", this.label.contents().not(this.element[0]).each(function() {
        that.originalLabel += this.nodeType === 3 ? $(this).text() : this.outerHTML;
      }), this.originalLabel && (options.label = this.originalLabel), disabled = this.element[0].disabled, disabled != null && (options.disabled = disabled), options;
    }, "_getCreateOptions"),
    _create: /* @__PURE__ */ __name(function() {
      var checked = this.element[0].checked;
      this._bindFormResetHandler(), this.options.disabled == null && (this.options.disabled = this.element[0].disabled), this._setOption("disabled", this.options.disabled), this._addClass("ui-checkboxradio", "ui-helper-hidden-accessible"), this._addClass(this.label, "ui-checkboxradio-label", "ui-button ui-widget"), this.type === "radio" && this._addClass(this.label, "ui-checkboxradio-radio-label"), this.options.label && this.options.label !== this.originalLabel ? this._updateLabel() : this.originalLabel && (this.options.label = this.originalLabel), this._enhance(), checked && (this._addClass(this.label, "ui-checkboxradio-checked", "ui-state-active"), this.icon && this._addClass(this.icon, null, "ui-state-hover")), this._on({
        change: "_toggleClasses",
        focus: /* @__PURE__ */ __name(function() {
          this._addClass(this.label, null, "ui-state-focus ui-visual-focus");
        }, "focus"),
        blur: /* @__PURE__ */ __name(function() {
          this._removeClass(this.label, null, "ui-state-focus ui-visual-focus");
        }, "blur")
      });
    }, "_create"),
    _readType: /* @__PURE__ */ __name(function() {
      var nodeName = this.element[0].nodeName.toLowerCase();
      this.type = this.element[0].type, (nodeName !== "input" || !/radio|checkbox/.test(this.type)) && $.error("Can't create checkboxradio on element.nodeName=" + nodeName + " and element.type=" + this.type);
    }, "_readType"),
    // Support jQuery Mobile enhanced option
    _enhance: /* @__PURE__ */ __name(function() {
      this._updateIcon(this.element[0].checked);
    }, "_enhance"),
    widget: /* @__PURE__ */ __name(function() {
      return this.label;
    }, "widget"),
    _getRadioGroup: /* @__PURE__ */ __name(function() {
      var group, name = this.element[0].name, nameSelector = "input[name='" + $.ui.escapeSelector(name) + "']";
      return name ? (this.form.length ? group = $(this.form[0].elements).filter(nameSelector) : group = $(nameSelector).filter(function() {
        return $(this).form().length === 0;
      }), group.not(this.element)) : $([]);
    }, "_getRadioGroup"),
    _toggleClasses: /* @__PURE__ */ __name(function() {
      var checked = this.element[0].checked;
      this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", checked), this.options.icon && this.type === "checkbox" && this._toggleClass(this.icon, null, "ui-icon-check ui-state-checked", checked)._toggleClass(this.icon, null, "ui-icon-blank", !checked), this.type === "radio" && this._getRadioGroup().each(function() {
        var instance = $(this).checkboxradio("instance");
        instance && instance._removeClass(
          instance.label,
          "ui-checkboxradio-checked",
          "ui-state-active"
        );
      });
    }, "_toggleClasses"),
    _destroy: /* @__PURE__ */ __name(function() {
      this._unbindFormResetHandler(), this.icon && (this.icon.remove(), this.iconSpace.remove());
    }, "_destroy"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (!(key === "label" && !value)) {
        if (this._super(key, value), key === "disabled") {
          this._toggleClass(this.label, null, "ui-state-disabled", value), this.element[0].disabled = value;
          return;
        }
        this.refresh();
      }
    }, "_setOption"),
    _updateIcon: /* @__PURE__ */ __name(function(checked) {
      var toAdd = "ui-icon ui-icon-background ";
      this.options.icon ? (this.icon || (this.icon = $("<span>"), this.iconSpace = $("<span> </span>"), this._addClass(this.iconSpace, "ui-checkboxradio-icon-space")), this.type === "checkbox" ? (toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank", this._removeClass(this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check")) : toAdd += "ui-icon-blank", this._addClass(this.icon, "ui-checkboxradio-icon", toAdd), checked || this._removeClass(this.icon, null, "ui-icon-check ui-state-checked"), this.icon.prependTo(this.label).after(this.iconSpace)) : this.icon !== void 0 && (this.icon.remove(), this.iconSpace.remove(), delete this.icon);
    }, "_updateIcon"),
    _updateLabel: /* @__PURE__ */ __name(function() {
      var contents = this.label.contents().not(this.element[0]);
      this.icon && (contents = contents.not(this.icon[0])), this.iconSpace && (contents = contents.not(this.iconSpace[0])), contents.remove(), this.label.append(this.options.label);
    }, "_updateLabel"),
    refresh: /* @__PURE__ */ __name(function() {
      var checked = this.element[0].checked, isDisabled = this.element[0].disabled;
      this._updateIcon(checked), this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", checked), this.options.label !== null && this._updateLabel(), isDisabled !== this.options.disabled && this._setOptions({ disabled: isDisabled });
    }, "refresh")
  }]), $.ui.checkboxradio;
  /*!
  * jQuery UI Button 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.button", {
    version: "1.12.1",
    defaultElement: "<button>",
    options: {
      classes: {
        "ui-button": "ui-corner-all"
      },
      disabled: null,
      icon: null,
      iconPosition: "beginning",
      label: null,
      showLabel: !0
    },
    _getCreateOptions: /* @__PURE__ */ __name(function() {
      var disabled, options = this._super() || {};
      return this.isInput = this.element.is("input"), disabled = this.element[0].disabled, disabled != null && (options.disabled = disabled), this.originalLabel = this.isInput ? this.element.val() : this.element.html(), this.originalLabel && (options.label = this.originalLabel), options;
    }, "_getCreateOptions"),
    _create: /* @__PURE__ */ __name(function() {
      !this.option.showLabel & !this.options.icon && (this.options.showLabel = !0), this.options.disabled == null && (this.options.disabled = this.element[0].disabled || !1), this.hasTitle = !!this.element.attr("title"), this.options.label && this.options.label !== this.originalLabel && (this.isInput ? this.element.val(this.options.label) : this.element.html(this.options.label)), this._addClass("ui-button", "ui-widget"), this._setOption("disabled", this.options.disabled), this._enhance(), this.element.is("a") && this._on({
        keyup: /* @__PURE__ */ __name(function(event) {
          event.keyCode === $.ui.keyCode.SPACE && (event.preventDefault(), this.element[0].click ? this.element[0].click() : this.element.trigger("click"));
        }, "keyup")
      });
    }, "_create"),
    _enhance: /* @__PURE__ */ __name(function() {
      this.element.is("button") || this.element.attr("role", "button"), this.options.icon && (this._updateIcon("icon", this.options.icon), this._updateTooltip());
    }, "_enhance"),
    _updateTooltip: /* @__PURE__ */ __name(function() {
      this.title = this.element.attr("title"), !this.options.showLabel && !this.title && this.element.attr("title", this.options.label);
    }, "_updateTooltip"),
    _updateIcon: /* @__PURE__ */ __name(function(option, value) {
      var icon = option !== "iconPosition", position = icon ? this.options.iconPosition : value, displayBlock = position === "top" || position === "bottom";
      this.icon ? icon && this._removeClass(this.icon, null, this.options.icon) : (this.icon = $("<span>"), this._addClass(this.icon, "ui-button-icon", "ui-icon"), this.options.showLabel || this._addClass("ui-button-icon-only")), icon && this._addClass(this.icon, null, value), this._attachIcon(position), displayBlock ? (this._addClass(this.icon, null, "ui-widget-icon-block"), this.iconSpace && this.iconSpace.remove()) : (this.iconSpace || (this.iconSpace = $("<span> </span>"), this._addClass(this.iconSpace, "ui-button-icon-space")), this._removeClass(this.icon, null, "ui-wiget-icon-block"), this._attachIconSpace(position));
    }, "_updateIcon"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.element.removeAttr("role"), this.icon && this.icon.remove(), this.iconSpace && this.iconSpace.remove(), this.hasTitle || this.element.removeAttr("title");
    }, "_destroy"),
    _attachIconSpace: /* @__PURE__ */ __name(function(iconPosition) {
      this.icon[/^(?:end|bottom)/.test(iconPosition) ? "before" : "after"](this.iconSpace);
    }, "_attachIconSpace"),
    _attachIcon: /* @__PURE__ */ __name(function(iconPosition) {
      this.element[/^(?:end|bottom)/.test(iconPosition) ? "append" : "prepend"](this.icon);
    }, "_attachIcon"),
    _setOptions: /* @__PURE__ */ __name(function(options) {
      var newShowLabel = options.showLabel === void 0 ? this.options.showLabel : options.showLabel, newIcon = options.icon === void 0 ? this.options.icon : options.icon;
      !newShowLabel && !newIcon && (options.showLabel = !0), this._super(options);
    }, "_setOptions"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      key === "icon" && (value ? this._updateIcon(key, value) : this.icon && (this.icon.remove(), this.iconSpace && this.iconSpace.remove())), key === "iconPosition" && this._updateIcon(key, value), key === "showLabel" && (this._toggleClass("ui-button-icon-only", null, !value), this._updateTooltip()), key === "label" && (this.isInput ? this.element.val(value) : (this.element.html(value), this.icon && (this._attachIcon(this.options.iconPosition), this._attachIconSpace(this.options.iconPosition)))), this._super(key, value), key === "disabled" && (this._toggleClass(null, "ui-state-disabled", value), this.element[0].disabled = value, value && this.element.blur());
    }, "_setOption"),
    refresh: /* @__PURE__ */ __name(function() {
      var isDisabled = this.element.is("input, button") ? this.element[0].disabled : this.element.hasClass("ui-button-disabled");
      isDisabled !== this.options.disabled && this._setOptions({ disabled: isDisabled }), this._updateTooltip();
    }, "refresh")
  }), $.uiBackCompat !== !1 && ($.widget("ui.button", $.ui.button, {
    options: {
      text: !0,
      icons: {
        primary: null,
        secondary: null
      }
    },
    _create: /* @__PURE__ */ __name(function() {
      this.options.showLabel && !this.options.text && (this.options.showLabel = this.options.text), !this.options.showLabel && this.options.text && (this.options.text = this.options.showLabel), !this.options.icon && (this.options.icons.primary || this.options.icons.secondary) ? this.options.icons.primary ? this.options.icon = this.options.icons.primary : (this.options.icon = this.options.icons.secondary, this.options.iconPosition = "end") : this.options.icon && (this.options.icons.primary = this.options.icon), this._super();
    }, "_create"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "text") {
        this._super("showLabel", value);
        return;
      }
      key === "showLabel" && (this.options.text = value), key === "icon" && (this.options.icons.primary = value), key === "icons" && (value.primary ? (this._super("icon", value.primary), this._super("iconPosition", "beginning")) : value.secondary && (this._super("icon", value.secondary), this._super("iconPosition", "end"))), this._superApply(arguments);
    }, "_setOption")
  }), $.fn.button = /* @__PURE__ */ function(orig) {
    return function() {
      return !this.length || this.length && this[0].tagName !== "INPUT" || this.length && this[0].tagName === "INPUT" && this.attr("type") !== "checkbox" && this.attr("type") !== "radio" ? orig.apply(this, arguments) : ($.ui.checkboxradio || $.error("Checkboxradio widget missing"), arguments.length === 0 ? this.checkboxradio({
        icon: !1
      }) : this.checkboxradio.apply(this, arguments));
    };
  }($.fn.button), $.fn.buttonset = function() {
    return $.ui.controlgroup || $.error("Controlgroup widget missing"), arguments[0] === "option" && arguments[1] === "items" && arguments[2] ? this.controlgroup.apply(
      this,
      [arguments[0], "items.button", arguments[2]]
    ) : arguments[0] === "option" && arguments[1] === "items" ? this.controlgroup.apply(this, [arguments[0], "items.button"]) : (typeof arguments[0] == "object" && arguments[0].items && (arguments[0].items = {
      button: arguments[0].items
    }), this.controlgroup.apply(this, arguments));
  }), $.ui.button;
  /*!
  * jQuery UI Datepicker 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.extend($.ui, { datepicker: { version: "1.12.1" } });
  var datepicker_instActive;
  function datepicker_getZindex(elem) {
    for (var position, value; elem.length && elem[0] !== document; ) {
      if (position = elem.css("position"), (position === "absolute" || position === "relative" || position === "fixed") && (value = parseInt(elem.css("zIndex"), 10), !isNaN(value) && value !== 0))
        return value;
      elem = elem.parent();
    }
    return 0;
  }
  __name(datepicker_getZindex, "datepicker_getZindex");
  function Datepicker() {
    this._curInst = null, this._keyEvent = !1, this._disabledInputs = [], this._datepickerShowing = !1, this._inDialog = !1, this._mainDivId = "ui-datepicker-div", this._inlineClass = "ui-datepicker-inline", this._appendClass = "ui-datepicker-append", this._triggerClass = "ui-datepicker-trigger", this._dialogClass = "ui-datepicker-dialog", this._disableClass = "ui-datepicker-disabled", this._unselectableClass = "ui-datepicker-unselectable", this._currentClass = "ui-datepicker-current-day", this._dayOverClass = "ui-datepicker-days-cell-over", this.regional = [], this.regional[""] = {
      // Default regional settings
      closeText: "Done",
      // Display text for close link
      prevText: "Prev",
      // Display text for previous month link
      nextText: "Next",
      // Display text for next month link
      currentText: "Today",
      // Display text for current month link
      monthNames: [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
      ],
      // Names of months for drop-down and formatting
      monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
      // For formatting
      dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      // For formatting
      dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      // For formatting
      dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
      // Column headings for days starting at Sunday
      weekHeader: "Wk",
      // Column header for week of the year
      dateFormat: "mm/dd/yy",
      // See format options on parseDate
      firstDay: 0,
      // The first day of the week, Sun = 0, Mon = 1, ...
      isRTL: !1,
      // True if right-to-left language, false if left-to-right
      showMonthAfterYear: !1,
      // True if the year select precedes month, false for month then year
      yearSuffix: ""
      // Additional text to append to the year in the month headers
    }, this._defaults = {
      // Global defaults for all the date picker instances
      showOn: "focus",
      // "focus" for popup on focus,
      // "button" for trigger button, or "both" for either
      showAnim: "fadeIn",
      // Name of jQuery animation for popup
      showOptions: {},
      // Options for enhanced animations
      defaultDate: null,
      // Used when field is blank: actual date,
      // +/-number for offset from today, null for today
      appendText: "",
      // Display text following the input box, e.g. showing the format
      buttonText: "...",
      // Text for trigger button
      buttonImage: "",
      // URL for trigger button image
      buttonImageOnly: !1,
      // True if the image appears alone, false if it appears on a button
      hideIfNoPrevNext: !1,
      // True to hide next/previous month links
      // if not applicable, false to just disable them
      navigationAsDateFormat: !1,
      // True if date formatting applied to prev/today/next links
      gotoCurrent: !1,
      // True if today link goes back to current selection instead
      changeMonth: !1,
      // True if month can be selected directly, false if only prev/next
      changeYear: !1,
      // True if year can be selected directly, false if only prev/next
      yearRange: "c-10:c+10",
      // Range of years to display in drop-down,
      // either relative to today's year (-nn:+nn), relative to currently displayed year
      // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
      showOtherMonths: !1,
      // True to show dates in other months, false to leave blank
      selectOtherMonths: !1,
      // True to allow selection of dates in other months, false for unselectable
      showWeek: !1,
      // True to show week of the year, false to not show it
      calculateWeek: this.iso8601Week,
      // How to calculate the week of the year,
      // takes a Date and returns the number of the week for it
      shortYearCutoff: "+10",
      // Short year values < this are in the current century,
      // > this are in the previous century,
      // string value starting with "+" for current year + value
      minDate: null,
      // The earliest selectable date, or null for no limit
      maxDate: null,
      // The latest selectable date, or null for no limit
      duration: "fast",
      // Duration of display/closure
      beforeShowDay: null,
      // Function that takes a date and returns an array with
      // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
      // [2] = cell title (optional), e.g. $.datepicker.noWeekends
      beforeShow: null,
      // Function that takes an input field and
      // returns a set of custom settings for the date picker
      onSelect: null,
      // Define a callback function when a date is selected
      onChangeMonthYear: null,
      // Define a callback function when the month or year is changed
      onClose: null,
      // Define a callback function when the datepicker is closed
      numberOfMonths: 1,
      // Number of months to show at a time
      showCurrentAtPos: 0,
      // The position in multipe months at which to show the current month (starting at 0)
      stepMonths: 1,
      // Number of months to step back/forward
      stepBigMonths: 12,
      // Number of months to step back/forward for the big links
      altField: "",
      // Selector for an alternate field to store selected dates into
      altFormat: "",
      // The date format to use for the alternate field
      constrainInput: !0,
      // The input is constrained by the current date format
      showButtonPanel: !1,
      // True to show button panel, false to not show it
      autoSize: !1,
      // True to size the input for the date format, false to leave as is
      disabled: !1
      // The initial disabled state
    }, $.extend(this._defaults, this.regional[""]), this.regional.en = $.extend(!0, {}, this.regional[""]), this.regional["en-US"] = $.extend(!0, {}, this.regional.en), this.dpDiv = datepicker_bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
  }
  __name(Datepicker, "Datepicker"), $.extend(Datepicker.prototype, {
    /* Class name added to elements to indicate already configured with a date picker. */
    markerClassName: "hasDatepicker",
    //Keep track of the maximum number of rows displayed (see #7043)
    maxRows: 4,
    // TODO rename to "widget" when switching to widget factory
    _widgetDatepicker: /* @__PURE__ */ __name(function() {
      return this.dpDiv;
    }, "_widgetDatepicker"),
    /* Override the default settings for all instances of the date picker.
    * @param  settings  object - the new settings to use as defaults (anonymous object)
    * @return the manager object
    */
    setDefaults: /* @__PURE__ */ __name(function(settings) {
      return datepicker_extendRemove(this._defaults, settings || {}), this;
    }, "setDefaults"),
    /* Attach the date picker to a jQuery selection.
    * @param  target	element - the target input field or division or span
    * @param  settings  object - the new settings to use for this date picker instance (anonymous)
    */
    _attachDatepicker: /* @__PURE__ */ __name(function(target, settings) {
      var nodeName, inline, inst;
      nodeName = target.nodeName.toLowerCase(), inline = nodeName === "div" || nodeName === "span", target.id || (this.uuid += 1, target.id = "dp" + this.uuid), inst = this._newInst($(target), inline), inst.settings = $.extend({}, settings || {}), nodeName === "input" ? this._connectDatepicker(target, inst) : inline && this._inlineDatepicker(target, inst);
    }, "_attachDatepicker"),
    /* Create a new instance object. */
    _newInst: /* @__PURE__ */ __name(function(target, inline) {
      var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1");
      return {
        id,
        input: target,
        // associated target
        selectedDay: 0,
        selectedMonth: 0,
        selectedYear: 0,
        // current selection
        drawMonth: 0,
        drawYear: 0,
        // month being drawn
        inline,
        // is datepicker inline or not
        dpDiv: inline ? (
          // presentation div
          datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))
        ) : this.dpDiv
      };
    }, "_newInst"),
    /* Attach the date picker to an input field. */
    _connectDatepicker: /* @__PURE__ */ __name(function(target, inst) {
      var input = $(target);
      inst.append = $([]), inst.trigger = $([]), !input.hasClass(this.markerClassName) && (this._attachments(input, inst), input.addClass(this.markerClassName).on("keydown", this._doKeyDown).on("keypress", this._doKeyPress).on("keyup", this._doKeyUp), this._autoSize(inst), $.data(target, "datepicker", inst), inst.settings.disabled && this._disableDatepicker(target));
    }, "_connectDatepicker"),
    /* Make attachments based on settings. */
    _attachments: /* @__PURE__ */ __name(function(input, inst) {
      var showOn, buttonText, buttonImage, appendText = this._get(inst, "appendText"), isRTL = this._get(inst, "isRTL");
      inst.append && inst.append.remove(), appendText && (inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"), input[isRTL ? "before" : "after"](inst.append)), input.off("focus", this._showDatepicker), inst.trigger && inst.trigger.remove(), showOn = this._get(inst, "showOn"), (showOn === "focus" || showOn === "both") && input.on("focus", this._showDatepicker), (showOn === "button" || showOn === "both") && (buttonText = this._get(inst, "buttonText"), buttonImage = this._get(inst, "buttonImage"), inst.trigger = $(this._get(inst, "buttonImageOnly") ? $("<img/>").addClass(this._triggerClass).attr({ src: buttonImage, alt: buttonText, title: buttonText }) : $("<button type='button'></button>").addClass(this._triggerClass).html(buttonImage ? $("<img/>").attr(
        { src: buttonImage, alt: buttonText, title: buttonText }
      ) : buttonText)), input[isRTL ? "before" : "after"](inst.trigger), inst.trigger.on("click", function() {
        return $.datepicker._datepickerShowing && $.datepicker._lastInput === input[0] ? $.datepicker._hideDatepicker() : ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0] && $.datepicker._hideDatepicker(), $.datepicker._showDatepicker(input[0])), !1;
      }));
    }, "_attachments"),
    /* Apply the maximum length for the date format. */
    _autoSize: /* @__PURE__ */ __name(function(inst) {
      if (this._get(inst, "autoSize") && !inst.inline) {
        var findMax, max, maxI, i, date = new Date(2009, 11, 20), dateFormat = this._get(inst, "dateFormat");
        dateFormat.match(/[DM]/) && (findMax = /* @__PURE__ */ __name(function(names) {
          for (max = 0, maxI = 0, i = 0; i < names.length; i++)
            names[i].length > max && (max = names[i].length, maxI = i);
          return maxI;
        }, "findMax"), date.setMonth(findMax(this._get(inst, dateFormat.match(/MM/) ? "monthNames" : "monthNamesShort"))), date.setDate(findMax(this._get(inst, dateFormat.match(/DD/) ? "dayNames" : "dayNamesShort")) + 20 - date.getDay())), inst.input.attr("size", this._formatDate(inst, date).length);
      }
    }, "_autoSize"),
    /* Attach an inline date picker to a div. */
    _inlineDatepicker: /* @__PURE__ */ __name(function(target, inst) {
      var divSpan = $(target);
      divSpan.hasClass(this.markerClassName) || (divSpan.addClass(this.markerClassName).append(inst.dpDiv), $.data(target, "datepicker", inst), this._setDate(inst, this._getDefaultDate(inst), !0), this._updateDatepicker(inst), this._updateAlternate(inst), inst.settings.disabled && this._disableDatepicker(target), inst.dpDiv.css("display", "block"));
    }, "_inlineDatepicker"),
    /* Pop-up the date picker in a "dialog" box.
    * @param  input element - ignored
    * @param  date	string or Date - the initial date to display
    * @param  onSelect  function - the function to call when a date is selected
    * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
    * @param  pos int[2] - coordinates for the dialog's position within the screen or
    *					event - with x/y coordinates or
    *					leave empty for default (screen centre)
    * @return the manager object
    */
    _dialogDatepicker: /* @__PURE__ */ __name(function(input, date, onSelect, settings, pos) {
      var id, browserWidth, browserHeight, scrollX, scrollY, inst = this._dialogInst;
      return inst || (this.uuid += 1, id = "dp" + this.uuid, this._dialogInput = $("<input type='text' id='" + id + "' style='position: absolute; top: -100px; width: 0px;'/>"), this._dialogInput.on("keydown", this._doKeyDown), $("body").append(this._dialogInput), inst = this._dialogInst = this._newInst(this._dialogInput, !1), inst.settings = {}, $.data(this._dialogInput[0], "datepicker", inst)), datepicker_extendRemove(inst.settings, settings || {}), date = date && date.constructor === Date ? this._formatDate(inst, date) : date, this._dialogInput.val(date), this._pos = pos ? pos.length ? pos : [pos.pageX, pos.pageY] : null, this._pos || (browserWidth = document.documentElement.clientWidth, browserHeight = document.documentElement.clientHeight, scrollX = document.documentElement.scrollLeft || document.body.scrollLeft, scrollY = document.documentElement.scrollTop || document.body.scrollTop, this._pos = // should use actual width/height below
      [browserWidth / 2 - 100 + scrollX, browserHeight / 2 - 150 + scrollY]), this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px"), inst.settings.onSelect = onSelect, this._inDialog = !0, this.dpDiv.addClass(this._dialogClass), this._showDatepicker(this._dialogInput[0]), $.blockUI && $.blockUI(this.dpDiv), $.data(this._dialogInput[0], "datepicker", inst), this;
    }, "_dialogDatepicker"),
    /* Detach a datepicker from its control.
    * @param  target	element - the target input field or division or span
    */
    _destroyDatepicker: /* @__PURE__ */ __name(function(target) {
      var nodeName, $target = $(target), inst = $.data(target, "datepicker");
      $target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), $.removeData(target, "datepicker"), nodeName === "input" ? (inst.append.remove(), inst.trigger.remove(), $target.removeClass(this.markerClassName).off("focus", this._showDatepicker).off("keydown", this._doKeyDown).off("keypress", this._doKeyPress).off("keyup", this._doKeyUp)) : (nodeName === "div" || nodeName === "span") && $target.removeClass(this.markerClassName).empty(), datepicker_instActive === inst && (datepicker_instActive = null));
    }, "_destroyDatepicker"),
    /* Enable the date picker to a jQuery selection.
    * @param  target	element - the target input field or division or span
    */
    _enableDatepicker: /* @__PURE__ */ __name(function(target) {
      var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker");
      $target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), nodeName === "input" ? (target.disabled = !1, inst.trigger.filter("button").each(function() {
        this.disabled = !1;
      }).end().filter("img").css({ opacity: "1.0", cursor: "" })) : (nodeName === "div" || nodeName === "span") && (inline = $target.children("." + this._inlineClass), inline.children().removeClass("ui-state-disabled"), inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !1)), this._disabledInputs = $.map(
        this._disabledInputs,
        function(value) {
          return value === target ? null : value;
        }
      ));
    }, "_enableDatepicker"),
    /* Disable the date picker to a jQuery selection.
    * @param  target	element - the target input field or division or span
    */
    _disableDatepicker: /* @__PURE__ */ __name(function(target) {
      var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker");
      $target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), nodeName === "input" ? (target.disabled = !0, inst.trigger.filter("button").each(function() {
        this.disabled = !0;
      }).end().filter("img").css({ opacity: "0.5", cursor: "default" })) : (nodeName === "div" || nodeName === "span") && (inline = $target.children("." + this._inlineClass), inline.children().addClass("ui-state-disabled"), inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !0)), this._disabledInputs = $.map(
        this._disabledInputs,
        function(value) {
          return value === target ? null : value;
        }
      ), this._disabledInputs[this._disabledInputs.length] = target);
    }, "_disableDatepicker"),
    /* Is the first field in a jQuery collection disabled as a datepicker?
    * @param  target	element - the target input field or division or span
    * @return boolean - true if disabled, false if enabled
    */
    _isDisabledDatepicker: /* @__PURE__ */ __name(function(target) {
      if (!target)
        return !1;
      for (var i = 0; i < this._disabledInputs.length; i++)
        if (this._disabledInputs[i] === target)
          return !0;
      return !1;
    }, "_isDisabledDatepicker"),
    /* Retrieve the instance data for the target control.
    * @param  target  element - the target input field or division or span
    * @return  object - the associated instance data
    * @throws  error if a jQuery problem getting data
    */
    _getInst: /* @__PURE__ */ __name(function(target) {
      try {
        return $.data(target, "datepicker");
      } catch {
        throw "Missing instance data for this datepicker";
      }
    }, "_getInst"),
    /* Update or retrieve the settings for a date picker attached to an input field or division.
    * @param  target  element - the target input field or division or span
    * @param  name	object - the new settings to update or
    *				string - the name of the setting to change or retrieve,
    *				when retrieving also "all" for all instance settings or
    *				"defaults" for all global defaults
    * @param  value   any - the new value for the setting
    *				(omit if above is an object or to retrieve a value)
    */
    _optionDatepicker: /* @__PURE__ */ __name(function(target, name, value) {
      var settings, date, minDate, maxDate, inst = this._getInst(target);
      if (arguments.length === 2 && typeof name == "string")
        return name === "defaults" ? $.extend({}, $.datepicker._defaults) : inst ? name === "all" ? $.extend({}, inst.settings) : this._get(inst, name) : null;
      settings = name || {}, typeof name == "string" && (settings = {}, settings[name] = value), inst && (this._curInst === inst && this._hideDatepicker(), date = this._getDateDatepicker(target, !0), minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), datepicker_extendRemove(inst.settings, settings), minDate !== null && settings.dateFormat !== void 0 && settings.minDate === void 0 && (inst.settings.minDate = this._formatDate(inst, minDate)), maxDate !== null && settings.dateFormat !== void 0 && settings.maxDate === void 0 && (inst.settings.maxDate = this._formatDate(inst, maxDate)), "disabled" in settings && (settings.disabled ? this._disableDatepicker(target) : this._enableDatepicker(target)), this._attachments($(target), inst), this._autoSize(inst), this._setDate(inst, date), this._updateAlternate(inst), this._updateDatepicker(inst));
    }, "_optionDatepicker"),
    // Change method deprecated
    _changeDatepicker: /* @__PURE__ */ __name(function(target, name, value) {
      this._optionDatepicker(target, name, value);
    }, "_changeDatepicker"),
    /* Redraw the date picker attached to an input field or division.
    * @param  target  element - the target input field or division or span
    */
    _refreshDatepicker: /* @__PURE__ */ __name(function(target) {
      var inst = this._getInst(target);
      inst && this._updateDatepicker(inst);
    }, "_refreshDatepicker"),
    /* Set the dates for a jQuery selection.
    * @param  target element - the target input field or division or span
    * @param  date	Date - the new date
    */
    _setDateDatepicker: /* @__PURE__ */ __name(function(target, date) {
      var inst = this._getInst(target);
      inst && (this._setDate(inst, date), this._updateDatepicker(inst), this._updateAlternate(inst));
    }, "_setDateDatepicker"),
    /* Get the date(s) for the first entry in a jQuery selection.
    * @param  target element - the target input field or division or span
    * @param  noDefault boolean - true if no default date is to be used
    * @return Date - the current date
    */
    _getDateDatepicker: /* @__PURE__ */ __name(function(target, noDefault) {
      var inst = this._getInst(target);
      return inst && !inst.inline && this._setDateFromField(inst, noDefault), inst ? this._getDate(inst) : null;
    }, "_getDateDatepicker"),
    /* Handle keystrokes. */
    _doKeyDown: /* @__PURE__ */ __name(function(event) {
      var onSelect, dateStr, sel, inst = $.datepicker._getInst(event.target), handled = !0, isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
      if (inst._keyEvent = !0, $.datepicker._datepickerShowing)
        switch (event.keyCode) {
          case 9:
            $.datepicker._hideDatepicker(), handled = !1;
            break;
          // hide on tab out
          case 13:
            return sel = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", inst.dpDiv), sel[0] && $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]), onSelect = $.datepicker._get(inst, "onSelect"), onSelect ? (dateStr = $.datepicker._formatDate(inst), onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst])) : $.datepicker._hideDatepicker(), !1;
          // don't submit the form
          case 27:
            $.datepicker._hideDatepicker();
            break;
          // hide on escape
          case 33:
            $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths"), "M");
            break;
          // previous month/year on page up/+ ctrl
          case 34:
            $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths"), "M");
            break;
          // next month/year on page down/+ ctrl
          case 35:
            (event.ctrlKey || event.metaKey) && $.datepicker._clearDate(event.target), handled = event.ctrlKey || event.metaKey;
            break;
          // clear on ctrl or command +end
          case 36:
            (event.ctrlKey || event.metaKey) && $.datepicker._gotoToday(event.target), handled = event.ctrlKey || event.metaKey;
            break;
          // current on ctrl or command +home
          case 37:
            (event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, isRTL ? 1 : -1, "D"), handled = event.ctrlKey || event.metaKey, event.originalEvent.altKey && $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths"), "M");
            break;
          case 38:
            (event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, -7, "D"), handled = event.ctrlKey || event.metaKey;
            break;
          // -1 week on ctrl or command +up
          case 39:
            (event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, isRTL ? -1 : 1, "D"), handled = event.ctrlKey || event.metaKey, event.originalEvent.altKey && $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths"), "M");
            break;
          case 40:
            (event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, 7, "D"), handled = event.ctrlKey || event.metaKey;
            break;
          // +1 week on ctrl or command +down
          default:
            handled = !1;
        }
      else event.keyCode === 36 && event.ctrlKey ? $.datepicker._showDatepicker(this) : handled = !1;
      handled && (event.preventDefault(), event.stopPropagation());
    }, "_doKeyDown"),
    /* Filter entered characters - based on date format. */
    _doKeyPress: /* @__PURE__ */ __name(function(event) {
      var chars, chr, inst = $.datepicker._getInst(event.target);
      if ($.datepicker._get(inst, "constrainInput"))
        return chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")), chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode), event.ctrlKey || event.metaKey || chr < " " || !chars || chars.indexOf(chr) > -1;
    }, "_doKeyPress"),
    /* Synchronise manual entry and field/alternate field. */
    _doKeyUp: /* @__PURE__ */ __name(function(event) {
      var date, inst = $.datepicker._getInst(event.target);
      if (inst.input.val() !== inst.lastVal)
        try {
          date = $.datepicker.parseDate(
            $.datepicker._get(inst, "dateFormat"),
            inst.input ? inst.input.val() : null,
            $.datepicker._getFormatConfig(inst)
          ), date && ($.datepicker._setDateFromField(inst), $.datepicker._updateAlternate(inst), $.datepicker._updateDatepicker(inst));
        } catch {
        }
      return !0;
    }, "_doKeyUp"),
    /* Pop-up the date picker for a given input field.
    * If false returned from beforeShow event handler do not show.
    * @param  input  element - the input field attached to the date picker or
    *					event - if triggered by focus
    */
    _showDatepicker: /* @__PURE__ */ __name(function(input) {
      if (input = input.target || input, input.nodeName.toLowerCase() !== "input" && (input = $("input", input.parentNode)[0]), !($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input)) {
        var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration;
        inst = $.datepicker._getInst(input), $.datepicker._curInst && $.datepicker._curInst !== inst && ($.datepicker._curInst.dpDiv.stop(!0, !0), inst && $.datepicker._datepickerShowing && $.datepicker._hideDatepicker($.datepicker._curInst.input[0])), beforeShow = $.datepicker._get(inst, "beforeShow"), beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}, beforeShowSettings !== !1 && (datepicker_extendRemove(inst.settings, beforeShowSettings), inst.lastVal = null, $.datepicker._lastInput = input, $.datepicker._setDateFromField(inst), $.datepicker._inDialog && (input.value = ""), $.datepicker._pos || ($.datepicker._pos = $.datepicker._findPos(input), $.datepicker._pos[1] += input.offsetHeight), isFixed = !1, $(input).parents().each(function() {
          return isFixed |= $(this).css("position") === "fixed", !isFixed;
        }), offset = { left: $.datepicker._pos[0], top: $.datepicker._pos[1] }, $.datepicker._pos = null, inst.dpDiv.empty(), inst.dpDiv.css({ position: "absolute", display: "block", top: "-1000px" }), $.datepicker._updateDatepicker(inst), offset = $.datepicker._checkOffset(inst, offset, isFixed), inst.dpDiv.css({
          position: $.datepicker._inDialog && $.blockUI ? "static" : isFixed ? "fixed" : "absolute",
          display: "none",
          left: offset.left + "px",
          top: offset.top + "px"
        }), inst.inline || (showAnim = $.datepicker._get(inst, "showAnim"), duration = $.datepicker._get(inst, "duration"), inst.dpDiv.css("z-index", datepicker_getZindex($(input)) + 1), $.datepicker._datepickerShowing = !0, $.effects && $.effects.effect[showAnim] ? inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration) : inst.dpDiv[showAnim || "show"](showAnim ? duration : null), $.datepicker._shouldFocusInput(inst) && inst.input.trigger("focus"), $.datepicker._curInst = inst));
      }
    }, "_showDatepicker"),
    /* Generate the date picker content. */
    _updateDatepicker: /* @__PURE__ */ __name(function(inst) {
      this.maxRows = 4, datepicker_instActive = inst, inst.dpDiv.empty().append(this._generateHTML(inst)), this._attachHandlers(inst);
      var origyearshtml, numMonths = this._getNumberOfMonths(inst), cols = numMonths[1], width = 17, activeCell = inst.dpDiv.find("." + this._dayOverClass + " a");
      activeCell.length > 0 && datepicker_handleMouseover.apply(activeCell.get(0)), inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""), cols > 1 && inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", width * cols + "em"), inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + "Class"]("ui-datepicker-multi"), inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"), inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput(inst) && inst.input.trigger("focus"), inst.yearshtml && (origyearshtml = inst.yearshtml, setTimeout(function() {
        origyearshtml === inst.yearshtml && inst.yearshtml && inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml), origyearshtml = inst.yearshtml = null;
      }, 0));
    }, "_updateDatepicker"),
    // #6694 - don't focus the input if it's already focused
    // this breaks the change event in IE
    // Support: IE and jQuery <1.9
    _shouldFocusInput: /* @__PURE__ */ __name(function(inst) {
      return inst.input && inst.input.is(":visible") && !inst.input.is(":disabled") && !inst.input.is(":focus");
    }, "_shouldFocusInput"),
    /* Check positioning to remain on screen. */
    _checkOffset: /* @__PURE__ */ __name(function(inst, offset, isFixed) {
      var dpWidth = inst.dpDiv.outerWidth(), dpHeight = inst.dpDiv.outerHeight(), inputWidth = inst.input ? inst.input.outerWidth() : 0, inputHeight = inst.input ? inst.input.outerHeight() : 0, viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
      return offset.left -= this._get(inst, "isRTL") ? dpWidth - inputWidth : 0, offset.left -= isFixed && offset.left === inst.input.offset().left ? $(document).scrollLeft() : 0, offset.top -= isFixed && offset.top === inst.input.offset().top + inputHeight ? $(document).scrollTop() : 0, offset.left -= Math.min(offset.left, offset.left + dpWidth > viewWidth && viewWidth > dpWidth ? Math.abs(offset.left + dpWidth - viewWidth) : 0), offset.top -= Math.min(offset.top, offset.top + dpHeight > viewHeight && viewHeight > dpHeight ? Math.abs(dpHeight + inputHeight) : 0), offset;
    }, "_checkOffset"),
    /* Find an object's position on the screen. */
    _findPos: /* @__PURE__ */ __name(function(obj) {
      for (var position, inst = this._getInst(obj), isRTL = this._get(inst, "isRTL"); obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj)); )
        obj = obj[isRTL ? "previousSibling" : "nextSibling"];
      return position = $(obj).offset(), [position.left, position.top];
    }, "_findPos"),
    /* Hide the date picker from view.
    * @param  input  element - the input field attached to the date picker
    */
    _hideDatepicker: /* @__PURE__ */ __name(function(input) {
      var showAnim, duration, postProcess, onClose, inst = this._curInst;
      !inst || input && inst !== $.data(input, "datepicker") || this._datepickerShowing && (showAnim = this._get(inst, "showAnim"), duration = this._get(inst, "duration"), postProcess = /* @__PURE__ */ __name(function() {
        $.datepicker._tidyDialog(inst);
      }, "postProcess"), $.effects && ($.effects.effect[showAnim] || $.effects[showAnim]) ? inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess) : inst.dpDiv[showAnim === "slideDown" ? "slideUp" : showAnim === "fadeIn" ? "fadeOut" : "hide"](showAnim ? duration : null, postProcess), showAnim || postProcess(), this._datepickerShowing = !1, onClose = this._get(inst, "onClose"), onClose && onClose.apply(inst.input ? inst.input[0] : null, [inst.input ? inst.input.val() : "", inst]), this._lastInput = null, this._inDialog && (this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }), $.blockUI && ($.unblockUI(), $("body").append(this.dpDiv))), this._inDialog = !1);
    }, "_hideDatepicker"),
    /* Tidy up after a dialog display. */
    _tidyDialog: /* @__PURE__ */ __name(function(inst) {
      inst.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar");
    }, "_tidyDialog"),
    /* Close date picker if clicked elsewhere. */
    _checkExternalClick: /* @__PURE__ */ __name(function(event) {
      if ($.datepicker._curInst) {
        var $target = $(event.target), inst = $.datepicker._getInst($target[0]);
        ($target[0].id !== $.datepicker._mainDivId && $target.parents("#" + $.datepicker._mainDivId).length === 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) || $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst) && $.datepicker._hideDatepicker();
      }
    }, "_checkExternalClick"),
    /* Adjust one of the date sub-fields. */
    _adjustDate: /* @__PURE__ */ __name(function(id, offset, period) {
      var target = $(id), inst = this._getInst(target[0]);
      this._isDisabledDatepicker(target[0]) || (this._adjustInstDate(
        inst,
        offset + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0),
        // undo positioning
        period
      ), this._updateDatepicker(inst));
    }, "_adjustDate"),
    /* Action for current link. */
    _gotoToday: /* @__PURE__ */ __name(function(id) {
      var date, target = $(id), inst = this._getInst(target[0]);
      this._get(inst, "gotoCurrent") && inst.currentDay ? (inst.selectedDay = inst.currentDay, inst.drawMonth = inst.selectedMonth = inst.currentMonth, inst.drawYear = inst.selectedYear = inst.currentYear) : (date = /* @__PURE__ */ new Date(), inst.selectedDay = date.getDate(), inst.drawMonth = inst.selectedMonth = date.getMonth(), inst.drawYear = inst.selectedYear = date.getFullYear()), this._notifyChange(inst), this._adjustDate(target);
    }, "_gotoToday"),
    /* Action for selecting a new month/year. */
    _selectMonthYear: /* @__PURE__ */ __name(function(id, select, period) {
      var target = $(id), inst = this._getInst(target[0]);
      inst["selected" + (period === "M" ? "Month" : "Year")] = inst["draw" + (period === "M" ? "Month" : "Year")] = parseInt(select.options[select.selectedIndex].value, 10), this._notifyChange(inst), this._adjustDate(target);
    }, "_selectMonthYear"),
    /* Action for selecting a day. */
    _selectDay: /* @__PURE__ */ __name(function(id, month, year, td) {
      var inst, target = $(id);
      $(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0]) || (inst = this._getInst(target[0]), inst.selectedDay = inst.currentDay = $("a", td).html(), inst.selectedMonth = inst.currentMonth = month, inst.selectedYear = inst.currentYear = year, this._selectDate(id, this._formatDate(
        inst,
        inst.currentDay,
        inst.currentMonth,
        inst.currentYear
      )));
    }, "_selectDay"),
    /* Erase the input field and hide the date picker. */
    _clearDate: /* @__PURE__ */ __name(function(id) {
      var target = $(id);
      this._selectDate(target, "");
    }, "_clearDate"),
    /* Update the input field with the selected date. */
    _selectDate: /* @__PURE__ */ __name(function(id, dateStr) {
      var onSelect, target = $(id), inst = this._getInst(target[0]);
      dateStr = dateStr ?? this._formatDate(inst), inst.input && inst.input.val(dateStr), this._updateAlternate(inst), onSelect = this._get(inst, "onSelect"), onSelect ? onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]) : inst.input && inst.input.trigger("change"), inst.inline ? this._updateDatepicker(inst) : (this._hideDatepicker(), this._lastInput = inst.input[0], typeof inst.input[0] != "object" && inst.input.trigger("focus"), this._lastInput = null);
    }, "_selectDate"),
    /* Update any alternate field to synchronise with the main field. */
    _updateAlternate: /* @__PURE__ */ __name(function(inst) {
      var altFormat, date, dateStr, altField = this._get(inst, "altField");
      altField && (altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"), date = this._getDate(inst), dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)), $(altField).val(dateStr));
    }, "_updateAlternate"),
    /* Set as beforeShowDay function to prevent selection of weekends.
    * @param  date  Date - the date to customise
    * @return [boolean, string] - is this date selectable?, what is its CSS class?
    */
    noWeekends: /* @__PURE__ */ __name(function(date) {
      var day = date.getDay();
      return [day > 0 && day < 6, ""];
    }, "noWeekends"),
    /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
    * @param  date  Date - the date to get the week for
    * @return  number - the number of the week within the year that contains this date
    */
    iso8601Week: /* @__PURE__ */ __name(function(date) {
      var time, checkDate = new Date(date.getTime());
      return checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)), time = checkDate.getTime(), checkDate.setMonth(0), checkDate.setDate(1), Math.floor(Math.round((time - checkDate) / 864e5) / 7) + 1;
    }, "iso8601Week"),
    /* Parse a string value into a date object.
    * See formatDate below for the possible formats.
    *
    * @param  format string - the expected format of the date
    * @param  value string - the date in the above format
    * @param  settings Object - attributes include:
    *					shortYearCutoff  number - the cutoff year for determining the century (optional)
    *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
    *					dayNames		string[7] - names of the days from Sunday (optional)
    *					monthNamesShort string[12] - abbreviated names of the months (optional)
    *					monthNames		string[12] - names of the months (optional)
    * @return  Date - the extracted date value or null if value is blank
    */
    parseDate: /* @__PURE__ */ __name(function(format, value, settings) {
      if (format == null || value == null)
        throw "Invalid arguments";
      if (value = typeof value == "object" ? value.toString() : value + "", value === "")
        return null;
      var iFormat, dim, extra, iValue = 0, shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, shortYearCutoff = typeof shortYearCutoffTemp != "string" ? shortYearCutoffTemp : (/* @__PURE__ */ new Date()).getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10), dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, year = -1, month = -1, day = -1, doy = -1, literal = !1, date, lookAhead = /* @__PURE__ */ __name(function(match) {
        var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
        return matches && iFormat++, matches;
      }, "lookAhead"), getNumber = /* @__PURE__ */ __name(function(match) {
        var isDoubled = lookAhead(match), size = match === "@" ? 14 : match === "!" ? 20 : match === "y" && isDoubled ? 4 : match === "o" ? 3 : 2, minSize = match === "y" ? size : 1, digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits);
        if (!num)
          throw "Missing number at position " + iValue;
        return iValue += num[0].length, parseInt(num[0], 10);
      }, "getNumber"), getName = /* @__PURE__ */ __name(function(match, shortNames, longNames) {
        var index = -1, names = $.map(lookAhead(match) ? longNames : shortNames, function(v, k) {
          return [[k, v]];
        }).sort(function(a, b) {
          return -(a[1].length - b[1].length);
        });
        if ($.each(names, function(i, pair) {
          var name = pair[1];
          if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase())
            return index = pair[0], iValue += name.length, !1;
        }), index !== -1)
          return index + 1;
        throw "Unknown name at position " + iValue;
      }, "getName"), checkLiteral = /* @__PURE__ */ __name(function() {
        if (value.charAt(iValue) !== format.charAt(iFormat))
          throw "Unexpected literal at position " + iValue;
        iValue++;
      }, "checkLiteral");
      for (iFormat = 0; iFormat < format.length; iFormat++)
        if (literal)
          format.charAt(iFormat) === "'" && !lookAhead("'") ? literal = !1 : checkLiteral();
        else
          switch (format.charAt(iFormat)) {
            case "d":
              day = getNumber("d");
              break;
            case "D":
              getName("D", dayNamesShort, dayNames);
              break;
            case "o":
              doy = getNumber("o");
              break;
            case "m":
              month = getNumber("m");
              break;
            case "M":
              month = getName("M", monthNamesShort, monthNames);
              break;
            case "y":
              year = getNumber("y");
              break;
            case "@":
              date = new Date(getNumber("@")), year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate();
              break;
            case "!":
              date = new Date((getNumber("!") - this._ticksTo1970) / 1e4), year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate();
              break;
            case "'":
              lookAhead("'") ? checkLiteral() : literal = !0;
              break;
            default:
              checkLiteral();
          }
      if (iValue < value.length && (extra = value.substr(iValue), !/^\s+/.test(extra)))
        throw "Extra/unparsed characters found in date: " + extra;
      if (year === -1 ? year = (/* @__PURE__ */ new Date()).getFullYear() : year < 100 && (year += (/* @__PURE__ */ new Date()).getFullYear() - (/* @__PURE__ */ new Date()).getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100)), doy > -1) {
        month = 1, day = doy;
        do {
          if (dim = this._getDaysInMonth(year, month - 1), day <= dim)
            break;
          month++, day -= dim;
        } while (!0);
      }
      if (date = this._daylightSavingAdjust(new Date(year, month - 1, day)), date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day)
        throw "Invalid date";
      return date;
    }, "parseDate"),
    /* Standard date formats. */
    ATOM: "yy-mm-dd",
    // RFC 3339 (ISO 8601)
    COOKIE: "D, dd M yy",
    ISO_8601: "yy-mm-dd",
    RFC_822: "D, d M y",
    RFC_850: "DD, dd-M-y",
    RFC_1036: "D, d M y",
    RFC_1123: "D, d M yy",
    RFC_2822: "D, d M yy",
    RSS: "D, d M y",
    // RFC 822
    TICKS: "!",
    TIMESTAMP: "@",
    W3C: "yy-mm-dd",
    // ISO 8601
    _ticksTo1970: (1969 * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 1e7,
    /* Format a date object into a string value.
    * The format can be combinations of the following:
    * d  - day of month (no leading zero)
    * dd - day of month (two digit)
    * o  - day of year (no leading zeros)
    * oo - day of year (three digit)
    * D  - day name short
    * DD - day name long
    * m  - month of year (no leading zero)
    * mm - month of year (two digit)
    * M  - month name short
    * MM - month name long
    * y  - year (two digit)
    * yy - year (four digit)
    * @ - Unix timestamp (ms since 01/01/1970)
    * ! - Windows ticks (100ns since 01/01/0001)
    * "..." - literal text
    * '' - single quote
    *
    * @param  format string - the desired format of the date
    * @param  date Date - the date value to format
    * @param  settings Object - attributes include:
    *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
    *					dayNames		string[7] - names of the days from Sunday (optional)
    *					monthNamesShort string[12] - abbreviated names of the months (optional)
    *					monthNames		string[12] - names of the months (optional)
    * @return  string - the date in the above format
    */
    formatDate: /* @__PURE__ */ __name(function(format, date, settings) {
      if (!date)
        return "";
      var iFormat, dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, lookAhead = /* @__PURE__ */ __name(function(match) {
        var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
        return matches && iFormat++, matches;
      }, "lookAhead"), formatNumber = /* @__PURE__ */ __name(function(match, value, len) {
        var num = "" + value;
        if (lookAhead(match))
          for (; num.length < len; )
            num = "0" + num;
        return num;
      }, "formatNumber"), formatName = /* @__PURE__ */ __name(function(match, value, shortNames, longNames) {
        return lookAhead(match) ? longNames[value] : shortNames[value];
      }, "formatName"), output = "", literal = !1;
      if (date)
        for (iFormat = 0; iFormat < format.length; iFormat++)
          if (literal)
            format.charAt(iFormat) === "'" && !lookAhead("'") ? literal = !1 : output += format.charAt(iFormat);
          else
            switch (format.charAt(iFormat)) {
              case "d":
                output += formatNumber("d", date.getDate(), 2);
                break;
              case "D":
                output += formatName("D", date.getDay(), dayNamesShort, dayNames);
                break;
              case "o":
                output += formatNumber(
                  "o",
                  Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 864e5),
                  3
                );
                break;
              case "m":
                output += formatNumber("m", date.getMonth() + 1, 2);
                break;
              case "M":
                output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
                break;
              case "y":
                output += lookAhead("y") ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? "0" : "") + date.getFullYear() % 100;
                break;
              case "@":
                output += date.getTime();
                break;
              case "!":
                output += date.getTime() * 1e4 + this._ticksTo1970;
                break;
              case "'":
                lookAhead("'") ? output += "'" : literal = !0;
                break;
              default:
                output += format.charAt(iFormat);
            }
      return output;
    }, "formatDate"),
    /* Extract all possible characters from the date format. */
    _possibleChars: /* @__PURE__ */ __name(function(format) {
      var iFormat, chars = "", literal = !1, lookAhead = /* @__PURE__ */ __name(function(match) {
        var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
        return matches && iFormat++, matches;
      }, "lookAhead");
      for (iFormat = 0; iFormat < format.length; iFormat++)
        if (literal)
          format.charAt(iFormat) === "'" && !lookAhead("'") ? literal = !1 : chars += format.charAt(iFormat);
        else
          switch (format.charAt(iFormat)) {
            case "d":
            case "m":
            case "y":
            case "@":
              chars += "0123456789";
              break;
            case "D":
            case "M":
              return null;
            // Accept anything
            case "'":
              lookAhead("'") ? chars += "'" : literal = !0;
              break;
            default:
              chars += format.charAt(iFormat);
          }
      return chars;
    }, "_possibleChars"),
    /* Get a setting value, defaulting if necessary. */
    _get: /* @__PURE__ */ __name(function(inst, name) {
      return inst.settings[name] !== void 0 ? inst.settings[name] : this._defaults[name];
    }, "_get"),
    /* Parse existing date and initialise date picker. */
    _setDateFromField: /* @__PURE__ */ __name(function(inst, noDefault) {
      if (inst.input.val() !== inst.lastVal) {
        var dateFormat = this._get(inst, "dateFormat"), dates = inst.lastVal = inst.input ? inst.input.val() : null, defaultDate = this._getDefaultDate(inst), date = defaultDate, settings = this._getFormatConfig(inst);
        try {
          date = this.parseDate(dateFormat, dates, settings) || defaultDate;
        } catch {
          dates = noDefault ? "" : dates;
        }
        inst.selectedDay = date.getDate(), inst.drawMonth = inst.selectedMonth = date.getMonth(), inst.drawYear = inst.selectedYear = date.getFullYear(), inst.currentDay = dates ? date.getDate() : 0, inst.currentMonth = dates ? date.getMonth() : 0, inst.currentYear = dates ? date.getFullYear() : 0, this._adjustInstDate(inst);
      }
    }, "_setDateFromField"),
    /* Retrieve the default date shown on opening. */
    _getDefaultDate: /* @__PURE__ */ __name(function(inst) {
      return this._restrictMinMax(
        inst,
        this._determineDate(inst, this._get(inst, "defaultDate"), /* @__PURE__ */ new Date())
      );
    }, "_getDefaultDate"),
    /* A date may be specified as an exact value or a relative one. */
    _determineDate: /* @__PURE__ */ __name(function(inst, date, defaultDate) {
      var offsetNumeric = /* @__PURE__ */ __name(function(offset) {
        var date2 = /* @__PURE__ */ new Date();
        return date2.setDate(date2.getDate() + offset), date2;
      }, "offsetNumeric"), offsetString = /* @__PURE__ */ __name(function(offset) {
        try {
          return $.datepicker.parseDate(
            $.datepicker._get(inst, "dateFormat"),
            offset,
            $.datepicker._getFormatConfig(inst)
          );
        } catch {
        }
        for (var date2 = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || /* @__PURE__ */ new Date(), year = date2.getFullYear(), month = date2.getMonth(), day = date2.getDate(), pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, matches = pattern.exec(offset); matches; ) {
          switch (matches[2] || "d") {
            case "d":
            case "D":
              day += parseInt(matches[1], 10);
              break;
            case "w":
            case "W":
              day += parseInt(matches[1], 10) * 7;
              break;
            case "m":
            case "M":
              month += parseInt(matches[1], 10), day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
              break;
            case "y":
            case "Y":
              year += parseInt(matches[1], 10), day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
              break;
          }
          matches = pattern.exec(offset);
        }
        return new Date(year, month, day);
      }, "offsetString"), newDate = date == null || date === "" ? defaultDate : typeof date == "string" ? offsetString(date) : typeof date == "number" ? isNaN(date) ? defaultDate : offsetNumeric(date) : new Date(date.getTime());
      return newDate = newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate, newDate && (newDate.setHours(0), newDate.setMinutes(0), newDate.setSeconds(0), newDate.setMilliseconds(0)), this._daylightSavingAdjust(newDate);
    }, "_determineDate"),
    /* Handle switch to/from daylight saving.
    * Hours may be non-zero on daylight saving cut-over:
    * > 12 when midnight changeover, but then cannot generate
    * midnight datetime, so jump to 1AM, otherwise reset.
    * @param  date  (Date) the date to check
    * @return  (Date) the corrected date
    */
    _daylightSavingAdjust: /* @__PURE__ */ __name(function(date) {
      return date ? (date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0), date) : null;
    }, "_daylightSavingAdjust"),
    /* Set the date(s) directly. */
    _setDate: /* @__PURE__ */ __name(function(inst, date, noChange) {
      var clear = !date, origMonth = inst.selectedMonth, origYear = inst.selectedYear, newDate = this._restrictMinMax(inst, this._determineDate(inst, date, /* @__PURE__ */ new Date()));
      inst.selectedDay = inst.currentDay = newDate.getDate(), inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(), inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(), (origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange && this._notifyChange(inst), this._adjustInstDate(inst), inst.input && inst.input.val(clear ? "" : this._formatDate(inst));
    }, "_setDate"),
    /* Retrieve the date(s) directly. */
    _getDate: /* @__PURE__ */ __name(function(inst) {
      var startDate = !inst.currentYear || inst.input && inst.input.val() === "" ? null : this._daylightSavingAdjust(new Date(
        inst.currentYear,
        inst.currentMonth,
        inst.currentDay
      ));
      return startDate;
    }, "_getDate"),
    /* Attach the onxxx handlers.  These are declared statically so
    * they work with static code transformers like Caja.
    */
    _attachHandlers: /* @__PURE__ */ __name(function(inst) {
      var stepMonths = this._get(inst, "stepMonths"), id = "#" + inst.id.replace(/\\\\/g, "\\");
      inst.dpDiv.find("[data-handler]").map(function() {
        var handler = {
          prev: /* @__PURE__ */ __name(function() {
            $.datepicker._adjustDate(id, -stepMonths, "M");
          }, "prev"),
          next: /* @__PURE__ */ __name(function() {
            $.datepicker._adjustDate(id, +stepMonths, "M");
          }, "next"),
          hide: /* @__PURE__ */ __name(function() {
            $.datepicker._hideDatepicker();
          }, "hide"),
          today: /* @__PURE__ */ __name(function() {
            $.datepicker._gotoToday(id);
          }, "today"),
          selectDay: /* @__PURE__ */ __name(function() {
            return $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this), !1;
          }, "selectDay"),
          selectMonth: /* @__PURE__ */ __name(function() {
            return $.datepicker._selectMonthYear(id, this, "M"), !1;
          }, "selectMonth"),
          selectYear: /* @__PURE__ */ __name(function() {
            return $.datepicker._selectMonthYear(id, this, "Y"), !1;
          }, "selectYear")
        };
        $(this).on(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
      });
    }, "_attachHandlers"),
    /* Generate the HTML for the current state of the date picker. */
    _generateHTML: /* @__PURE__ */ __name(function(inst) {
      var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, monthNames, monthNamesShort, beforeShowDay, showOtherMonths, selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, printDate, dRow, tbody, daySettings, otherMonth, unselectable, tempDate = /* @__PURE__ */ new Date(), today = this._daylightSavingAdjust(
        new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())
      ), isRTL = this._get(inst, "isRTL"), showButtonPanel = this._get(inst, "showButtonPanel"), hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), numMonths = this._getNumberOfMonths(inst), showCurrentAtPos = this._get(inst, "showCurrentAtPos"), stepMonths = this._get(inst, "stepMonths"), isMultiMonth = numMonths[0] !== 1 || numMonths[1] !== 1, currentDate = this._daylightSavingAdjust(inst.currentDay ? new Date(inst.currentYear, inst.currentMonth, inst.currentDay) : new Date(9999, 9, 9)), minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), drawMonth = inst.drawMonth - showCurrentAtPos, drawYear = inst.drawYear;
      if (drawMonth < 0 && (drawMonth += 12, drawYear--), maxDate)
        for (maxDraw = this._daylightSavingAdjust(new Date(
          maxDate.getFullYear(),
          maxDate.getMonth() - numMonths[0] * numMonths[1] + 1,
          maxDate.getDate()
        )), maxDraw = minDate && maxDraw < minDate ? minDate : maxDraw; this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw; )
          drawMonth--, drawMonth < 0 && (drawMonth = 11, drawYear--);
      for (inst.drawMonth = drawMonth, inst.drawYear = drawYear, prevText = this._get(inst, "prevText"), prevText = navigationAsDateFormat ? this.formatDate(
        prevText,
        this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
        this._getFormatConfig(inst)
      ) : prevText, prev = this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "e" : "w") + "'>" + prevText + "</span></a>", nextText = this._get(inst, "nextText"), nextText = navigationAsDateFormat ? this.formatDate(
        nextText,
        this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
        this._getFormatConfig(inst)
      ) : nextText, next = this._canAdjustMonth(inst, 1, drawYear, drawMonth) ? "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "w" : "e") + "'>" + nextText + "</span></a>", currentText = this._get(inst, "currentText"), gotoDate = this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today, currentText = navigationAsDateFormat ? this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)) : currentText, controls = inst.inline ? "" : "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(inst, "closeText") + "</button>", buttonPanel = showButtonPanel ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "", firstDay = parseInt(this._get(inst, "firstDay"), 10), firstDay = isNaN(firstDay) ? 0 : firstDay, showWeek = this._get(inst, "showWeek"), dayNames = this._get(inst, "dayNames"), dayNamesMin = this._get(inst, "dayNamesMin"), monthNames = this._get(inst, "monthNames"), monthNamesShort = this._get(inst, "monthNamesShort"), beforeShowDay = this._get(inst, "beforeShowDay"), showOtherMonths = this._get(inst, "showOtherMonths"), selectOtherMonths = this._get(inst, "selectOtherMonths"), defaultDate = this._getDefaultDate(inst), html = "", row = 0; row < numMonths[0]; row++) {
        for (group = "", this.maxRows = 4, col = 0; col < numMonths[1]; col++) {
          if (selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)), cornerClass = " ui-corner-all", calender = "", isMultiMonth) {
            if (calender += "<div class='ui-datepicker-group", numMonths[1] > 1)
              switch (col) {
                case 0:
                  calender += " ui-datepicker-group-first", cornerClass = " ui-corner-" + (isRTL ? "right" : "left");
                  break;
                case numMonths[1] - 1:
                  calender += " ui-datepicker-group-last", cornerClass = " ui-corner-" + (isRTL ? "left" : "right");
                  break;
                default:
                  calender += " ui-datepicker-group-middle", cornerClass = "";
                  break;
              }
            calender += "'>";
          }
          for (calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + (/all|left/.test(cornerClass) && row === 0 ? isRTL ? next : prev : "") + (/all|right/.test(cornerClass) && row === 0 ? isRTL ? prev : next : "") + this._generateMonthYearHeader(
            inst,
            drawMonth,
            drawYear,
            minDate,
            maxDate,
            row > 0 || col > 0,
            monthNames,
            monthNamesShort
          ) + // draw month headers
          "</div><table class='ui-datepicker-calendar'><thead><tr>", thead = showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "", dow = 0; dow < 7; dow++)
            day = (dow + firstDay) % 7, thead += "<th scope='col'" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + "><span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
          for (calender += thead + "</tr></thead><tbody>", daysInMonth = this._getDaysInMonth(drawYear, drawMonth), drawYear === inst.selectedYear && drawMonth === inst.selectedMonth && (inst.selectedDay = Math.min(inst.selectedDay, daysInMonth)), leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7, curRows = Math.ceil((leadDays + daysInMonth) / 7), numRows = isMultiMonth && this.maxRows > curRows ? this.maxRows : curRows, this.maxRows = numRows, printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)), dRow = 0; dRow < numRows; dRow++) {
            for (calender += "<tr>", tbody = showWeek ? "<td class='ui-datepicker-week-col'>" + this._get(inst, "calculateWeek")(printDate) + "</td>" : "", dow = 0; dow < 7; dow++)
              daySettings = beforeShowDay ? beforeShowDay.apply(inst.input ? inst.input[0] : null, [printDate]) : [!0, ""], otherMonth = printDate.getMonth() !== drawMonth, unselectable = otherMonth && !selectOtherMonths || !daySettings[0] || minDate && printDate < minDate || maxDate && printDate > maxDate, tbody += "<td class='" + ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
              (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
              (printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent || // user pressed key
              defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ? (
                // or defaultDate is current printedDate and defaultDate is selectedDate
                " " + this._dayOverClass
              ) : "") + // highlight selected day
              (unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "") + // highlight unselectable days
              (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
              (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
              (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
              ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
              (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
              (otherMonth && !showOtherMonths ? "&#xa0;" : (
                // display for other months
                unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
                (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
                "' href='#'>" + printDate.getDate() + "</a>"
              )) + "</td>", printDate.setDate(printDate.getDate() + 1), printDate = this._daylightSavingAdjust(printDate);
            calender += tbody + "</tr>";
          }
          drawMonth++, drawMonth > 11 && (drawMonth = 0, drawYear++), calender += "</tbody></table>" + (isMultiMonth ? "</div>" + (numMonths[0] > 0 && col === numMonths[1] - 1 ? "<div class='ui-datepicker-row-break'></div>" : "") : ""), group += calender;
        }
        html += group;
      }
      return html += buttonPanel, inst._keyEvent = !1, html;
    }, "_generateHTML"),
    /* Generate the month and year header. */
    _generateMonthYearHeader: /* @__PURE__ */ __name(function(inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) {
      var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, changeMonth = this._get(inst, "changeMonth"), changeYear = this._get(inst, "changeYear"), showMonthAfterYear = this._get(inst, "showMonthAfterYear"), html = "<div class='ui-datepicker-title'>", monthHtml = "";
      if (secondary || !changeMonth)
        monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
      else {
        for (inMinYear = minDate && minDate.getFullYear() === drawYear, inMaxYear = maxDate && maxDate.getFullYear() === drawYear, monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>", month = 0; month < 12; month++)
          (!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth()) && (monthHtml += "<option value='" + month + "'" + (month === drawMonth ? " selected='selected'" : "") + ">" + monthNamesShort[month] + "</option>");
        monthHtml += "</select>";
      }
      if (showMonthAfterYear || (html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "")), !inst.yearshtml)
        if (inst.yearshtml = "", secondary || !changeYear)
          html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
        else {
          for (years = this._get(inst, "yearRange").split(":"), thisYear = (/* @__PURE__ */ new Date()).getFullYear(), determineYear = /* @__PURE__ */ __name(function(value) {
            var year2 = value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10);
            return isNaN(year2) ? thisYear : year2;
          }, "determineYear"), year = determineYear(years[0]), endYear = Math.max(year, determineYear(years[1] || "")), year = minDate ? Math.max(year, minDate.getFullYear()) : year, endYear = maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear, inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; year <= endYear; year++)
            inst.yearshtml += "<option value='" + year + "'" + (year === drawYear ? " selected='selected'" : "") + ">" + year + "</option>";
          inst.yearshtml += "</select>", html += inst.yearshtml, inst.yearshtml = null;
        }
      return html += this._get(inst, "yearSuffix"), showMonthAfterYear && (html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml), html += "</div>", html;
    }, "_generateMonthYearHeader"),
    /* Adjust one of the date sub-fields. */
    _adjustInstDate: /* @__PURE__ */ __name(function(inst, offset, period) {
      var year = inst.selectedYear + (period === "Y" ? offset : 0), month = inst.selectedMonth + (period === "M" ? offset : 0), day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
      inst.selectedDay = date.getDate(), inst.drawMonth = inst.selectedMonth = date.getMonth(), inst.drawYear = inst.selectedYear = date.getFullYear(), (period === "M" || period === "Y") && this._notifyChange(inst);
    }, "_adjustInstDate"),
    /* Ensure a date is within any min/max bounds. */
    _restrictMinMax: /* @__PURE__ */ __name(function(inst, date) {
      var minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), newDate = minDate && date < minDate ? minDate : date;
      return maxDate && newDate > maxDate ? maxDate : newDate;
    }, "_restrictMinMax"),
    /* Notify change of month/year. */
    _notifyChange: /* @__PURE__ */ __name(function(inst) {
      var onChange = this._get(inst, "onChangeMonthYear");
      onChange && onChange.apply(
        inst.input ? inst.input[0] : null,
        [inst.selectedYear, inst.selectedMonth + 1, inst]
      );
    }, "_notifyChange"),
    /* Determine the number of months to show. */
    _getNumberOfMonths: /* @__PURE__ */ __name(function(inst) {
      var numMonths = this._get(inst, "numberOfMonths");
      return numMonths == null ? [1, 1] : typeof numMonths == "number" ? [1, numMonths] : numMonths;
    }, "_getNumberOfMonths"),
    /* Determine the current maximum date - ensure no time components are set. */
    _getMinMaxDate: /* @__PURE__ */ __name(function(inst, minMax) {
      return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
    }, "_getMinMaxDate"),
    /* Find the number of days in a given month. */
    _getDaysInMonth: /* @__PURE__ */ __name(function(year, month) {
      return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
    }, "_getDaysInMonth"),
    /* Find the day of the week of the first of a month. */
    _getFirstDayOfMonth: /* @__PURE__ */ __name(function(year, month) {
      return new Date(year, month, 1).getDay();
    }, "_getFirstDayOfMonth"),
    /* Determines if we should allow a "next/prev" month display change. */
    _canAdjustMonth: /* @__PURE__ */ __name(function(inst, offset, curYear, curMonth) {
      var numMonths = this._getNumberOfMonths(inst), date = this._daylightSavingAdjust(new Date(
        curYear,
        curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]),
        1
      ));
      return offset < 0 && date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())), this._isInRange(inst, date);
    }, "_canAdjustMonth"),
    /* Is the given date in the accepted range? */
    _isInRange: /* @__PURE__ */ __name(function(inst, date) {
      var yearSplit, currentYear, minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), minYear = null, maxYear = null, years = this._get(inst, "yearRange");
      return years && (yearSplit = years.split(":"), currentYear = (/* @__PURE__ */ new Date()).getFullYear(), minYear = parseInt(yearSplit[0], 10), maxYear = parseInt(yearSplit[1], 10), yearSplit[0].match(/[+\-].*/) && (minYear += currentYear), yearSplit[1].match(/[+\-].*/) && (maxYear += currentYear)), (!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime()) && (!minYear || date.getFullYear() >= minYear) && (!maxYear || date.getFullYear() <= maxYear);
    }, "_isInRange"),
    /* Provide the configuration settings for formatting/parsing. */
    _getFormatConfig: /* @__PURE__ */ __name(function(inst) {
      var shortYearCutoff = this._get(inst, "shortYearCutoff");
      return shortYearCutoff = typeof shortYearCutoff != "string" ? shortYearCutoff : (/* @__PURE__ */ new Date()).getFullYear() % 100 + parseInt(shortYearCutoff, 10), {
        shortYearCutoff,
        dayNamesShort: this._get(inst, "dayNamesShort"),
        dayNames: this._get(inst, "dayNames"),
        monthNamesShort: this._get(inst, "monthNamesShort"),
        monthNames: this._get(inst, "monthNames")
      };
    }, "_getFormatConfig"),
    /* Format the given date for display. */
    _formatDate: /* @__PURE__ */ __name(function(inst, day, month, year) {
      day || (inst.currentDay = inst.selectedDay, inst.currentMonth = inst.selectedMonth, inst.currentYear = inst.selectedYear);
      var date = day ? typeof day == "object" ? day : this._daylightSavingAdjust(new Date(year, month, day)) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
      return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
    }, "_formatDate")
  });
  function datepicker_bindHover(dpDiv) {
    var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
    return dpDiv.on("mouseout", selector, function() {
      $(this).removeClass("ui-state-hover"), this.className.indexOf("ui-datepicker-prev") !== -1 && $(this).removeClass("ui-datepicker-prev-hover"), this.className.indexOf("ui-datepicker-next") !== -1 && $(this).removeClass("ui-datepicker-next-hover");
    }).on("mouseover", selector, datepicker_handleMouseover);
  }
  __name(datepicker_bindHover, "datepicker_bindHover");
  function datepicker_handleMouseover() {
    $.datepicker._isDisabledDatepicker(datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0]) || ($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"), $(this).addClass("ui-state-hover"), this.className.indexOf("ui-datepicker-prev") !== -1 && $(this).addClass("ui-datepicker-prev-hover"), this.className.indexOf("ui-datepicker-next") !== -1 && $(this).addClass("ui-datepicker-next-hover"));
  }
  __name(datepicker_handleMouseover, "datepicker_handleMouseover");
  function datepicker_extendRemove(target, props) {
    $.extend(target, props);
    for (var name in props)
      props[name] == null && (target[name] = props[name]);
    return target;
  }
  __name(datepicker_extendRemove, "datepicker_extendRemove"), $.fn.datepicker = function(options) {
    if (!this.length)
      return this;
    $.datepicker.initialized || ($(document).on("mousedown", $.datepicker._checkExternalClick), $.datepicker.initialized = !0), $("#" + $.datepicker._mainDivId).length === 0 && $("body").append($.datepicker.dpDiv);
    var otherArgs = Array.prototype.slice.call(arguments, 1);
    return typeof options == "string" && (options === "isDisabled" || options === "getDate" || options === "widget") ? $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this[0]].concat(otherArgs)) : options === "option" && arguments.length === 2 && typeof arguments[1] == "string" ? $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this[0]].concat(otherArgs)) : this.each(function() {
      typeof options == "string" ? $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options);
    });
  }, $.datepicker = new Datepicker(), $.datepicker.initialized = !1, $.datepicker.uuid = (/* @__PURE__ */ new Date()).getTime(), $.datepicker.version = "1.12.1", $.datepicker, $.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());
  /*!
  * jQuery UI Mouse 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  var mouseHandled = !1;
  $(document).on("mouseup", function() {
    mouseHandled = !1;
  }), $.widget("ui.mouse", {
    version: "1.12.1",
    options: {
      cancel: "input, textarea, button, select, option",
      distance: 1,
      delay: 0
    },
    _mouseInit: /* @__PURE__ */ __name(function() {
      var that = this;
      this.element.on("mousedown." + this.widgetName, function(event) {
        return that._mouseDown(event);
      }).on("click." + this.widgetName, function(event) {
        if ($.data(event.target, that.widgetName + ".preventClickEvent") === !0)
          return $.removeData(event.target, that.widgetName + ".preventClickEvent"), event.stopImmediatePropagation(), !1;
      }), this.started = !1;
    }, "_mouseInit"),
    // TODO: make sure destroying one instance of mouse doesn't mess with
    // other instances of mouse
    _mouseDestroy: /* @__PURE__ */ __name(function() {
      this.element.off("." + this.widgetName), this._mouseMoveDelegate && this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate);
    }, "_mouseDestroy"),
    _mouseDown: /* @__PURE__ */ __name(function(event) {
      if (!mouseHandled) {
        this._mouseMoved = !1, this._mouseStarted && this._mouseUp(event), this._mouseDownEvent = event;
        var that = this, btnIsLeft = event.which === 1, elIsCancel = typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : !1;
        return !btnIsLeft || elIsCancel || !this._mouseCapture(event) ? !0 : (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
          that.mouseDelayMet = !0;
        }, this.options.delay)), this._mouseDistanceMet(event) && this._mouseDelayMet(event) && (this._mouseStarted = this._mouseStart(event) !== !1, !this._mouseStarted) ? (event.preventDefault(), !0) : ($.data(event.target, this.widgetName + ".preventClickEvent") === !0 && $.removeData(event.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function(event2) {
          return that._mouseMove(event2);
        }, this._mouseUpDelegate = function(event2) {
          return that._mouseUp(event2);
        }, this.document.on("mousemove." + this.widgetName, this._mouseMoveDelegate).on("mouseup." + this.widgetName, this._mouseUpDelegate), event.preventDefault(), mouseHandled = !0, !0));
      }
    }, "_mouseDown"),
    _mouseMove: /* @__PURE__ */ __name(function(event) {
      if (this._mouseMoved) {
        if ($.ui.ie && (!document.documentMode || document.documentMode < 9) && !event.button)
          return this._mouseUp(event);
        if (!event.which) {
          if (event.originalEvent.altKey || event.originalEvent.ctrlKey || event.originalEvent.metaKey || event.originalEvent.shiftKey)
            this.ignoreMissingWhich = !0;
          else if (!this.ignoreMissingWhich)
            return this._mouseUp(event);
        }
      }
      return (event.which || event.button) && (this._mouseMoved = !0), this._mouseStarted ? (this._mouseDrag(event), event.preventDefault()) : (this._mouseDistanceMet(event) && this._mouseDelayMet(event) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, event) !== !1, this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)), !this._mouseStarted);
    }, "_mouseMove"),
    _mouseUp: /* @__PURE__ */ __name(function(event) {
      this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, event.target === this._mouseDownEvent.target && $.data(event.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(event)), this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer), this.ignoreMissingWhich = !1, mouseHandled = !1, event.preventDefault();
    }, "_mouseUp"),
    _mouseDistanceMet: /* @__PURE__ */ __name(function(event) {
      return Math.max(
        Math.abs(this._mouseDownEvent.pageX - event.pageX),
        Math.abs(this._mouseDownEvent.pageY - event.pageY)
      ) >= this.options.distance;
    }, "_mouseDistanceMet"),
    _mouseDelayMet: /* @__PURE__ */ __name(function() {
      return this.mouseDelayMet;
    }, "_mouseDelayMet"),
    // These are placeholder methods, to be overriden by extending plugin
    _mouseStart: /* @__PURE__ */ __name(function() {
    }, "_mouseStart"),
    _mouseDrag: /* @__PURE__ */ __name(function() {
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function() {
    }, "_mouseStop"),
    _mouseCapture: /* @__PURE__ */ __name(function() {
      return !0;
    }, "_mouseCapture")
  }), $.ui.plugin = {
    add: /* @__PURE__ */ __name(function(module, option, set) {
      var i, proto = $.ui[module].prototype;
      for (i in set)
        proto.plugins[i] = proto.plugins[i] || [], proto.plugins[i].push([option, set[i]]);
    }, "add"),
    call: /* @__PURE__ */ __name(function(instance, name, args, allowDisconnected) {
      var i, set = instance.plugins[name];
      if (set && !(!allowDisconnected && (!instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11)))
        for (i = 0; i < set.length; i++)
          instance.options[set[i][0]] && set[i][1].apply(instance.element, args);
    }, "call")
  }, $.ui.safeBlur = function(element) {
    element && element.nodeName.toLowerCase() !== "body" && $(element).trigger("blur");
  };
  /*!
  * jQuery UI Draggable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.draggable", $.ui.mouse, {
    version: "1.12.1",
    widgetEventPrefix: "drag",
    options: {
      addClasses: !0,
      appendTo: "parent",
      axis: !1,
      connectToSortable: !1,
      containment: !1,
      cursor: "auto",
      cursorAt: !1,
      grid: !1,
      handle: !1,
      helper: "original",
      iframeFix: !1,
      opacity: !1,
      refreshPositions: !1,
      revert: !1,
      revertDuration: 500,
      scope: "default",
      scroll: !0,
      scrollSensitivity: 20,
      scrollSpeed: 20,
      snap: !1,
      snapMode: "both",
      snapTolerance: 20,
      stack: !1,
      zIndex: !1,
      // Callbacks
      drag: null,
      start: null,
      stop: null
    },
    _create: /* @__PURE__ */ __name(function() {
      this.options.helper === "original" && this._setPositionRelative(), this.options.addClasses && this._addClass("ui-draggable"), this._setHandleClassName(), this._mouseInit();
    }, "_create"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      this._super(key, value), key === "handle" && (this._removeHandleClassName(), this._setHandleClassName());
    }, "_setOption"),
    _destroy: /* @__PURE__ */ __name(function() {
      if ((this.helper || this.element).is(".ui-draggable-dragging")) {
        this.destroyOnClear = !0;
        return;
      }
      this._removeHandleClassName(), this._mouseDestroy();
    }, "_destroy"),
    _mouseCapture: /* @__PURE__ */ __name(function(event) {
      var o = this.options;
      return this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0 || (this.handle = this._getHandle(event), !this.handle) ? !1 : (this._blurActiveElement(event), this._blockFrames(o.iframeFix === !0 ? "iframe" : o.iframeFix), !0);
    }, "_mouseCapture"),
    _blockFrames: /* @__PURE__ */ __name(function(selector) {
      this.iframeBlocks = this.document.find(selector).map(function() {
        var iframe = $(this);
        return $("<div>").css("position", "absolute").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0];
      });
    }, "_blockFrames"),
    _unblockFrames: /* @__PURE__ */ __name(function() {
      this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);
    }, "_unblockFrames"),
    _blurActiveElement: /* @__PURE__ */ __name(function(event) {
      var activeElement = $.ui.safeActiveElement(this.document[0]), target = $(event.target);
      target.closest(activeElement).length || $.ui.safeBlur(activeElement);
    }, "_blurActiveElement"),
    _mouseStart: /* @__PURE__ */ __name(function(event) {
      var o = this.options;
      return this.helper = this._createHelper(event), this._addClass(this.helper, "ui-draggable-dragging"), this._cacheHelperProportions(), $.ui.ddmanager && ($.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.hasFixedAncestor = this.helper.parents().filter(function() {
        return $(this).css("position") === "fixed";
      }).length > 0, this.positionAbs = this.element.offset(), this._refreshOffsets(event), this.originalPosition = this.position = this._generatePosition(event, !1), this.originalPageX = event.pageX, this.originalPageY = event.pageY, o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt), this._setContainment(), this._trigger("start", event) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(), $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event), this._mouseDrag(event, !0), $.ui.ddmanager && $.ui.ddmanager.dragStart(this, event), !0);
    }, "_mouseStart"),
    _refreshOffsets: /* @__PURE__ */ __name(function(event) {
      this.offset = {
        top: this.positionAbs.top - this.margins.top,
        left: this.positionAbs.left - this.margins.left,
        scroll: !1,
        parent: this._getParentOffset(),
        relative: this._getRelativeOffset()
      }, this.offset.click = {
        left: event.pageX - this.offset.left,
        top: event.pageY - this.offset.top
      };
    }, "_refreshOffsets"),
    _mouseDrag: /* @__PURE__ */ __name(function(event, noPropagation) {
      if (this.hasFixedAncestor && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(event, !0), this.positionAbs = this._convertPositionTo("absolute"), !noPropagation) {
        var ui = this._uiHash();
        if (this._trigger("drag", event, ui) === !1)
          return this._mouseUp(new $.Event("mouseup", event)), !1;
        this.position = ui.position;
      }
      return this.helper[0].style.left = this.position.left + "px", this.helper[0].style.top = this.position.top + "px", $.ui.ddmanager && $.ui.ddmanager.drag(this, event), !1;
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function(event) {
      var that = this, dropped = !1;
      return $.ui.ddmanager && !this.options.dropBehaviour && (dropped = $.ui.ddmanager.drop(this, event)), this.dropped && (dropped = this.dropped, this.dropped = !1), this.options.revert === "invalid" && !dropped || this.options.revert === "valid" && dropped || this.options.revert === !0 || $.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped) ? $(this.helper).animate(
        this.originalPosition,
        parseInt(this.options.revertDuration, 10),
        function() {
          that._trigger("stop", event) !== !1 && that._clear();
        }
      ) : this._trigger("stop", event) !== !1 && this._clear(), !1;
    }, "_mouseStop"),
    _mouseUp: /* @__PURE__ */ __name(function(event) {
      return this._unblockFrames(), $.ui.ddmanager && $.ui.ddmanager.dragStop(this, event), this.handleElement.is(event.target) && this.element.trigger("focus"), $.ui.mouse.prototype._mouseUp.call(this, event);
    }, "_mouseUp"),
    cancel: /* @__PURE__ */ __name(function() {
      return this.helper.is(".ui-draggable-dragging") ? this._mouseUp(new $.Event("mouseup", { target: this.element[0] })) : this._clear(), this;
    }, "cancel"),
    _getHandle: /* @__PURE__ */ __name(function(event) {
      return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : !0;
    }, "_getHandle"),
    _setHandleClassName: /* @__PURE__ */ __name(function() {
      this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this._addClass(this.handleElement, "ui-draggable-handle");
    }, "_setHandleClassName"),
    _removeHandleClassName: /* @__PURE__ */ __name(function() {
      this._removeClass(this.handleElement, "ui-draggable-handle");
    }, "_removeHandleClassName"),
    _createHelper: /* @__PURE__ */ __name(function(event) {
      var o = this.options, helperIsFunction = $.isFunction(o.helper), helper = helperIsFunction ? $(o.helper.apply(this.element[0], [event])) : o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element;
      return helper.parents("body").length || helper.appendTo(o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo), helperIsFunction && helper[0] === this.element[0] && this._setPositionRelative(), helper[0] !== this.element[0] && !/(fixed|absolute)/.test(helper.css("position")) && helper.css("position", "absolute"), helper;
    }, "_createHelper"),
    _setPositionRelative: /* @__PURE__ */ __name(function() {
      /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative");
    }, "_setPositionRelative"),
    _adjustOffsetFromHelper: /* @__PURE__ */ __name(function(obj) {
      typeof obj == "string" && (obj = obj.split(" ")), $.isArray(obj) && (obj = { left: +obj[0], top: +obj[1] || 0 }), "left" in obj && (this.offset.click.left = obj.left + this.margins.left), "right" in obj && (this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left), "top" in obj && (this.offset.click.top = obj.top + this.margins.top), "bottom" in obj && (this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top);
    }, "_adjustOffsetFromHelper"),
    _isRootNode: /* @__PURE__ */ __name(function(element) {
      return /(html|body)/i.test(element.tagName) || element === this.document[0];
    }, "_isRootNode"),
    _getParentOffset: /* @__PURE__ */ __name(function() {
      var po = this.offsetParent.offset(), document2 = this.document[0];
      return this.cssPosition === "absolute" && this.scrollParent[0] !== document2 && $.contains(this.scrollParent[0], this.offsetParent[0]) && (po.left += this.scrollParent.scrollLeft(), po.top += this.scrollParent.scrollTop()), this._isRootNode(this.offsetParent[0]) && (po = { top: 0, left: 0 }), {
        top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
        left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
      };
    }, "_getParentOffset"),
    _getRelativeOffset: /* @__PURE__ */ __name(function() {
      if (this.cssPosition !== "relative")
        return { top: 0, left: 0 };
      var p = this.element.position(), scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
      return {
        top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + (scrollIsRootNode ? 0 : this.scrollParent.scrollTop()),
        left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + (scrollIsRootNode ? 0 : this.scrollParent.scrollLeft())
      };
    }, "_getRelativeOffset"),
    _cacheMargins: /* @__PURE__ */ __name(function() {
      this.margins = {
        left: parseInt(this.element.css("marginLeft"), 10) || 0,
        top: parseInt(this.element.css("marginTop"), 10) || 0,
        right: parseInt(this.element.css("marginRight"), 10) || 0,
        bottom: parseInt(this.element.css("marginBottom"), 10) || 0
      };
    }, "_cacheMargins"),
    _cacheHelperProportions: /* @__PURE__ */ __name(function() {
      this.helperProportions = {
        width: this.helper.outerWidth(),
        height: this.helper.outerHeight()
      };
    }, "_cacheHelperProportions"),
    _setContainment: /* @__PURE__ */ __name(function() {
      var isUserScrollable, c, ce, o = this.options, document2 = this.document[0];
      if (this.relativeContainer = null, !o.containment) {
        this.containment = null;
        return;
      }
      if (o.containment === "window") {
        this.containment = [
          $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
          $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
          $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left,
          $(window).scrollTop() + ($(window).height() || document2.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
        ];
        return;
      }
      if (o.containment === "document") {
        this.containment = [
          0,
          0,
          $(document2).width() - this.helperProportions.width - this.margins.left,
          ($(document2).height() || document2.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
        ];
        return;
      }
      if (o.containment.constructor === Array) {
        this.containment = o.containment;
        return;
      }
      o.containment === "parent" && (o.containment = this.helper[0].parentNode), c = $(o.containment), ce = c[0], ce && (isUserScrollable = /(scroll|auto)/.test(c.css("overflow")), this.containment = [
        (parseInt(c.css("borderLeftWidth"), 10) || 0) + (parseInt(c.css("paddingLeft"), 10) || 0),
        (parseInt(c.css("borderTopWidth"), 10) || 0) + (parseInt(c.css("paddingTop"), 10) || 0),
        (isUserScrollable ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt(c.css("borderRightWidth"), 10) || 0) - (parseInt(c.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
        (isUserScrollable ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt(c.css("borderBottomWidth"), 10) || 0) - (parseInt(c.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
      ], this.relativeContainer = c);
    }, "_setContainment"),
    _convertPositionTo: /* @__PURE__ */ __name(function(d, pos) {
      pos || (pos = this.position);
      var mod = d === "absolute" ? 1 : -1, scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
      return {
        top: (
          // The absolute mouse position
          pos.top + // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.top * mod + // The offsetParent's offset without borders (offset + border)
          this.offset.parent.top * mod - (this.cssPosition === "fixed" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top) * mod
        ),
        left: (
          // The absolute mouse position
          pos.left + // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.left * mod + // The offsetParent's offset without borders (offset + border)
          this.offset.parent.left * mod - (this.cssPosition === "fixed" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left) * mod
        )
      };
    }, "_convertPositionTo"),
    _generatePosition: /* @__PURE__ */ __name(function(event, constrainPosition) {
      var containment, co, top, left, o = this.options, scrollIsRootNode = this._isRootNode(this.scrollParent[0]), pageX = event.pageX, pageY = event.pageY;
      return (!scrollIsRootNode || !this.offset.scroll) && (this.offset.scroll = {
        top: this.scrollParent.scrollTop(),
        left: this.scrollParent.scrollLeft()
      }), constrainPosition && (this.containment && (this.relativeContainer ? (co = this.relativeContainer.offset(), containment = [
        this.containment[0] + co.left,
        this.containment[1] + co.top,
        this.containment[2] + co.left,
        this.containment[3] + co.top
      ]) : containment = this.containment, event.pageX - this.offset.click.left < containment[0] && (pageX = containment[0] + this.offset.click.left), event.pageY - this.offset.click.top < containment[1] && (pageY = containment[1] + this.offset.click.top), event.pageX - this.offset.click.left > containment[2] && (pageX = containment[2] + this.offset.click.left), event.pageY - this.offset.click.top > containment[3] && (pageY = containment[3] + this.offset.click.top)), o.grid && (top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY, pageY = containment ? top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3] ? top : top - this.offset.click.top >= containment[1] ? top - o.grid[1] : top + o.grid[1] : top, left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX, pageX = containment ? left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2] ? left : left - this.offset.click.left >= containment[0] ? left - o.grid[0] : left + o.grid[0] : left), o.axis === "y" && (pageX = this.originalPageX), o.axis === "x" && (pageY = this.originalPageY)), {
        top: (
          // The absolute mouse position
          pageY - // Click offset (relative to the element)
          this.offset.click.top - // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.top - // The offsetParent's offset without borders (offset + border)
          this.offset.parent.top + (this.cssPosition === "fixed" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top)
        ),
        left: (
          // The absolute mouse position
          pageX - // Click offset (relative to the element)
          this.offset.click.left - // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.left - // The offsetParent's offset without borders (offset + border)
          this.offset.parent.left + (this.cssPosition === "fixed" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left)
        )
      };
    }, "_generatePosition"),
    _clear: /* @__PURE__ */ __name(function() {
      this._removeClass(this.helper, "ui-draggable-dragging"), this.helper[0] !== this.element[0] && !this.cancelHelperRemoval && this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy();
    }, "_clear"),
    // From now on bulk stuff - mainly helpers
    _trigger: /* @__PURE__ */ __name(function(type, event, ui) {
      return ui = ui || this._uiHash(), $.ui.plugin.call(this, type, [event, ui, this], !0), /^(drag|start|stop)/.test(type) && (this.positionAbs = this._convertPositionTo("absolute"), ui.offset = this.positionAbs), $.Widget.prototype._trigger.call(this, type, event, ui);
    }, "_trigger"),
    plugins: {},
    _uiHash: /* @__PURE__ */ __name(function() {
      return {
        helper: this.helper,
        position: this.position,
        originalPosition: this.originalPosition,
        offset: this.positionAbs
      };
    }, "_uiHash")
  }), $.ui.plugin.add("draggable", "connectToSortable", {
    start: /* @__PURE__ */ __name(function(event, ui, draggable) {
      var uiSortable = $.extend({}, ui, {
        item: draggable.element
      });
      draggable.sortables = [], $(draggable.options.connectToSortable).each(function() {
        var sortable = $(this).sortable("instance");
        sortable && !sortable.options.disabled && (draggable.sortables.push(sortable), sortable.refreshPositions(), sortable._trigger("activate", event, uiSortable));
      });
    }, "start"),
    stop: /* @__PURE__ */ __name(function(event, ui, draggable) {
      var uiSortable = $.extend({}, ui, {
        item: draggable.element
      });
      draggable.cancelHelperRemoval = !1, $.each(draggable.sortables, function() {
        var sortable = this;
        sortable.isOver ? (sortable.isOver = 0, draggable.cancelHelperRemoval = !0, sortable.cancelHelperRemoval = !1, sortable._storedCSS = {
          position: sortable.placeholder.css("position"),
          top: sortable.placeholder.css("top"),
          left: sortable.placeholder.css("left")
        }, sortable._mouseStop(event), sortable.options.helper = sortable.options._helper) : (sortable.cancelHelperRemoval = !0, sortable._trigger("deactivate", event, uiSortable));
      });
    }, "stop"),
    drag: /* @__PURE__ */ __name(function(event, ui, draggable) {
      $.each(draggable.sortables, function() {
        var innermostIntersecting = !1, sortable = this;
        sortable.positionAbs = draggable.positionAbs, sortable.helperProportions = draggable.helperProportions, sortable.offset.click = draggable.offset.click, sortable._intersectsWith(sortable.containerCache) && (innermostIntersecting = !0, $.each(draggable.sortables, function() {
          return this.positionAbs = draggable.positionAbs, this.helperProportions = draggable.helperProportions, this.offset.click = draggable.offset.click, this !== sortable && this._intersectsWith(this.containerCache) && $.contains(sortable.element[0], this.element[0]) && (innermostIntersecting = !1), innermostIntersecting;
        })), innermostIntersecting ? (sortable.isOver || (sortable.isOver = 1, draggable._parent = ui.helper.parent(), sortable.currentItem = ui.helper.appendTo(sortable.element).data("ui-sortable-item", !0), sortable.options._helper = sortable.options.helper, sortable.options.helper = function() {
          return ui.helper[0];
        }, event.target = sortable.currentItem[0], sortable._mouseCapture(event, !0), sortable._mouseStart(event, !0, !0), sortable.offset.click.top = draggable.offset.click.top, sortable.offset.click.left = draggable.offset.click.left, sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left, sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top, draggable._trigger("toSortable", event), draggable.dropped = sortable.element, $.each(draggable.sortables, function() {
          this.refreshPositions();
        }), draggable.currentItem = draggable.element, sortable.fromOutside = draggable), sortable.currentItem && (sortable._mouseDrag(event), ui.position = sortable.position)) : sortable.isOver && (sortable.isOver = 0, sortable.cancelHelperRemoval = !0, sortable.options._revert = sortable.options.revert, sortable.options.revert = !1, sortable._trigger("out", event, sortable._uiHash(sortable)), sortable._mouseStop(event, !0), sortable.options.revert = sortable.options._revert, sortable.options.helper = sortable.options._helper, sortable.placeholder && sortable.placeholder.remove(), ui.helper.appendTo(draggable._parent), draggable._refreshOffsets(event), ui.position = draggable._generatePosition(event, !0), draggable._trigger("fromSortable", event), draggable.dropped = !1, $.each(draggable.sortables, function() {
          this.refreshPositions();
        }));
      });
    }, "drag")
  }), $.ui.plugin.add("draggable", "cursor", {
    start: /* @__PURE__ */ __name(function(event, ui, instance) {
      var t = $("body"), o = instance.options;
      t.css("cursor") && (o._cursor = t.css("cursor")), t.css("cursor", o.cursor);
    }, "start"),
    stop: /* @__PURE__ */ __name(function(event, ui, instance) {
      var o = instance.options;
      o._cursor && $("body").css("cursor", o._cursor);
    }, "stop")
  }), $.ui.plugin.add("draggable", "opacity", {
    start: /* @__PURE__ */ __name(function(event, ui, instance) {
      var t = $(ui.helper), o = instance.options;
      t.css("opacity") && (o._opacity = t.css("opacity")), t.css("opacity", o.opacity);
    }, "start"),
    stop: /* @__PURE__ */ __name(function(event, ui, instance) {
      var o = instance.options;
      o._opacity && $(ui.helper).css("opacity", o._opacity);
    }, "stop")
  }), $.ui.plugin.add("draggable", "scroll", {
    start: /* @__PURE__ */ __name(function(event, ui, i) {
      i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && i.scrollParentNotHidden[0].tagName !== "HTML" && (i.overflowOffset = i.scrollParentNotHidden.offset());
    }, "start"),
    drag: /* @__PURE__ */ __name(function(event, ui, i) {
      var o = i.options, scrolled = !1, scrollParent = i.scrollParentNotHidden[0], document2 = i.document[0];
      scrollParent !== document2 && scrollParent.tagName !== "HTML" ? ((!o.axis || o.axis !== "x") && (i.overflowOffset.top + scrollParent.offsetHeight - event.pageY < o.scrollSensitivity ? scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed : event.pageY - i.overflowOffset.top < o.scrollSensitivity && (scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed)), (!o.axis || o.axis !== "y") && (i.overflowOffset.left + scrollParent.offsetWidth - event.pageX < o.scrollSensitivity ? scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed : event.pageX - i.overflowOffset.left < o.scrollSensitivity && (scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed))) : ((!o.axis || o.axis !== "x") && (event.pageY - $(document2).scrollTop() < o.scrollSensitivity ? scrolled = $(document2).scrollTop($(document2).scrollTop() - o.scrollSpeed) : $(window).height() - (event.pageY - $(document2).scrollTop()) < o.scrollSensitivity && (scrolled = $(document2).scrollTop($(document2).scrollTop() + o.scrollSpeed))), (!o.axis || o.axis !== "y") && (event.pageX - $(document2).scrollLeft() < o.scrollSensitivity ? scrolled = $(document2).scrollLeft(
        $(document2).scrollLeft() - o.scrollSpeed
      ) : $(window).width() - (event.pageX - $(document2).scrollLeft()) < o.scrollSensitivity && (scrolled = $(document2).scrollLeft(
        $(document2).scrollLeft() + o.scrollSpeed
      )))), scrolled !== !1 && $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(i, event);
    }, "drag")
  }), $.ui.plugin.add("draggable", "snap", {
    start: /* @__PURE__ */ __name(function(event, ui, i) {
      var o = i.options;
      i.snapElements = [], $(o.snap.constructor !== String ? o.snap.items || ":data(ui-draggable)" : o.snap).each(function() {
        var $t = $(this), $o = $t.offset();
        this !== i.element[0] && i.snapElements.push({
          item: this,
          width: $t.outerWidth(),
          height: $t.outerHeight(),
          top: $o.top,
          left: $o.left
        });
      });
    }, "start"),
    drag: /* @__PURE__ */ __name(function(event, ui, inst) {
      var ts, bs, ls, rs, l, r, t, b, i, first, o = inst.options, d = o.snapTolerance, x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
      for (i = inst.snapElements.length - 1; i >= 0; i--) {
        if (l = inst.snapElements[i].left - inst.margins.left, r = l + inst.snapElements[i].width, t = inst.snapElements[i].top - inst.margins.top, b = t + inst.snapElements[i].height, x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains(
          inst.snapElements[i].item.ownerDocument,
          inst.snapElements[i].item
        )) {
          inst.snapElements[i].snapping && inst.options.snap.release && inst.options.snap.release.call(
            inst.element,
            event,
            $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })
          ), inst.snapElements[i].snapping = !1;
          continue;
        }
        o.snapMode !== "inner" && (ts = Math.abs(t - y2) <= d, bs = Math.abs(b - y1) <= d, ls = Math.abs(l - x2) <= d, rs = Math.abs(r - x1) <= d, ts && (ui.position.top = inst._convertPositionTo("relative", {
          top: t - inst.helperProportions.height,
          left: 0
        }).top), bs && (ui.position.top = inst._convertPositionTo("relative", {
          top: b,
          left: 0
        }).top), ls && (ui.position.left = inst._convertPositionTo("relative", {
          top: 0,
          left: l - inst.helperProportions.width
        }).left), rs && (ui.position.left = inst._convertPositionTo("relative", {
          top: 0,
          left: r
        }).left)), first = ts || bs || ls || rs, o.snapMode !== "outer" && (ts = Math.abs(t - y1) <= d, bs = Math.abs(b - y2) <= d, ls = Math.abs(l - x1) <= d, rs = Math.abs(r - x2) <= d, ts && (ui.position.top = inst._convertPositionTo("relative", {
          top: t,
          left: 0
        }).top), bs && (ui.position.top = inst._convertPositionTo("relative", {
          top: b - inst.helperProportions.height,
          left: 0
        }).top), ls && (ui.position.left = inst._convertPositionTo("relative", {
          top: 0,
          left: l
        }).left), rs && (ui.position.left = inst._convertPositionTo("relative", {
          top: 0,
          left: r - inst.helperProportions.width
        }).left)), !inst.snapElements[i].snapping && (ts || bs || ls || rs || first) && inst.options.snap.snap && inst.options.snap.snap.call(
          inst.element,
          event,
          $.extend(inst._uiHash(), {
            snapItem: inst.snapElements[i].item
          })
        ), inst.snapElements[i].snapping = ts || bs || ls || rs || first;
      }
    }, "drag")
  }), $.ui.plugin.add("draggable", "stack", {
    start: /* @__PURE__ */ __name(function(event, ui, instance) {
      var min, o = instance.options, group = $.makeArray($(o.stack)).sort(function(a, b) {
        return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0);
      });
      group.length && (min = parseInt($(group[0]).css("zIndex"), 10) || 0, $(group).each(function(i) {
        $(this).css("zIndex", min + i);
      }), this.css("zIndex", min + group.length));
    }, "start")
  }), $.ui.plugin.add("draggable", "zIndex", {
    start: /* @__PURE__ */ __name(function(event, ui, instance) {
      var t = $(ui.helper), o = instance.options;
      t.css("zIndex") && (o._zIndex = t.css("zIndex")), t.css("zIndex", o.zIndex);
    }, "start"),
    stop: /* @__PURE__ */ __name(function(event, ui, instance) {
      var o = instance.options;
      o._zIndex && $(ui.helper).css("zIndex", o._zIndex);
    }, "stop")
  }), $.ui.draggable;
  /*!
  * jQuery UI Resizable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.resizable", $.ui.mouse, {
    version: "1.12.1",
    widgetEventPrefix: "resize",
    options: {
      alsoResize: !1,
      animate: !1,
      animateDuration: "slow",
      animateEasing: "swing",
      aspectRatio: !1,
      autoHide: !1,
      classes: {
        "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
      },
      containment: !1,
      ghost: !1,
      grid: !1,
      handles: "e,s,se",
      helper: !1,
      maxHeight: null,
      maxWidth: null,
      minHeight: 10,
      minWidth: 10,
      // See #7960
      zIndex: 90,
      // Callbacks
      resize: null,
      start: null,
      stop: null
    },
    _num: /* @__PURE__ */ __name(function(value) {
      return parseFloat(value) || 0;
    }, "_num"),
    _isNumber: /* @__PURE__ */ __name(function(value) {
      return !isNaN(parseFloat(value));
    }, "_isNumber"),
    _hasScroll: /* @__PURE__ */ __name(function(el, a) {
      if ($(el).css("overflow") === "hidden")
        return !1;
      var scroll = a && a === "left" ? "scrollLeft" : "scrollTop", has = !1;
      return el[scroll] > 0 ? !0 : (el[scroll] = 1, has = el[scroll] > 0, el[scroll] = 0, has);
    }, "_hasScroll"),
    _create: /* @__PURE__ */ __name(function() {
      var margins, o = this.options, that = this;
      this._addClass("ui-resizable"), $.extend(this, {
        _aspectRatio: !!o.aspectRatio,
        aspectRatio: o.aspectRatio,
        originalElement: this.element,
        _proportionallyResizeElements: [],
        _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
      }), this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i) && (this.element.wrap(
        $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
          position: this.element.css("position"),
          width: this.element.outerWidth(),
          height: this.element.outerHeight(),
          top: this.element.css("top"),
          left: this.element.css("left")
        })
      ), this.element = this.element.parent().data(
        "ui-resizable",
        this.element.resizable("instance")
      ), this.elementIsWrapper = !0, margins = {
        marginTop: this.originalElement.css("marginTop"),
        marginRight: this.originalElement.css("marginRight"),
        marginBottom: this.originalElement.css("marginBottom"),
        marginLeft: this.originalElement.css("marginLeft")
      }, this.element.css(margins), this.originalElement.css("margin", 0), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({
        position: "static",
        zoom: 1,
        display: "block"
      })), this.originalElement.css(margins), this._proportionallyResize()), this._setupHandles(), o.autoHide && $(this.element).on("mouseenter", function() {
        o.disabled || (that._removeClass("ui-resizable-autohide"), that._handles.show());
      }).on("mouseleave", function() {
        o.disabled || that.resizing || (that._addClass("ui-resizable-autohide"), that._handles.hide());
      }), this._mouseInit();
    }, "_create"),
    _destroy: /* @__PURE__ */ __name(function() {
      this._mouseDestroy();
      var wrapper, _destroy = /* @__PURE__ */ __name(function(exp) {
        $(exp).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove();
      }, "_destroy");
      return this.elementIsWrapper && (_destroy(this.element), wrapper = this.element, this.originalElement.css({
        position: wrapper.css("position"),
        width: wrapper.outerWidth(),
        height: wrapper.outerHeight(),
        top: wrapper.css("top"),
        left: wrapper.css("left")
      }).insertAfter(wrapper), wrapper.remove()), this.originalElement.css("resize", this.originalResizeStyle), _destroy(this.originalElement), this;
    }, "_destroy"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      switch (this._super(key, value), key) {
        case "handles":
          this._removeHandles(), this._setupHandles();
          break;
      }
    }, "_setOption"),
    _setupHandles: /* @__PURE__ */ __name(function() {
      var o = this.options, handle, i, n, hname, axis, that = this;
      if (this.handles = o.handles || ($(".ui-resizable-handle", this.element).length ? {
        n: ".ui-resizable-n",
        e: ".ui-resizable-e",
        s: ".ui-resizable-s",
        w: ".ui-resizable-w",
        se: ".ui-resizable-se",
        sw: ".ui-resizable-sw",
        ne: ".ui-resizable-ne",
        nw: ".ui-resizable-nw"
      } : "e,s,se"), this._handles = $(), this.handles.constructor === String)
        for (this.handles === "all" && (this.handles = "n,e,s,w,se,sw,ne,nw"), n = this.handles.split(","), this.handles = {}, i = 0; i < n.length; i++)
          handle = $.trim(n[i]), hname = "ui-resizable-" + handle, axis = $("<div>"), this._addClass(axis, "ui-resizable-handle " + hname), axis.css({ zIndex: o.zIndex }), this.handles[handle] = ".ui-resizable-" + handle, this.element.append(axis);
      this._renderAxis = function(target) {
        var i2, axis2, padPos, padWrapper;
        target = target || this.element;
        for (i2 in this.handles)
          this.handles[i2].constructor === String ? this.handles[i2] = this.element.children(this.handles[i2]).first().show() : (this.handles[i2].jquery || this.handles[i2].nodeType) && (this.handles[i2] = $(this.handles[i2]), this._on(this.handles[i2], { mousedown: that._mouseDown })), this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i) && (axis2 = $(this.handles[i2], this.element), padWrapper = /sw|ne|nw|se|n|s/.test(i2) ? axis2.outerHeight() : axis2.outerWidth(), padPos = [
            "padding",
            /ne|nw|n/.test(i2) ? "Top" : /se|sw|s/.test(i2) ? "Bottom" : /^e$/.test(i2) ? "Right" : "Left"
          ].join(""), target.css(padPos, padWrapper), this._proportionallyResize()), this._handles = this._handles.add(this.handles[i2]);
      }, this._renderAxis(this.element), this._handles = this._handles.add(this.element.find(".ui-resizable-handle")), this._handles.disableSelection(), this._handles.on("mouseover", function() {
        that.resizing || (this.className && (axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), that.axis = axis && axis[1] ? axis[1] : "se");
      }), o.autoHide && (this._handles.hide(), this._addClass("ui-resizable-autohide"));
    }, "_setupHandles"),
    _removeHandles: /* @__PURE__ */ __name(function() {
      this._handles.remove();
    }, "_removeHandles"),
    _mouseCapture: /* @__PURE__ */ __name(function(event) {
      var i, handle, capture = !1;
      for (i in this.handles)
        handle = $(this.handles[i])[0], (handle === event.target || $.contains(handle, event.target)) && (capture = !0);
      return !this.options.disabled && capture;
    }, "_mouseCapture"),
    _mouseStart: /* @__PURE__ */ __name(function(event) {
      var curleft, curtop, cursor, o = this.options, el = this.element;
      return this.resizing = !0, this._renderProxy(), curleft = this._num(this.helper.css("left")), curtop = this._num(this.helper.css("top")), o.containment && (curleft += $(o.containment).scrollLeft() || 0, curtop += $(o.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = { left: curleft, top: curtop }, this.size = this._helper ? {
        width: this.helper.width(),
        height: this.helper.height()
      } : {
        width: el.width(),
        height: el.height()
      }, this.originalSize = this._helper ? {
        width: el.outerWidth(),
        height: el.outerHeight()
      } : {
        width: el.width(),
        height: el.height()
      }, this.sizeDiff = {
        width: el.outerWidth() - el.width(),
        height: el.outerHeight() - el.height()
      }, this.originalPosition = { left: curleft, top: curtop }, this.originalMousePosition = { left: event.pageX, top: event.pageY }, this.aspectRatio = typeof o.aspectRatio == "number" ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1, cursor = $(".ui-resizable-" + this.axis).css("cursor"), $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor), this._addClass("ui-resizable-resizing"), this._propagate("start", event), !0;
    }, "_mouseStart"),
    _mouseDrag: /* @__PURE__ */ __name(function(event) {
      var data, props, smp = this.originalMousePosition, a = this.axis, dx = event.pageX - smp.left || 0, dy = event.pageY - smp.top || 0, trigger = this._change[a];
      return this._updatePrevProperties(), trigger && (data = trigger.apply(this, [event, dx, dy]), this._updateVirtualBoundaries(event.shiftKey), (this._aspectRatio || event.shiftKey) && (data = this._updateRatio(data, event)), data = this._respectSize(data, event), this._updateCache(data), this._propagate("resize", event), props = this._applyChanges(), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), $.isEmptyObject(props) || (this._updatePrevProperties(), this._trigger("resize", event, this.ui()), this._applyChanges())), !1;
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function(event) {
      this.resizing = !1;
      var pr, ista, soffseth, soffsetw, s, left, top, o = this.options, that = this;
      return this._helper && (pr = this._proportionallyResizeElements, ista = pr.length && /textarea/i.test(pr[0].nodeName), soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height, soffsetw = ista ? 0 : that.sizeDiff.width, s = {
        width: that.helper.width() - soffsetw,
        height: that.helper.height() - soffseth
      }, left = parseFloat(that.element.css("left")) + (that.position.left - that.originalPosition.left) || null, top = parseFloat(that.element.css("top")) + (that.position.top - that.originalPosition.top) || null, o.animate || this.element.css($.extend(s, { top, left })), that.helper.height(that.size.height), that.helper.width(that.size.width), this._helper && !o.animate && this._proportionallyResize()), $("body").css("cursor", "auto"), this._removeClass("ui-resizable-resizing"), this._propagate("stop", event), this._helper && this.helper.remove(), !1;
    }, "_mouseStop"),
    _updatePrevProperties: /* @__PURE__ */ __name(function() {
      this.prevPosition = {
        top: this.position.top,
        left: this.position.left
      }, this.prevSize = {
        width: this.size.width,
        height: this.size.height
      };
    }, "_updatePrevProperties"),
    _applyChanges: /* @__PURE__ */ __name(function() {
      var props = {};
      return this.position.top !== this.prevPosition.top && (props.top = this.position.top + "px"), this.position.left !== this.prevPosition.left && (props.left = this.position.left + "px"), this.size.width !== this.prevSize.width && (props.width = this.size.width + "px"), this.size.height !== this.prevSize.height && (props.height = this.size.height + "px"), this.helper.css(props), props;
    }, "_applyChanges"),
    _updateVirtualBoundaries: /* @__PURE__ */ __name(function(forceAspectRatio) {
      var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o = this.options;
      b = {
        minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,
        maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : 1 / 0,
        minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,
        maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : 1 / 0
      }, (this._aspectRatio || forceAspectRatio) && (pMinWidth = b.minHeight * this.aspectRatio, pMinHeight = b.minWidth / this.aspectRatio, pMaxWidth = b.maxHeight * this.aspectRatio, pMaxHeight = b.maxWidth / this.aspectRatio, pMinWidth > b.minWidth && (b.minWidth = pMinWidth), pMinHeight > b.minHeight && (b.minHeight = pMinHeight), pMaxWidth < b.maxWidth && (b.maxWidth = pMaxWidth), pMaxHeight < b.maxHeight && (b.maxHeight = pMaxHeight)), this._vBoundaries = b;
    }, "_updateVirtualBoundaries"),
    _updateCache: /* @__PURE__ */ __name(function(data) {
      this.offset = this.helper.offset(), this._isNumber(data.left) && (this.position.left = data.left), this._isNumber(data.top) && (this.position.top = data.top), this._isNumber(data.height) && (this.size.height = data.height), this._isNumber(data.width) && (this.size.width = data.width);
    }, "_updateCache"),
    _updateRatio: /* @__PURE__ */ __name(function(data) {
      var cpos = this.position, csize = this.size, a = this.axis;
      return this._isNumber(data.height) ? data.width = data.height * this.aspectRatio : this._isNumber(data.width) && (data.height = data.width / this.aspectRatio), a === "sw" && (data.left = cpos.left + (csize.width - data.width), data.top = null), a === "nw" && (data.top = cpos.top + (csize.height - data.height), data.left = cpos.left + (csize.width - data.width)), data;
    }, "_updateRatio"),
    _respectSize: /* @__PURE__ */ __name(function(data) {
      var o = this._vBoundaries, a = this.axis, ismaxw = this._isNumber(data.width) && o.maxWidth && o.maxWidth < data.width, ismaxh = this._isNumber(data.height) && o.maxHeight && o.maxHeight < data.height, isminw = this._isNumber(data.width) && o.minWidth && o.minWidth > data.width, isminh = this._isNumber(data.height) && o.minHeight && o.minHeight > data.height, dw = this.originalPosition.left + this.originalSize.width, dh = this.originalPosition.top + this.originalSize.height, cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
      return isminw && (data.width = o.minWidth), isminh && (data.height = o.minHeight), ismaxw && (data.width = o.maxWidth), ismaxh && (data.height = o.maxHeight), isminw && cw && (data.left = dw - o.minWidth), ismaxw && cw && (data.left = dw - o.maxWidth), isminh && ch && (data.top = dh - o.minHeight), ismaxh && ch && (data.top = dh - o.maxHeight), !data.width && !data.height && !data.left && data.top ? data.top = null : !data.width && !data.height && !data.top && data.left && (data.left = null), data;
    }, "_respectSize"),
    _getPaddingPlusBorderDimensions: /* @__PURE__ */ __name(function(element) {
      for (var i = 0, widths = [], borders = [
        element.css("borderTopWidth"),
        element.css("borderRightWidth"),
        element.css("borderBottomWidth"),
        element.css("borderLeftWidth")
      ], paddings = [
        element.css("paddingTop"),
        element.css("paddingRight"),
        element.css("paddingBottom"),
        element.css("paddingLeft")
      ]; i < 4; i++)
        widths[i] = parseFloat(borders[i]) || 0, widths[i] += parseFloat(paddings[i]) || 0;
      return {
        height: widths[0] + widths[2],
        width: widths[1] + widths[3]
      };
    }, "_getPaddingPlusBorderDimensions"),
    _proportionallyResize: /* @__PURE__ */ __name(function() {
      if (this._proportionallyResizeElements.length)
        for (var prel, i = 0, element = this.helper || this.element; i < this._proportionallyResizeElements.length; i++)
          prel = this._proportionallyResizeElements[i], this.outerDimensions || (this.outerDimensions = this._getPaddingPlusBorderDimensions(prel)), prel.css({
            height: element.height() - this.outerDimensions.height || 0,
            width: element.width() - this.outerDimensions.width || 0
          });
    }, "_proportionallyResize"),
    _renderProxy: /* @__PURE__ */ __name(function() {
      var el = this.element, o = this.options;
      this.elementOffset = el.offset(), this._helper ? (this.helper = this.helper || $("<div style='overflow:hidden;'></div>"), this._addClass(this.helper, this._helper), this.helper.css({
        width: this.element.outerWidth(),
        height: this.element.outerHeight(),
        position: "absolute",
        left: this.elementOffset.left + "px",
        top: this.elementOffset.top + "px",
        zIndex: ++o.zIndex
        //TODO: Don't modify option
      }), this.helper.appendTo("body").disableSelection()) : this.helper = this.element;
    }, "_renderProxy"),
    _change: {
      e: /* @__PURE__ */ __name(function(event, dx) {
        return { width: this.originalSize.width + dx };
      }, "e"),
      w: /* @__PURE__ */ __name(function(event, dx) {
        var cs = this.originalSize, sp = this.originalPosition;
        return { left: sp.left + dx, width: cs.width - dx };
      }, "w"),
      n: /* @__PURE__ */ __name(function(event, dx, dy) {
        var cs = this.originalSize, sp = this.originalPosition;
        return { top: sp.top + dy, height: cs.height - dy };
      }, "n"),
      s: /* @__PURE__ */ __name(function(event, dx, dy) {
        return { height: this.originalSize.height + dy };
      }, "s"),
      se: /* @__PURE__ */ __name(function(event, dx, dy) {
        return $.extend(
          this._change.s.apply(this, arguments),
          this._change.e.apply(this, [event, dx, dy])
        );
      }, "se"),
      sw: /* @__PURE__ */ __name(function(event, dx, dy) {
        return $.extend(
          this._change.s.apply(this, arguments),
          this._change.w.apply(this, [event, dx, dy])
        );
      }, "sw"),
      ne: /* @__PURE__ */ __name(function(event, dx, dy) {
        return $.extend(
          this._change.n.apply(this, arguments),
          this._change.e.apply(this, [event, dx, dy])
        );
      }, "ne"),
      nw: /* @__PURE__ */ __name(function(event, dx, dy) {
        return $.extend(
          this._change.n.apply(this, arguments),
          this._change.w.apply(this, [event, dx, dy])
        );
      }, "nw")
    },
    _propagate: /* @__PURE__ */ __name(function(n, event) {
      $.ui.plugin.call(this, n, [event, this.ui()]), n !== "resize" && this._trigger(n, event, this.ui());
    }, "_propagate"),
    plugins: {},
    ui: /* @__PURE__ */ __name(function() {
      return {
        originalElement: this.originalElement,
        element: this.element,
        helper: this.helper,
        position: this.position,
        size: this.size,
        originalSize: this.originalSize,
        originalPosition: this.originalPosition
      };
    }, "ui")
  }), $.ui.plugin.add("resizable", "animate", {
    stop: /* @__PURE__ */ __name(function(event) {
      var that = $(this).resizable("instance"), o = that.options, pr = that._proportionallyResizeElements, ista = pr.length && /textarea/i.test(pr[0].nodeName), soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height, soffsetw = ista ? 0 : that.sizeDiff.width, style = {
        width: that.size.width - soffsetw,
        height: that.size.height - soffseth
      }, left = parseFloat(that.element.css("left")) + (that.position.left - that.originalPosition.left) || null, top = parseFloat(that.element.css("top")) + (that.position.top - that.originalPosition.top) || null;
      that.element.animate(
        $.extend(style, top && left ? { top, left } : {}),
        {
          duration: o.animateDuration,
          easing: o.animateEasing,
          step: /* @__PURE__ */ __name(function() {
            var data = {
              width: parseFloat(that.element.css("width")),
              height: parseFloat(that.element.css("height")),
              top: parseFloat(that.element.css("top")),
              left: parseFloat(that.element.css("left"))
            };
            pr && pr.length && $(pr[0]).css({ width: data.width, height: data.height }), that._updateCache(data), that._propagate("resize", event);
          }, "step")
        }
      );
    }, "stop")
  }), $.ui.plugin.add("resizable", "containment", {
    start: /* @__PURE__ */ __name(function() {
      var element, p, co, ch, cw, width, height, that = $(this).resizable("instance"), o = that.options, el = that.element, oc = o.containment, ce = oc instanceof $ ? oc.get(0) : /parent/.test(oc) ? el.parent().get(0) : oc;
      ce && (that.containerElement = $(ce), /document/.test(oc) || oc === document ? (that.containerOffset = {
        left: 0,
        top: 0
      }, that.containerPosition = {
        left: 0,
        top: 0
      }, that.parentData = {
        element: $(document),
        left: 0,
        top: 0,
        width: $(document).width(),
        height: $(document).height() || document.body.parentNode.scrollHeight
      }) : (element = $(ce), p = [], $(["Top", "Right", "Left", "Bottom"]).each(function(i, name) {
        p[i] = that._num(element.css("padding" + name));
      }), that.containerOffset = element.offset(), that.containerPosition = element.position(), that.containerSize = {
        height: element.innerHeight() - p[3],
        width: element.innerWidth() - p[1]
      }, co = that.containerOffset, ch = that.containerSize.height, cw = that.containerSize.width, width = that._hasScroll(ce, "left") ? ce.scrollWidth : cw, height = that._hasScroll(ce) ? ce.scrollHeight : ch, that.parentData = {
        element: ce,
        left: co.left,
        top: co.top,
        width,
        height
      }));
    }, "start"),
    resize: /* @__PURE__ */ __name(function(event) {
      var woset, hoset, isParent, isOffsetRelative, that = $(this).resizable("instance"), o = that.options, co = that.containerOffset, cp = that.position, pRatio = that._aspectRatio || event.shiftKey, cop = {
        top: 0,
        left: 0
      }, ce = that.containerElement, continueResize = !0;
      ce[0] !== document && /static/.test(ce.css("position")) && (cop = co), cp.left < (that._helper ? co.left : 0) && (that.size.width = that.size.width + (that._helper ? that.position.left - co.left : that.position.left - cop.left), pRatio && (that.size.height = that.size.width / that.aspectRatio, continueResize = !1), that.position.left = o.helper ? co.left : 0), cp.top < (that._helper ? co.top : 0) && (that.size.height = that.size.height + (that._helper ? that.position.top - co.top : that.position.top), pRatio && (that.size.width = that.size.height * that.aspectRatio, continueResize = !1), that.position.top = that._helper ? co.top : 0), isParent = that.containerElement.get(0) === that.element.parent().get(0), isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")), isParent && isOffsetRelative ? (that.offset.left = that.parentData.left + that.position.left, that.offset.top = that.parentData.top + that.position.top) : (that.offset.left = that.element.offset().left, that.offset.top = that.element.offset().top), woset = Math.abs(that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : that.offset.left - co.left)), hoset = Math.abs(that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : that.offset.top - co.top)), woset + that.size.width >= that.parentData.width && (that.size.width = that.parentData.width - woset, pRatio && (that.size.height = that.size.width / that.aspectRatio, continueResize = !1)), hoset + that.size.height >= that.parentData.height && (that.size.height = that.parentData.height - hoset, pRatio && (that.size.width = that.size.height * that.aspectRatio, continueResize = !1)), continueResize || (that.position.left = that.prevPosition.left, that.position.top = that.prevPosition.top, that.size.width = that.prevSize.width, that.size.height = that.prevSize.height);
    }, "resize"),
    stop: /* @__PURE__ */ __name(function() {
      var that = $(this).resizable("instance"), o = that.options, co = that.containerOffset, cop = that.containerPosition, ce = that.containerElement, helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;
      that._helper && !o.animate && /relative/.test(ce.css("position")) && $(this).css({
        left: ho.left - cop.left - co.left,
        width: w,
        height: h
      }), that._helper && !o.animate && /static/.test(ce.css("position")) && $(this).css({
        left: ho.left - cop.left - co.left,
        width: w,
        height: h
      });
    }, "stop")
  }), $.ui.plugin.add("resizable", "alsoResize", {
    start: /* @__PURE__ */ __name(function() {
      var that = $(this).resizable("instance"), o = that.options;
      $(o.alsoResize).each(function() {
        var el = $(this);
        el.data("ui-resizable-alsoresize", {
          width: parseFloat(el.width()),
          height: parseFloat(el.height()),
          left: parseFloat(el.css("left")),
          top: parseFloat(el.css("top"))
        });
      });
    }, "start"),
    resize: /* @__PURE__ */ __name(function(event, ui) {
      var that = $(this).resizable("instance"), o = that.options, os = that.originalSize, op = that.originalPosition, delta = {
        height: that.size.height - os.height || 0,
        width: that.size.width - os.width || 0,
        top: that.position.top - op.top || 0,
        left: that.position.left - op.left || 0
      };
      $(o.alsoResize).each(function() {
        var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, css = el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
        $.each(css, function(i, prop) {
          var sum = (start[prop] || 0) + (delta[prop] || 0);
          sum && sum >= 0 && (style[prop] = sum || null);
        }), el.css(style);
      });
    }, "resize"),
    stop: /* @__PURE__ */ __name(function() {
      $(this).removeData("ui-resizable-alsoresize");
    }, "stop")
  }), $.ui.plugin.add("resizable", "ghost", {
    start: /* @__PURE__ */ __name(function() {
      var that = $(this).resizable("instance"), cs = that.size;
      that.ghost = that.originalElement.clone(), that.ghost.css({
        opacity: 0.25,
        display: "block",
        position: "relative",
        height: cs.height,
        width: cs.width,
        margin: 0,
        left: 0,
        top: 0
      }), that._addClass(that.ghost, "ui-resizable-ghost"), $.uiBackCompat !== !1 && typeof that.options.ghost == "string" && that.ghost.addClass(this.options.ghost), that.ghost.appendTo(that.helper);
    }, "start"),
    resize: /* @__PURE__ */ __name(function() {
      var that = $(this).resizable("instance");
      that.ghost && that.ghost.css({
        position: "relative",
        height: that.size.height,
        width: that.size.width
      });
    }, "resize"),
    stop: /* @__PURE__ */ __name(function() {
      var that = $(this).resizable("instance");
      that.ghost && that.helper && that.helper.get(0).removeChild(that.ghost.get(0));
    }, "stop")
  }), $.ui.plugin.add("resizable", "grid", {
    resize: /* @__PURE__ */ __name(function() {
      var outerDimensions, that = $(this).resizable("instance"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid, gridX = grid[0] || 1, gridY = grid[1] || 1, ox = Math.round((cs.width - os.width) / gridX) * gridX, oy = Math.round((cs.height - os.height) / gridY) * gridY, newWidth = os.width + ox, newHeight = os.height + oy, isMaxWidth = o.maxWidth && o.maxWidth < newWidth, isMaxHeight = o.maxHeight && o.maxHeight < newHeight, isMinWidth = o.minWidth && o.minWidth > newWidth, isMinHeight = o.minHeight && o.minHeight > newHeight;
      o.grid = grid, isMinWidth && (newWidth += gridX), isMinHeight && (newHeight += gridY), isMaxWidth && (newWidth -= gridX), isMaxHeight && (newHeight -= gridY), /^(se|s|e)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight) : /^(ne)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight, that.position.top = op.top - oy) : /^(sw)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight, that.position.left = op.left - ox) : ((newHeight - gridY <= 0 || newWidth - gridX <= 0) && (outerDimensions = that._getPaddingPlusBorderDimensions(this)), newHeight - gridY > 0 ? (that.size.height = newHeight, that.position.top = op.top - oy) : (newHeight = gridY - outerDimensions.height, that.size.height = newHeight, that.position.top = op.top + os.height - newHeight), newWidth - gridX > 0 ? (that.size.width = newWidth, that.position.left = op.left - ox) : (newWidth = gridX - outerDimensions.width, that.size.width = newWidth, that.position.left = op.left + os.width - newWidth));
    }, "resize")
  }), $.ui.resizable;
  /*!
  * jQuery UI Dialog 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.dialog", {
    version: "1.12.1",
    options: {
      appendTo: "body",
      autoOpen: !0,
      buttons: [],
      classes: {
        "ui-dialog": "ui-corner-all",
        "ui-dialog-titlebar": "ui-corner-all"
      },
      closeOnEscape: !0,
      closeText: "Close",
      draggable: !0,
      hide: null,
      height: "auto",
      maxHeight: null,
      maxWidth: null,
      minHeight: 150,
      minWidth: 150,
      modal: !1,
      position: {
        my: "center",
        at: "center",
        of: window,
        collision: "fit",
        // Ensure the titlebar is always visible
        using: /* @__PURE__ */ __name(function(pos) {
          var topOffset = $(this).css(pos).offset().top;
          topOffset < 0 && $(this).css("top", pos.top - topOffset);
        }, "using")
      },
      resizable: !0,
      show: null,
      title: null,
      width: 300,
      // Callbacks
      beforeClose: null,
      close: null,
      drag: null,
      dragStart: null,
      dragStop: null,
      focus: null,
      open: null,
      resize: null,
      resizeStart: null,
      resizeStop: null
    },
    sizeRelatedOptions: {
      buttons: !0,
      height: !0,
      maxHeight: !0,
      maxWidth: !0,
      minHeight: !0,
      minWidth: !0,
      width: !0
    },
    resizableRelatedOptions: {
      maxHeight: !0,
      maxWidth: !0,
      minHeight: !0,
      minWidth: !0
    },
    _create: /* @__PURE__ */ __name(function() {
      this.originalCss = {
        display: this.element[0].style.display,
        width: this.element[0].style.width,
        minHeight: this.element[0].style.minHeight,
        maxHeight: this.element[0].style.maxHeight,
        height: this.element[0].style.height
      }, this.originalPosition = {
        parent: this.element.parent(),
        index: this.element.parent().children().index(this.element)
      }, this.originalTitle = this.element.attr("title"), this.options.title == null && this.originalTitle != null && (this.options.title = this.originalTitle), this.options.disabled && (this.options.disabled = !1), this._createWrapper(), this.element.show().removeAttr("title").appendTo(this.uiDialog), this._addClass("ui-dialog-content", "ui-widget-content"), this._createTitlebar(), this._createButtonPane(), this.options.draggable && $.fn.draggable && this._makeDraggable(), this.options.resizable && $.fn.resizable && this._makeResizable(), this._isOpen = !1, this._trackFocus();
    }, "_create"),
    _init: /* @__PURE__ */ __name(function() {
      this.options.autoOpen && this.open();
    }, "_init"),
    _appendTo: /* @__PURE__ */ __name(function() {
      var element = this.options.appendTo;
      return element && (element.jquery || element.nodeType) ? $(element) : this.document.find(element || "body").eq(0);
    }, "_appendTo"),
    _destroy: /* @__PURE__ */ __name(function() {
      var next, originalPosition = this.originalPosition;
      this._untrackInstance(), this._destroyOverlay(), this.element.removeUniqueId().css(this.originalCss).detach(), this.uiDialog.remove(), this.originalTitle && this.element.attr("title", this.originalTitle), next = originalPosition.parent.children().eq(originalPosition.index), next.length && next[0] !== this.element[0] ? next.before(this.element) : originalPosition.parent.append(this.element);
    }, "_destroy"),
    widget: /* @__PURE__ */ __name(function() {
      return this.uiDialog;
    }, "widget"),
    disable: $.noop,
    enable: $.noop,
    close: /* @__PURE__ */ __name(function(event) {
      var that = this;
      !this._isOpen || this._trigger("beforeClose", event) === !1 || (this._isOpen = !1, this._focusedElement = null, this._destroyOverlay(), this._untrackInstance(), this.opener.filter(":focusable").trigger("focus").length || $.ui.safeBlur($.ui.safeActiveElement(this.document[0])), this._hide(this.uiDialog, this.options.hide, function() {
        that._trigger("close", event);
      }));
    }, "close"),
    isOpen: /* @__PURE__ */ __name(function() {
      return this._isOpen;
    }, "isOpen"),
    moveToTop: /* @__PURE__ */ __name(function() {
      this._moveToTop();
    }, "moveToTop"),
    _moveToTop: /* @__PURE__ */ __name(function(event, silent) {
      var moved = !1, zIndices = this.uiDialog.siblings(".ui-front:visible").map(function() {
        return +$(this).css("z-index");
      }).get(), zIndexMax = Math.max.apply(null, zIndices);
      return zIndexMax >= +this.uiDialog.css("z-index") && (this.uiDialog.css("z-index", zIndexMax + 1), moved = !0), moved && !silent && this._trigger("focus", event), moved;
    }, "_moveToTop"),
    open: /* @__PURE__ */ __name(function() {
      var that = this;
      if (this._isOpen) {
        this._moveToTop() && this._focusTabbable();
        return;
      }
      this._isOpen = !0, this.opener = $($.ui.safeActiveElement(this.document[0])), this._size(), this._position(), this._createOverlay(), this._moveToTop(null, !0), this.overlay && this.overlay.css("z-index", this.uiDialog.css("z-index") - 1), this._show(this.uiDialog, this.options.show, function() {
        that._focusTabbable(), that._trigger("focus");
      }), this._makeFocusTarget(), this._trigger("open");
    }, "open"),
    _focusTabbable: /* @__PURE__ */ __name(function() {
      var hasFocus = this._focusedElement;
      hasFocus || (hasFocus = this.element.find("[autofocus]")), hasFocus.length || (hasFocus = this.element.find(":tabbable")), hasFocus.length || (hasFocus = this.uiDialogButtonPane.find(":tabbable")), hasFocus.length || (hasFocus = this.uiDialogTitlebarClose.filter(":tabbable")), hasFocus.length || (hasFocus = this.uiDialog), hasFocus.eq(0).trigger("focus");
    }, "_focusTabbable"),
    _keepFocus: /* @__PURE__ */ __name(function(event) {
      function checkFocus() {
        var activeElement = $.ui.safeActiveElement(this.document[0]), isActive = this.uiDialog[0] === activeElement || $.contains(this.uiDialog[0], activeElement);
        isActive || this._focusTabbable();
      }
      __name(checkFocus, "checkFocus"), event.preventDefault(), checkFocus.call(this), this._delay(checkFocus);
    }, "_keepFocus"),
    _createWrapper: /* @__PURE__ */ __name(function() {
      this.uiDialog = $("<div>").hide().attr({
        // Setting tabIndex makes the div focusable
        tabIndex: -1,
        role: "dialog"
      }).appendTo(this._appendTo()), this._addClass(this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front"), this._on(this.uiDialog, {
        keydown: /* @__PURE__ */ __name(function(event) {
          if (this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) {
            event.preventDefault(), this.close(event);
            return;
          }
          if (!(event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented())) {
            var tabbables = this.uiDialog.find(":tabbable"), first = tabbables.filter(":first"), last = tabbables.filter(":last");
            (event.target === last[0] || event.target === this.uiDialog[0]) && !event.shiftKey ? (this._delay(function() {
              first.trigger("focus");
            }), event.preventDefault()) : (event.target === first[0] || event.target === this.uiDialog[0]) && event.shiftKey && (this._delay(function() {
              last.trigger("focus");
            }), event.preventDefault());
          }
        }, "keydown"),
        mousedown: /* @__PURE__ */ __name(function(event) {
          this._moveToTop(event) && this._focusTabbable();
        }, "mousedown")
      }), this.element.find("[aria-describedby]").length || this.uiDialog.attr({
        "aria-describedby": this.element.uniqueId().attr("id")
      });
    }, "_createWrapper"),
    _createTitlebar: /* @__PURE__ */ __name(function() {
      var uiDialogTitle;
      this.uiDialogTitlebar = $("<div>"), this._addClass(
        this.uiDialogTitlebar,
        "ui-dialog-titlebar",
        "ui-widget-header ui-helper-clearfix"
      ), this._on(this.uiDialogTitlebar, {
        mousedown: /* @__PURE__ */ __name(function(event) {
          $(event.target).closest(".ui-dialog-titlebar-close") || this.uiDialog.trigger("focus");
        }, "mousedown")
      }), this.uiDialogTitlebarClose = $("<button type='button'></button>").button({
        label: $("<a>").text(this.options.closeText).html(),
        icon: "ui-icon-closethick",
        showLabel: !1
      }).appendTo(this.uiDialogTitlebar), this._addClass(this.uiDialogTitlebarClose, "ui-dialog-titlebar-close"), this._on(this.uiDialogTitlebarClose, {
        click: /* @__PURE__ */ __name(function(event) {
          event.preventDefault(), this.close(event);
        }, "click")
      }), uiDialogTitle = $("<span>").uniqueId().prependTo(this.uiDialogTitlebar), this._addClass(uiDialogTitle, "ui-dialog-title"), this._title(uiDialogTitle), this.uiDialogTitlebar.prependTo(this.uiDialog), this.uiDialog.attr({
        "aria-labelledby": uiDialogTitle.attr("id")
      });
    }, "_createTitlebar"),
    _title: /* @__PURE__ */ __name(function(title) {
      this.options.title ? title.text(this.options.title) : title.html("&#160;");
    }, "_title"),
    _createButtonPane: /* @__PURE__ */ __name(function() {
      this.uiDialogButtonPane = $("<div>"), this._addClass(
        this.uiDialogButtonPane,
        "ui-dialog-buttonpane",
        "ui-widget-content ui-helper-clearfix"
      ), this.uiButtonSet = $("<div>").appendTo(this.uiDialogButtonPane), this._addClass(this.uiButtonSet, "ui-dialog-buttonset"), this._createButtons();
    }, "_createButtonPane"),
    _createButtons: /* @__PURE__ */ __name(function() {
      var that = this, buttons = this.options.buttons;
      if (this.uiDialogButtonPane.remove(), this.uiButtonSet.empty(), $.isEmptyObject(buttons) || $.isArray(buttons) && !buttons.length) {
        this._removeClass(this.uiDialog, "ui-dialog-buttons");
        return;
      }
      $.each(buttons, function(name, props) {
        var click, buttonOptions;
        props = $.isFunction(props) ? { click: props, text: name } : props, props = $.extend({ type: "button" }, props), click = props.click, buttonOptions = {
          icon: props.icon,
          iconPosition: props.iconPosition,
          showLabel: props.showLabel,
          // Deprecated options
          icons: props.icons,
          text: props.text
        }, delete props.click, delete props.icon, delete props.iconPosition, delete props.showLabel, delete props.icons, typeof props.text == "boolean" && delete props.text, $("<button></button>", props).button(buttonOptions).appendTo(that.uiButtonSet).on("click", function() {
          click.apply(that.element[0], arguments);
        });
      }), this._addClass(this.uiDialog, "ui-dialog-buttons"), this.uiDialogButtonPane.appendTo(this.uiDialog);
    }, "_createButtons"),
    _makeDraggable: /* @__PURE__ */ __name(function() {
      var that = this, options = this.options;
      function filteredUi(ui) {
        return {
          position: ui.position,
          offset: ui.offset
        };
      }
      __name(filteredUi, "filteredUi"), this.uiDialog.draggable({
        cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
        handle: ".ui-dialog-titlebar",
        containment: "document",
        start: /* @__PURE__ */ __name(function(event, ui) {
          that._addClass($(this), "ui-dialog-dragging"), that._blockFrames(), that._trigger("dragStart", event, filteredUi(ui));
        }, "start"),
        drag: /* @__PURE__ */ __name(function(event, ui) {
          that._trigger("drag", event, filteredUi(ui));
        }, "drag"),
        stop: /* @__PURE__ */ __name(function(event, ui) {
          var left = ui.offset.left - that.document.scrollLeft(), top = ui.offset.top - that.document.scrollTop();
          options.position = {
            my: "left top",
            at: "left" + (left >= 0 ? "+" : "") + left + " top" + (top >= 0 ? "+" : "") + top,
            of: that.window
          }, that._removeClass($(this), "ui-dialog-dragging"), that._unblockFrames(), that._trigger("dragStop", event, filteredUi(ui));
        }, "stop")
      });
    }, "_makeDraggable"),
    _makeResizable: /* @__PURE__ */ __name(function() {
      var that = this, options = this.options, handles = options.resizable, position = this.uiDialog.css("position"), resizeHandles = typeof handles == "string" ? handles : "n,e,s,w,se,sw,ne,nw";
      function filteredUi(ui) {
        return {
          originalPosition: ui.originalPosition,
          originalSize: ui.originalSize,
          position: ui.position,
          size: ui.size
        };
      }
      __name(filteredUi, "filteredUi"), this.uiDialog.resizable({
        cancel: ".ui-dialog-content",
        containment: "document",
        alsoResize: this.element,
        maxWidth: options.maxWidth,
        maxHeight: options.maxHeight,
        minWidth: options.minWidth,
        minHeight: this._minHeight(),
        handles: resizeHandles,
        start: /* @__PURE__ */ __name(function(event, ui) {
          that._addClass($(this), "ui-dialog-resizing"), that._blockFrames(), that._trigger("resizeStart", event, filteredUi(ui));
        }, "start"),
        resize: /* @__PURE__ */ __name(function(event, ui) {
          that._trigger("resize", event, filteredUi(ui));
        }, "resize"),
        stop: /* @__PURE__ */ __name(function(event, ui) {
          var offset = that.uiDialog.offset(), left = offset.left - that.document.scrollLeft(), top = offset.top - that.document.scrollTop();
          options.height = that.uiDialog.height(), options.width = that.uiDialog.width(), options.position = {
            my: "left top",
            at: "left" + (left >= 0 ? "+" : "") + left + " top" + (top >= 0 ? "+" : "") + top,
            of: that.window
          }, that._removeClass($(this), "ui-dialog-resizing"), that._unblockFrames(), that._trigger("resizeStop", event, filteredUi(ui));
        }, "stop")
      }).css("position", position);
    }, "_makeResizable"),
    _trackFocus: /* @__PURE__ */ __name(function() {
      this._on(this.widget(), {
        focusin: /* @__PURE__ */ __name(function(event) {
          this._makeFocusTarget(), this._focusedElement = $(event.target);
        }, "focusin")
      });
    }, "_trackFocus"),
    _makeFocusTarget: /* @__PURE__ */ __name(function() {
      this._untrackInstance(), this._trackingInstances().unshift(this);
    }, "_makeFocusTarget"),
    _untrackInstance: /* @__PURE__ */ __name(function() {
      var instances = this._trackingInstances(), exists = $.inArray(this, instances);
      exists !== -1 && instances.splice(exists, 1);
    }, "_untrackInstance"),
    _trackingInstances: /* @__PURE__ */ __name(function() {
      var instances = this.document.data("ui-dialog-instances");
      return instances || (instances = [], this.document.data("ui-dialog-instances", instances)), instances;
    }, "_trackingInstances"),
    _minHeight: /* @__PURE__ */ __name(function() {
      var options = this.options;
      return options.height === "auto" ? options.minHeight : Math.min(options.minHeight, options.height);
    }, "_minHeight"),
    _position: /* @__PURE__ */ __name(function() {
      var isVisible = this.uiDialog.is(":visible");
      isVisible || this.uiDialog.show(), this.uiDialog.position(this.options.position), isVisible || this.uiDialog.hide();
    }, "_position"),
    _setOptions: /* @__PURE__ */ __name(function(options) {
      var that = this, resize = !1, resizableOptions = {};
      $.each(options, function(key, value) {
        that._setOption(key, value), key in that.sizeRelatedOptions && (resize = !0), key in that.resizableRelatedOptions && (resizableOptions[key] = value);
      }), resize && (this._size(), this._position()), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", resizableOptions);
    }, "_setOptions"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      var isDraggable, isResizable, uiDialog = this.uiDialog;
      key !== "disabled" && (this._super(key, value), key === "appendTo" && this.uiDialog.appendTo(this._appendTo()), key === "buttons" && this._createButtons(), key === "closeText" && this.uiDialogTitlebarClose.button({
        // Ensure that we always pass a string
        label: $("<a>").text("" + this.options.closeText).html()
      }), key === "draggable" && (isDraggable = uiDialog.is(":data(ui-draggable)"), isDraggable && !value && uiDialog.draggable("destroy"), !isDraggable && value && this._makeDraggable()), key === "position" && this._position(), key === "resizable" && (isResizable = uiDialog.is(":data(ui-resizable)"), isResizable && !value && uiDialog.resizable("destroy"), isResizable && typeof value == "string" && uiDialog.resizable("option", "handles", value), !isResizable && value !== !1 && this._makeResizable()), key === "title" && this._title(this.uiDialogTitlebar.find(".ui-dialog-title")));
    }, "_setOption"),
    _size: /* @__PURE__ */ __name(function() {
      var nonContentHeight, minContentHeight, maxContentHeight, options = this.options;
      this.element.show().css({
        width: "auto",
        minHeight: 0,
        maxHeight: "none",
        height: 0
      }), options.minWidth > options.width && (options.width = options.minWidth), nonContentHeight = this.uiDialog.css({
        height: "auto",
        width: options.width
      }).outerHeight(), minContentHeight = Math.max(0, options.minHeight - nonContentHeight), maxContentHeight = typeof options.maxHeight == "number" ? Math.max(0, options.maxHeight - nonContentHeight) : "none", options.height === "auto" ? this.element.css({
        minHeight: minContentHeight,
        maxHeight: maxContentHeight,
        height: "auto"
      }) : this.element.height(Math.max(0, options.height - nonContentHeight)), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", "minHeight", this._minHeight());
    }, "_size"),
    _blockFrames: /* @__PURE__ */ __name(function() {
      this.iframeBlocks = this.document.find("iframe").map(function() {
        var iframe = $(this);
        return $("<div>").css({
          position: "absolute",
          width: iframe.outerWidth(),
          height: iframe.outerHeight()
        }).appendTo(iframe.parent()).offset(iframe.offset())[0];
      });
    }, "_blockFrames"),
    _unblockFrames: /* @__PURE__ */ __name(function() {
      this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);
    }, "_unblockFrames"),
    _allowInteraction: /* @__PURE__ */ __name(function(event) {
      return $(event.target).closest(".ui-dialog").length ? !0 : !!$(event.target).closest(".ui-datepicker").length;
    }, "_allowInteraction"),
    _createOverlay: /* @__PURE__ */ __name(function() {
      if (this.options.modal) {
        var isOpening = !0;
        this._delay(function() {
          isOpening = !1;
        }), this.document.data("ui-dialog-overlays") || this._on(this.document, {
          focusin: /* @__PURE__ */ __name(function(event) {
            isOpening || this._allowInteraction(event) || (event.preventDefault(), this._trackingInstances()[0]._focusTabbable());
          }, "focusin")
        }), this.overlay = $("<div>").appendTo(this._appendTo()), this._addClass(this.overlay, null, "ui-widget-overlay ui-front"), this._on(this.overlay, {
          mousedown: "_keepFocus"
        }), this.document.data(
          "ui-dialog-overlays",
          (this.document.data("ui-dialog-overlays") || 0) + 1
        );
      }
    }, "_createOverlay"),
    _destroyOverlay: /* @__PURE__ */ __name(function() {
      if (this.options.modal && this.overlay) {
        var overlays = this.document.data("ui-dialog-overlays") - 1;
        overlays ? this.document.data("ui-dialog-overlays", overlays) : (this._off(this.document, "focusin"), this.document.removeData("ui-dialog-overlays")), this.overlay.remove(), this.overlay = null;
      }
    }, "_destroyOverlay")
  }), $.uiBackCompat !== !1 && $.widget("ui.dialog", $.ui.dialog, {
    options: {
      dialogClass: ""
    },
    _createWrapper: /* @__PURE__ */ __name(function() {
      this._super(), this.uiDialog.addClass(this.options.dialogClass);
    }, "_createWrapper"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      key === "dialogClass" && this.uiDialog.removeClass(this.options.dialogClass).addClass(value), this._superApply(arguments);
    }, "_setOption")
  }), $.ui.dialog;
  /*!
  * jQuery UI Droppable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.droppable", {
    version: "1.12.1",
    widgetEventPrefix: "drop",
    options: {
      accept: "*",
      addClasses: !0,
      greedy: !1,
      scope: "default",
      tolerance: "intersect",
      // Callbacks
      activate: null,
      deactivate: null,
      drop: null,
      out: null,
      over: null
    },
    _create: /* @__PURE__ */ __name(function() {
      var proportions, o = this.options, accept = o.accept;
      this.isover = !1, this.isout = !0, this.accept = $.isFunction(accept) ? accept : function(d) {
        return d.is(accept);
      }, this.proportions = function() {
        if (arguments.length)
          proportions = arguments[0];
        else
          return proportions || (proportions = {
            width: this.element[0].offsetWidth,
            height: this.element[0].offsetHeight
          });
      }, this._addToManager(o.scope), o.addClasses && this._addClass("ui-droppable");
    }, "_create"),
    _addToManager: /* @__PURE__ */ __name(function(scope) {
      $.ui.ddmanager.droppables[scope] = $.ui.ddmanager.droppables[scope] || [], $.ui.ddmanager.droppables[scope].push(this);
    }, "_addToManager"),
    _splice: /* @__PURE__ */ __name(function(drop) {
      for (var i = 0; i < drop.length; i++)
        drop[i] === this && drop.splice(i, 1);
    }, "_splice"),
    _destroy: /* @__PURE__ */ __name(function() {
      var drop = $.ui.ddmanager.droppables[this.options.scope];
      this._splice(drop);
    }, "_destroy"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "accept")
        this.accept = $.isFunction(value) ? value : function(d) {
          return d.is(value);
        };
      else if (key === "scope") {
        var drop = $.ui.ddmanager.droppables[this.options.scope];
        this._splice(drop), this._addToManager(value);
      }
      this._super(key, value);
    }, "_setOption"),
    _activate: /* @__PURE__ */ __name(function(event) {
      var draggable = $.ui.ddmanager.current;
      this._addActiveClass(), draggable && this._trigger("activate", event, this.ui(draggable));
    }, "_activate"),
    _deactivate: /* @__PURE__ */ __name(function(event) {
      var draggable = $.ui.ddmanager.current;
      this._removeActiveClass(), draggable && this._trigger("deactivate", event, this.ui(draggable));
    }, "_deactivate"),
    _over: /* @__PURE__ */ __name(function(event) {
      var draggable = $.ui.ddmanager.current;
      !draggable || (draggable.currentItem || draggable.element)[0] === this.element[0] || this.accept.call(this.element[0], draggable.currentItem || draggable.element) && (this._addHoverClass(), this._trigger("over", event, this.ui(draggable)));
    }, "_over"),
    _out: /* @__PURE__ */ __name(function(event) {
      var draggable = $.ui.ddmanager.current;
      !draggable || (draggable.currentItem || draggable.element)[0] === this.element[0] || this.accept.call(this.element[0], draggable.currentItem || draggable.element) && (this._removeHoverClass(), this._trigger("out", event, this.ui(draggable)));
    }, "_out"),
    _drop: /* @__PURE__ */ __name(function(event, custom) {
      var draggable = custom || $.ui.ddmanager.current, childrenIntersection = !1;
      return !draggable || (draggable.currentItem || draggable.element)[0] === this.element[0] || (this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
        var inst = $(this).droppable("instance");
        if (inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call(
          inst.element[0],
          draggable.currentItem || draggable.element
        ) && intersect(
          draggable,
          $.extend(inst, { offset: inst.element.offset() }),
          inst.options.tolerance,
          event
        ))
          return childrenIntersection = !0, !1;
      }), childrenIntersection) ? !1 : this.accept.call(
        this.element[0],
        draggable.currentItem || draggable.element
      ) ? (this._removeActiveClass(), this._removeHoverClass(), this._trigger("drop", event, this.ui(draggable)), this.element) : !1;
    }, "_drop"),
    ui: /* @__PURE__ */ __name(function(c) {
      return {
        draggable: c.currentItem || c.element,
        helper: c.helper,
        position: c.position,
        offset: c.positionAbs
      };
    }, "ui"),
    // Extension points just to make backcompat sane and avoid duplicating logic
    // TODO: Remove in 1.13 along with call to it below
    _addHoverClass: /* @__PURE__ */ __name(function() {
      this._addClass("ui-droppable-hover");
    }, "_addHoverClass"),
    _removeHoverClass: /* @__PURE__ */ __name(function() {
      this._removeClass("ui-droppable-hover");
    }, "_removeHoverClass"),
    _addActiveClass: /* @__PURE__ */ __name(function() {
      this._addClass("ui-droppable-active");
    }, "_addActiveClass"),
    _removeActiveClass: /* @__PURE__ */ __name(function() {
      this._removeClass("ui-droppable-active");
    }, "_removeActiveClass")
  });
  var intersect = $.ui.intersect = function() {
    function isOverAxis(x, reference, size) {
      return x >= reference && x < reference + size;
    }
    return __name(isOverAxis, "isOverAxis"), function(draggable, droppable, toleranceMode, event) {
      if (!droppable.offset)
        return !1;
      var x1 = (draggable.positionAbs || draggable.position.absolute).left + draggable.margins.left, y1 = (draggable.positionAbs || draggable.position.absolute).top + draggable.margins.top, x2 = x1 + draggable.helperProportions.width, y2 = y1 + draggable.helperProportions.height, l = droppable.offset.left, t = droppable.offset.top, r = l + droppable.proportions().width, b = t + droppable.proportions().height;
      switch (toleranceMode) {
        case "fit":
          return l <= x1 && x2 <= r && t <= y1 && y2 <= b;
        case "intersect":
          return l < x1 + draggable.helperProportions.width / 2 && // Right Half
          x2 - draggable.helperProportions.width / 2 < r && // Left Half
          t < y1 + draggable.helperProportions.height / 2 && // Bottom Half
          y2 - draggable.helperProportions.height / 2 < b;
        // Top Half
        case "pointer":
          return isOverAxis(event.pageY, t, droppable.proportions().height) && isOverAxis(event.pageX, l, droppable.proportions().width);
        case "touch":
          return (y1 >= t && y1 <= b || // Top edge touching
          y2 >= t && y2 <= b || // Bottom edge touching
          y1 < t && y2 > b) && (x1 >= l && x1 <= r || // Left edge touching
          x2 >= l && x2 <= r || // Right edge touching
          x1 < l && x2 > r);
        default:
          return !1;
      }
    };
  }();
  $.ui.ddmanager = {
    current: null,
    droppables: { default: [] },
    prepareOffsets: /* @__PURE__ */ __name(function(t, event) {
      var i, j, m = $.ui.ddmanager.droppables[t.options.scope] || [], type = event ? event.type : null, list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
      droppablesLoop: for (i = 0; i < m.length; i++)
        if (!(m[i].options.disabled || t && !m[i].accept.call(
          m[i].element[0],
          t.currentItem || t.element
        ))) {
          for (j = 0; j < list.length; j++)
            if (list[j] === m[i].element[0]) {
              m[i].proportions().height = 0;
              continue droppablesLoop;
            }
          m[i].visible = m[i].element.css("display") !== "none", m[i].visible && (type === "mousedown" && m[i]._activate.call(m[i], event), m[i].offset = m[i].element.offset(), m[i].proportions({
            width: m[i].element[0].offsetWidth,
            height: m[i].element[0].offsetHeight
          }));
        }
    }, "prepareOffsets"),
    drop: /* @__PURE__ */ __name(function(draggable, event) {
      var dropped = !1;
      return $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() {
        this.options && (!this.options.disabled && this.visible && intersect(draggable, this, this.options.tolerance, event) && (dropped = this._drop.call(this, event) || dropped), !this.options.disabled && this.visible && this.accept.call(
          this.element[0],
          draggable.currentItem || draggable.element
        ) && (this.isout = !0, this.isover = !1, this._deactivate.call(this, event)));
      }), dropped;
    }, "drop"),
    dragStart: /* @__PURE__ */ __name(function(draggable, event) {
      draggable.element.parentsUntil("body").on("scroll.droppable", function() {
        draggable.options.refreshPositions || $.ui.ddmanager.prepareOffsets(draggable, event);
      });
    }, "dragStart"),
    drag: /* @__PURE__ */ __name(function(draggable, event) {
      draggable.options.refreshPositions && $.ui.ddmanager.prepareOffsets(draggable, event), $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
        if (!(this.options.disabled || this.greedyChild || !this.visible)) {
          var parentInstance, scope, parent, intersects = intersect(draggable, this, this.options.tolerance, event), c = !intersects && this.isover ? "isout" : intersects && !this.isover ? "isover" : null;
          c && (this.options.greedy && (scope = this.options.scope, parent = this.element.parents(":data(ui-droppable)").filter(function() {
            return $(this).droppable("instance").options.scope === scope;
          }), parent.length && (parentInstance = $(parent[0]).droppable("instance"), parentInstance.greedyChild = c === "isover")), parentInstance && c === "isover" && (parentInstance.isover = !1, parentInstance.isout = !0, parentInstance._out.call(parentInstance, event)), this[c] = !0, this[c === "isout" ? "isover" : "isout"] = !1, this[c === "isover" ? "_over" : "_out"].call(this, event), parentInstance && c === "isout" && (parentInstance.isout = !1, parentInstance.isover = !0, parentInstance._over.call(parentInstance, event)));
        }
      });
    }, "drag"),
    dragStop: /* @__PURE__ */ __name(function(draggable, event) {
      draggable.element.parentsUntil("body").off("scroll.droppable"), draggable.options.refreshPositions || $.ui.ddmanager.prepareOffsets(draggable, event);
    }, "dragStop")
  }, $.uiBackCompat !== !1 && $.widget("ui.droppable", $.ui.droppable, {
    options: {
      hoverClass: !1,
      activeClass: !1
    },
    _addActiveClass: /* @__PURE__ */ __name(function() {
      this._super(), this.options.activeClass && this.element.addClass(this.options.activeClass);
    }, "_addActiveClass"),
    _removeActiveClass: /* @__PURE__ */ __name(function() {
      this._super(), this.options.activeClass && this.element.removeClass(this.options.activeClass);
    }, "_removeActiveClass"),
    _addHoverClass: /* @__PURE__ */ __name(function() {
      this._super(), this.options.hoverClass && this.element.addClass(this.options.hoverClass);
    }, "_addHoverClass"),
    _removeHoverClass: /* @__PURE__ */ __name(function() {
      this._super(), this.options.hoverClass && this.element.removeClass(this.options.hoverClass);
    }, "_removeHoverClass")
  }), $.ui.droppable;
  /*!
  * jQuery UI Progressbar 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.progressbar", {
    version: "1.12.1",
    options: {
      classes: {
        "ui-progressbar": "ui-corner-all",
        "ui-progressbar-value": "ui-corner-left",
        "ui-progressbar-complete": "ui-corner-right"
      },
      max: 100,
      value: 0,
      change: null,
      complete: null
    },
    min: 0,
    _create: /* @__PURE__ */ __name(function() {
      this.oldValue = this.options.value = this._constrainedValue(), this.element.attr({
        // Only set static values; aria-valuenow and aria-valuemax are
        // set inside _refreshValue()
        role: "progressbar",
        "aria-valuemin": this.min
      }), this._addClass("ui-progressbar", "ui-widget ui-widget-content"), this.valueDiv = $("<div>").appendTo(this.element), this._addClass(this.valueDiv, "ui-progressbar-value", "ui-widget-header"), this._refreshValue();
    }, "_create"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"), this.valueDiv.remove();
    }, "_destroy"),
    value: /* @__PURE__ */ __name(function(newValue) {
      if (newValue === void 0)
        return this.options.value;
      this.options.value = this._constrainedValue(newValue), this._refreshValue();
    }, "value"),
    _constrainedValue: /* @__PURE__ */ __name(function(newValue) {
      return newValue === void 0 && (newValue = this.options.value), this.indeterminate = newValue === !1, typeof newValue != "number" && (newValue = 0), this.indeterminate ? !1 : Math.min(this.options.max, Math.max(this.min, newValue));
    }, "_constrainedValue"),
    _setOptions: /* @__PURE__ */ __name(function(options) {
      var value = options.value;
      delete options.value, this._super(options), this.options.value = this._constrainedValue(value), this._refreshValue();
    }, "_setOptions"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      key === "max" && (value = Math.max(this.min, value)), this._super(key, value);
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this.element.attr("aria-disabled", value), this._toggleClass(null, "ui-state-disabled", !!value);
    }, "_setOptionDisabled"),
    _percentage: /* @__PURE__ */ __name(function() {
      return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min);
    }, "_percentage"),
    _refreshValue: /* @__PURE__ */ __name(function() {
      var value = this.options.value, percentage = this._percentage();
      this.valueDiv.toggle(this.indeterminate || value > this.min).width(percentage.toFixed(0) + "%"), this._toggleClass(
        this.valueDiv,
        "ui-progressbar-complete",
        null,
        value === this.options.max
      )._toggleClass("ui-progressbar-indeterminate", null, this.indeterminate), this.indeterminate ? (this.element.removeAttr("aria-valuenow"), this.overlayDiv || (this.overlayDiv = $("<div>").appendTo(this.valueDiv), this._addClass(this.overlayDiv, "ui-progressbar-overlay"))) : (this.element.attr({
        "aria-valuemax": this.options.max,
        "aria-valuenow": value
      }), this.overlayDiv && (this.overlayDiv.remove(), this.overlayDiv = null)), this.oldValue !== value && (this.oldValue = value, this._trigger("change")), value === this.options.max && this._trigger("complete");
    }, "_refreshValue")
  });
  /*!
  * jQuery UI Selectable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.selectable", $.ui.mouse, {
    version: "1.12.1",
    options: {
      appendTo: "body",
      autoRefresh: !0,
      distance: 0,
      filter: "*",
      tolerance: "touch",
      // Callbacks
      selected: null,
      selecting: null,
      start: null,
      stop: null,
      unselected: null,
      unselecting: null
    },
    _create: /* @__PURE__ */ __name(function() {
      var that = this;
      this._addClass("ui-selectable"), this.dragged = !1, this.refresh = function() {
        that.elementPos = $(that.element[0]).offset(), that.selectees = $(that.options.filter, that.element[0]), that._addClass(that.selectees, "ui-selectee"), that.selectees.each(function() {
          var $this = $(this), selecteeOffset = $this.offset(), pos = {
            left: selecteeOffset.left - that.elementPos.left,
            top: selecteeOffset.top - that.elementPos.top
          };
          $.data(this, "selectable-item", {
            element: this,
            $element: $this,
            left: pos.left,
            top: pos.top,
            right: pos.left + $this.outerWidth(),
            bottom: pos.top + $this.outerHeight(),
            startselected: !1,
            selected: $this.hasClass("ui-selected"),
            selecting: $this.hasClass("ui-selecting"),
            unselecting: $this.hasClass("ui-unselecting")
          });
        });
      }, this.refresh(), this._mouseInit(), this.helper = $("<div>"), this._addClass(this.helper, "ui-selectable-helper");
    }, "_create"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.selectees.removeData("selectable-item"), this._mouseDestroy();
    }, "_destroy"),
    _mouseStart: /* @__PURE__ */ __name(function(event) {
      var that = this, options = this.options;
      this.opos = [event.pageX, event.pageY], this.elementPos = $(this.element[0]).offset(), !this.options.disabled && (this.selectees = $(options.filter, this.element[0]), this._trigger("start", event), $(options.appendTo).append(this.helper), this.helper.css({
        left: event.pageX,
        top: event.pageY,
        width: 0,
        height: 0
      }), options.autoRefresh && this.refresh(), this.selectees.filter(".ui-selected").each(function() {
        var selectee = $.data(this, "selectable-item");
        selectee.startselected = !0, !event.metaKey && !event.ctrlKey && (that._removeClass(selectee.$element, "ui-selected"), selectee.selected = !1, that._addClass(selectee.$element, "ui-unselecting"), selectee.unselecting = !0, that._trigger("unselecting", event, {
          unselecting: selectee.element
        }));
      }), $(event.target).parents().addBack().each(function() {
        var doSelect, selectee = $.data(this, "selectable-item");
        if (selectee)
          return doSelect = !event.metaKey && !event.ctrlKey || !selectee.$element.hasClass("ui-selected"), that._removeClass(selectee.$element, doSelect ? "ui-unselecting" : "ui-selected")._addClass(selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting"), selectee.unselecting = !doSelect, selectee.selecting = doSelect, selectee.selected = doSelect, doSelect ? that._trigger("selecting", event, {
            selecting: selectee.element
          }) : that._trigger("unselecting", event, {
            unselecting: selectee.element
          }), !1;
      }));
    }, "_mouseStart"),
    _mouseDrag: /* @__PURE__ */ __name(function(event) {
      if (this.dragged = !0, !this.options.disabled) {
        var tmp, that = this, options = this.options, x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;
        return x1 > x2 && (tmp = x2, x2 = x1, x1 = tmp), y1 > y2 && (tmp = y2, y2 = y1, y1 = tmp), this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 }), this.selectees.each(function() {
          var selectee = $.data(this, "selectable-item"), hit = !1, offset = {};
          !selectee || selectee.element === that.element[0] || (offset.left = selectee.left + that.elementPos.left, offset.right = selectee.right + that.elementPos.left, offset.top = selectee.top + that.elementPos.top, offset.bottom = selectee.bottom + that.elementPos.top, options.tolerance === "touch" ? hit = !(offset.left > x2 || offset.right < x1 || offset.top > y2 || offset.bottom < y1) : options.tolerance === "fit" && (hit = offset.left > x1 && offset.right < x2 && offset.top > y1 && offset.bottom < y2), hit ? (selectee.selected && (that._removeClass(selectee.$element, "ui-selected"), selectee.selected = !1), selectee.unselecting && (that._removeClass(selectee.$element, "ui-unselecting"), selectee.unselecting = !1), selectee.selecting || (that._addClass(selectee.$element, "ui-selecting"), selectee.selecting = !0, that._trigger("selecting", event, {
            selecting: selectee.element
          }))) : (selectee.selecting && ((event.metaKey || event.ctrlKey) && selectee.startselected ? (that._removeClass(selectee.$element, "ui-selecting"), selectee.selecting = !1, that._addClass(selectee.$element, "ui-selected"), selectee.selected = !0) : (that._removeClass(selectee.$element, "ui-selecting"), selectee.selecting = !1, selectee.startselected && (that._addClass(selectee.$element, "ui-unselecting"), selectee.unselecting = !0), that._trigger("unselecting", event, {
            unselecting: selectee.element
          }))), selectee.selected && !event.metaKey && !event.ctrlKey && !selectee.startselected && (that._removeClass(selectee.$element, "ui-selected"), selectee.selected = !1, that._addClass(selectee.$element, "ui-unselecting"), selectee.unselecting = !0, that._trigger("unselecting", event, {
            unselecting: selectee.element
          }))));
        }), !1;
      }
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function(event) {
      var that = this;
      return this.dragged = !1, $(".ui-unselecting", this.element[0]).each(function() {
        var selectee = $.data(this, "selectable-item");
        that._removeClass(selectee.$element, "ui-unselecting"), selectee.unselecting = !1, selectee.startselected = !1, that._trigger("unselected", event, {
          unselected: selectee.element
        });
      }), $(".ui-selecting", this.element[0]).each(function() {
        var selectee = $.data(this, "selectable-item");
        that._removeClass(selectee.$element, "ui-selecting")._addClass(selectee.$element, "ui-selected"), selectee.selecting = !1, selectee.selected = !0, selectee.startselected = !0, that._trigger("selected", event, {
          selected: selectee.element
        });
      }), this._trigger("stop", event), this.helper.remove(), !1;
    }, "_mouseStop")
  });
  /*!
  * jQuery UI Selectmenu 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.selectmenu", [$.ui.formResetMixin, {
    version: "1.12.1",
    defaultElement: "<select>",
    options: {
      appendTo: null,
      classes: {
        "ui-selectmenu-button-open": "ui-corner-top",
        "ui-selectmenu-button-closed": "ui-corner-all"
      },
      disabled: null,
      icons: {
        button: "ui-icon-triangle-1-s"
      },
      position: {
        my: "left top",
        at: "left bottom",
        collision: "none"
      },
      width: !1,
      // Callbacks
      change: null,
      close: null,
      focus: null,
      open: null,
      select: null
    },
    _create: /* @__PURE__ */ __name(function() {
      var selectmenuId = this.element.uniqueId().attr("id");
      this.ids = {
        element: selectmenuId,
        button: selectmenuId + "-button",
        menu: selectmenuId + "-menu"
      }, this._drawButton(), this._drawMenu(), this._bindFormResetHandler(), this._rendered = !1, this.menuItems = $();
    }, "_create"),
    _drawButton: /* @__PURE__ */ __name(function() {
      var icon, that = this, item = this._parseOption(
        this.element.find("option:selected"),
        this.element[0].selectedIndex
      );
      this.labels = this.element.labels().attr("for", this.ids.button), this._on(this.labels, {
        click: /* @__PURE__ */ __name(function(event) {
          this.button.focus(), event.preventDefault();
        }, "click")
      }), this.element.hide(), this.button = $("<span>", {
        tabindex: this.options.disabled ? -1 : 0,
        id: this.ids.button,
        role: "combobox",
        "aria-expanded": "false",
        "aria-autocomplete": "list",
        "aria-owns": this.ids.menu,
        "aria-haspopup": "true",
        title: this.element.attr("title")
      }).insertAfter(this.element), this._addClass(
        this.button,
        "ui-selectmenu-button ui-selectmenu-button-closed",
        "ui-button ui-widget"
      ), icon = $("<span>").appendTo(this.button), this._addClass(icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button), this.buttonItem = this._renderButtonItem(item).appendTo(this.button), this.options.width !== !1 && this._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one("focusin", function() {
        that._rendered || that._refreshMenu();
      });
    }, "_drawButton"),
    _drawMenu: /* @__PURE__ */ __name(function() {
      var that = this;
      this.menu = $("<ul>", {
        "aria-hidden": "true",
        "aria-labelledby": this.ids.button,
        id: this.ids.menu
      }), this.menuWrap = $("<div>").append(this.menu), this._addClass(this.menuWrap, "ui-selectmenu-menu", "ui-front"), this.menuWrap.appendTo(this._appendTo()), this.menuInstance = this.menu.menu({
        classes: {
          "ui-menu": "ui-corner-bottom"
        },
        role: "listbox",
        select: /* @__PURE__ */ __name(function(event, ui) {
          event.preventDefault(), that._setSelection(), that._select(ui.item.data("ui-selectmenu-item"), event);
        }, "select"),
        focus: /* @__PURE__ */ __name(function(event, ui) {
          var item = ui.item.data("ui-selectmenu-item");
          that.focusIndex != null && item.index !== that.focusIndex && (that._trigger("focus", event, { item }), that.isOpen || that._select(item, event)), that.focusIndex = item.index, that.button.attr(
            "aria-activedescendant",
            that.menuItems.eq(item.index).attr("id")
          );
        }, "focus")
      }).menu("instance"), this.menuInstance._off(this.menu, "mouseleave"), this.menuInstance._closeOnDocumentClick = function() {
        return !1;
      }, this.menuInstance._isDivider = function() {
        return !1;
      };
    }, "_drawMenu"),
    refresh: /* @__PURE__ */ __name(function() {
      this._refreshMenu(), this.buttonItem.replaceWith(
        this.buttonItem = this._renderButtonItem(
          // Fall back to an empty object in case there are no options
          this._getSelectedItem().data("ui-selectmenu-item") || {}
        )
      ), this.options.width === null && this._resizeButton();
    }, "refresh"),
    _refreshMenu: /* @__PURE__ */ __name(function() {
      var item, options = this.element.find("option");
      this.menu.empty(), this._parseOptions(options), this._renderMenu(this.menu, this.items), this.menuInstance.refresh(), this.menuItems = this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"), this._rendered = !0, options.length && (item = this._getSelectedItem(), this.menuInstance.focus(null, item), this._setAria(item.data("ui-selectmenu-item")), this._setOption("disabled", this.element.prop("disabled")));
    }, "_refreshMenu"),
    open: /* @__PURE__ */ __name(function(event) {
      this.options.disabled || (this._rendered ? (this._removeClass(this.menu.find(".ui-state-active"), null, "ui-state-active"), this.menuInstance.focus(null, this._getSelectedItem())) : this._refreshMenu(), this.menuItems.length && (this.isOpen = !0, this._toggleAttr(), this._resizeMenu(), this._position(), this._on(this.document, this._documentClick), this._trigger("open", event)));
    }, "open"),
    _position: /* @__PURE__ */ __name(function() {
      this.menuWrap.position($.extend({ of: this.button }, this.options.position));
    }, "_position"),
    close: /* @__PURE__ */ __name(function(event) {
      this.isOpen && (this.isOpen = !1, this._toggleAttr(), this.range = null, this._off(this.document), this._trigger("close", event));
    }, "close"),
    widget: /* @__PURE__ */ __name(function() {
      return this.button;
    }, "widget"),
    menuWidget: /* @__PURE__ */ __name(function() {
      return this.menu;
    }, "menuWidget"),
    _renderButtonItem: /* @__PURE__ */ __name(function(item) {
      var buttonItem = $("<span>");
      return this._setText(buttonItem, item.label), this._addClass(buttonItem, "ui-selectmenu-text"), buttonItem;
    }, "_renderButtonItem"),
    _renderMenu: /* @__PURE__ */ __name(function(ul, items) {
      var that = this, currentOptgroup = "";
      $.each(items, function(index, item) {
        var li;
        item.optgroup !== currentOptgroup && (li = $("<li>", {
          text: item.optgroup
        }), that._addClass(li, "ui-selectmenu-optgroup", "ui-menu-divider" + (item.element.parent("optgroup").prop("disabled") ? " ui-state-disabled" : "")), li.appendTo(ul), currentOptgroup = item.optgroup), that._renderItemData(ul, item);
      });
    }, "_renderMenu"),
    _renderItemData: /* @__PURE__ */ __name(function(ul, item) {
      return this._renderItem(ul, item).data("ui-selectmenu-item", item);
    }, "_renderItemData"),
    _renderItem: /* @__PURE__ */ __name(function(ul, item) {
      var li = $("<li>"), wrapper = $("<div>", {
        title: item.element.attr("title")
      });
      return item.disabled && this._addClass(li, null, "ui-state-disabled"), this._setText(wrapper, item.label), li.append(wrapper).appendTo(ul);
    }, "_renderItem"),
    _setText: /* @__PURE__ */ __name(function(element, value) {
      value ? element.text(value) : element.html("&#160;");
    }, "_setText"),
    _move: /* @__PURE__ */ __name(function(direction, event) {
      var item, next, filter = ".ui-menu-item";
      this.isOpen ? item = this.menuItems.eq(this.focusIndex).parent("li") : (item = this.menuItems.eq(this.element[0].selectedIndex).parent("li"), filter += ":not(.ui-state-disabled)"), direction === "first" || direction === "last" ? next = item[direction === "first" ? "prevAll" : "nextAll"](filter).eq(-1) : next = item[direction + "All"](filter).eq(0), next.length && this.menuInstance.focus(event, next);
    }, "_move"),
    _getSelectedItem: /* @__PURE__ */ __name(function() {
      return this.menuItems.eq(this.element[0].selectedIndex).parent("li");
    }, "_getSelectedItem"),
    _toggle: /* @__PURE__ */ __name(function(event) {
      this[this.isOpen ? "close" : "open"](event);
    }, "_toggle"),
    _setSelection: /* @__PURE__ */ __name(function() {
      var selection;
      this.range && (window.getSelection ? (selection = window.getSelection(), selection.removeAllRanges(), selection.addRange(this.range)) : this.range.select(), this.button.focus());
    }, "_setSelection"),
    _documentClick: {
      mousedown: /* @__PURE__ */ __name(function(event) {
        this.isOpen && ($(event.target).closest(".ui-selectmenu-menu, #" + $.ui.escapeSelector(this.ids.button)).length || this.close(event));
      }, "mousedown")
    },
    _buttonEvents: {
      // Prevent text selection from being reset when interacting with the selectmenu (#10144)
      mousedown: /* @__PURE__ */ __name(function() {
        var selection;
        window.getSelection ? (selection = window.getSelection(), selection.rangeCount && (this.range = selection.getRangeAt(0))) : this.range = document.selection.createRange();
      }, "mousedown"),
      click: /* @__PURE__ */ __name(function(event) {
        this._setSelection(), this._toggle(event);
      }, "click"),
      keydown: /* @__PURE__ */ __name(function(event) {
        var preventDefault = !0;
        switch (event.keyCode) {
          case $.ui.keyCode.TAB:
          case $.ui.keyCode.ESCAPE:
            this.close(event), preventDefault = !1;
            break;
          case $.ui.keyCode.ENTER:
            this.isOpen && this._selectFocusedItem(event);
            break;
          case $.ui.keyCode.UP:
            event.altKey ? this._toggle(event) : this._move("prev", event);
            break;
          case $.ui.keyCode.DOWN:
            event.altKey ? this._toggle(event) : this._move("next", event);
            break;
          case $.ui.keyCode.SPACE:
            this.isOpen ? this._selectFocusedItem(event) : this._toggle(event);
            break;
          case $.ui.keyCode.LEFT:
            this._move("prev", event);
            break;
          case $.ui.keyCode.RIGHT:
            this._move("next", event);
            break;
          case $.ui.keyCode.HOME:
          case $.ui.keyCode.PAGE_UP:
            this._move("first", event);
            break;
          case $.ui.keyCode.END:
          case $.ui.keyCode.PAGE_DOWN:
            this._move("last", event);
            break;
          default:
            this.menu.trigger(event), preventDefault = !1;
        }
        preventDefault && event.preventDefault();
      }, "keydown")
    },
    _selectFocusedItem: /* @__PURE__ */ __name(function(event) {
      var item = this.menuItems.eq(this.focusIndex).parent("li");
      item.hasClass("ui-state-disabled") || this._select(item.data("ui-selectmenu-item"), event);
    }, "_selectFocusedItem"),
    _select: /* @__PURE__ */ __name(function(item, event) {
      var oldIndex = this.element[0].selectedIndex;
      this.element[0].selectedIndex = item.index, this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(item)), this._setAria(item), this._trigger("select", event, { item }), item.index !== oldIndex && this._trigger("change", event, { item }), this.close(event);
    }, "_select"),
    _setAria: /* @__PURE__ */ __name(function(item) {
      var id = this.menuItems.eq(item.index).attr("id");
      this.button.attr({
        "aria-labelledby": id,
        "aria-activedescendant": id
      }), this.menu.attr("aria-activedescendant", id);
    }, "_setAria"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "icons") {
        var icon = this.button.find("span.ui-icon");
        this._removeClass(icon, null, this.options.icons.button)._addClass(icon, null, value.button);
      }
      this._super(key, value), key === "appendTo" && this.menuWrap.appendTo(this._appendTo()), key === "width" && this._resizeButton();
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this.menuInstance.option("disabled", value), this.button.attr("aria-disabled", value), this._toggleClass(this.button, null, "ui-state-disabled", value), this.element.prop("disabled", value), value ? (this.button.attr("tabindex", -1), this.close()) : this.button.attr("tabindex", 0);
    }, "_setOptionDisabled"),
    _appendTo: /* @__PURE__ */ __name(function() {
      var element = this.options.appendTo;
      return element && (element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0)), (!element || !element[0]) && (element = this.element.closest(".ui-front, dialog")), element.length || (element = this.document[0].body), element;
    }, "_appendTo"),
    _toggleAttr: /* @__PURE__ */ __name(function() {
      this.button.attr("aria-expanded", this.isOpen), this._removeClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "closed" : "open"))._addClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "open" : "closed"))._toggleClass(this.menuWrap, "ui-selectmenu-open", null, this.isOpen), this.menu.attr("aria-hidden", !this.isOpen);
    }, "_toggleAttr"),
    _resizeButton: /* @__PURE__ */ __name(function() {
      var width = this.options.width;
      if (width === !1) {
        this.button.css("width", "");
        return;
      }
      width === null && (width = this.element.show().outerWidth(), this.element.hide()), this.button.outerWidth(width);
    }, "_resizeButton"),
    _resizeMenu: /* @__PURE__ */ __name(function() {
      this.menu.outerWidth(Math.max(
        this.button.outerWidth(),
        // Support: IE10
        // IE10 wraps long text (possibly a rounding bug)
        // so we add 1px to avoid the wrapping
        this.menu.width("").outerWidth() + 1
      ));
    }, "_resizeMenu"),
    _getCreateOptions: /* @__PURE__ */ __name(function() {
      var options = this._super();
      return options.disabled = this.element.prop("disabled"), options;
    }, "_getCreateOptions"),
    _parseOptions: /* @__PURE__ */ __name(function(options) {
      var that = this, data = [];
      options.each(function(index, item) {
        data.push(that._parseOption($(item), index));
      }), this.items = data;
    }, "_parseOptions"),
    _parseOption: /* @__PURE__ */ __name(function(option, index) {
      var optgroup = option.parent("optgroup");
      return {
        element: option,
        index,
        value: option.val(),
        label: option.text(),
        optgroup: optgroup.attr("label") || "",
        disabled: optgroup.prop("disabled") || option.prop("disabled")
      };
    }, "_parseOption"),
    _destroy: /* @__PURE__ */ __name(function() {
      this._unbindFormResetHandler(), this.menuWrap.remove(), this.button.remove(), this.element.show(), this.element.removeUniqueId(), this.labels.attr("for", this.ids.element);
    }, "_destroy")
  }]);
  /*!
  * jQuery UI Slider 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.slider", $.ui.mouse, {
    version: "1.12.1",
    widgetEventPrefix: "slide",
    options: {
      animate: !1,
      classes: {
        "ui-slider": "ui-corner-all",
        "ui-slider-handle": "ui-corner-all",
        // Note: ui-widget-header isn't the most fittingly semantic framework class for this
        // element, but worked best visually with a variety of themes
        "ui-slider-range": "ui-corner-all ui-widget-header"
      },
      distance: 0,
      max: 100,
      min: 0,
      orientation: "horizontal",
      range: !1,
      step: 1,
      value: 0,
      values: null,
      // Callbacks
      change: null,
      slide: null,
      start: null,
      stop: null
    },
    // Number of pages in a slider
    // (how many times can you page up/down to go through the whole range)
    numPages: 5,
    _create: /* @__PURE__ */ __name(function() {
      this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this._handleIndex = null, this._detectOrientation(), this._mouseInit(), this._calculateNewMax(), this._addClass(
        "ui-slider ui-slider-" + this.orientation,
        "ui-widget ui-widget-content"
      ), this._refresh(), this._animateOff = !1;
    }, "_create"),
    _refresh: /* @__PURE__ */ __name(function() {
      this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue();
    }, "_refresh"),
    _createHandles: /* @__PURE__ */ __name(function() {
      var i, handleCount, options = this.options, existingHandles = this.element.find(".ui-slider-handle"), handle = "<span tabindex='0'></span>", handles = [];
      for (handleCount = options.values && options.values.length || 1, existingHandles.length > handleCount && (existingHandles.slice(handleCount).remove(), existingHandles = existingHandles.slice(0, handleCount)), i = existingHandles.length; i < handleCount; i++)
        handles.push(handle);
      this.handles = existingHandles.add($(handles.join("")).appendTo(this.element)), this._addClass(this.handles, "ui-slider-handle", "ui-state-default"), this.handle = this.handles.eq(0), this.handles.each(function(i2) {
        $(this).data("ui-slider-handle-index", i2).attr("tabIndex", 0);
      });
    }, "_createHandles"),
    _createRange: /* @__PURE__ */ __name(function() {
      var options = this.options;
      options.range ? (options.range === !0 && (options.values ? options.values.length && options.values.length !== 2 ? options.values = [options.values[0], options.values[0]] : $.isArray(options.values) && (options.values = options.values.slice(0)) : options.values = [this._valueMin(), this._valueMin()]), !this.range || !this.range.length ? (this.range = $("<div>").appendTo(this.element), this._addClass(this.range, "ui-slider-range")) : (this._removeClass(this.range, "ui-slider-range-min ui-slider-range-max"), this.range.css({
        left: "",
        bottom: ""
      })), (options.range === "min" || options.range === "max") && this._addClass(this.range, "ui-slider-range-" + options.range)) : (this.range && this.range.remove(), this.range = null);
    }, "_createRange"),
    _setupEvents: /* @__PURE__ */ __name(function() {
      this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(this.handles), this._focusable(this.handles);
    }, "_setupEvents"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.handles.remove(), this.range && this.range.remove(), this._mouseDestroy();
    }, "_destroy"),
    _mouseCapture: /* @__PURE__ */ __name(function(event) {
      var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this, o = this.options;
      return o.disabled || (this.elementSize = {
        width: this.element.outerWidth(),
        height: this.element.outerHeight()
      }, this.elementOffset = this.element.offset(), position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse(position), distance = this._valueMax() - this._valueMin() + 1, this.handles.each(function(i) {
        var thisDistance = Math.abs(normValue - that.values(i));
        (distance > thisDistance || distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min)) && (distance = thisDistance, closestHandle = $(this), index = i);
      }), allowed = this._start(event, index), allowed === !1) ? !1 : (this._mouseSliding = !0, this._handleIndex = index, this._addClass(closestHandle, null, "ui-state-active"), closestHandle.trigger("focus"), offset = closestHandle.offset(), mouseOverHandle = !$(event.target).parents().addBack().is(".ui-slider-handle"), this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
        left: event.pageX - offset.left - closestHandle.width() / 2,
        top: event.pageY - offset.top - closestHandle.height() / 2 - (parseInt(closestHandle.css("borderTopWidth"), 10) || 0) - (parseInt(closestHandle.css("borderBottomWidth"), 10) || 0) + (parseInt(closestHandle.css("marginTop"), 10) || 0)
      }, this.handles.hasClass("ui-state-hover") || this._slide(event, index, normValue), this._animateOff = !0, !0);
    }, "_mouseCapture"),
    _mouseStart: /* @__PURE__ */ __name(function() {
      return !0;
    }, "_mouseStart"),
    _mouseDrag: /* @__PURE__ */ __name(function(event) {
      var position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse(position);
      return this._slide(event, this._handleIndex, normValue), !1;
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function(event) {
      return this._removeClass(this.handles, null, "ui-state-active"), this._mouseSliding = !1, this._stop(event, this._handleIndex), this._change(event, this._handleIndex), this._handleIndex = null, this._clickOffset = null, this._animateOff = !1, !1;
    }, "_mouseStop"),
    _detectOrientation: /* @__PURE__ */ __name(function() {
      this.orientation = this.options.orientation === "vertical" ? "vertical" : "horizontal";
    }, "_detectOrientation"),
    _normValueFromMouse: /* @__PURE__ */ __name(function(position) {
      var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse;
      return this.orientation === "horizontal" ? (pixelTotal = this.elementSize.width, pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (pixelTotal = this.elementSize.height, pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)), percentMouse = pixelMouse / pixelTotal, percentMouse > 1 && (percentMouse = 1), percentMouse < 0 && (percentMouse = 0), this.orientation === "vertical" && (percentMouse = 1 - percentMouse), valueTotal = this._valueMax() - this._valueMin(), valueMouse = this._valueMin() + percentMouse * valueTotal, this._trimAlignValue(valueMouse);
    }, "_normValueFromMouse"),
    _uiHash: /* @__PURE__ */ __name(function(index, value, values) {
      var uiHash = {
        handle: this.handles[index],
        handleIndex: index,
        value: value !== void 0 ? value : this.value()
      };
      return this._hasMultipleValues() && (uiHash.value = value !== void 0 ? value : this.values(index), uiHash.values = values || this.values()), uiHash;
    }, "_uiHash"),
    _hasMultipleValues: /* @__PURE__ */ __name(function() {
      return this.options.values && this.options.values.length;
    }, "_hasMultipleValues"),
    _start: /* @__PURE__ */ __name(function(event, index) {
      return this._trigger("start", event, this._uiHash(index));
    }, "_start"),
    _slide: /* @__PURE__ */ __name(function(event, index, newVal) {
      var allowed, otherVal, currentValue = this.value(), newValues = this.values();
      this._hasMultipleValues() && (otherVal = this.values(index ? 0 : 1), currentValue = this.values(index), this.options.values.length === 2 && this.options.range === !0 && (newVal = index === 0 ? Math.min(otherVal, newVal) : Math.max(otherVal, newVal)), newValues[index] = newVal), newVal !== currentValue && (allowed = this._trigger("slide", event, this._uiHash(index, newVal, newValues)), allowed !== !1 && (this._hasMultipleValues() ? this.values(index, newVal) : this.value(newVal)));
    }, "_slide"),
    _stop: /* @__PURE__ */ __name(function(event, index) {
      this._trigger("stop", event, this._uiHash(index));
    }, "_stop"),
    _change: /* @__PURE__ */ __name(function(event, index) {
      !this._keySliding && !this._mouseSliding && (this._lastChangedValue = index, this._trigger("change", event, this._uiHash(index)));
    }, "_change"),
    value: /* @__PURE__ */ __name(function(newValue) {
      if (arguments.length) {
        this.options.value = this._trimAlignValue(newValue), this._refreshValue(), this._change(null, 0);
        return;
      }
      return this._value();
    }, "value"),
    values: /* @__PURE__ */ __name(function(index, newValue) {
      var vals, newValues, i;
      if (arguments.length > 1) {
        this.options.values[index] = this._trimAlignValue(newValue), this._refreshValue(), this._change(null, index);
        return;
      }
      if (arguments.length)
        if ($.isArray(arguments[0])) {
          for (vals = this.options.values, newValues = arguments[0], i = 0; i < vals.length; i += 1)
            vals[i] = this._trimAlignValue(newValues[i]), this._change(null, i);
          this._refreshValue();
        } else
          return this._hasMultipleValues() ? this._values(index) : this.value();
      else
        return this._values();
    }, "values"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      var i, valsLength = 0;
      switch (key === "range" && this.options.range === !0 && (value === "min" ? (this.options.value = this._values(0), this.options.values = null) : value === "max" && (this.options.value = this._values(this.options.values.length - 1), this.options.values = null)), $.isArray(this.options.values) && (valsLength = this.options.values.length), this._super(key, value), key) {
        case "orientation":
          this._detectOrientation(), this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-" + this.orientation), this._refreshValue(), this.options.range && this._refreshRange(value), this.handles.css(value === "horizontal" ? "bottom" : "left", "");
          break;
        case "value":
          this._animateOff = !0, this._refreshValue(), this._change(null, 0), this._animateOff = !1;
          break;
        case "values":
          for (this._animateOff = !0, this._refreshValue(), i = valsLength - 1; i >= 0; i--)
            this._change(null, i);
          this._animateOff = !1;
          break;
        case "step":
        case "min":
        case "max":
          this._animateOff = !0, this._calculateNewMax(), this._refreshValue(), this._animateOff = !1;
          break;
        case "range":
          this._animateOff = !0, this._refresh(), this._animateOff = !1;
          break;
      }
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this._toggleClass(null, "ui-state-disabled", !!value);
    }, "_setOptionDisabled"),
    //internal value getter
    // _value() returns value trimmed by min and max, aligned by step
    _value: /* @__PURE__ */ __name(function() {
      var val = this.options.value;
      return val = this._trimAlignValue(val), val;
    }, "_value"),
    //internal values getter
    // _values() returns array of values trimmed by min and max, aligned by step
    // _values( index ) returns single value trimmed by min and max, aligned by step
    _values: /* @__PURE__ */ __name(function(index) {
      var val, vals, i;
      if (arguments.length)
        return val = this.options.values[index], val = this._trimAlignValue(val), val;
      if (this._hasMultipleValues()) {
        for (vals = this.options.values.slice(), i = 0; i < vals.length; i += 1)
          vals[i] = this._trimAlignValue(vals[i]);
        return vals;
      } else
        return [];
    }, "_values"),
    // Returns the step-aligned value that val is closest to, between (inclusive) min and max
    _trimAlignValue: /* @__PURE__ */ __name(function(val) {
      if (val <= this._valueMin())
        return this._valueMin();
      if (val >= this._valueMax())
        return this._valueMax();
      var step = this.options.step > 0 ? this.options.step : 1, valModStep = (val - this._valueMin()) % step, alignValue = val - valModStep;
      return Math.abs(valModStep) * 2 >= step && (alignValue += valModStep > 0 ? step : -step), parseFloat(alignValue.toFixed(5));
    }, "_trimAlignValue"),
    _calculateNewMax: /* @__PURE__ */ __name(function() {
      var max = this.options.max, min = this._valueMin(), step = this.options.step, aboveMin = Math.round((max - min) / step) * step;
      max = aboveMin + min, max > this.options.max && (max -= step), this.max = parseFloat(max.toFixed(this._precision()));
    }, "_calculateNewMax"),
    _precision: /* @__PURE__ */ __name(function() {
      var precision = this._precisionOf(this.options.step);
      return this.options.min !== null && (precision = Math.max(precision, this._precisionOf(this.options.min))), precision;
    }, "_precision"),
    _precisionOf: /* @__PURE__ */ __name(function(num) {
      var str = num.toString(), decimal = str.indexOf(".");
      return decimal === -1 ? 0 : str.length - decimal - 1;
    }, "_precisionOf"),
    _valueMin: /* @__PURE__ */ __name(function() {
      return this.options.min;
    }, "_valueMin"),
    _valueMax: /* @__PURE__ */ __name(function() {
      return this.max;
    }, "_valueMax"),
    _refreshRange: /* @__PURE__ */ __name(function(orientation) {
      orientation === "vertical" && this.range.css({ width: "", left: "" }), orientation === "horizontal" && this.range.css({ height: "", bottom: "" });
    }, "_refreshRange"),
    _refreshValue: /* @__PURE__ */ __name(function() {
      var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range, o = this.options, that = this, animate = this._animateOff ? !1 : o.animate, _set = {};
      this._hasMultipleValues() ? this.handles.each(function(i) {
        valPercent = (that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin()) * 100, _set[that.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%", $(this).stop(1, 1)[animate ? "animate" : "css"](_set, o.animate), that.options.range === !0 && (that.orientation === "horizontal" ? (i === 0 && that.range.stop(1, 1)[animate ? "animate" : "css"]({
          left: valPercent + "%"
        }, o.animate), i === 1 && that.range[animate ? "animate" : "css"]({
          width: valPercent - lastValPercent + "%"
        }, {
          queue: !1,
          duration: o.animate
        })) : (i === 0 && that.range.stop(1, 1)[animate ? "animate" : "css"]({
          bottom: valPercent + "%"
        }, o.animate), i === 1 && that.range[animate ? "animate" : "css"]({
          height: valPercent - lastValPercent + "%"
        }, {
          queue: !1,
          duration: o.animate
        }))), lastValPercent = valPercent;
      }) : (value = this.value(), valueMin = this._valueMin(), valueMax = this._valueMax(), valPercent = valueMax !== valueMin ? (value - valueMin) / (valueMax - valueMin) * 100 : 0, _set[this.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%", this.handle.stop(1, 1)[animate ? "animate" : "css"](_set, o.animate), oRange === "min" && this.orientation === "horizontal" && this.range.stop(1, 1)[animate ? "animate" : "css"]({
        width: valPercent + "%"
      }, o.animate), oRange === "max" && this.orientation === "horizontal" && this.range.stop(1, 1)[animate ? "animate" : "css"]({
        width: 100 - valPercent + "%"
      }, o.animate), oRange === "min" && this.orientation === "vertical" && this.range.stop(1, 1)[animate ? "animate" : "css"]({
        height: valPercent + "%"
      }, o.animate), oRange === "max" && this.orientation === "vertical" && this.range.stop(1, 1)[animate ? "animate" : "css"]({
        height: 100 - valPercent + "%"
      }, o.animate));
    }, "_refreshValue"),
    _handleEvents: {
      keydown: /* @__PURE__ */ __name(function(event) {
        var allowed, curVal, newVal, step, index = $(event.target).data("ui-slider-handle-index");
        switch (event.keyCode) {
          case $.ui.keyCode.HOME:
          case $.ui.keyCode.END:
          case $.ui.keyCode.PAGE_UP:
          case $.ui.keyCode.PAGE_DOWN:
          case $.ui.keyCode.UP:
          case $.ui.keyCode.RIGHT:
          case $.ui.keyCode.DOWN:
          case $.ui.keyCode.LEFT:
            if (event.preventDefault(), !this._keySliding && (this._keySliding = !0, this._addClass($(event.target), null, "ui-state-active"), allowed = this._start(event, index), allowed === !1))
              return;
            break;
        }
        switch (step = this.options.step, this._hasMultipleValues() ? curVal = newVal = this.values(index) : curVal = newVal = this.value(), event.keyCode) {
          case $.ui.keyCode.HOME:
            newVal = this._valueMin();
            break;
          case $.ui.keyCode.END:
            newVal = this._valueMax();
            break;
          case $.ui.keyCode.PAGE_UP:
            newVal = this._trimAlignValue(
              curVal + (this._valueMax() - this._valueMin()) / this.numPages
            );
            break;
          case $.ui.keyCode.PAGE_DOWN:
            newVal = this._trimAlignValue(
              curVal - (this._valueMax() - this._valueMin()) / this.numPages
            );
            break;
          case $.ui.keyCode.UP:
          case $.ui.keyCode.RIGHT:
            if (curVal === this._valueMax())
              return;
            newVal = this._trimAlignValue(curVal + step);
            break;
          case $.ui.keyCode.DOWN:
          case $.ui.keyCode.LEFT:
            if (curVal === this._valueMin())
              return;
            newVal = this._trimAlignValue(curVal - step);
            break;
        }
        this._slide(event, index, newVal);
      }, "keydown"),
      keyup: /* @__PURE__ */ __name(function(event) {
        var index = $(event.target).data("ui-slider-handle-index");
        this._keySliding && (this._keySliding = !1, this._stop(event, index), this._change(event, index), this._removeClass($(event.target), null, "ui-state-active"));
      }, "keyup")
    }
  });
  /*!
  * jQuery UI Sortable 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.sortable", $.ui.mouse, {
    version: "1.12.1",
    widgetEventPrefix: "sort",
    ready: !1,
    options: {
      appendTo: "parent",
      axis: !1,
      connectWith: !1,
      containment: !1,
      cursor: "auto",
      cursorAt: !1,
      dropOnEmpty: !0,
      forcePlaceholderSize: !1,
      forceHelperSize: !1,
      grid: !1,
      handle: !1,
      helper: "original",
      items: "> *",
      opacity: !1,
      placeholder: !1,
      revert: !1,
      scroll: !0,
      scrollSensitivity: 20,
      scrollSpeed: 20,
      scope: "default",
      tolerance: "intersect",
      zIndex: 1e3,
      // Callbacks
      activate: null,
      beforeStop: null,
      change: null,
      deactivate: null,
      out: null,
      over: null,
      receive: null,
      remove: null,
      sort: null,
      start: null,
      stop: null,
      update: null
    },
    _isOverAxis: /* @__PURE__ */ __name(function(x, reference, size) {
      return x >= reference && x < reference + size;
    }, "_isOverAxis"),
    _isFloating: /* @__PURE__ */ __name(function(item) {
      return /left|right/.test(item.css("float")) || /inline|table-cell/.test(item.css("display"));
    }, "_isFloating"),
    _create: /* @__PURE__ */ __name(function() {
      this.containerCache = {}, this._addClass("ui-sortable"), this.refresh(), this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0;
    }, "_create"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      this._super(key, value), key === "handle" && this._setHandleClassName();
    }, "_setOption"),
    _setHandleClassName: /* @__PURE__ */ __name(function() {
      var that = this;
      this._removeClass(this.element.find(".ui-sortable-handle"), "ui-sortable-handle"), $.each(this.items, function() {
        that._addClass(
          this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item,
          "ui-sortable-handle"
        );
      });
    }, "_setHandleClassName"),
    _destroy: /* @__PURE__ */ __name(function() {
      this._mouseDestroy();
      for (var i = this.items.length - 1; i >= 0; i--)
        this.items[i].item.removeData(this.widgetName + "-item");
      return this;
    }, "_destroy"),
    _mouseCapture: /* @__PURE__ */ __name(function(event, overrideHandle) {
      var currentItem = null, validHandle = !1, that = this;
      return this.reverting || this.options.disabled || this.options.type === "static" || (this._refreshItems(event), $(event.target).parents().each(function() {
        if ($.data(this, that.widgetName + "-item") === that)
          return currentItem = $(this), !1;
      }), $.data(event.target, that.widgetName + "-item") === that && (currentItem = $(event.target)), !currentItem) || this.options.handle && !overrideHandle && ($(this.options.handle, currentItem).find("*").addBack().each(function() {
        this === event.target && (validHandle = !0);
      }), !validHandle) ? !1 : (this.currentItem = currentItem, this._removeCurrentsFromItems(), !0);
    }, "_mouseCapture"),
    _mouseStart: /* @__PURE__ */ __name(function(event, overrideHandle, noActivation) {
      var i, body, o = this.options;
      if (this.currentContainer = this, this.refreshPositions(), this.helper = this._createHelper(event), this._cacheHelperProportions(), this._cacheMargins(), this.scrollParent = this.helper.scrollParent(), this.offset = this.currentItem.offset(), this.offset = {
        top: this.offset.top - this.margins.top,
        left: this.offset.left - this.margins.left
      }, $.extend(this.offset, {
        click: {
          //Where the click happened, relative to the element
          left: event.pageX - this.offset.left,
          top: event.pageY - this.offset.top
        },
        parent: this._getParentOffset(),
        // This is a relative to absolute position minus the actual position calculation -
        // only used for relative positioned helper
        relative: this._getRelativeOffset()
      }), this.helper.css("position", "absolute"), this.cssPosition = this.helper.css("position"), this.originalPosition = this._generatePosition(event), this.originalPageX = event.pageX, this.originalPageY = event.pageY, o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt), this.domPosition = {
        prev: this.currentItem.prev()[0],
        parent: this.currentItem.parent()[0]
      }, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), o.containment && this._setContainment(), o.cursor && o.cursor !== "auto" && (body = this.document.find("body"), this.storedCursor = body.css("cursor"), body.css("cursor", o.cursor), this.storedStylesheet = $("<style>*{ cursor: " + o.cursor + " !important; }</style>").appendTo(body)), o.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", o.opacity)), o.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", o.zIndex)), this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML" && (this.overflowOffset = this.scrollParent.offset()), this._trigger("start", event, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !noActivation)
        for (i = this.containers.length - 1; i >= 0; i--)
          this.containers[i]._trigger("activate", event, this._uiHash(this));
      return $.ui.ddmanager && ($.ui.ddmanager.current = this), $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event), this.dragging = !0, this._addClass(this.helper, "ui-sortable-helper"), this._mouseDrag(event), !0;
    }, "_mouseStart"),
    _mouseDrag: /* @__PURE__ */ __name(function(event) {
      var i, item, itemElement, intersection, o = this.options, scrolled = !1;
      for (this.position = this._generatePosition(event), this.positionAbs = this._convertPositionTo("absolute"), this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs), this.options.scroll && (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML" ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - event.pageY < o.scrollSensitivity ? this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed : event.pageY - this.overflowOffset.top < o.scrollSensitivity && (this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - event.pageX < o.scrollSensitivity ? this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed : event.pageX - this.overflowOffset.left < o.scrollSensitivity && (this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed)) : (event.pageY - this.document.scrollTop() < o.scrollSensitivity ? scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed) : this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity && (scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed)), event.pageX - this.document.scrollLeft() < o.scrollSensitivity ? scrolled = this.document.scrollLeft(
        this.document.scrollLeft() - o.scrollSpeed
      ) : this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity && (scrolled = this.document.scrollLeft(
        this.document.scrollLeft() + o.scrollSpeed
      ))), scrolled !== !1 && $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event)), this.positionAbs = this._convertPositionTo("absolute"), (!this.options.axis || this.options.axis !== "y") && (this.helper[0].style.left = this.position.left + "px"), (!this.options.axis || this.options.axis !== "x") && (this.helper[0].style.top = this.position.top + "px"), i = this.items.length - 1; i >= 0; i--)
        if (item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item), !!intersection && item.instance === this.currentContainer && itemElement !== this.currentItem[0] && this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type !== "semi-dynamic" || !$.contains(this.element[0], itemElement))) {
          if (this.direction = intersection === 1 ? "down" : "up", this.options.tolerance === "pointer" || this._intersectsWithSides(item))
            this._rearrange(event, item);
          else
            break;
          this._trigger("change", event, this._uiHash());
          break;
        }
      return this._contactContainers(event), $.ui.ddmanager && $.ui.ddmanager.drag(this, event), this._trigger("sort", event, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1;
    }, "_mouseDrag"),
    _mouseStop: /* @__PURE__ */ __name(function(event, noPropagation) {
      if (event) {
        if ($.ui.ddmanager && !this.options.dropBehaviour && $.ui.ddmanager.drop(this, event), this.options.revert) {
          var that = this, cur = this.placeholder.offset(), axis = this.options.axis, animation = {};
          (!axis || axis === "x") && (animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft)), (!axis || axis === "y") && (animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, $(this.helper).animate(
            animation,
            parseInt(this.options.revert, 10) || 500,
            function() {
              that._clear(event);
            }
          );
        } else
          this._clear(event, noPropagation);
        return !1;
      }
    }, "_mouseStop"),
    cancel: /* @__PURE__ */ __name(function() {
      if (this.dragging) {
        this._mouseUp(new $.Event("mouseup", { target: null })), this.options.helper === "original" ? (this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper")) : this.currentItem.show();
        for (var i = this.containers.length - 1; i >= 0; i--)
          this.containers[i]._trigger("deactivate", null, this._uiHash(this)), this.containers[i].containerCache.over && (this.containers[i]._trigger("out", null, this._uiHash(this)), this.containers[i].containerCache.over = 0);
      }
      return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.options.helper !== "original" && this.helper && this.helper[0].parentNode && this.helper.remove(), $.extend(this, {
        helper: null,
        dragging: !1,
        reverting: !1,
        _noFinalSort: null
      }), this.domPosition.prev ? $(this.domPosition.prev).after(this.currentItem) : $(this.domPosition.parent).prepend(this.currentItem)), this;
    }, "cancel"),
    serialize: /* @__PURE__ */ __name(function(o) {
      var items = this._getItemsAsjQuery(o && o.connected), str = [];
      return o = o || {}, $(items).each(function() {
        var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || /(.+)[\-=_](.+)/);
        res && str.push(
          (o.key || res[1] + "[]") + "=" + (o.key && o.expression ? res[1] : res[2])
        );
      }), !str.length && o.key && str.push(o.key + "="), str.join("&");
    }, "serialize"),
    toArray: /* @__PURE__ */ __name(function(o) {
      var items = this._getItemsAsjQuery(o && o.connected), ret = [];
      return o = o || {}, items.each(function() {
        ret.push($(o.item || this).attr(o.attribute || "id") || "");
      }), ret;
    }, "toArray"),
    /* Be careful with the following core functions */
    _intersectsWith: /* @__PURE__ */ __name(function(item) {
      var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, y1 = this.positionAbs.top, y2 = y1 + this.helperProportions.height, l = item.left, r = l + item.width, t = item.top, b = t + item.height, dyClick = this.offset.click.top, dxClick = this.offset.click.left, isOverElementHeight = this.options.axis === "x" || y1 + dyClick > t && y1 + dyClick < b, isOverElementWidth = this.options.axis === "y" || x1 + dxClick > l && x1 + dxClick < r, isOverElement = isOverElementHeight && isOverElementWidth;
      return this.options.tolerance === "pointer" || this.options.forcePointerForContainers || this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"] ? isOverElement : l < x1 + this.helperProportions.width / 2 && // Right Half
      x2 - this.helperProportions.width / 2 < r && // Left Half
      t < y1 + this.helperProportions.height / 2 && // Bottom Half
      y2 - this.helperProportions.height / 2 < b;
    }, "_intersectsWith"),
    _intersectsWithPointer: /* @__PURE__ */ __name(function(item) {
      var verticalDirection, horizontalDirection, isOverElementHeight = this.options.axis === "x" || this._isOverAxis(
        this.positionAbs.top + this.offset.click.top,
        item.top,
        item.height
      ), isOverElementWidth = this.options.axis === "y" || this._isOverAxis(
        this.positionAbs.left + this.offset.click.left,
        item.left,
        item.width
      ), isOverElement = isOverElementHeight && isOverElementWidth;
      return isOverElement ? (verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(), this.floating ? horizontalDirection === "right" || verticalDirection === "down" ? 2 : 1 : verticalDirection && (verticalDirection === "down" ? 2 : 1)) : !1;
    }, "_intersectsWithPointer"),
    _intersectsWithSides: /* @__PURE__ */ __name(function(item) {
      var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + item.height / 2, item.height), isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + item.width / 2, item.width), verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection();
      return this.floating && horizontalDirection ? horizontalDirection === "right" && isOverRightHalf || horizontalDirection === "left" && !isOverRightHalf : verticalDirection && (verticalDirection === "down" && isOverBottomHalf || verticalDirection === "up" && !isOverBottomHalf);
    }, "_intersectsWithSides"),
    _getDragVerticalDirection: /* @__PURE__ */ __name(function() {
      var delta = this.positionAbs.top - this.lastPositionAbs.top;
      return delta !== 0 && (delta > 0 ? "down" : "up");
    }, "_getDragVerticalDirection"),
    _getDragHorizontalDirection: /* @__PURE__ */ __name(function() {
      var delta = this.positionAbs.left - this.lastPositionAbs.left;
      return delta !== 0 && (delta > 0 ? "right" : "left");
    }, "_getDragHorizontalDirection"),
    refresh: /* @__PURE__ */ __name(function(event) {
      return this._refreshItems(event), this._setHandleClassName(), this.refreshPositions(), this;
    }, "refresh"),
    _connectWith: /* @__PURE__ */ __name(function() {
      var options = this.options;
      return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
    }, "_connectWith"),
    _getItemsAsjQuery: /* @__PURE__ */ __name(function(connected) {
      var i, j, cur, inst, items = [], queries = [], connectWith = this._connectWith();
      if (connectWith && connected)
        for (i = connectWith.length - 1; i >= 0; i--)
          for (cur = $(connectWith[i], this.document[0]), j = cur.length - 1; j >= 0; j--)
            inst = $.data(cur[j], this.widgetFullName), inst && inst !== this && !inst.options.disabled && queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
      queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
      function addItems() {
        items.push(this);
      }
      for (__name(addItems, "addItems"), i = queries.length - 1; i >= 0; i--)
        queries[i][0].each(addItems);
      return $(items);
    }, "_getItemsAsjQuery"),
    _removeCurrentsFromItems: /* @__PURE__ */ __name(function() {
      var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
      this.items = $.grep(this.items, function(item) {
        for (var j = 0; j < list.length; j++)
          if (list[j] === item.item[0])
            return !1;
        return !0;
      });
    }, "_removeCurrentsFromItems"),
    _refreshItems: /* @__PURE__ */ __name(function(event) {
      this.items = [], this.containers = [this];
      var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items, queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], connectWith = this._connectWith();
      if (connectWith && this.ready)
        for (i = connectWith.length - 1; i >= 0; i--)
          for (cur = $(connectWith[i], this.document[0]), j = cur.length - 1; j >= 0; j--)
            inst = $.data(cur[j], this.widgetFullName), inst && inst !== this && !inst.options.disabled && (queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]), this.containers.push(inst));
      for (i = queries.length - 1; i >= 0; i--)
        for (targetData = queries[i][1], _queries = queries[i][0], j = 0, queriesLength = _queries.length; j < queriesLength; j++)
          item = $(_queries[j]), item.data(this.widgetName + "-item", targetData), items.push({
            item,
            instance: targetData,
            width: 0,
            height: 0,
            left: 0,
            top: 0
          });
    }, "_refreshItems"),
    refreshPositions: /* @__PURE__ */ __name(function(fast) {
      this.floating = this.items.length ? this.options.axis === "x" || this._isFloating(this.items[0].item) : !1, this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());
      var i, item, t, p;
      for (i = this.items.length - 1; i >= 0; i--)
        item = this.items[i], !(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) && (t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item, fast || (item.width = t.outerWidth(), item.height = t.outerHeight()), p = t.offset(), item.left = p.left, item.top = p.top);
      if (this.options.custom && this.options.custom.refreshContainers)
        this.options.custom.refreshContainers.call(this);
      else
        for (i = this.containers.length - 1; i >= 0; i--)
          p = this.containers[i].element.offset(), this.containers[i].containerCache.left = p.left, this.containers[i].containerCache.top = p.top, this.containers[i].containerCache.width = this.containers[i].element.outerWidth(), this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
      return this;
    }, "refreshPositions"),
    _createPlaceholder: /* @__PURE__ */ __name(function(that) {
      that = that || this;
      var className, o = that.options;
      (!o.placeholder || o.placeholder.constructor === String) && (className = o.placeholder, o.placeholder = {
        element: /* @__PURE__ */ __name(function() {
          var nodeName = that.currentItem[0].nodeName.toLowerCase(), element = $("<" + nodeName + ">", that.document[0]);
          return that._addClass(
            element,
            "ui-sortable-placeholder",
            className || that.currentItem[0].className
          )._removeClass(element, "ui-sortable-helper"), nodeName === "tbody" ? that._createTrPlaceholder(
            that.currentItem.find("tr").eq(0),
            $("<tr>", that.document[0]).appendTo(element)
          ) : nodeName === "tr" ? that._createTrPlaceholder(that.currentItem, element) : nodeName === "img" && element.attr("src", that.currentItem.attr("src")), className || element.css("visibility", "hidden"), element;
        }, "element"),
        update: /* @__PURE__ */ __name(function(container, p) {
          className && !o.forcePlaceholderSize || (p.height() || p.height(
            that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop") || 0, 10) - parseInt(that.currentItem.css("paddingBottom") || 0, 10)
          ), p.width() || p.width(
            that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft") || 0, 10) - parseInt(that.currentItem.css("paddingRight") || 0, 10)
          ));
        }, "update")
      }), that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)), that.currentItem.after(that.placeholder), o.placeholder.update(that, that.placeholder);
    }, "_createPlaceholder"),
    _createTrPlaceholder: /* @__PURE__ */ __name(function(sourceTr, targetTr) {
      var that = this;
      sourceTr.children().each(function() {
        $("<td>&#160;</td>", that.document[0]).attr("colspan", $(this).attr("colspan") || 1).appendTo(targetTr);
      });
    }, "_createTrPlaceholder"),
    _contactContainers: /* @__PURE__ */ __name(function(event) {
      var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer = null, innermostIndex = null;
      for (i = this.containers.length - 1; i >= 0; i--)
        if (!$.contains(this.currentItem[0], this.containers[i].element[0]))
          if (this._intersectsWith(this.containers[i].containerCache)) {
            if (innermostContainer && $.contains(
              this.containers[i].element[0],
              innermostContainer.element[0]
            ))
              continue;
            innermostContainer = this.containers[i], innermostIndex = i;
          } else
            this.containers[i].containerCache.over && (this.containers[i]._trigger("out", event, this._uiHash(this)), this.containers[i].containerCache.over = 0);
      if (innermostContainer)
        if (this.containers.length === 1)
          this.containers[innermostIndex].containerCache.over || (this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)), this.containers[innermostIndex].containerCache.over = 1);
        else {
          for (dist = 1e4, itemWithLeastDistance = null, floating = innermostContainer.floating || this._isFloating(this.currentItem), posProperty = floating ? "left" : "top", sizeProperty = floating ? "width" : "height", axis = floating ? "pageX" : "pageY", j = this.items.length - 1; j >= 0; j--)
            $.contains(
              this.containers[innermostIndex].element[0],
              this.items[j].item[0]
            ) && this.items[j].item[0] !== this.currentItem[0] && (cur = this.items[j].item.offset()[posProperty], nearBottom = !1, event[axis] - cur > this.items[j][sizeProperty] / 2 && (nearBottom = !0), Math.abs(event[axis] - cur) < dist && (dist = Math.abs(event[axis] - cur), itemWithLeastDistance = this.items[j], this.direction = nearBottom ? "up" : "down"));
          if (!itemWithLeastDistance && !this.options.dropOnEmpty)
            return;
          if (this.currentContainer === this.containers[innermostIndex]) {
            this.currentContainer.containerCache.over || (this.containers[innermostIndex]._trigger("over", event, this._uiHash()), this.currentContainer.containerCache.over = 1);
            return;
          }
          itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, !0) : this._rearrange(event, null, this.containers[innermostIndex].element, !0), this._trigger("change", event, this._uiHash()), this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)), this.currentContainer = this.containers[innermostIndex], this.options.placeholder.update(this.currentContainer, this.placeholder), this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)), this.containers[innermostIndex].containerCache.over = 1;
        }
    }, "_contactContainers"),
    _createHelper: /* @__PURE__ */ __name(function(event) {
      var o = this.options, helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : o.helper === "clone" ? this.currentItem.clone() : this.currentItem;
      return helper.parents("body").length || $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]), helper[0] === this.currentItem[0] && (this._storedCSS = {
        width: this.currentItem[0].style.width,
        height: this.currentItem[0].style.height,
        position: this.currentItem.css("position"),
        top: this.currentItem.css("top"),
        left: this.currentItem.css("left")
      }), (!helper[0].style.width || o.forceHelperSize) && helper.width(this.currentItem.width()), (!helper[0].style.height || o.forceHelperSize) && helper.height(this.currentItem.height()), helper;
    }, "_createHelper"),
    _adjustOffsetFromHelper: /* @__PURE__ */ __name(function(obj) {
      typeof obj == "string" && (obj = obj.split(" ")), $.isArray(obj) && (obj = { left: +obj[0], top: +obj[1] || 0 }), "left" in obj && (this.offset.click.left = obj.left + this.margins.left), "right" in obj && (this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left), "top" in obj && (this.offset.click.top = obj.top + this.margins.top), "bottom" in obj && (this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top);
    }, "_adjustOffsetFromHelper"),
    _getParentOffset: /* @__PURE__ */ __name(function() {
      this.offsetParent = this.helper.offsetParent();
      var po = this.offsetParent.offset();
      return this.cssPosition === "absolute" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0]) && (po.left += this.scrollParent.scrollLeft(), po.top += this.scrollParent.scrollTop()), (this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie) && (po = { top: 0, left: 0 }), {
        top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
        left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
      };
    }, "_getParentOffset"),
    _getRelativeOffset: /* @__PURE__ */ __name(function() {
      if (this.cssPosition === "relative") {
        var p = this.currentItem.position();
        return {
          top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
          left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
        };
      } else
        return { top: 0, left: 0 };
    }, "_getRelativeOffset"),
    _cacheMargins: /* @__PURE__ */ __name(function() {
      this.margins = {
        left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
        top: parseInt(this.currentItem.css("marginTop"), 10) || 0
      };
    }, "_cacheMargins"),
    _cacheHelperProportions: /* @__PURE__ */ __name(function() {
      this.helperProportions = {
        width: this.helper.outerWidth(),
        height: this.helper.outerHeight()
      };
    }, "_cacheHelperProportions"),
    _setContainment: /* @__PURE__ */ __name(function() {
      var ce, co, over, o = this.options;
      o.containment === "parent" && (o.containment = this.helper[0].parentNode), (o.containment === "document" || o.containment === "window") && (this.containment = [
        0 - this.offset.relative.left - this.offset.parent.left,
        0 - this.offset.relative.top - this.offset.parent.top,
        o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left,
        (o.containment === "document" ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
      ]), /^(document|window|parent)$/.test(o.containment) || (ce = $(o.containment)[0], co = $(o.containment).offset(), over = $(ce).css("overflow") !== "hidden", this.containment = [
        co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left,
        co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top,
        co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left,
        co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top
      ]);
    }, "_setContainment"),
    _convertPositionTo: /* @__PURE__ */ __name(function(d, pos) {
      pos || (pos = this.position);
      var mod = d === "absolute" ? 1 : -1, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);
      return {
        top: (
          // The absolute mouse position
          pos.top + // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.top * mod + // The offsetParent's offset without borders (offset + border)
          this.offset.parent.top * mod - (this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()) * mod
        ),
        left: (
          // The absolute mouse position
          pos.left + // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.left * mod + // The offsetParent's offset without borders (offset + border)
          this.offset.parent.left * mod - (this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod
        )
      };
    }, "_convertPositionTo"),
    _generatePosition: /* @__PURE__ */ __name(function(event) {
      var top, left, o = this.options, pageX = event.pageX, pageY = event.pageY, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);
      return this.cssPosition === "relative" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0]) && (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (event.pageX - this.offset.click.left < this.containment[0] && (pageX = this.containment[0] + this.offset.click.left), event.pageY - this.offset.click.top < this.containment[1] && (pageY = this.containment[1] + this.offset.click.top), event.pageX - this.offset.click.left > this.containment[2] && (pageX = this.containment[2] + this.offset.click.left), event.pageY - this.offset.click.top > this.containment[3] && (pageY = this.containment[3] + this.offset.click.top)), o.grid && (top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1], pageY = this.containment ? top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3] ? top : top - this.offset.click.top >= this.containment[1] ? top - o.grid[1] : top + o.grid[1] : top, left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0], pageX = this.containment ? left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2] ? left : left - this.offset.click.left >= this.containment[0] ? left - o.grid[0] : left + o.grid[0] : left)), {
        top: (
          // The absolute mouse position
          pageY - // Click offset (relative to the element)
          this.offset.click.top - // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.top - // The offsetParent's offset without borders (offset + border)
          this.offset.parent.top + (this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop())
        ),
        left: (
          // The absolute mouse position
          pageX - // Click offset (relative to the element)
          this.offset.click.left - // Only for relative positioned nodes: Relative offset from element to offset parent
          this.offset.relative.left - // The offsetParent's offset without borders (offset + border)
          this.offset.parent.left + (this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())
        )
      };
    }, "_generatePosition"),
    _rearrange: /* @__PURE__ */ __name(function(event, i, a, hardRefresh) {
      a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(
        this.placeholder[0],
        this.direction === "down" ? i.item[0] : i.item[0].nextSibling
      ), this.counter = this.counter ? ++this.counter : 1;
      var counter = this.counter;
      this._delay(function() {
        counter === this.counter && this.refreshPositions(!hardRefresh);
      });
    }, "_rearrange"),
    _clear: /* @__PURE__ */ __name(function(event, noPropagation) {
      this.reverting = !1;
      var i, delayedTriggers = [];
      if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) {
        for (i in this._storedCSS)
          (this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") && (this._storedCSS[i] = "");
        this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper");
      } else
        this.currentItem.show();
      this.fromOutside && !noPropagation && delayedTriggers.push(function(event2) {
        this._trigger("receive", event2, this._uiHash(this.fromOutside));
      }), (this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation && delayedTriggers.push(function(event2) {
        this._trigger("update", event2, this._uiHash());
      }), this !== this.currentContainer && (noPropagation || (delayedTriggers.push(function(event2) {
        this._trigger("remove", event2, this._uiHash());
      }), delayedTriggers.push(function(c) {
        return function(event2) {
          c._trigger("receive", event2, this._uiHash(this));
        };
      }.call(this, this.currentContainer)), delayedTriggers.push(function(c) {
        return function(event2) {
          c._trigger("update", event2, this._uiHash(this));
        };
      }.call(this, this.currentContainer))));
      function delayEvent(type, instance, container) {
        return function(event2) {
          container._trigger(type, event2, instance._uiHash(instance));
        };
      }
      for (__name(delayEvent, "delayEvent"), i = this.containers.length - 1; i >= 0; i--)
        noPropagation || delayedTriggers.push(delayEvent("deactivate", this, this.containers[i])), this.containers[i].containerCache.over && (delayedTriggers.push(delayEvent("out", this, this.containers[i])), this.containers[i].containerCache.over = 0);
      if (this.storedCursor && (this.document.find("body").css("cursor", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css("opacity", this._storedOpacity), this._storedZIndex && this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex), this.dragging = !1, noPropagation || this._trigger("beforeStop", event, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.cancelHelperRemoval || (this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null), !noPropagation) {
        for (i = 0; i < delayedTriggers.length; i++)
          delayedTriggers[i].call(this, event);
        this._trigger("stop", event, this._uiHash());
      }
      return this.fromOutside = !1, !this.cancelHelperRemoval;
    }, "_clear"),
    _trigger: /* @__PURE__ */ __name(function() {
      $.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel();
    }, "_trigger"),
    _uiHash: /* @__PURE__ */ __name(function(_inst) {
      var inst = _inst || this;
      return {
        helper: inst.helper,
        placeholder: inst.placeholder || $([]),
        position: inst.position,
        originalPosition: inst.originalPosition,
        offset: inst.positionAbs,
        item: inst.currentItem,
        sender: _inst ? _inst.element : null
      };
    }, "_uiHash")
  });
  /*!
  * jQuery UI Spinner 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  function spinnerModifer(fn) {
    return function() {
      var previous = this.element.val();
      fn.apply(this, arguments), this._refresh(), previous !== this.element.val() && this._trigger("change");
    };
  }
  __name(spinnerModifer, "spinnerModifer"), $.widget("ui.spinner", {
    version: "1.12.1",
    defaultElement: "<input>",
    widgetEventPrefix: "spin",
    options: {
      classes: {
        "ui-spinner": "ui-corner-all",
        "ui-spinner-down": "ui-corner-br",
        "ui-spinner-up": "ui-corner-tr"
      },
      culture: null,
      icons: {
        down: "ui-icon-triangle-1-s",
        up: "ui-icon-triangle-1-n"
      },
      incremental: !0,
      max: null,
      min: null,
      numberFormat: null,
      page: 10,
      step: 1,
      change: null,
      spin: null,
      start: null,
      stop: null
    },
    _create: /* @__PURE__ */ __name(function() {
      this._setOption("max", this.options.max), this._setOption("min", this.options.min), this._setOption("step", this.options.step), this.value() !== "" && this._value(this.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this._on(this.window, {
        beforeunload: /* @__PURE__ */ __name(function() {
          this.element.removeAttr("autocomplete");
        }, "beforeunload")
      });
    }, "_create"),
    _getCreateOptions: /* @__PURE__ */ __name(function() {
      var options = this._super(), element = this.element;
      return $.each(["min", "max", "step"], function(i, option) {
        var value = element.attr(option);
        value != null && value.length && (options[option] = value);
      }), options;
    }, "_getCreateOptions"),
    _events: {
      keydown: /* @__PURE__ */ __name(function(event) {
        this._start(event) && this._keydown(event) && event.preventDefault();
      }, "keydown"),
      keyup: "_stop",
      focus: /* @__PURE__ */ __name(function() {
        this.previous = this.element.val();
      }, "focus"),
      blur: /* @__PURE__ */ __name(function(event) {
        if (this.cancelBlur) {
          delete this.cancelBlur;
          return;
        }
        this._stop(), this._refresh(), this.previous !== this.element.val() && this._trigger("change", event);
      }, "blur"),
      mousewheel: /* @__PURE__ */ __name(function(event, delta) {
        if (delta) {
          if (!this.spinning && !this._start(event))
            return !1;
          this._spin((delta > 0 ? 1 : -1) * this.options.step, event), clearTimeout(this.mousewheelTimer), this.mousewheelTimer = this._delay(function() {
            this.spinning && this._stop(event);
          }, 100), event.preventDefault();
        }
      }, "mousewheel"),
      "mousedown .ui-spinner-button": /* @__PURE__ */ __name(function(event) {
        var previous;
        previous = this.element[0] === $.ui.safeActiveElement(this.document[0]) ? this.previous : this.element.val();
        function checkFocus() {
          var isActive = this.element[0] === $.ui.safeActiveElement(this.document[0]);
          isActive || (this.element.trigger("focus"), this.previous = previous, this._delay(function() {
            this.previous = previous;
          }));
        }
        __name(checkFocus, "checkFocus"), event.preventDefault(), checkFocus.call(this), this.cancelBlur = !0, this._delay(function() {
          delete this.cancelBlur, checkFocus.call(this);
        }), this._start(event) !== !1 && this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event);
      }, "mousedown .ui-spinner-button"),
      "mouseup .ui-spinner-button": "_stop",
      "mouseenter .ui-spinner-button": /* @__PURE__ */ __name(function(event) {
        if ($(event.currentTarget).hasClass("ui-state-active")) {
          if (this._start(event) === !1)
            return !1;
          this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event);
        }
      }, "mouseenter .ui-spinner-button"),
      // TODO: do we really want to consider this a stop?
      // shouldn't we just stop the repeater and wait until mouseup before
      // we trigger the stop event?
      "mouseleave .ui-spinner-button": "_stop"
    },
    // Support mobile enhanced option and make backcompat more sane
    _enhance: /* @__PURE__ */ __name(function() {
      this.uiSpinner = this.element.attr("autocomplete", "off").wrap("<span>").parent().append(
        "<a></a><a></a>"
      );
    }, "_enhance"),
    _draw: /* @__PURE__ */ __name(function() {
      this._enhance(), this._addClass(this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content"), this._addClass("ui-spinner-input"), this.element.attr("role", "spinbutton"), this.buttons = this.uiSpinner.children("a").attr("tabIndex", -1).attr("aria-hidden", !0).button({
        classes: {
          "ui-button": ""
        }
      }), this._removeClass(this.buttons, "ui-corner-all"), this._addClass(this.buttons.first(), "ui-spinner-button ui-spinner-up"), this._addClass(this.buttons.last(), "ui-spinner-button ui-spinner-down"), this.buttons.first().button({
        icon: this.options.icons.up,
        showLabel: !1
      }), this.buttons.last().button({
        icon: this.options.icons.down,
        showLabel: !1
      }), this.buttons.height() > Math.ceil(this.uiSpinner.height() * 0.5) && this.uiSpinner.height() > 0 && this.uiSpinner.height(this.uiSpinner.height());
    }, "_draw"),
    _keydown: /* @__PURE__ */ __name(function(event) {
      var options = this.options, keyCode = $.ui.keyCode;
      switch (event.keyCode) {
        case keyCode.UP:
          return this._repeat(null, 1, event), !0;
        case keyCode.DOWN:
          return this._repeat(null, -1, event), !0;
        case keyCode.PAGE_UP:
          return this._repeat(null, options.page, event), !0;
        case keyCode.PAGE_DOWN:
          return this._repeat(null, -options.page, event), !0;
      }
      return !1;
    }, "_keydown"),
    _start: /* @__PURE__ */ __name(function(event) {
      return !this.spinning && this._trigger("start", event) === !1 ? !1 : (this.counter || (this.counter = 1), this.spinning = !0, !0);
    }, "_start"),
    _repeat: /* @__PURE__ */ __name(function(i, steps, event) {
      i = i || 500, clearTimeout(this.timer), this.timer = this._delay(function() {
        this._repeat(40, steps, event);
      }, i), this._spin(steps * this.options.step, event);
    }, "_repeat"),
    _spin: /* @__PURE__ */ __name(function(step, event) {
      var value = this.value() || 0;
      this.counter || (this.counter = 1), value = this._adjustValue(value + step * this._increment(this.counter)), (!this.spinning || this._trigger("spin", event, { value }) !== !1) && (this._value(value), this.counter++);
    }, "_spin"),
    _increment: /* @__PURE__ */ __name(function(i) {
      var incremental = this.options.incremental;
      return incremental ? $.isFunction(incremental) ? incremental(i) : Math.floor(i * i * i / 5e4 - i * i / 500 + 17 * i / 200 + 1) : 1;
    }, "_increment"),
    _precision: /* @__PURE__ */ __name(function() {
      var precision = this._precisionOf(this.options.step);
      return this.options.min !== null && (precision = Math.max(precision, this._precisionOf(this.options.min))), precision;
    }, "_precision"),
    _precisionOf: /* @__PURE__ */ __name(function(num) {
      var str = num.toString(), decimal = str.indexOf(".");
      return decimal === -1 ? 0 : str.length - decimal - 1;
    }, "_precisionOf"),
    _adjustValue: /* @__PURE__ */ __name(function(value) {
      var base, aboveMin, options = this.options;
      return base = options.min !== null ? options.min : 0, aboveMin = value - base, aboveMin = Math.round(aboveMin / options.step) * options.step, value = base + aboveMin, value = parseFloat(value.toFixed(this._precision())), options.max !== null && value > options.max ? options.max : options.min !== null && value < options.min ? options.min : value;
    }, "_adjustValue"),
    _stop: /* @__PURE__ */ __name(function(event) {
      this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this.counter = 0, this.spinning = !1, this._trigger("stop", event));
    }, "_stop"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      var prevValue, first, last;
      if (key === "culture" || key === "numberFormat") {
        prevValue = this._parse(this.element.val()), this.options[key] = value, this.element.val(this._format(prevValue));
        return;
      }
      (key === "max" || key === "min" || key === "step") && typeof value == "string" && (value = this._parse(value)), key === "icons" && (first = this.buttons.first().find(".ui-icon"), this._removeClass(first, null, this.options.icons.up), this._addClass(first, null, value.up), last = this.buttons.last().find(".ui-icon"), this._removeClass(last, null, this.options.icons.down), this._addClass(last, null, value.down)), this._super(key, value);
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this._super(value), this._toggleClass(this.uiSpinner, null, "ui-state-disabled", !!value), this.element.prop("disabled", !!value), this.buttons.button(value ? "disable" : "enable");
    }, "_setOptionDisabled"),
    _setOptions: spinnerModifer(function(options) {
      this._super(options);
    }),
    _parse: /* @__PURE__ */ __name(function(val) {
      return typeof val == "string" && val !== "" && (val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(val, 10, this.options.culture) : +val), val === "" || isNaN(val) ? null : val;
    }, "_parse"),
    _format: /* @__PURE__ */ __name(function(value) {
      return value === "" ? "" : window.Globalize && this.options.numberFormat ? Globalize.format(value, this.options.numberFormat, this.options.culture) : value;
    }, "_format"),
    _refresh: /* @__PURE__ */ __name(function() {
      this.element.attr({
        "aria-valuemin": this.options.min,
        "aria-valuemax": this.options.max,
        // TODO: what should we do with values that can't be parsed?
        "aria-valuenow": this._parse(this.element.val())
      });
    }, "_refresh"),
    isValid: /* @__PURE__ */ __name(function() {
      var value = this.value();
      return value === null ? !1 : value === this._adjustValue(value);
    }, "isValid"),
    // Update the value without triggering change
    _value: /* @__PURE__ */ __name(function(value, allowAny) {
      var parsed;
      value !== "" && (parsed = this._parse(value), parsed !== null && (allowAny || (parsed = this._adjustValue(parsed)), value = this._format(parsed))), this.element.val(value), this._refresh();
    }, "_value"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.element.prop("disabled", !1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"), this.uiSpinner.replaceWith(this.element);
    }, "_destroy"),
    stepUp: spinnerModifer(function(steps) {
      this._stepUp(steps);
    }),
    _stepUp: /* @__PURE__ */ __name(function(steps) {
      this._start() && (this._spin((steps || 1) * this.options.step), this._stop());
    }, "_stepUp"),
    stepDown: spinnerModifer(function(steps) {
      this._stepDown(steps);
    }),
    _stepDown: /* @__PURE__ */ __name(function(steps) {
      this._start() && (this._spin((steps || 1) * -this.options.step), this._stop());
    }, "_stepDown"),
    pageUp: spinnerModifer(function(pages) {
      this._stepUp((pages || 1) * this.options.page);
    }),
    pageDown: spinnerModifer(function(pages) {
      this._stepDown((pages || 1) * this.options.page);
    }),
    value: /* @__PURE__ */ __name(function(newVal) {
      if (!arguments.length)
        return this._parse(this.element.val());
      spinnerModifer(this._value).call(this, newVal);
    }, "value"),
    widget: /* @__PURE__ */ __name(function() {
      return this.uiSpinner;
    }, "widget")
  }), $.uiBackCompat !== !1 && $.widget("ui.spinner", $.ui.spinner, {
    _enhance: /* @__PURE__ */ __name(function() {
      this.uiSpinner = this.element.attr("autocomplete", "off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());
    }, "_enhance"),
    _uiSpinnerHtml: /* @__PURE__ */ __name(function() {
      return "<span>";
    }, "_uiSpinnerHtml"),
    _buttonHtml: /* @__PURE__ */ __name(function() {
      return "<a></a><a></a>";
    }, "_buttonHtml")
  }), $.ui.spinner;
  /*!
  * jQuery UI Tabs 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.tabs", {
    version: "1.12.1",
    delay: 300,
    options: {
      active: null,
      classes: {
        "ui-tabs": "ui-corner-all",
        "ui-tabs-nav": "ui-corner-all",
        "ui-tabs-panel": "ui-corner-bottom",
        "ui-tabs-tab": "ui-corner-top"
      },
      collapsible: !1,
      event: "click",
      heightStyle: "content",
      hide: null,
      show: null,
      // Callbacks
      activate: null,
      beforeActivate: null,
      beforeLoad: null,
      load: null
    },
    _isLocal: /* @__PURE__ */ function() {
      var rhash = /#.*$/;
      return function(anchor) {
        var anchorUrl, locationUrl;
        anchorUrl = anchor.href.replace(rhash, ""), locationUrl = location.href.replace(rhash, "");
        try {
          anchorUrl = decodeURIComponent(anchorUrl);
        } catch {
        }
        try {
          locationUrl = decodeURIComponent(locationUrl);
        } catch {
        }
        return anchor.hash.length > 1 && anchorUrl === locationUrl;
      };
    }(),
    _create: /* @__PURE__ */ __name(function() {
      var that = this, options = this.options;
      this.running = !1, this._addClass("ui-tabs", "ui-widget ui-widget-content"), this._toggleClass("ui-tabs-collapsible", null, options.collapsible), this._processTabs(), options.active = this._initialActive(), $.isArray(options.disabled) && (options.disabled = $.unique(options.disabled.concat(
        $.map(this.tabs.filter(".ui-state-disabled"), function(li) {
          return that.tabs.index(li);
        })
      )).sort()), this.options.active !== !1 && this.anchors.length ? this.active = this._findActive(options.active) : this.active = $(), this._refresh(), this.active.length && this.load(options.active);
    }, "_create"),
    _initialActive: /* @__PURE__ */ __name(function() {
      var active = this.options.active, collapsible = this.options.collapsible, locationHash = location.hash.substring(1);
      return active === null && (locationHash && this.tabs.each(function(i, tab) {
        if ($(tab).attr("aria-controls") === locationHash)
          return active = i, !1;
      }), active === null && (active = this.tabs.index(this.tabs.filter(".ui-tabs-active"))), (active === null || active === -1) && (active = this.tabs.length ? 0 : !1)), active !== !1 && (active = this.tabs.index(this.tabs.eq(active)), active === -1 && (active = collapsible ? !1 : 0)), !collapsible && active === !1 && this.anchors.length && (active = 0), active;
    }, "_initialActive"),
    _getCreateEventData: /* @__PURE__ */ __name(function() {
      return {
        tab: this.active,
        panel: this.active.length ? this._getPanelForTab(this.active) : $()
      };
    }, "_getCreateEventData"),
    _tabKeydown: /* @__PURE__ */ __name(function(event) {
      var focusedTab = $($.ui.safeActiveElement(this.document[0])).closest("li"), selectedIndex = this.tabs.index(focusedTab), goingForward = !0;
      if (!this._handlePageNav(event)) {
        switch (event.keyCode) {
          case $.ui.keyCode.RIGHT:
          case $.ui.keyCode.DOWN:
            selectedIndex++;
            break;
          case $.ui.keyCode.UP:
          case $.ui.keyCode.LEFT:
            goingForward = !1, selectedIndex--;
            break;
          case $.ui.keyCode.END:
            selectedIndex = this.anchors.length - 1;
            break;
          case $.ui.keyCode.HOME:
            selectedIndex = 0;
            break;
          case $.ui.keyCode.SPACE:
            event.preventDefault(), clearTimeout(this.activating), this._activate(selectedIndex);
            return;
          case $.ui.keyCode.ENTER:
            event.preventDefault(), clearTimeout(this.activating), this._activate(selectedIndex === this.options.active ? !1 : selectedIndex);
            return;
          default:
            return;
        }
        event.preventDefault(), clearTimeout(this.activating), selectedIndex = this._focusNextTab(selectedIndex, goingForward), !event.ctrlKey && !event.metaKey && (focusedTab.attr("aria-selected", "false"), this.tabs.eq(selectedIndex).attr("aria-selected", "true"), this.activating = this._delay(function() {
          this.option("active", selectedIndex);
        }, this.delay));
      }
    }, "_tabKeydown"),
    _panelKeydown: /* @__PURE__ */ __name(function(event) {
      this._handlePageNav(event) || event.ctrlKey && event.keyCode === $.ui.keyCode.UP && (event.preventDefault(), this.active.trigger("focus"));
    }, "_panelKeydown"),
    // Alt+page up/down moves focus to the previous/next tab (and activates)
    _handlePageNav: /* @__PURE__ */ __name(function(event) {
      if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP)
        return this._activate(this._focusNextTab(this.options.active - 1, !1)), !0;
      if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN)
        return this._activate(this._focusNextTab(this.options.active + 1, !0)), !0;
    }, "_handlePageNav"),
    _findNextTab: /* @__PURE__ */ __name(function(index, goingForward) {
      var lastTabIndex = this.tabs.length - 1;
      function constrain() {
        return index > lastTabIndex && (index = 0), index < 0 && (index = lastTabIndex), index;
      }
      for (__name(constrain, "constrain"); $.inArray(constrain(), this.options.disabled) !== -1; )
        index = goingForward ? index + 1 : index - 1;
      return index;
    }, "_findNextTab"),
    _focusNextTab: /* @__PURE__ */ __name(function(index, goingForward) {
      return index = this._findNextTab(index, goingForward), this.tabs.eq(index).trigger("focus"), index;
    }, "_focusNextTab"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      if (key === "active") {
        this._activate(value);
        return;
      }
      this._super(key, value), key === "collapsible" && (this._toggleClass("ui-tabs-collapsible", null, value), !value && this.options.active === !1 && this._activate(0)), key === "event" && this._setupEvents(value), key === "heightStyle" && this._setupHeightStyle(value);
    }, "_setOption"),
    _sanitizeSelector: /* @__PURE__ */ __name(function(hash) {
      return hash ? hash.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&") : "";
    }, "_sanitizeSelector"),
    refresh: /* @__PURE__ */ __name(function() {
      var options = this.options, lis = this.tablist.children(":has(a[href])");
      options.disabled = $.map(lis.filter(".ui-state-disabled"), function(tab) {
        return lis.index(tab);
      }), this._processTabs(), options.active === !1 || !this.anchors.length ? (options.active = !1, this.active = $()) : this.active.length && !$.contains(this.tablist[0], this.active[0]) ? this.tabs.length === options.disabled.length ? (options.active = !1, this.active = $()) : this._activate(this._findNextTab(Math.max(0, options.active - 1), !1)) : options.active = this.tabs.index(this.active), this._refresh();
    }, "refresh"),
    _refresh: /* @__PURE__ */ __name(function() {
      this._setOptionDisabled(this.options.disabled), this._setupEvents(this.options.event), this._setupHeightStyle(this.options.heightStyle), this.tabs.not(this.active).attr({
        "aria-selected": "false",
        "aria-expanded": "false",
        tabIndex: -1
      }), this.panels.not(this._getPanelForTab(this.active)).hide().attr({
        "aria-hidden": "true"
      }), this.active.length ? (this.active.attr({
        "aria-selected": "true",
        "aria-expanded": "true",
        tabIndex: 0
      }), this._addClass(this.active, "ui-tabs-active", "ui-state-active"), this._getPanelForTab(this.active).show().attr({
        "aria-hidden": "false"
      })) : this.tabs.eq(0).attr("tabIndex", 0);
    }, "_refresh"),
    _processTabs: /* @__PURE__ */ __name(function() {
      var that = this, prevTabs = this.tabs, prevAnchors = this.anchors, prevPanels = this.panels;
      this.tablist = this._getList().attr("role", "tablist"), this._addClass(
        this.tablist,
        "ui-tabs-nav",
        "ui-helper-reset ui-helper-clearfix ui-widget-header"
      ), this.tablist.on("mousedown" + this.eventNamespace, "> li", function(event) {
        $(this).is(".ui-state-disabled") && event.preventDefault();
      }).on("focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
        $(this).closest("li").is(".ui-state-disabled") && this.blur();
      }), this.tabs = this.tablist.find("> li:has(a[href])").attr({
        role: "tab",
        tabIndex: -1
      }), this._addClass(this.tabs, "ui-tabs-tab", "ui-state-default"), this.anchors = this.tabs.map(function() {
        return $("a", this)[0];
      }).attr({
        role: "presentation",
        tabIndex: -1
      }), this._addClass(this.anchors, "ui-tabs-anchor"), this.panels = $(), this.anchors.each(function(i, anchor) {
        var selector, panel, panelId, anchorId = $(anchor).uniqueId().attr("id"), tab = $(anchor).closest("li"), originalAriaControls = tab.attr("aria-controls");
        that._isLocal(anchor) ? (selector = anchor.hash, panelId = selector.substring(1), panel = that.element.find(that._sanitizeSelector(selector))) : (panelId = tab.attr("aria-controls") || $({}).uniqueId()[0].id, selector = "#" + panelId, panel = that.element.find(selector), panel.length || (panel = that._createPanel(panelId), panel.insertAfter(that.panels[i - 1] || that.tablist)), panel.attr("aria-live", "polite")), panel.length && (that.panels = that.panels.add(panel)), originalAriaControls && tab.data("ui-tabs-aria-controls", originalAriaControls), tab.attr({
          "aria-controls": panelId,
          "aria-labelledby": anchorId
        }), panel.attr("aria-labelledby", anchorId);
      }), this.panels.attr("role", "tabpanel"), this._addClass(this.panels, "ui-tabs-panel", "ui-widget-content"), prevTabs && (this._off(prevTabs.not(this.tabs)), this._off(prevAnchors.not(this.anchors)), this._off(prevPanels.not(this.panels)));
    }, "_processTabs"),
    // Allow overriding how to find the list for rare usage scenarios (#7715)
    _getList: /* @__PURE__ */ __name(function() {
      return this.tablist || this.element.find("ol, ul").eq(0);
    }, "_getList"),
    _createPanel: /* @__PURE__ */ __name(function(id) {
      return $("<div>").attr("id", id).data("ui-tabs-destroy", !0);
    }, "_createPanel"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(disabled) {
      var currentItem, li, i;
      for ($.isArray(disabled) && (disabled.length ? disabled.length === this.anchors.length && (disabled = !0) : disabled = !1), i = 0; li = this.tabs[i]; i++)
        currentItem = $(li), disabled === !0 || $.inArray(i, disabled) !== -1 ? (currentItem.attr("aria-disabled", "true"), this._addClass(currentItem, null, "ui-state-disabled")) : (currentItem.removeAttr("aria-disabled"), this._removeClass(currentItem, null, "ui-state-disabled"));
      this.options.disabled = disabled, this._toggleClass(
        this.widget(),
        this.widgetFullName + "-disabled",
        null,
        disabled === !0
      );
    }, "_setOptionDisabled"),
    _setupEvents: /* @__PURE__ */ __name(function(event) {
      var events = {};
      event && $.each(event.split(" "), function(index, eventName) {
        events[eventName] = "_eventHandler";
      }), this._off(this.anchors.add(this.tabs).add(this.panels)), this._on(!0, this.anchors, {
        click: /* @__PURE__ */ __name(function(event2) {
          event2.preventDefault();
        }, "click")
      }), this._on(this.anchors, events), this._on(this.tabs, { keydown: "_tabKeydown" }), this._on(this.panels, { keydown: "_panelKeydown" }), this._focusable(this.tabs), this._hoverable(this.tabs);
    }, "_setupEvents"),
    _setupHeightStyle: /* @__PURE__ */ __name(function(heightStyle) {
      var maxHeight, parent = this.element.parent();
      heightStyle === "fill" ? (maxHeight = parent.height(), maxHeight -= this.element.outerHeight() - this.element.height(), this.element.siblings(":visible").each(function() {
        var elem = $(this), position = elem.css("position");
        position === "absolute" || position === "fixed" || (maxHeight -= elem.outerHeight(!0));
      }), this.element.children().not(this.panels).each(function() {
        maxHeight -= $(this).outerHeight(!0);
      }), this.panels.each(function() {
        $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));
      }).css("overflow", "auto")) : heightStyle === "auto" && (maxHeight = 0, this.panels.each(function() {
        maxHeight = Math.max(maxHeight, $(this).height("").height());
      }).height(maxHeight));
    }, "_setupHeightStyle"),
    _eventHandler: /* @__PURE__ */ __name(function(event) {
      var options = this.options, active = this.active, anchor = $(event.currentTarget), tab = anchor.closest("li"), clickedIsActive = tab[0] === active[0], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : this._getPanelForTab(tab), toHide = active.length ? this._getPanelForTab(active) : $(), eventData = {
        oldTab: active,
        oldPanel: toHide,
        newTab: collapsing ? $() : tab,
        newPanel: toShow
      };
      event.preventDefault(), !(tab.hasClass("ui-state-disabled") || // tab is already loading
      tab.hasClass("ui-tabs-loading") || // can't switch durning an animation
      this.running || // click on active header, but not collapsible
      clickedIsActive && !options.collapsible || // allow canceling activation
      this._trigger("beforeActivate", event, eventData) === !1) && (options.active = collapsing ? !1 : this.tabs.index(tab), this.active = clickedIsActive ? $() : tab, this.xhr && this.xhr.abort(), !toHide.length && !toShow.length && $.error("jQuery UI Tabs: Mismatching fragment identifier."), toShow.length && this.load(this.tabs.index(tab), event), this._toggle(event, eventData));
    }, "_eventHandler"),
    // Handles show/hide for selecting tabs
    _toggle: /* @__PURE__ */ __name(function(event, eventData) {
      var that = this, toShow = eventData.newPanel, toHide = eventData.oldPanel;
      this.running = !0;
      function complete() {
        that.running = !1, that._trigger("activate", event, eventData);
      }
      __name(complete, "complete");
      function show() {
        that._addClass(eventData.newTab.closest("li"), "ui-tabs-active", "ui-state-active"), toShow.length && that.options.show ? that._show(toShow, that.options.show, complete) : (toShow.show(), complete());
      }
      __name(show, "show"), toHide.length && this.options.hide ? this._hide(toHide, this.options.hide, function() {
        that._removeClass(
          eventData.oldTab.closest("li"),
          "ui-tabs-active",
          "ui-state-active"
        ), show();
      }) : (this._removeClass(
        eventData.oldTab.closest("li"),
        "ui-tabs-active",
        "ui-state-active"
      ), toHide.hide(), show()), toHide.attr("aria-hidden", "true"), eventData.oldTab.attr({
        "aria-selected": "false",
        "aria-expanded": "false"
      }), toShow.length && toHide.length ? eventData.oldTab.attr("tabIndex", -1) : toShow.length && this.tabs.filter(function() {
        return $(this).attr("tabIndex") === 0;
      }).attr("tabIndex", -1), toShow.attr("aria-hidden", "false"), eventData.newTab.attr({
        "aria-selected": "true",
        "aria-expanded": "true",
        tabIndex: 0
      });
    }, "_toggle"),
    _activate: /* @__PURE__ */ __name(function(index) {
      var anchor, active = this._findActive(index);
      active[0] !== this.active[0] && (active.length || (active = this.active), anchor = active.find(".ui-tabs-anchor")[0], this._eventHandler({
        target: anchor,
        currentTarget: anchor,
        preventDefault: $.noop
      }));
    }, "_activate"),
    _findActive: /* @__PURE__ */ __name(function(index) {
      return index === !1 ? $() : this.tabs.eq(index);
    }, "_findActive"),
    _getIndex: /* @__PURE__ */ __name(function(index) {
      return typeof index == "string" && (index = this.anchors.index(this.anchors.filter("[href$='" + $.ui.escapeSelector(index) + "']"))), index;
    }, "_getIndex"),
    _destroy: /* @__PURE__ */ __name(function() {
      this.xhr && this.xhr.abort(), this.tablist.removeAttr("role").off(this.eventNamespace), this.anchors.removeAttr("role tabIndex").removeUniqueId(), this.tabs.add(this.panels).each(function() {
        $.data(this, "ui-tabs-destroy") ? $(this).remove() : $(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded");
      }), this.tabs.each(function() {
        var li = $(this), prev = li.data("ui-tabs-aria-controls");
        prev ? li.attr("aria-controls", prev).removeData("ui-tabs-aria-controls") : li.removeAttr("aria-controls");
      }), this.panels.show(), this.options.heightStyle !== "content" && this.panels.css("height", "");
    }, "_destroy"),
    enable: /* @__PURE__ */ __name(function(index) {
      var disabled = this.options.disabled;
      disabled !== !1 && (index === void 0 ? disabled = !1 : (index = this._getIndex(index), $.isArray(disabled) ? disabled = $.map(disabled, function(num) {
        return num !== index ? num : null;
      }) : disabled = $.map(this.tabs, function(li, num) {
        return num !== index ? num : null;
      })), this._setOptionDisabled(disabled));
    }, "enable"),
    disable: /* @__PURE__ */ __name(function(index) {
      var disabled = this.options.disabled;
      if (disabled !== !0) {
        if (index === void 0)
          disabled = !0;
        else {
          if (index = this._getIndex(index), $.inArray(index, disabled) !== -1)
            return;
          $.isArray(disabled) ? disabled = $.merge([index], disabled).sort() : disabled = [index];
        }
        this._setOptionDisabled(disabled);
      }
    }, "disable"),
    load: /* @__PURE__ */ __name(function(index, event) {
      index = this._getIndex(index);
      var that = this, tab = this.tabs.eq(index), anchor = tab.find(".ui-tabs-anchor"), panel = this._getPanelForTab(tab), eventData = {
        tab,
        panel
      }, complete = /* @__PURE__ */ __name(function(jqXHR, status) {
        status === "abort" && that.panels.stop(!1, !0), that._removeClass(tab, "ui-tabs-loading"), panel.removeAttr("aria-busy"), jqXHR === that.xhr && delete that.xhr;
      }, "complete");
      this._isLocal(anchor[0]) || (this.xhr = $.ajax(this._ajaxSettings(anchor, event, eventData)), this.xhr && this.xhr.statusText !== "canceled" && (this._addClass(tab, "ui-tabs-loading"), panel.attr("aria-busy", "true"), this.xhr.done(function(response, status, jqXHR) {
        setTimeout(function() {
          panel.html(response), that._trigger("load", event, eventData), complete(jqXHR, status);
        }, 1);
      }).fail(function(jqXHR, status) {
        setTimeout(function() {
          complete(jqXHR, status);
        }, 1);
      })));
    }, "load"),
    _ajaxSettings: /* @__PURE__ */ __name(function(anchor, event, eventData) {
      var that = this;
      return {
        // Support: IE <11 only
        // Strip any hash that exists to prevent errors with the Ajax request
        url: anchor.attr("href").replace(/#.*$/, ""),
        beforeSend: /* @__PURE__ */ __name(function(jqXHR, settings) {
          return that._trigger(
            "beforeLoad",
            event,
            $.extend({ jqXHR, ajaxSettings: settings }, eventData)
          );
        }, "beforeSend")
      };
    }, "_ajaxSettings"),
    _getPanelForTab: /* @__PURE__ */ __name(function(tab) {
      var id = $(tab).attr("aria-controls");
      return this.element.find(this._sanitizeSelector("#" + id));
    }, "_getPanelForTab")
  }), $.uiBackCompat !== !1 && $.widget("ui.tabs", $.ui.tabs, {
    _processTabs: /* @__PURE__ */ __name(function() {
      this._superApply(arguments), this._addClass(this.tabs, "ui-tab");
    }, "_processTabs")
  }), $.ui.tabs;
  /*!
  * jQuery UI Tooltip 1.12.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  */
  $.widget("ui.tooltip", {
    version: "1.12.1",
    options: {
      classes: {
        "ui-tooltip": "ui-corner-all ui-widget-shadow"
      },
      content: /* @__PURE__ */ __name(function() {
        var title = $(this).attr("title") || "";
        return $("<a>").text(title).html();
      }, "content"),
      hide: !0,
      // Disabled elements have inconsistent behavior across browsers (#8661)
      items: "[title]:not([disabled])",
      position: {
        my: "left top+15",
        at: "left bottom",
        collision: "flipfit flip"
      },
      show: !0,
      track: !1,
      // Callbacks
      close: null,
      open: null
    },
    _addDescribedBy: /* @__PURE__ */ __name(function(elem, id) {
      var describedby = (elem.attr("aria-describedby") || "").split(/\s+/);
      describedby.push(id), elem.data("ui-tooltip-id", id).attr("aria-describedby", $.trim(describedby.join(" ")));
    }, "_addDescribedBy"),
    _removeDescribedBy: /* @__PURE__ */ __name(function(elem) {
      var id = elem.data("ui-tooltip-id"), describedby = (elem.attr("aria-describedby") || "").split(/\s+/), index = $.inArray(id, describedby);
      index !== -1 && describedby.splice(index, 1), elem.removeData("ui-tooltip-id"), describedby = $.trim(describedby.join(" ")), describedby ? elem.attr("aria-describedby", describedby) : elem.removeAttr("aria-describedby");
    }, "_removeDescribedBy"),
    _create: /* @__PURE__ */ __name(function() {
      this._on({
        mouseover: "open",
        focusin: "open"
      }), this.tooltips = {}, this.parents = {}, this.liveRegion = $("<div>").attr({
        role: "log",
        "aria-live": "assertive",
        "aria-relevant": "additions"
      }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this.disabledTitles = $([]);
    }, "_create"),
    _setOption: /* @__PURE__ */ __name(function(key, value) {
      var that = this;
      this._super(key, value), key === "content" && $.each(this.tooltips, function(id, tooltipData) {
        that._updateContent(tooltipData.element);
      });
    }, "_setOption"),
    _setOptionDisabled: /* @__PURE__ */ __name(function(value) {
      this[value ? "_disable" : "_enable"]();
    }, "_setOptionDisabled"),
    _disable: /* @__PURE__ */ __name(function() {
      var that = this;
      $.each(this.tooltips, function(id, tooltipData) {
        var event = $.Event("blur");
        event.target = event.currentTarget = tooltipData.element[0], that.close(event, !0);
      }), this.disabledTitles = this.disabledTitles.add(
        this.element.find(this.options.items).addBack().filter(function() {
          var element = $(this);
          if (element.is("[title]"))
            return element.data("ui-tooltip-title", element.attr("title")).removeAttr("title");
        })
      );
    }, "_disable"),
    _enable: /* @__PURE__ */ __name(function() {
      this.disabledTitles.each(function() {
        var element = $(this);
        element.data("ui-tooltip-title") && element.attr("title", element.data("ui-tooltip-title"));
      }), this.disabledTitles = $([]);
    }, "_enable"),
    open: /* @__PURE__ */ __name(function(event) {
      var that = this, target = $(event ? event.target : this.element).closest(this.options.items);
      !target.length || target.data("ui-tooltip-id") || (target.attr("title") && target.data("ui-tooltip-title", target.attr("title")), target.data("ui-tooltip-open", !0), event && event.type === "mouseover" && target.parents().each(function() {
        var parent = $(this), blurEvent;
        parent.data("ui-tooltip-open") && (blurEvent = $.Event("blur"), blurEvent.target = blurEvent.currentTarget = this, that.close(blurEvent, !0)), parent.attr("title") && (parent.uniqueId(), that.parents[this.id] = {
          element: this,
          title: parent.attr("title")
        }, parent.attr("title", ""));
      }), this._registerCloseHandlers(event, target), this._updateContent(target, event));
    }, "open"),
    _updateContent: /* @__PURE__ */ __name(function(target, event) {
      var content, contentOption = this.options.content, that = this, eventType = event ? event.type : null;
      if (typeof contentOption == "string" || contentOption.nodeType || contentOption.jquery)
        return this._open(event, target, contentOption);
      content = contentOption.call(target[0], function(response) {
        that._delay(function() {
          target.data("ui-tooltip-open") && (event && (event.type = eventType), this._open(event, target, response));
        });
      }), content && this._open(event, target, content);
    }, "_updateContent"),
    _open: /* @__PURE__ */ __name(function(event, target, content) {
      var tooltipData, tooltip, delayedShow, a11yContent, positionOption = $.extend({}, this.options.position);
      if (!content)
        return;
      if (tooltipData = this._find(target), tooltipData) {
        tooltipData.tooltip.find(".ui-tooltip-content").html(content);
        return;
      }
      target.is("[title]") && (event && event.type === "mouseover" ? target.attr("title", "") : target.removeAttr("title")), tooltipData = this._tooltip(target), tooltip = tooltipData.tooltip, this._addDescribedBy(target, tooltip.attr("id")), tooltip.find(".ui-tooltip-content").html(content), this.liveRegion.children().hide(), a11yContent = $("<div>").html(tooltip.find(".ui-tooltip-content").html()), a11yContent.removeAttr("name").find("[name]").removeAttr("name"), a11yContent.removeAttr("id").find("[id]").removeAttr("id"), a11yContent.appendTo(this.liveRegion);
      function position(event2) {
        positionOption.of = event2, !tooltip.is(":hidden") && tooltip.position(positionOption);
      }
      __name(position, "position"), this.options.track && event && /^mouse/.test(event.type) ? (this._on(this.document, {
        mousemove: position
      }), position(event)) : tooltip.position($.extend({
        of: target
      }, this.options.position)), tooltip.hide(), this._show(tooltip, this.options.show), this.options.track && this.options.show && this.options.show.delay && (delayedShow = this.delayedShow = setInterval(function() {
        tooltip.is(":visible") && (position(positionOption.of), clearInterval(delayedShow));
      }, $.fx.interval)), this._trigger("open", event, { tooltip });
    }, "_open"),
    _registerCloseHandlers: /* @__PURE__ */ __name(function(event, target) {
      var events = {
        keyup: /* @__PURE__ */ __name(function(event2) {
          if (event2.keyCode === $.ui.keyCode.ESCAPE) {
            var fakeEvent = $.Event(event2);
            fakeEvent.currentTarget = target[0], this.close(fakeEvent, !0);
          }
        }, "keyup")
      };
      target[0] !== this.element[0] && (events.remove = function() {
        this._removeTooltip(this._find(target).tooltip);
      }), (!event || event.type === "mouseover") && (events.mouseleave = "close"), (!event || event.type === "focusin") && (events.focusout = "close"), this._on(!0, target, events);
    }, "_registerCloseHandlers"),
    close: /* @__PURE__ */ __name(function(event) {
      var tooltip, that = this, target = $(event ? event.currentTarget : this.element), tooltipData = this._find(target);
      if (!tooltipData) {
        target.removeData("ui-tooltip-open");
        return;
      }
      tooltip = tooltipData.tooltip, !tooltipData.closing && (clearInterval(this.delayedShow), target.data("ui-tooltip-title") && !target.attr("title") && target.attr("title", target.data("ui-tooltip-title")), this._removeDescribedBy(target), tooltipData.hiding = !0, tooltip.stop(!0), this._hide(tooltip, this.options.hide, function() {
        that._removeTooltip($(this));
      }), target.removeData("ui-tooltip-open"), this._off(target, "mouseleave focusout keyup"), target[0] !== this.element[0] && this._off(target, "remove"), this._off(this.document, "mousemove"), event && event.type === "mouseleave" && $.each(this.parents, function(id, parent) {
        $(parent.element).attr("title", parent.title), delete that.parents[id];
      }), tooltipData.closing = !0, this._trigger("close", event, { tooltip }), tooltipData.hiding || (tooltipData.closing = !1));
    }, "close"),
    _tooltip: /* @__PURE__ */ __name(function(element) {
      var tooltip = $("<div>").attr("role", "tooltip"), content = $("<div>").appendTo(tooltip), id = tooltip.uniqueId().attr("id");
      return this._addClass(content, "ui-tooltip-content"), this._addClass(tooltip, "ui-tooltip", "ui-widget ui-widget-content"), tooltip.appendTo(this._appendTo(element)), this.tooltips[id] = {
        element,
        tooltip
      };
    }, "_tooltip"),
    _find: /* @__PURE__ */ __name(function(target) {
      var id = target.data("ui-tooltip-id");
      return id ? this.tooltips[id] : null;
    }, "_find"),
    _removeTooltip: /* @__PURE__ */ __name(function(tooltip) {
      tooltip.remove(), delete this.tooltips[tooltip.attr("id")];
    }, "_removeTooltip"),
    _appendTo: /* @__PURE__ */ __name(function(target) {
      var element = target.closest(".ui-front, dialog");
      return element.length || (element = this.document[0].body), element;
    }, "_appendTo"),
    _destroy: /* @__PURE__ */ __name(function() {
      var that = this;
      $.each(this.tooltips, function(id, tooltipData) {
        var event = $.Event("blur"), element = tooltipData.element;
        event.target = event.currentTarget = element[0], that.close(event, !0), $("#" + id).remove(), element.data("ui-tooltip-title") && (element.attr("title") || element.attr("title", element.data("ui-tooltip-title")), element.removeData("ui-tooltip-title"));
      }), this.liveRegion.remove();
    }, "_destroy")
  }), $.uiBackCompat !== !1 && $.widget("ui.tooltip", $.ui.tooltip, {
    options: {
      tooltipClass: null
    },
    _tooltip: /* @__PURE__ */ __name(function() {
      var tooltipData = this._superApply(arguments);
      return this.options.tooltipClass && tooltipData.tooltip.addClass(this.options.tooltipClass), tooltipData;
    }, "_tooltip")
  }), $.ui.tooltip;
});
//# sourceMappingURL=jquery-ui.js.map
